From 2136fc50ca58ccaa56f2d0dbe8efc2610261bc85 Mon Sep 17 00:00:00 2001 From: Matt Welke Date: Fri, 16 Aug 2024 11:16:17 -0400 Subject: [PATCH 1/7] Add Azure cloud environment prompt. Signed-off-by: Matt Welke --- pkg/components/validator.go | 1 + pkg/config/constants.go | 6 ++++++ pkg/services/validator/azure.go | 15 ++++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pkg/components/validator.go b/pkg/components/validator.go index 36167f8b..b6407faf 100644 --- a/pkg/components/validator.go +++ b/pkg/components/validator.go @@ -376,6 +376,7 @@ type AzurePluginConfig struct { Enabled bool `yaml:"enabled"` Release *validator.HelmRelease `yaml:"helmRelease"` ServiceAccountName string `yaml:"serviceAccountName,omitempty"` + Cloud string `yaml:"cloud"` TenantID string `yaml:"tenantId"` ClientID string `yaml:"clientId"` ClientSecret string `yaml:"clientSecret"` diff --git a/pkg/config/constants.go b/pkg/config/constants.go index 7988adbb..15662f17 100644 --- a/pkg/config/constants.go +++ b/pkg/config/constants.go @@ -148,6 +148,12 @@ var ( }, } + ValidatorAzureClouds = []string{ + "AzureCloud", + "AzureUSGovernment", + "AzureChinaCloud", + } + ValidatorPluginVsphereEntities = []string{ ValidatorVsphereEntityCluster, ValidatorVsphereEntityDatacenter, diff --git a/pkg/services/validator/azure.go b/pkg/services/validator/azure.go index eb40ddf1..42543382 100644 --- a/pkg/services/validator/azure.go +++ b/pkg/services/validator/azure.go @@ -52,9 +52,14 @@ func readAzurePlugin(vc *components.ValidatorConfig, tc *cfg.TaskConfig, k8sClie return nil } +// readAzurePluginRules reads Azure plugin configuration and rules from the user. func readAzurePluginRules(vc *components.ValidatorConfig, _ *cfg.TaskConfig, _ kubernetes.Interface) error { - log.Header("Azure Plugin Rule Configuration") + log.Header("Azure Plugin Configuration") + if err := configureCloud(vc.AzurePlugin); err != nil { + return fmt.Errorf("failed to configure Azure plugin: %w", err) + } + log.Header("Azure Plugin Rule Configuration") // Configure RBAC rules. Unlike how other plugins are styled, no prompt for whether the user // wants to configure this rule type because right now it is the only rule type for the plugin. if err := configureAzureRBACRules(vc.AzurePlugin); err != nil { @@ -182,6 +187,14 @@ func readAzureCredsHelper(c *components.AzurePluginConfig) error { return nil } +// configureCloud sets up which cloud the plugin will be used with (public vs gov etc). +func configureCloud(c *components.AzurePluginConfig) error { + log.InfoCLI("Select the Azure cloud environment to connect to.") + var err error + c.Cloud, err = prompts.Select("Azure cloud", cfg.ValidatorAzureClouds) + return err +} + // configureAzureRBACRules sets up zero or more RBAC rules based on pre-existing files or user // input. func configureAzureRBACRules(c *components.AzurePluginConfig) error { From 863dc6fa2e89e829e1ad61b1a7948a397f0241a2 Mon Sep 17 00:00:00 2001 From: Matt Welke Date: Fri, 16 Aug 2024 11:43:39 -0400 Subject: [PATCH 2/7] Ensure Azure cloud config is used in direct invocation and installed plgin. Signed-off-by: Matt Welke --- pkg/services/validator/azure.go | 4 ++++ .../resources/validator/validator-plugin-azure-values.tmpl | 1 + 2 files changed, 5 insertions(+) diff --git a/pkg/services/validator/azure.go b/pkg/services/validator/azure.go index 42543382..1f967097 100644 --- a/pkg/services/validator/azure.go +++ b/pkg/services/validator/azure.go @@ -97,6 +97,10 @@ func readDirectAzureCredentials(c *components.AzurePluginConfig) error { return err } + err = os.Setenv("AZURE_ENVIRONMENT", c.Cloud) + if err != nil { + return fmt.Errorf("failed to set AZURE_ENVIRONMENT: %w", err) + } err = os.Setenv("AZURE_TENANT_ID", c.TenantID) if err != nil { return fmt.Errorf("failed to set AZURE_TENANT_ID: %w", err) diff --git a/pkg/utils/embed/resources/validator/validator-plugin-azure-values.tmpl b/pkg/utils/embed/resources/validator/validator-plugin-azure-values.tmpl index 9a88d078..a72e87ba 100644 --- a/pkg/utils/embed/resources/validator/validator-plugin-azure-values.tmpl +++ b/pkg/utils/embed/resources/validator/validator-plugin-azure-values.tmpl @@ -52,3 +52,4 @@ metricsService: type: ClusterIP auth: serviceAccountName: "{{ .Config.ServiceAccountName }}" +azureEnvironment: "{{ .Config.Cloud }}" From b49c0d7890ea9cc48d11841ea950f770cd7a891f Mon Sep 17 00:00:00 2001 From: Matt Welke Date: Fri, 16 Aug 2024 13:51:19 -0400 Subject: [PATCH 3/7] Upgrade to latest version of Azure plugin. Signed-off-by: Matt Welke --- go.mod | 18 +++++++++------- go.sum | 68 ++++++++++++++++++++++++++++++++-------------------------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/go.mod b/go.mod index 6d6865ef..ad79b4d4 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/spf13/viper v1.19.0 github.com/validator-labs/validator v0.1.5 github.com/validator-labs/validator-plugin-aws v0.1.4 - github.com/validator-labs/validator-plugin-azure v0.0.16 + github.com/validator-labs/validator-plugin-azure v0.0.17 github.com/validator-labs/validator-plugin-maas v0.0.8-0.20240809210245-5894f5118612 github.com/validator-labs/validator-plugin-network v0.0.23 github.com/validator-labs/validator-plugin-oci v0.2.0 @@ -27,11 +27,11 @@ require ( github.com/vmware/govmomi v0.40.0 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.30.3 - k8s.io/apimachinery v0.30.3 - k8s.io/client-go v0.30.3 + k8s.io/api v0.31.0 + k8s.io/apimachinery v0.31.0 + k8s.io/client-go v0.31.0 k8s.io/helm v2.17.0+incompatible - sigs.k8s.io/controller-runtime v0.18.5 + sigs.k8s.io/controller-runtime v0.19.0 sigs.k8s.io/yaml v1.4.0 ) @@ -120,8 +120,8 @@ require ( github.com/dougm/pretty v0.0.0-20171025230240-2ee9d7453c02 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/emicklei/go-restful/v3 v3.12.1 // indirect - github.com/evanphx/json-patch v5.7.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.9.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-chi/chi v4.1.2+incompatible // indirect github.com/go-jose/go-jose/v4 v4.0.2 // indirect @@ -230,6 +230,7 @@ require ( github.com/tjfoc/gmsm v1.4.1 // indirect github.com/transparency-dev/merkle v0.0.2 // indirect github.com/vbatts/tar-split v0.11.5 // indirect + github.com/x448/float16 v0.8.4 // indirect github.com/xanzy/go-gitlab v0.107.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect go.mongodb.org/mongo-driver v1.14.0 // indirect @@ -250,14 +251,15 @@ require ( gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f // indirect google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.30.3 // indirect + k8s.io/apiextensions-apiserver v0.31.0 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20240521193020-835d969ad83a // indirect - k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect sigs.k8s.io/cluster-api v1.8.1 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/release-utils v0.8.4 // indirect diff --git a/go.sum b/go.sum index 83b1770d..81bb4546 100644 --- a/go.sum +++ b/go.sum @@ -159,8 +159,8 @@ github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCE github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw= github.com/aliyun/credentials-go v1.3.1 h1:uq/0v7kWrxmoLGpqjx7vtQ/s03f0zR//0br/xWDTE28= github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= +github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= github.com/arturshadnik/gomaasclient v0.0.0-20240731231205-8239cfb13409 h1:J4cbZQZFlLZNy5nGyDyPW0/VI4bivvR0EyZiR/H9Y7k= github.com/arturshadnik/gomaasclient v0.0.0-20240731231205-8239cfb13409/go.mod h1:rRYH2hfLDZ7Z6LNmNBbLzwnu1wK894fznN5pbVtur/s= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= @@ -322,6 +322,8 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= @@ -361,8 +363,8 @@ github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3Bum github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-piv/piv-go v1.11.0 h1:5vAaCdRTFSIW4PeqMbnsDlUZ7odMYWnHBDGdmtU/Zhg= github.com/go-piv/piv-go v1.11.0/go.mod h1:NZ2zmjVkfFaL/CF8cVQ/pXdXtuj110zEKGdJM6fJZZM= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= @@ -404,8 +406,8 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/cel-go v0.17.8 h1:j9m730pMZt1Fc4oKhCLUHfjj6527LuhYcYw0Rl8gqto= -github.com/google/cel-go v0.17.8/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= +github.com/google/cel-go v0.20.1 h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84= +github.com/google/cel-go v0.20.1/go.mod h1:kWcIzTsPX0zmQ+H3TirHstLLf9ep5QTsZBN9u4dOYLg= github.com/google/certificate-transparency-go v1.2.1 h1:4iW/NwzqOqYEEoCBEFP+jPbBXbLqMpq3CifMyOnDUME= github.com/google/certificate-transparency-go v1.2.1/go.mod h1:bvn/ytAccv+I6+DGkqpvSsEdiVGramgaSC6RD3tEmeE= github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU= @@ -864,8 +866,8 @@ github.com/validator-labs/validator v0.1.5 h1:9MAmxm4y33W2DjKNifrBQNq58VF4Oety15 github.com/validator-labs/validator v0.1.5/go.mod h1:+O3N6l3JncmREk6nDcATNxEQ3ukZKkyI1HrSMwH3YOA= github.com/validator-labs/validator-plugin-aws v0.1.4 h1:0SMEIddrCRJfHvsqkyMCmkDQ5zfLHnju0ZDlAMEnr1M= github.com/validator-labs/validator-plugin-aws v0.1.4/go.mod h1:Nh/RM9SygPPV9aMmMoOHg7PnYlCRYEHeOfOQ0qk5hBs= -github.com/validator-labs/validator-plugin-azure v0.0.16 h1:ttQmsmF8sG2Q6WPaTxzJ/rOYom4gR3TnNVxlQkMW0Po= -github.com/validator-labs/validator-plugin-azure v0.0.16/go.mod h1:gcBBYgKfx6WH6fT8BL94kn7aPrBBchEUEjP4wlekCKs= +github.com/validator-labs/validator-plugin-azure v0.0.17 h1:4LrXisaemQ1j1adj1lwk1dxyuWfKavgPnFE9QPf/ses= +github.com/validator-labs/validator-plugin-azure v0.0.17/go.mod h1:T13K/0EjDN0L6A8h7+OgxK7Ni2L7WYZXapGZCZgtgmY= github.com/validator-labs/validator-plugin-maas v0.0.8-0.20240809210245-5894f5118612 h1:dM8Ot/EX0/tNvGfOtK8OMPwpYfXltxWJeN7yO49SzwY= github.com/validator-labs/validator-plugin-maas v0.0.8-0.20240809210245-5894f5118612/go.mod h1:sla9fLOH2YRzKYfzqCf4ljA7LtiPT+DxuI8R/X0GZh8= github.com/validator-labs/validator-plugin-network v0.0.23 h1:+1fooiXuve73NAOUTTjf2jPd9DDYHekzEKh7bLtrOFc= @@ -878,6 +880,8 @@ github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinC github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= github.com/vmware/govmomi v0.40.0 h1:7xzJLA7CD7teyeToYWS3tapZtZX9x0sBfjBvbnsVllI= github.com/vmware/govmomi v0.40.0/go.mod h1:1H5LWwsBif8HKZqbFp0FdoKTHyJE4FzL6ACequMKYQg= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xanzy/go-gitlab v0.107.0 h1:P2CT9Uy9yN9lJo3FLxpMZ4xj6uWcpnigXsjvqJ6nd2Y= github.com/xanzy/go-gitlab v0.107.0/go.mod h1:wKNKh3GkYDMOsGmnfuX+ITCmDuSDWFO0G+C4AygL9RY= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= @@ -903,14 +907,14 @@ go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 h1:R9DE4kQ4k+YtfLI2ULwX82VtNQ2J8yZmA7ZIF/D+7Mc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0/go.mod h1:OQFyQVrDlbe+R7xrEyDr/2Wr67Ol0hRUgsfA+V5A95s= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 h1:qFffATk0X+HD+f1Z8lswGiOQYKHRlzfmdJm0wEaVrFA= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0/go.mod h1:MOiCmryaYtc+V0Ei+Tx9o5S1ZjA7kzLucuVuyzBZloQ= go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= @@ -919,8 +923,8 @@ go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBq go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= -go.opentelemetry.io/proto/otlp v1.2.0 h1:pVeZGk7nXDC9O2hncA6nHldxEjm6LByfA2aN8IOkz94= -go.opentelemetry.io/proto/otlp v1.2.0/go.mod h1:gGpR8txAl5M03pDhMC79G6SdqNV26naRm/KDsgaHD8A= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.step.sm/crypto v0.51.1 h1:ktUg/2hetEMiBAqgz502ktZDGoDoGrcHFg3XpkmkvvA= go.step.sm/crypto v0.51.1/go.mod h1:PdrhttNU/tG9/YsVd4fdlysBN+UV503p0o2irFZQlAw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -1130,6 +1134,8 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v1 v1.0.0-20161222125816-442357a80af5/go.mod h1:u0ALmqvLRxLI95fkdCEWrE6mhWYZW1aMOJHp5YXLHTg= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/httprequest.v1 v1.1.1/go.mod h1:/CkavNL+g3qLOrpFHVrEx4NKepeqR4XTZWNj4sGGjz0= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= @@ -1158,36 +1164,36 @@ gotest.tools/v3 v3.1.0 h1:rVV8Tcg/8jHUkPUorwjaMTtemIMVXfIPKiOqnhEhakk= gotest.tools/v3 v3.1.0/go.mod h1:fHy7eyTmJFO5bQbUsEGQ1v4m2J3Jz9eWL54TP2/ZuYQ= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.30.3 h1:ImHwK9DCsPA9uoU3rVh4QHAHHK5dTSv1nxJUapx8hoQ= -k8s.io/api v0.30.3/go.mod h1:GPc8jlzoe5JG3pb0KJCSLX5oAFIW3/qNJITlDj8BH04= -k8s.io/apiextensions-apiserver v0.30.3 h1:oChu5li2vsZHx2IvnGP3ah8Nj3KyqG3kRSaKmijhB9U= -k8s.io/apiextensions-apiserver v0.30.3/go.mod h1:uhXxYDkMAvl6CJw4lrDN4CPbONkF3+XL9cacCT44kV4= -k8s.io/apimachinery v0.30.3 h1:q1laaWCmrszyQuSQCfNB8cFgCuDAoPszKY4ucAjDwHc= -k8s.io/apimachinery v0.30.3/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= -k8s.io/apiserver v0.30.3 h1:QZJndA9k2MjFqpnyYv/PH+9PE0SHhx3hBho4X0vE65g= -k8s.io/apiserver v0.30.3/go.mod h1:6Oa88y1CZqnzetd2JdepO0UXzQX4ZnOekx2/PtEjrOg= -k8s.io/client-go v0.30.3 h1:bHrJu3xQZNXIi8/MoxYtZBBWQQXwy16zqJwloXXfD3k= -k8s.io/client-go v0.30.3/go.mod h1:8d4pf8vYu665/kUbsxWAQ/JDBNWqfFeZnvFiVdmx89U= +k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo= +k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE= +k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= +k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= +k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc= +k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= +k8s.io/apiserver v0.31.0 h1:p+2dgJjy+bk+B1Csz+mc2wl5gHwvNkC9QJV+w55LVrY= +k8s.io/apiserver v0.31.0/go.mod h1:KI9ox5Yu902iBnnyMmy7ajonhKnkeZYJhTZ/YI+WEMk= +k8s.io/client-go v0.31.0 h1:QqEJzNjbN2Yv1H79SsS+SWnXkBgVu4Pj3CJQgbx0gI8= +k8s.io/client-go v0.31.0/go.mod h1:Y9wvC76g4fLjmU0BA+rV+h2cncoadjvjjkkIGoTLcGU= k8s.io/cluster-bootstrap v0.30.3 h1:MgxyxMkpaC6mu0BKWJ8985XCOnKU+eH3Iy+biwtDXRk= k8s.io/cluster-bootstrap v0.30.3/go.mod h1:h8BoLDfdD7XEEIXy7Bx9FcMzxHwz29jsYYi34bM5DKU= -k8s.io/component-base v0.30.3 h1:Ci0UqKWf4oiwy8hr1+E3dsnliKnkMLZMVbWzeorlk7s= -k8s.io/component-base v0.30.3/go.mod h1:C1SshT3rGPCuNtBs14RmVD2xW0EhRSeLvBh7AGk1quA= +k8s.io/component-base v0.31.0 h1:/KIzGM5EvPNQcYgwq5NwoQBaOlVFrghoVGr8lG6vNRs= +k8s.io/component-base v0.31.0/go.mod h1:TYVuzI1QmN4L5ItVdMSXKvH7/DtvIuas5/mm8YT3rTo= k8s.io/helm v2.17.0+incompatible h1:Bpn6o1wKLYqKM3+Osh8e+1/K2g/GsQJ4F4yNF2+deao= k8s.io/helm v2.17.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20240521193020-835d969ad83a h1:zD1uj3Jf+mD4zmA7W+goE5TxDkI7OGJjBNBzq5fJtLA= k8s.io/kube-openapi v0.0.0-20240521193020-835d969ad83a/go.mod h1:UxDHUPsUwTOOxSU+oXURfFBcAS6JwiRXTYqYwfuGowc= -k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= -k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= +k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= launchpad.net/xmlpath v0.0.0-20130614043138-000000000004/go.mod h1:vqyExLOM3qBx7mvYRkoxjSCF945s0mbe7YynlKYXtsA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.0 h1:Tc9rS7JJoZ9sl3OpL4842oIk6lH7gWBb0JOmJ0ute7M= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.0/go.mod h1:1ewhL9l1gkPcU/IU/6rFYfikf+7Y5imWv7ARVbBOzNs= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 h1:2770sDpzrjjsAtVhSeUFseziht227YAWYHLGNM8QPwY= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/cluster-api v1.8.1 h1:OA3w1CjCmXXXDL7aY3WDe+seL0mdFVJX1K5mZwqKbDE= sigs.k8s.io/cluster-api v1.8.1/go.mod h1:pXv5LqLxuIbhGIXykyNKiJh+KrLweSBajVHHitPLyoY= -sigs.k8s.io/controller-runtime v0.18.5 h1:nTHio/W+Q4aBlQMgbnC5hZb4IjIidyrizMai9P6n4Rk= -sigs.k8s.io/controller-runtime v0.18.5/go.mod h1:TVoGrfdpbA9VRFaRnKgk9P5/atA0pMwq+f+msb9M8Sg= +sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q= +sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/release-utils v0.8.4 h1:4QVr3UgbyY/d9p74LBhg0njSVQofUsAZqYOzVZBhdBw= From 0a5ee19b9c7fe893436bceb25196486033a2aa30 Mon Sep 17 00:00:00 2001 From: Matt Welke Date: Fri, 16 Aug 2024 13:51:39 -0400 Subject: [PATCH 4/7] Move prompt for Azure cloud outside of rules setup. Signed-off-by: Matt Welke --- pkg/services/validator/azure.go | 13 ------------- pkg/services/validator/validator_service.go | 10 +++++++++- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/pkg/services/validator/azure.go b/pkg/services/validator/azure.go index 1f967097..1280ab15 100644 --- a/pkg/services/validator/azure.go +++ b/pkg/services/validator/azure.go @@ -54,11 +54,6 @@ func readAzurePlugin(vc *components.ValidatorConfig, tc *cfg.TaskConfig, k8sClie // readAzurePluginRules reads Azure plugin configuration and rules from the user. func readAzurePluginRules(vc *components.ValidatorConfig, _ *cfg.TaskConfig, _ kubernetes.Interface) error { - log.Header("Azure Plugin Configuration") - if err := configureCloud(vc.AzurePlugin); err != nil { - return fmt.Errorf("failed to configure Azure plugin: %w", err) - } - log.Header("Azure Plugin Rule Configuration") // Configure RBAC rules. Unlike how other plugins are styled, no prompt for whether the user // wants to configure this rule type because right now it is the only rule type for the plugin. @@ -191,14 +186,6 @@ func readAzureCredsHelper(c *components.AzurePluginConfig) error { return nil } -// configureCloud sets up which cloud the plugin will be used with (public vs gov etc). -func configureCloud(c *components.AzurePluginConfig) error { - log.InfoCLI("Select the Azure cloud environment to connect to.") - var err error - c.Cloud, err = prompts.Select("Azure cloud", cfg.ValidatorAzureClouds) - return err -} - // configureAzureRBACRules sets up zero or more RBAC rules based on pre-existing files or user // input. func configureAzureRBACRules(c *components.AzurePluginConfig) error { diff --git a/pkg/services/validator/validator_service.go b/pkg/services/validator/validator_service.go index ecb1e96c..1391c34a 100644 --- a/pkg/services/validator/validator_service.go +++ b/pkg/services/validator/validator_service.go @@ -9,10 +9,11 @@ import ( "strings" "emperror.dev/errors" - "github.com/spectrocloud-labs/prompts-tui/prompts" vtypes "github.com/validator-labs/validator/pkg/types" "k8s.io/client-go/kubernetes" + "github.com/spectrocloud-labs/prompts-tui/prompts" + awsconsts "github.com/validator-labs/validator-plugin-aws/pkg/constants" azureconsts "github.com/validator-labs/validator-plugin-azure/pkg/constants" maasconsts "github.com/validator-labs/validator-plugin-maas/pkg/constants" @@ -240,6 +241,13 @@ func handlePlugins(vc *components.ValidatorConfig, tc *cfg.TaskConfig, kClient k return err } } + + log.InfoCLI("Select the Azure cloud environment to connect to.") + vc.AzurePlugin.Cloud, err = prompts.Select("Azure cloud", cfg.ValidatorAzureClouds) + if err != nil { + return err + } + if err := funcMap[azureconsts.PluginCode](vc, tc, kClient); err != nil { return err } From e82f3a0b343136aa5f0c9c97a38c2a78779af7cd Mon Sep 17 00:00:00 2001 From: Matt Welke Date: Fri, 16 Aug 2024 13:57:47 -0400 Subject: [PATCH 5/7] make reviewable Signed-off-by: Matt Welke --- pkg/config/versions.go | 2 +- tests/integration/_validator/testcases/data/validator.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/config/versions.go b/pkg/config/versions.go index bff069cc..ab7bc09e 100644 --- a/pkg/config/versions.go +++ b/pkg/config/versions.go @@ -4,7 +4,7 @@ package config var ValidatorChartVersions = map[string]string{ Validator: "v0.1.5", ValidatorPluginAws: "v0.1.4", - ValidatorPluginAzure: "v0.0.16", + ValidatorPluginAzure: "v0.0.17", ValidatorPluginMaas: "v0.0.7", ValidatorPluginNetwork: "v0.0.23", ValidatorPluginOci: "v0.2.0", diff --git a/tests/integration/_validator/testcases/data/validator.yaml b/tests/integration/_validator/testcases/data/validator.yaml index 35cfe2a9..95f3616e 100644 --- a/tests/integration/_validator/testcases/data/validator.yaml +++ b/tests/integration/_validator/testcases/data/validator.yaml @@ -525,7 +525,7 @@ azurePlugin: chart: name: validator-plugin-azure repository: validator-plugin-azure - version: v0.0.16 + version: v0.0.17 insecureSkipVerify: true values: "" tenantId: d551b7b1-78ae-43df-9d61-4935c843a454 From 745c1fe94a35299aa14c0172dbde4b85c00ec463 Mon Sep 17 00:00:00 2001 From: Matt Welke Date: Fri, 16 Aug 2024 14:19:06 -0400 Subject: [PATCH 6/7] Try to get tests passing. Signed-off-by: Matt Welke --- tests/integration/_validator/testcases/test_validator.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integration/_validator/testcases/test_validator.go b/tests/integration/_validator/testcases/test_validator.go index fdea4819..3e2ee54c 100644 --- a/tests/integration/_validator/testcases/test_validator.go +++ b/tests/integration/_validator/testcases/test_validator.go @@ -291,6 +291,7 @@ func (t *ValidatorTest) awsPluginValues(ctx *test.TestContext, vals []string, sl func (t *ValidatorTest) azurePluginInstallValues(ctx *test.TestContext, vals []string) []string { azureVals := []string{ "y", // enable plugin + "AzureCloud", // cloud to connect to "n", // implicit plugin auth "azure-creds", // k8s secret name "d551b7b1-78ae-43df-9d61-4935c843a454", // tenant id @@ -298,7 +299,7 @@ func (t *ValidatorTest) azurePluginInstallValues(ctx *test.TestContext, vals []s "test_client_secret", // client secret } if string_utils.IsDevVersion(ctx.Get("version")) { - azureVals = slices.Insert(azureVals, 1, + azureVals = slices.Insert(azureVals, 2, cfg.ValidatorChartVersions[cfg.ValidatorPluginAzure], // validator-plugin-azure helm chart version ) } From 62c86f4ca91484689da3bce68a32abd9efc9f552 Mon Sep 17 00:00:00 2001 From: Matt Welke Date: Fri, 16 Aug 2024 14:44:12 -0400 Subject: [PATCH 7/7] Move prompt to Azure plugin package. Signed-off-by: Matt Welke --- pkg/services/validator/azure.go | 7 +++++++ pkg/services/validator/validator_service.go | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/services/validator/azure.go b/pkg/services/validator/azure.go index 1280ab15..3bec9591 100644 --- a/pkg/services/validator/azure.go +++ b/pkg/services/validator/azure.go @@ -40,6 +40,13 @@ var ( func readAzurePlugin(vc *components.ValidatorConfig, tc *cfg.TaskConfig, k8sClient kubernetes.Interface) error { c := vc.AzurePlugin + log.InfoCLI("Select the Azure cloud environment to connect to.") + var err error + vc.AzurePlugin.Cloud, err = prompts.Select("Azure cloud", cfg.ValidatorAzureClouds) + if err != nil { + return err + } + if !tc.Direct { if err := readHelmRelease(cfg.ValidatorPluginAzure, vc, c.Release); err != nil { return fmt.Errorf("failed to read Helm release: %w", err) diff --git a/pkg/services/validator/validator_service.go b/pkg/services/validator/validator_service.go index 1391c34a..b7ab29e9 100644 --- a/pkg/services/validator/validator_service.go +++ b/pkg/services/validator/validator_service.go @@ -242,12 +242,6 @@ func handlePlugins(vc *components.ValidatorConfig, tc *cfg.TaskConfig, kClient k } } - log.InfoCLI("Select the Azure cloud environment to connect to.") - vc.AzurePlugin.Cloud, err = prompts.Select("Azure cloud", cfg.ValidatorAzureClouds) - if err != nil { - return err - } - if err := funcMap[azureconsts.PluginCode](vc, tc, kClient); err != nil { return err }