From 210f8528b0d360d4e2eea81b5bef92efca4e0da1 Mon Sep 17 00:00:00 2001 From: Ekaterina Kazakova Date: Tue, 5 Nov 2024 15:25:05 +0400 Subject: [PATCH] [e2e] Deploy clusters and creds in the default namespace --- test/e2e/kubeclient/kubeclient.go | 50 ++++++++++--------- test/e2e/managedcluster/aws/aws.go | 2 +- test/e2e/managedcluster/azure/azure.go | 3 +- .../clusteridentity/clusteridentity.go | 23 +++++---- test/e2e/managedcluster/common.go | 4 +- test/e2e/managedcluster/providervalidator.go | 11 ++-- test/e2e/managedcluster/validate_deleted.go | 12 ++--- test/e2e/managedcluster/validate_deployed.go | 24 ++++----- test/e2e/provider_aws_test.go | 17 ++++--- test/e2e/provider_azure_test.go | 18 ++++--- test/e2e/provider_vsphere_test.go | 6 ++- 11 files changed, 95 insertions(+), 75 deletions(-) diff --git a/test/e2e/kubeclient/kubeclient.go b/test/e2e/kubeclient/kubeclient.go index d1fffba75..12cd3808e 100644 --- a/test/e2e/kubeclient/kubeclient.go +++ b/test/e2e/kubeclient/kubeclient.go @@ -62,16 +62,16 @@ func NewFromLocal(namespace string) *KubeClient { // the kubeconfig from secret it needs an existing kubeclient. func (kc *KubeClient) NewFromCluster(ctx context.Context, namespace, clusterName string) *KubeClient { GinkgoHelper() - return newKubeClient(kc.getKubeconfigSecretData(ctx, clusterName), namespace) + return newKubeClient(kc.getKubeconfigSecretData(ctx, namespace, clusterName), namespace) } // WriteKubeconfig writes the kubeconfig for the given clusterName to the // test/e2e directory returning the path to the file and a function to delete // it later. -func (kc *KubeClient) WriteKubeconfig(ctx context.Context, clusterName string) (string, func() error) { +func (kc *KubeClient) WriteKubeconfig(ctx context.Context, namespace, clusterName string) (string, func() error) { GinkgoHelper() - secretData := kc.getKubeconfigSecretData(ctx, clusterName) + secretData := kc.getKubeconfigSecretData(ctx, namespace, clusterName) dir, err := os.Getwd() Expect(err).NotTo(HaveOccurred()) @@ -95,11 +95,11 @@ func (kc *KubeClient) WriteKubeconfig(ctx context.Context, clusterName string) ( return path, deleteFunc } -func (kc *KubeClient) getKubeconfigSecretData(ctx context.Context, clusterName string) []byte { +func (kc *KubeClient) getKubeconfigSecretData(ctx context.Context, namespace, clusterName string) []byte { GinkgoHelper() - secret, err := kc.Client.CoreV1().Secrets(kc.Namespace).Get(ctx, clusterName+"-kubeconfig", metav1.GetOptions{}) - Expect(err).NotTo(HaveOccurred(), "failed to get cluster: %q kubeconfig secret", clusterName) + secret, err := kc.Client.CoreV1().Secrets(namespace).Get(ctx, clusterName+"-kubeconfig", metav1.GetOptions{}) + Expect(err).NotTo(HaveOccurred(), "failed to get cluster: %q kubeconfig secret in %s namespace", clusterName, namespace) secretData, ok := secret.Data["value"] Expect(ok).To(BeTrue(), "kubeconfig secret %q has no 'value' key", clusterName) @@ -157,23 +157,23 @@ func newKubeClient(configBytes []byte, namespace string) *KubeClient { } // GetDynamicClient returns a dynamic client for the given GroupVersionResource. -func (kc *KubeClient) GetDynamicClient(gvr schema.GroupVersionResource, namespaced bool) dynamic.ResourceInterface { //nolint:revive +func (kc *KubeClient) GetDynamicClient(gvr schema.GroupVersionResource, namespace string) dynamic.ResourceInterface { GinkgoHelper() client, err := dynamic.NewForConfig(kc.Config) Expect(err).NotTo(HaveOccurred(), "failed to create dynamic client for resource: %s", gvr.String()) - if !namespaced { + if namespace == "" { return client.Resource(gvr) } - return client.Resource(gvr).Namespace(kc.Namespace) + return client.Resource(gvr).Namespace(namespace) } -func (kc *KubeClient) CreateOrUpdateUnstructuredObject(gvr schema.GroupVersionResource, obj *unstructured.Unstructured, namespaced bool) { +func (kc *KubeClient) CreateOrUpdateUnstructuredObject(gvr schema.GroupVersionResource, obj *unstructured.Unstructured, namespace string) { GinkgoHelper() - client := kc.GetDynamicClient(gvr, namespaced) + client := kc.GetDynamicClient(gvr, namespace) kind, name := status.ObjKindName(obj) @@ -194,18 +194,22 @@ func (kc *KubeClient) CreateOrUpdateUnstructuredObject(gvr schema.GroupVersionRe // namespace and returns a DeleteFunc to clean up the deployment. // The DeleteFunc is a no-op if the deployment has already been deleted. func (kc *KubeClient) CreateManagedCluster( - ctx context.Context, managedcluster *unstructured.Unstructured, + ctx context.Context, managedcluster *unstructured.Unstructured, namespace string, ) func() error { GinkgoHelper() kind := managedcluster.GetKind() Expect(kind).To(Equal("ManagedCluster")) + if namespace != "" { + managedcluster.SetNamespace(namespace) + } + client := kc.GetDynamicClient(schema.GroupVersionResource{ Group: "hmc.mirantis.com", Version: "v1alpha1", Resource: "managedclusters", - }, true) + }, namespace) _, err := client.Create(ctx, managedcluster, metav1.CreateOptions{}) if !apierrors.IsAlreadyExists(err) { @@ -222,14 +226,14 @@ func (kc *KubeClient) CreateManagedCluster( } // GetCluster returns a Cluster resource by name. -func (kc *KubeClient) GetCluster(ctx context.Context, clusterName string) (*unstructured.Unstructured, error) { +func (kc *KubeClient) GetCluster(ctx context.Context, namespace, clusterName string) (*unstructured.Unstructured, error) { gvr := schema.GroupVersionResource{ Group: "cluster.x-k8s.io", Version: "v1beta1", Resource: "clusters", } - client := kc.GetDynamicClient(gvr, true) + client := kc.GetDynamicClient(gvr, namespace) cluster, err := client.Get(ctx, clusterName, metav1.GetOptions{}) if err != nil { @@ -242,9 +246,9 @@ func (kc *KubeClient) GetCluster(ctx context.Context, clusterName string) (*unst // listResource returns a list of resources for the given GroupVersionResource // affiliated with the given clusterName. func (kc *KubeClient) listResource( - ctx context.Context, gvr schema.GroupVersionResource, clusterName string, + ctx context.Context, gvr schema.GroupVersionResource, namespace, clusterName string, ) ([]unstructured.Unstructured, error) { - client := kc.GetDynamicClient(gvr, true) + client := kc.GetDynamicClient(gvr, namespace) resources, err := client.List(ctx, metav1.ListOptions{ LabelSelector: "cluster.x-k8s.io/cluster-name=" + clusterName, @@ -257,20 +261,20 @@ func (kc *KubeClient) listResource( } // ListMachines returns a list of Machine resources for the given cluster. -func (kc *KubeClient) ListMachines(ctx context.Context, clusterName string) ([]unstructured.Unstructured, error) { +func (kc *KubeClient) ListMachines(ctx context.Context, namespace, clusterName string) ([]unstructured.Unstructured, error) { GinkgoHelper() return kc.listResource(ctx, schema.GroupVersionResource{ Group: "cluster.x-k8s.io", Version: "v1beta1", Resource: "machines", - }, clusterName) + }, namespace, clusterName) } // ListMachineDeployments returns a list of MachineDeployment resources for the // given cluster. func (kc *KubeClient) ListMachineDeployments( - ctx context.Context, clusterName string, + ctx context.Context, namespace, clusterName string, ) ([]unstructured.Unstructured, error) { GinkgoHelper() @@ -278,11 +282,11 @@ func (kc *KubeClient) ListMachineDeployments( Group: "cluster.x-k8s.io", Version: "v1beta1", Resource: "machinedeployments", - }, clusterName) + }, namespace, clusterName) } func (kc *KubeClient) ListK0sControlPlanes( - ctx context.Context, clusterName string, + ctx context.Context, namespace, clusterName string, ) ([]unstructured.Unstructured, error) { GinkgoHelper() @@ -290,5 +294,5 @@ func (kc *KubeClient) ListK0sControlPlanes( Group: "controlplane.cluster.x-k8s.io", Version: "v1beta1", Resource: "k0scontrolplanes", - }, clusterName) + }, namespace, clusterName) } diff --git a/test/e2e/managedcluster/aws/aws.go b/test/e2e/managedcluster/aws/aws.go index 441cfc499..56e236b25 100644 --- a/test/e2e/managedcluster/aws/aws.go +++ b/test/e2e/managedcluster/aws/aws.go @@ -39,7 +39,7 @@ func PopulateHostedTemplateVars(ctx context.Context, kc *kubeclient.KubeClient, Group: "infrastructure.cluster.x-k8s.io", Version: "v1beta2", Resource: "awsclusters", - }, true) + }, managedcluster.Namespace) awsCluster, err := c.Get(ctx, clusterName, metav1.GetOptions{}) Expect(err).NotTo(HaveOccurred(), "failed to get AWS cluster") diff --git a/test/e2e/managedcluster/azure/azure.go b/test/e2e/managedcluster/azure/azure.go index 2880badcf..3be788a4d 100644 --- a/test/e2e/managedcluster/azure/azure.go +++ b/test/e2e/managedcluster/azure/azure.go @@ -31,6 +31,7 @@ import ( hmc "github.com/Mirantis/hmc/api/v1alpha1" "github.com/Mirantis/hmc/test/e2e/kubeclient" + "github.com/Mirantis/hmc/test/e2e/managedcluster" ) func getAzureInfo(ctx context.Context, name string, kc *kubeclient.KubeClient) map[string]any { @@ -41,7 +42,7 @@ func getAzureInfo(ctx context.Context, name string, kc *kubeclient.KubeClient) m Resource: "azureclusters", } - dc := kc.GetDynamicClient(resourceID, true) + dc := kc.GetDynamicClient(resourceID, managedcluster.Namespace) list, err := dc.List(ctx, metav1.ListOptions{ LabelSelector: labels.SelectorFromSet(map[string]string{hmc.FluxHelmChartNameKey: name}).String(), }) diff --git a/test/e2e/managedcluster/clusteridentity/clusteridentity.go b/test/e2e/managedcluster/clusteridentity/clusteridentity.go index 41e01c77e..f8ea0aa57 100644 --- a/test/e2e/managedcluster/clusteridentity/clusteridentity.go +++ b/test/e2e/managedcluster/clusteridentity/clusteridentity.go @@ -39,13 +39,13 @@ type ClusterIdentity struct { IdentityName string SecretData map[string]string Spec map[string]any - Namespaced bool + Namespace string } // New creates a ClusterIdentity resource, credential and associated secret for // the given provider using the provided KubeClient and returns details about // the created ClusterIdentity. -func New(kc *kubeclient.KubeClient, provider managedcluster.ProviderType) *ClusterIdentity { +func New(kc *kubeclient.KubeClient, provider managedcluster.ProviderType, namespace string) *ClusterIdentity { GinkgoHelper() var ( @@ -126,14 +126,17 @@ func New(kc *kubeclient.KubeClient, provider managedcluster.ProviderType) *Clust IdentityName: identityName, SecretData: secretStringData, Spec: spec, - Namespaced: namespaced, + } + + if namespaced { + ci.Namespace = namespace } validateSecretDataPopulated(secretStringData) ci.waitForResourceCRD(kc) ci.createSecret(kc) ci.createClusterIdentity(kc) - ci.createCredential(kc) + ci.createCredential(kc, namespace) return &ci } @@ -200,7 +203,7 @@ func (ci *ClusterIdentity) createSecret(kc *kubeclient.KubeClient) { } } -func (ci *ClusterIdentity) createCredential(kc *kubeclient.KubeClient) { +func (ci *ClusterIdentity) createCredential(kc *kubeclient.KubeClient, namespace string) { GinkgoHelper() credName := fmt.Sprintf("%s-cred", ci.IdentityName) @@ -212,14 +215,14 @@ func (ci *ClusterIdentity) createCredential(kc *kubeclient.KubeClient) { "kind": "Credential", "metadata": map[string]any{ "name": credName, - "namespace": kc.Namespace, + "namespace": namespace, }, "spec": map[string]any{ "identityRef": map[string]any{ "apiVersion": ci.GroupVersionResource.Group + "/" + ci.GroupVersionResource.Version, "kind": ci.Kind, "name": ci.IdentityName, - "namespace": kc.Namespace, + "namespace": ci.Namespace, }, }, }, @@ -229,7 +232,7 @@ func (ci *ClusterIdentity) createCredential(kc *kubeclient.KubeClient) { Group: "hmc.mirantis.com", Version: "v1alpha1", Resource: "credentials", - }, cred, true) + }, cred, namespace) } // createClusterIdentity creates a ClusterIdentity resource. @@ -244,11 +247,11 @@ func (ci *ClusterIdentity) createClusterIdentity(kc *kubeclient.KubeClient) { "kind": ci.Kind, "metadata": map[string]any{ "name": ci.IdentityName, - "namespace": kc.Namespace, + "namespace": ci.Namespace, }, "spec": ci.Spec, }, } - kc.CreateOrUpdateUnstructuredObject(ci.GroupVersionResource, id, ci.Namespaced) + kc.CreateOrUpdateUnstructuredObject(ci.GroupVersionResource, id, ci.Namespace) } diff --git a/test/e2e/managedcluster/common.go b/test/e2e/managedcluster/common.go index 5fabf7fde..65298cf58 100644 --- a/test/e2e/managedcluster/common.go +++ b/test/e2e/managedcluster/common.go @@ -34,7 +34,7 @@ import ( // See: https://docs.k0smotron.io/stable/capi-aws/#prepare-the-aws-infra-provider // Use Eventually as the resource might not be available immediately following // a ManagedCluster creation. -func PatchHostedClusterReady(kc *kubeclient.KubeClient, provider ProviderType, clusterName string) { +func PatchHostedClusterReady(kc *kubeclient.KubeClient, provider ProviderType, namespace, clusterName string) { GinkgoHelper() ctx := context.Background() @@ -61,7 +61,7 @@ func PatchHostedClusterReady(kc *kubeclient.KubeClient, provider ProviderType, c Group: "infrastructure.cluster.x-k8s.io", Version: version, Resource: resource, - }, true) + }, namespace) trueStatus := map[string]any{ "status": map[string]any{ diff --git a/test/e2e/managedcluster/providervalidator.go b/test/e2e/managedcluster/providervalidator.go index 4df0fa84b..3e658087d 100644 --- a/test/e2e/managedcluster/providervalidator.go +++ b/test/e2e/managedcluster/providervalidator.go @@ -29,6 +29,8 @@ import ( type ProviderValidator struct { // Template is the name of the template being validated. template Template + // Namespace is the namespace of the cluster to validate. + namespace string // ClusterName is the name of the cluster to validate. clusterName string // ResourcesToValidate is a map of resource names to their validation @@ -46,7 +48,7 @@ const ( ValidationActionDelete ValidationAction = "delete" ) -func NewProviderValidator(template Template, clusterName string, action ValidationAction) *ProviderValidator { +func NewProviderValidator(template Template, namespace, clusterName string, action ValidationAction) *ProviderValidator { var ( resourcesToValidate map[string]resourceValidationFunc resourceOrder []string @@ -79,6 +81,7 @@ func NewProviderValidator(template Template, clusterName string, action Validati return &ProviderValidator{ template: template, + namespace: namespace, clusterName: clusterName, resourcesToValidate: resourcesToValidate, resourceOrder: resourceOrder, @@ -103,12 +106,12 @@ func (p *ProviderValidator) Validate(ctx context.Context, kc *kubeclient.KubeCli continue } - if err := validator(ctx, kc, p.clusterName); err != nil { - _, _ = fmt.Fprintf(GinkgoWriter, "[%s/%s] validation error: %v\n", p.template, name, err) + if err := validator(ctx, kc, p.namespace, p.clusterName); err != nil { + _, _ = fmt.Fprintf(GinkgoWriter, "Template %s [%s/%s] validation error: %v\n", p.template, p.namespace, name, err) return err } - _, _ = fmt.Fprintf(GinkgoWriter, "[%s/%s] validation succeeded\n", p.template, name) + _, _ = fmt.Fprintf(GinkgoWriter, "Template %s [%s/%s] validation succeeded\n", p.template, p.namespace, name) delete(p.resourcesToValidate, name) } diff --git a/test/e2e/managedcluster/validate_deleted.go b/test/e2e/managedcluster/validate_deleted.go index e09d4c254..8d2e7b94e 100644 --- a/test/e2e/managedcluster/validate_deleted.go +++ b/test/e2e/managedcluster/validate_deleted.go @@ -28,9 +28,9 @@ import ( ) // validateClusterDeleted validates that the Cluster resource has been deleted. -func validateClusterDeleted(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { +func validateClusterDeleted(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { // Validate that the Cluster resource has been deleted - cluster, err := kc.GetCluster(ctx, clusterName) + cluster, err := kc.GetCluster(ctx, namespace, clusterName) if err != nil && !apierrors.IsNotFound(err) { return err } @@ -64,8 +64,8 @@ func validateClusterDeleted(ctx context.Context, kc *kubeclient.KubeClient, clus // validateMachineDeploymentsDeleted validates that all MachineDeployments have // been deleted. -func validateMachineDeploymentsDeleted(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { - machineDeployments, err := kc.ListMachineDeployments(ctx, clusterName) +func validateMachineDeploymentsDeleted(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { + machineDeployments, err := kc.ListMachineDeployments(ctx, namespace, clusterName) if err != nil && !apierrors.IsNotFound(err) { return err } @@ -84,8 +84,8 @@ func validateMachineDeploymentsDeleted(ctx context.Context, kc *kubeclient.KubeC // validateK0sControlPlanesDeleted validates that all k0scontrolplanes have // been deleted. -func validateK0sControlPlanesDeleted(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { - controlPlanes, err := kc.ListK0sControlPlanes(ctx, clusterName) +func validateK0sControlPlanesDeleted(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { + controlPlanes, err := kc.ListK0sControlPlanes(ctx, namespace, clusterName) if err != nil && !apierrors.IsNotFound(err) { return err } diff --git a/test/e2e/managedcluster/validate_deployed.go b/test/e2e/managedcluster/validate_deployed.go index bae823f75..07dd7470d 100644 --- a/test/e2e/managedcluster/validate_deployed.go +++ b/test/e2e/managedcluster/validate_deployed.go @@ -34,10 +34,10 @@ import ( // resourceValidationFunc is intended to validate a specific kubernetes // resource. -type resourceValidationFunc func(context.Context, *kubeclient.KubeClient, string) error +type resourceValidationFunc func(context.Context, *kubeclient.KubeClient, string, string) error -func validateCluster(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { - cluster, err := kc.GetCluster(ctx, clusterName) +func validateCluster(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { + cluster, err := kc.GetCluster(ctx, namespace, clusterName) if err != nil { return err } @@ -58,8 +58,8 @@ func validateCluster(ctx context.Context, kc *kubeclient.KubeClient, clusterName return utils.ValidateConditionsTrue(cluster) } -func validateMachines(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { - machines, err := kc.ListMachines(ctx, clusterName) +func validateMachines(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { + machines, err := kc.ListMachines(ctx, namespace, clusterName) if err != nil { return err } @@ -67,7 +67,7 @@ func validateMachines(ctx context.Context, kc *kubeclient.KubeClient, clusterNam if len(machines) == 0 { // No machines have been created yet, check for MachineDeployments to // provide some debug information as to why no machines are present. - md, err := kc.ListMachineDeployments(ctx, clusterName) + md, err := kc.ListMachineDeployments(ctx, namespace, clusterName) if err != nil { return fmt.Errorf("failed to list machine deployments: %w", err) } @@ -98,8 +98,8 @@ func validateMachines(ctx context.Context, kc *kubeclient.KubeClient, clusterNam return nil } -func validateK0sControlPlanes(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { - controlPlanes, err := kc.ListK0sControlPlanes(ctx, clusterName) +func validateK0sControlPlanes(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { + controlPlanes, err := kc.ListK0sControlPlanes(ctx, namespace, clusterName) if err != nil { return err } @@ -141,8 +141,8 @@ func validateK0sControlPlanes(ctx context.Context, kc *kubeclient.KubeClient, cl // validateCSIDriver validates that the provider CSI driver is functioning // by creating a PVC and verifying it enters "Bound" status. -func validateCSIDriver(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { - clusterKC := kc.NewFromCluster(ctx, "default", clusterName) +func validateCSIDriver(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { + clusterKC := kc.NewFromCluster(ctx, namespace, clusterName) pvcName := clusterName + "-csi-test-pvc" @@ -228,8 +228,8 @@ func validateCSIDriver(ctx context.Context, kc *kubeclient.KubeClient, clusterNa // validateCCM validates that the provider's cloud controller manager is // functional by creating a LoadBalancer service and verifying it is assigned // an external IP. -func validateCCM(ctx context.Context, kc *kubeclient.KubeClient, clusterName string) error { - clusterKC := kc.NewFromCluster(ctx, "default", clusterName) +func validateCCM(ctx context.Context, kc *kubeclient.KubeClient, namespace, clusterName string) error { + clusterKC := kc.NewFromCluster(ctx, namespace, clusterName) createdServiceName := "loadbalancer-" + clusterName diff --git a/test/e2e/provider_aws_test.go b/test/e2e/provider_aws_test.go index 59a084b65..230c89493 100644 --- a/test/e2e/provider_aws_test.go +++ b/test/e2e/provider_aws_test.go @@ -48,7 +48,7 @@ var _ = Describe("AWS Templates", Label("provider:cloud", "provider:aws"), Order BeforeAll(func() { By("providing cluster identity") kc = kubeclient.NewFromLocal(internalutils.DefaultSystemNamespace) - ci := clusteridentity.New(kc, managedcluster.ProviderAWS) + ci := clusteridentity.New(kc, managedcluster.ProviderAWS, managedcluster.Namespace) Expect(os.Setenv(managedcluster.EnvVarAWSClusterIdentity, ci.IdentityName)).Should(Succeed()) }) @@ -85,11 +85,12 @@ var _ = Describe("AWS Templates", Label("provider:cloud", "provider:aws"), Order sd := managedcluster.GetUnstructured(managedcluster.TemplateAWSStandaloneCP) clusterName = sd.GetName() - standaloneDeleteFunc = kc.CreateManagedCluster(context.Background(), sd) + standaloneDeleteFunc = kc.CreateManagedCluster(context.Background(), sd, managedcluster.Namespace) templateBy(managedcluster.TemplateAWSStandaloneCP, "waiting for infrastructure to deploy successfully") deploymentValidator := managedcluster.NewProviderValidator( managedcluster.TemplateAWSStandaloneCP, + managedcluster.Namespace, clusterName, managedcluster.ValidationActionDeploy, ) @@ -106,7 +107,7 @@ var _ = Describe("AWS Templates", Label("provider:cloud", "provider:aws"), Order // convert these Make targets into Go code, but this will require a // helmclient. var kubeCfgPath string - kubeCfgPath, kubecfgDeleteFunc = kc.WriteKubeconfig(context.Background(), clusterName) + kubeCfgPath, kubecfgDeleteFunc = kc.WriteKubeconfig(context.Background(), managedcluster.Namespace, clusterName) GinkgoT().Setenv("KUBECONFIG", kubeCfgPath) cmd := exec.Command("make", "test-apply") @@ -115,7 +116,7 @@ var _ = Describe("AWS Templates", Label("provider:cloud", "provider:aws"), Order Expect(os.Unsetenv("KUBECONFIG")).To(Succeed()) templateBy(managedcluster.TemplateAWSHostedCP, "validating that the controller is ready") - standaloneClient = kc.NewFromCluster(context.Background(), internalutils.DefaultSystemNamespace, clusterName) + standaloneClient = kc.NewFromCluster(context.Background(), managedcluster.Namespace, clusterName) Eventually(func() error { err := verifyControllersUp(standaloneClient) if err != nil { @@ -131,7 +132,7 @@ var _ = Describe("AWS Templates", Label("provider:cloud", "provider:aws"), Order templates.ApplyClusterTemplateAccessRules(ctx, standaloneClient.CrClient) // Ensure AWS credentials are set in the standalone cluster. - clusteridentity.New(standaloneClient, managedcluster.ProviderAWS) + clusteridentity.New(standaloneClient, managedcluster.ProviderAWS, managedcluster.Namespace) // Populate the environment variables required for the hosted // cluster. @@ -142,15 +143,16 @@ var _ = Describe("AWS Templates", Label("provider:cloud", "provider:aws"), Order hdName := hd.GetName() // Deploy the hosted cluster on top of the standalone cluster. - hostedDeleteFunc = standaloneClient.CreateManagedCluster(context.Background(), hd) + hostedDeleteFunc = standaloneClient.CreateManagedCluster(context.Background(), hd, managedcluster.Namespace) templateBy(managedcluster.TemplateAWSHostedCP, "Patching AWSCluster to ready") - managedcluster.PatchHostedClusterReady(standaloneClient, managedcluster.ProviderAWS, hdName) + managedcluster.PatchHostedClusterReady(standaloneClient, managedcluster.ProviderAWS, managedcluster.Namespace, hdName) // Verify the hosted cluster is running/ready. templateBy(managedcluster.TemplateAWSHostedCP, "waiting for infrastructure to deploy successfully") deploymentValidator = managedcluster.NewProviderValidator( managedcluster.TemplateAWSHostedCP, + managedcluster.Namespace, hdName, managedcluster.ValidationActionDeploy, ) @@ -165,6 +167,7 @@ var _ = Describe("AWS Templates", Label("provider:cloud", "provider:aws"), Order deletionValidator := managedcluster.NewProviderValidator( managedcluster.TemplateAWSHostedCP, + managedcluster.Namespace, hdName, managedcluster.ValidationActionDelete, ) diff --git a/test/e2e/provider_azure_test.go b/test/e2e/provider_azure_test.go index 4e7205f0b..2e7d0b52e 100644 --- a/test/e2e/provider_azure_test.go +++ b/test/e2e/provider_azure_test.go @@ -49,7 +49,7 @@ var _ = Context("Azure Templates", Label("provider:cloud", "provider:azure"), Or BeforeAll(func() { By("ensuring Azure credentials are set") kc = kubeclient.NewFromLocal(internalutils.DefaultSystemNamespace) - ci := clusteridentity.New(kc, managedcluster.ProviderAzure) + ci := clusteridentity.New(kc, managedcluster.ProviderAzure, managedcluster.Namespace) Expect(os.Setenv(managedcluster.EnvVarAzureClusterIdentity, ci.IdentityName)).Should(Succeed()) }) @@ -85,11 +85,12 @@ var _ = Context("Azure Templates", Label("provider:cloud", "provider:azure"), Or sd := managedcluster.GetUnstructured(managedcluster.TemplateAzureStandaloneCP) sdName = sd.GetName() - standaloneDeleteFunc := kc.CreateManagedCluster(context.Background(), sd) + standaloneDeleteFunc := kc.CreateManagedCluster(context.Background(), sd, managedcluster.Namespace) // verify the standalone cluster is deployed correctly deploymentValidator := managedcluster.NewProviderValidator( managedcluster.TemplateAzureStandaloneCP, + managedcluster.Namespace, sdName, managedcluster.ValidationActionDeploy, ) @@ -106,7 +107,7 @@ var _ = Context("Azure Templates", Label("provider:cloud", "provider:azure"), Or hdName := hd.GetName() var kubeCfgPath string - kubeCfgPath, kubecfgDeleteFunc = kc.WriteKubeconfig(context.Background(), sdName) + kubeCfgPath, kubecfgDeleteFunc = kc.WriteKubeconfig(context.Background(), managedcluster.Namespace, sdName) By("Deploy onto standalone cluster") GinkgoT().Setenv("KUBECONFIG", kubeCfgPath) @@ -115,7 +116,7 @@ var _ = Context("Azure Templates", Label("provider:cloud", "provider:azure"), Or Expect(err).NotTo(HaveOccurred()) Expect(os.Unsetenv("KUBECONFIG")).To(Succeed()) - standaloneClient = kc.NewFromCluster(context.Background(), internalutils.DefaultSystemNamespace, sdName) + standaloneClient = kc.NewFromCluster(context.Background(), managedcluster.Namespace, sdName) // verify the cluster is ready prior to creating credentials Eventually(func() error { err := verifyControllersUp(standaloneClient) @@ -130,20 +131,21 @@ var _ = Context("Azure Templates", Label("provider:cloud", "provider:azure"), Or templates.ApplyClusterTemplateAccessRules(ctx, standaloneClient.CrClient) By("Create azure credential secret") - clusteridentity.New(standaloneClient, managedcluster.ProviderAzure) + clusteridentity.New(standaloneClient, managedcluster.ProviderAzure, managedcluster.Namespace) By("Create default storage class for azure-disk CSI driver") azure.CreateDefaultStorageClass(standaloneClient) templateBy(managedcluster.TemplateAzureHostedCP, "creating a ManagedCluster") - hostedDeleteFunc = standaloneClient.CreateManagedCluster(context.Background(), hd) + hostedDeleteFunc = standaloneClient.CreateManagedCluster(context.Background(), hd, managedcluster.Namespace) templateBy(managedcluster.TemplateAzureHostedCP, "Patching AzureCluster to ready") - managedcluster.PatchHostedClusterReady(standaloneClient, managedcluster.ProviderAzure, hdName) + managedcluster.PatchHostedClusterReady(standaloneClient, managedcluster.ProviderAzure, managedcluster.Namespace, hdName) templateBy(managedcluster.TemplateAzureHostedCP, "waiting for infrastructure to deploy successfully") deploymentValidator = managedcluster.NewProviderValidator( managedcluster.TemplateAzureHostedCP, + managedcluster.Namespace, hdName, managedcluster.ValidationActionDeploy, ) @@ -161,6 +163,7 @@ var _ = Context("Azure Templates", Label("provider:cloud", "provider:azure"), Or deploymentValidator = managedcluster.NewProviderValidator( managedcluster.TemplateAzureHostedCP, + managedcluster.Namespace, hdName, managedcluster.ValidationActionDelete, ) @@ -171,6 +174,7 @@ var _ = Context("Azure Templates", Label("provider:cloud", "provider:azure"), Or deploymentValidator = managedcluster.NewProviderValidator( managedcluster.TemplateAzureStandaloneCP, + managedcluster.Namespace, hdName, managedcluster.ValidationActionDelete, ) diff --git a/test/e2e/provider_vsphere_test.go b/test/e2e/provider_vsphere_test.go index 202d7deda..7cec432a4 100644 --- a/test/e2e/provider_vsphere_test.go +++ b/test/e2e/provider_vsphere_test.go @@ -43,7 +43,7 @@ var _ = Context("vSphere Templates", Label("provider:onprem", "provider:vsphere" By("creating kube client") kc = kubeclient.NewFromLocal(internalutils.DefaultSystemNamespace) By("providing cluster identity") - ci := clusteridentity.New(kc, managedcluster.ProviderVSphere) + ci := clusteridentity.New(kc, managedcluster.ProviderVSphere, managedcluster.Namespace) By("setting VSPHERE_CLUSTER_IDENTITY env variable") Expect(os.Setenv(managedcluster.EnvVarVSphereClusterIdentity, ci.IdentityName)).Should(Succeed()) }) @@ -66,6 +66,7 @@ var _ = Context("vSphere Templates", Label("provider:onprem", "provider:vsphere" if deleteFunc != nil && !noCleanup() { deletionValidator := managedcluster.NewProviderValidator( managedcluster.TemplateVSphereStandaloneCP, + managedcluster.Namespace, clusterName, managedcluster.ValidationActionDelete, ) @@ -83,11 +84,12 @@ var _ = Context("vSphere Templates", Label("provider:onprem", "provider:vsphere" d := managedcluster.GetUnstructured(managedcluster.TemplateVSphereStandaloneCP) clusterName = d.GetName() - deleteFunc = kc.CreateManagedCluster(context.Background(), d) + deleteFunc = kc.CreateManagedCluster(context.Background(), d, managedcluster.Namespace) By("waiting for infrastructure providers to deploy successfully") deploymentValidator := managedcluster.NewProviderValidator( managedcluster.TemplateVSphereStandaloneCP, + managedcluster.Namespace, clusterName, managedcluster.ValidationActionDeploy, )