From 647e661a3c6ff7c06a901f47da19cb5fb03981f8 Mon Sep 17 00:00:00 2001 From: Van Thong Nguyen Date: Fri, 3 Jan 2025 14:28:47 +0100 Subject: [PATCH] make gsk release validation for gs tf provider v2 clearer (#408) --- gridscale/resource_gridscale_k8s.go | 14 +------------- gridscale/resource_gridscale_release.go | 12 ++++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gridscale/resource_gridscale_k8s.go b/gridscale/resource_gridscale_k8s.go index b8b1ed59..a1f82d6b 100644 --- a/gridscale/resource_gridscale_k8s.go +++ b/gridscale/resource_gridscale_k8s.go @@ -71,22 +71,10 @@ func (rgk8sv *ResourceGridscaleK8sValidator) checkIfTemplateSupportsMultiNodePoo k8sMultiNodePoolSupportRelease, ) templateRelease, err := NewRelease(template.Properties.Release) - if err != nil { return fmt.Errorf("%s error: %v", errorPrefix, err) } - multiNodePoolSupportRelease, err := NewRelease(k8sMultiNodePoolSupportRelease) - - if err != nil { - return fmt.Errorf("%s error: %v", errorPrefix, err) - } - err = templateRelease.CheckIfFeatureIsKnown( - &Feature{ - Description: "multi node pool support", - Release: *multiNodePoolSupportRelease, - }, - ) - return err + return templateRelease.CheckIfK8SReleaseIsSupported() } // buildInputSchema models the k8s resource's input schema by ResourceGridscaleK8sModeler receiver. diff --git a/gridscale/resource_gridscale_release.go b/gridscale/resource_gridscale_release.go index a55a7832..631d0cef 100644 --- a/gridscale/resource_gridscale_release.go +++ b/gridscale/resource_gridscale_release.go @@ -17,6 +17,8 @@ type Feature struct { Release } +const supportedK8SRelease = "1.30" + // NewRelease creates a new Release instance. func NewRelease(representation string) (*Release, error) { version, err := goVersion.NewVersion(representation) @@ -36,3 +38,13 @@ func (r *Release) CheckIfFeatureIsKnown(f *Feature) error { } return nil } + +// CheckIfK8SReleaseIsSupported checks if the Kubernetes release is supported by this gridscale terraform provider. +func (r *Release) CheckIfK8SReleaseIsSupported() error { + if r.LessThan(goVersion.Must(goVersion.NewVersion(supportedK8SRelease))) { + return &ReleaseFeatureIncompatibilityError{ + Detail: fmt.Sprintf("this gridscale terraform provider version v2 supports only Kubernetes release >= %s, for Kubernetes release %s please use gridscale terraform provider version v1", supportedK8SRelease, r.String()), + } + } + return nil +}