mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-07-24 15:55:17 -04:00
terraform-provider: validate image and microservice version (#2766)
This commit is contained in:
parent
519efe637d
commit
436e7c6d3b
6 changed files with 128 additions and 13 deletions
|
@ -722,20 +722,11 @@ func (r *ClusterResource) apply(ctx context.Context, data *ClusterResourceModel,
|
|||
}
|
||||
|
||||
// parse OS image version
|
||||
var image imageAttribute
|
||||
convertDiags = data.Image.As(ctx, &image, basetypes.ObjectAsOptions{})
|
||||
image, imageSemver, convertDiags := r.getImageVersion(ctx, data)
|
||||
diags.Append(convertDiags...)
|
||||
if diags.HasError() {
|
||||
return diags
|
||||
}
|
||||
imageSemver, err := semver.New(image.Version)
|
||||
if err != nil {
|
||||
diags.AddAttributeError(
|
||||
path.Root("image").AtName("version"),
|
||||
"Invalid image version",
|
||||
fmt.Sprintf("Parsing image version (%s): %s", image.Version, err))
|
||||
return diags
|
||||
}
|
||||
|
||||
// parse license ID
|
||||
licenseID := data.LicenseID.ValueString()
|
||||
|
@ -948,6 +939,29 @@ func (r *ClusterResource) apply(ctx context.Context, data *ClusterResourceModel,
|
|||
return diags
|
||||
}
|
||||
|
||||
func (r *ClusterResource) getImageVersion(ctx context.Context, data *ClusterResourceModel) (imageAttribute, semver.Semver, diag.Diagnostics) {
|
||||
var image imageAttribute
|
||||
diags := data.Image.As(ctx, &image, basetypes.ObjectAsOptions{})
|
||||
if diags.HasError() {
|
||||
return imageAttribute{}, semver.Semver{}, diags
|
||||
}
|
||||
imageSemver, err := semver.New(image.Version)
|
||||
if err != nil {
|
||||
diags.AddAttributeError(
|
||||
path.Root("image").AtName("version"),
|
||||
"Invalid image version",
|
||||
fmt.Sprintf("Parsing image version (%s): %s", image.Version, err))
|
||||
return imageAttribute{}, semver.Semver{}, diags
|
||||
}
|
||||
if err := compatibility.BinaryWith(r.providerData.Version.String(), imageSemver.String()); err != nil {
|
||||
diags.AddAttributeError(
|
||||
path.Root("image").AtName("version"),
|
||||
"Invalid image version",
|
||||
fmt.Sprintf("Image version (%s) incompatible with provider version (%s): %s", image.Version, r.providerData.Version.String(), err))
|
||||
}
|
||||
return image, imageSemver, diags
|
||||
}
|
||||
|
||||
// initRPCPayload groups the data required to run the init RPC.
|
||||
type initRPCPayload struct {
|
||||
csp cloudprovider.Provider // cloud service provider the cluster runs on.
|
||||
|
@ -1178,6 +1192,12 @@ func (r *ClusterResource) getMicroserviceVersion(ctx context.Context, data *Clus
|
|||
tflog.Info(ctx, fmt.Sprintf("No Microservice version specified. Using default version %s.", r.providerData.Version))
|
||||
ver = r.providerData.Version
|
||||
}
|
||||
if err := config.ValidateMicroserviceVersion(r.providerData.Version, ver); err != nil {
|
||||
diags.AddAttributeError(
|
||||
path.Root("constellation_microservice_version"),
|
||||
"Invalid microservice version",
|
||||
fmt.Sprintf("Microservice version (%s) incompatible with provider version (%s): %s", ver, r.providerData.Version, err))
|
||||
}
|
||||
return ver, diags
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue