From 1ee88d53992983d6d7abe39a8ecbcb4c5705f86e Mon Sep 17 00:00:00 2001 From: iamjanr Date: Fri, 24 Mar 2023 09:17:54 +0100 Subject: [PATCH 1/3] EOS_1931 --- .../create/actions/cluster/cluster.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/pkg/cluster/internal/create/actions/cluster/cluster.go b/pkg/cluster/internal/create/actions/cluster/cluster.go index d1b512db8b..0aecdd66ce 100644 --- a/pkg/cluster/internal/create/actions/cluster/cluster.go +++ b/pkg/cluster/internal/create/actions/cluster/cluster.go @@ -31,10 +31,14 @@ import ( //go:embed templates/* var ctel embed.FS +type K8sObject struct { + APIVersion string `yaml:"apiVersion"` + Kind string `yaml:"kind"` + Spec DescriptorFile `yaml:"spec"` +} + // DescriptorFile represents the YAML structure in the descriptor file type DescriptorFile struct { - APIVersion string `yaml:"apiVersion"` - Kind string `yaml:"kind"` ClusterID string `yaml:"cluster_id" validate:"required,min=3,max=100"` DeployAutoscaler bool `yaml:"deploy_autoscaler" validate:"boolean"` @@ -223,20 +227,27 @@ func (d DescriptorFile) Init() DescriptorFile { // Read descriptor file func GetClusterDescriptor(descriptorPath string) (*DescriptorFile, error) { + + var k8sStruct K8sObject + descriptorRAW, err := os.ReadFile(descriptorPath) if err != nil { return nil, err } - descriptorFile := new(DescriptorFile).Init() - err = yaml.Unmarshal(descriptorRAW, &descriptorFile) + + k8sStruct.Spec = new(DescriptorFile).Init() + err = yaml.Unmarshal(descriptorRAW, &k8sStruct) if err != nil { return nil, err } + descriptorFile := k8sStruct.Spec + validate := validator.New() err = validate.Struct(descriptorFile) if err != nil { return nil, err } + return &descriptorFile, nil } From fb91d2eb2c3a3769e39888568df2e1b8494ab13c Mon Sep 17 00:00:00 2001 From: iamjanr Date: Fri, 24 Mar 2023 10:23:29 +0100 Subject: [PATCH 2/3] Add validations on k8s structure --- pkg/cluster/internal/create/actions/cluster/cluster.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/cluster/internal/create/actions/cluster/cluster.go b/pkg/cluster/internal/create/actions/cluster/cluster.go index 0aecdd66ce..b293726f40 100644 --- a/pkg/cluster/internal/create/actions/cluster/cluster.go +++ b/pkg/cluster/internal/create/actions/cluster/cluster.go @@ -32,9 +32,9 @@ import ( var ctel embed.FS type K8sObject struct { - APIVersion string `yaml:"apiVersion"` - Kind string `yaml:"kind"` - Spec DescriptorFile `yaml:"spec"` + APIVersion string `yaml:"apiVersion" validate:"required"` + Kind string `yaml:"kind" validate:"required"` + Spec DescriptorFile `yaml:"spec" validate:"required"` } // DescriptorFile represents the YAML structure in the descriptor file @@ -243,7 +243,7 @@ func GetClusterDescriptor(descriptorPath string) (*DescriptorFile, error) { descriptorFile := k8sStruct.Spec validate := validator.New() - err = validate.Struct(descriptorFile) + err = validate.Struct(k8sStruct) if err != nil { return nil, err } From b83bb6869fe708359d47006b2f89e8de7d50dd49 Mon Sep 17 00:00:00 2001 From: iamjanr Date: Fri, 24 Mar 2023 10:41:47 +0100 Subject: [PATCH 3/3] Add dive --- pkg/cluster/internal/create/actions/cluster/cluster.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cluster/internal/create/actions/cluster/cluster.go b/pkg/cluster/internal/create/actions/cluster/cluster.go index e2ea65b794..72a5dd8f91 100644 --- a/pkg/cluster/internal/create/actions/cluster/cluster.go +++ b/pkg/cluster/internal/create/actions/cluster/cluster.go @@ -34,7 +34,7 @@ var ctel embed.FS type K8sObject struct { APIVersion string `yaml:"apiVersion" validate:"required"` Kind string `yaml:"kind" validate:"required"` - Spec DescriptorFile `yaml:"spec" validate:"required"` + Spec DescriptorFile `yaml:"spec" validate:"required,dive"` } // DescriptorFile represents the YAML structure in the descriptor file