feat(site): add presets to workspace creation page

* Add frontend components to pick a preset
* Add api endpoints to list presets and fetch their parameters
* update database queries based on new insights about how the frontend uses presets
This commit is contained in:
Sas Swart
2025-01-24 07:37:46 +00:00
parent 45afcc668a
commit bf9e0a4749
23 changed files with 724 additions and 110 deletions

101
coderd/apidoc/docs.go generated
View File

@ -5605,6 +5605,82 @@ const docTemplate = `{
}
}
},
"/templateversions/{templateversion}/presets": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": [
"application/json"
],
"tags": [
"Templates"
],
"summary": "Get template version presets",
"operationId": "get-template-version-presets",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Preset"
}
}
}
}
}
},
"/templateversions/{templateversion}/presets/parameters": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": [
"application/json"
],
"tags": [
"Templates"
],
"summary": "Get template version preset parameters",
"operationId": "get-template-version-preset-parameters",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.PresetParameter"
}
}
}
}
}
},
"/templateversions/{templateversion}/resources": {
"get": {
"security": [
@ -12924,6 +13000,31 @@ const docTemplate = `{
}
}
},
"codersdk.Preset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"codersdk.PresetParameter": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"presetID": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"codersdk.PrometheusConfig": {
"type": "object",
"properties": {

View File

@ -4951,6 +4951,74 @@
}
}
},
"/templateversions/{templateversion}/presets": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version presets",
"operationId": "get-template-version-presets",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.Preset"
}
}
}
}
}
},
"/templateversions/{templateversion}/presets/parameters": {
"get": {
"security": [
{
"CoderSessionToken": []
}
],
"produces": ["application/json"],
"tags": ["Templates"],
"summary": "Get template version preset parameters",
"operationId": "get-template-version-preset-parameters",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Template version ID",
"name": "templateversion",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/codersdk.PresetParameter"
}
}
}
}
}
},
"/templateversions/{templateversion}/resources": {
"get": {
"security": [
@ -11661,6 +11729,31 @@
}
}
},
"codersdk.Preset": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"codersdk.PresetParameter": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"presetID": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"codersdk.PrometheusConfig": {
"type": "object",
"properties": {