feat: Validate workspace build parameters (#5807)

This commit is contained in:
Marcin Tojek
2023-01-24 14:22:00 +01:00
committed by GitHub
parent 138887de7e
commit 26c69525d1
23 changed files with 1051 additions and 268 deletions
+23 -13
View File
@@ -223,7 +223,7 @@ func (api *API) templateVersionRichParameters(rw http.ResponseWriter, r *http.Re
})
return
}
dbParameters, err := api.Database.GetTemplateVersionParameters(ctx, templateVersion.ID)
dbTemplateVersionParameters, err := api.Database.GetTemplateVersionParameters(ctx, templateVersion.ID)
if err != nil {
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
Message: "Internal error fetching template version parameters.",
@@ -231,19 +231,16 @@ func (api *API) templateVersionRichParameters(rw http.ResponseWriter, r *http.Re
})
return
}
params := make([]codersdk.TemplateVersionParameter, 0)
for _, dbParameter := range dbParameters {
param, err := convertTemplateVersionParameter(dbParameter)
if err != nil {
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
Message: "Internal error converting template version parameter.",
Detail: err.Error(),
})
return
}
params = append(params, param)
templateVersionParameters, err := convertTemplateVersionParameters(dbTemplateVersionParameters)
if err != nil {
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
Message: "Internal error converting template version parameter.",
Detail: err.Error(),
})
return
}
httpapi.Write(ctx, rw, http.StatusOK, params)
httpapi.Write(ctx, rw, http.StatusOK, templateVersionParameters)
}
// @Summary Get parameters by template version
@@ -1379,6 +1376,18 @@ func convertTemplateVersion(version database.TemplateVersion, job codersdk.Provi
}
}
func convertTemplateVersionParameters(dbParams []database.TemplateVersionParameter) ([]codersdk.TemplateVersionParameter, error) {
params := make([]codersdk.TemplateVersionParameter, 0)
for _, dbParameter := range dbParams {
param, err := convertTemplateVersionParameter(dbParameter)
if err != nil {
return nil, err
}
params = append(params, param)
}
return params, nil
}
func convertTemplateVersionParameter(param database.TemplateVersionParameter) (codersdk.TemplateVersionParameter, error) {
var protoOptions []*sdkproto.RichParameterOption
err := json.Unmarshal(param.Options, &protoOptions)
@@ -1405,6 +1414,7 @@ func convertTemplateVersionParameter(param database.TemplateVersionParameter) (c
ValidationRegex: param.ValidationRegex,
ValidationMin: param.ValidationMin,
ValidationMax: param.ValidationMax,
ValidationError: param.ValidationError,
}, nil
}