Skip to content

Commit ffa81c1

Browse files
committed
tests: e2e tests implemented
Signed-off-by: Bharath Nallapeta <bnallapeta@mirantis.com>
1 parent 3262348 commit ffa81c1

File tree

11 files changed

+60
-114
lines changed

11 files changed

+60
-114
lines changed

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,8 @@ e2e-templates: $(addprefix $(E2E_NO_ARTIFACT_TEMPLATES_DIR)/, \
187187
cluster-template-k8s-upgrade.yaml \
188188
cluster-template-flatcar-sysext.yaml \
189189
cluster-template-no-bastion.yaml \
190-
cluster-template-health-monitor.yaml)
190+
cluster-template-health-monitor.yaml \
191+
cluster-template-cluster-identity.yaml)
191192
# Currently no templates that require CI artifacts
192193
# $(addprefix $(E2E_TEMPLATES_DIR)/, add-templates-here.yaml) \
193194

config/crd/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ labels:
88
# It should be run by config/
99
resources:
1010
- bases/infrastructure.cluster.x-k8s.io_openstackclusters.yaml
11+
- bases/infrastructure.cluster.x-k8s.io_openstackclusteridentities.yaml
1112
- bases/infrastructure.cluster.x-k8s.io_openstackmachines.yaml
1213
- bases/infrastructure.cluster.x-k8s.io_openstackmachinetemplates.yaml
1314
- bases/infrastructure.cluster.x-k8s.io_openstackclustertemplates.yaml

controllers/openstackcluster_controller_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,32 @@ var _ = Describe("OpenStackCluster controller", func() {
261261
Expect(fetched.Spec.IdentityRef.Type).To(Equal("Secret"))
262262
})
263263

264+
It("should fail when namespace is denied access to ClusterIdentity", func() {
265+
testCluster.SetName("identity-access-denied")
266+
testCluster.Spec.IdentityRef = infrav1.OpenStackIdentityReference{
267+
Type: "ClusterIdentity",
268+
Name: "test-cluster-identity",
269+
CloudName: "openstack",
270+
}
271+
272+
err := k8sClient.Create(ctx, testCluster)
273+
Expect(err).To(BeNil())
274+
err = k8sClient.Create(ctx, capiCluster)
275+
Expect(err).To(BeNil())
276+
277+
identityAccessErr := &scope.IdentityAccessDeniedError{
278+
IdentityName: "test-cluster-identity",
279+
RequesterNamespace: testNamespace,
280+
}
281+
mockScopeFactory.SetClientScopeCreateError(identityAccessErr)
282+
283+
req := createRequestFromOSCluster(testCluster)
284+
result, err := reconciler.Reconcile(ctx, req)
285+
286+
Expect(err).To(MatchError(identityAccessErr))
287+
Expect(result).To(Equal(reconcile.Result{}))
288+
})
289+
264290
It("should reject updates that modify identityRef.region (immutable)", func() {
265291
testCluster.Spec = infrav1.OpenStackClusterSpec{
266292
IdentityRef: infrav1.OpenStackIdentityReference{

test/e2e/data/e2e_conf.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ providers:
128128
- sourcePath: "../data/shared/provider/metadata.yaml"
129129
- sourcePath: "./infrastructure-openstack-no-artifact/cluster-template.yaml"
130130
- sourcePath: "./infrastructure-openstack-no-artifact/cluster-template-without-lb.yaml"
131+
- sourcePath: "./infrastructure-openstack-no-artifact/cluster-template-cluster-identity.yaml"
131132
replacements:
132133
- old: gcr.io/k8s-staging-capi-openstack/capi-openstack-controller:dev
133134
new: gcr.io/k8s-staging-capi-openstack/capi-openstack-controller:e2e

test/e2e/data/kustomize/cluster-identity-denied/kustomization.yaml

Lines changed: 0 additions & 21 deletions
This file was deleted.

test/e2e/data/kustomize/cluster-identity-denied/openstackclusteridentity.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.

test/e2e/data/kustomize/cluster-identity-denied/patch-openstackcluster-identityref.yaml

Lines changed: 0 additions & 8 deletions
This file was deleted.

test/e2e/data/kustomize/cluster-identity/kustomization.yaml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,12 @@ apiVersion: kustomize.config.k8s.io/v1beta1
22
kind: Kustomization
33

44
resources:
5-
- ../../../../../kustomize/v1beta1/default
5+
- ../default
66
- openstackclusteridentity.yaml
77

8-
components:
9-
- ../common-patches/cluster
10-
- ../common-patches/cni
11-
- ../upgrade-patches
12-
- ../common-patches/ccm
13-
- ../common-patches/externalNetworkByName
14-
- ../common-patches/images
15-
168
patches:
179
- path: patch-openstackcluster-identityref.yaml
1810
target:
1911
kind: OpenStackCluster
20-
name: ${CLUSTER_NAME}
12+
name: \${CLUSTER_NAME}
2113

test/e2e/data/kustomize/default/kustomization.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@ components:
1111
- ../common-patches/ccm
1212
- ../common-patches/externalNetworkByName
1313
- ../common-patches/images
14-
- ../common-patches/dns-fix

test/e2e/shared/defaults.go

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -35,35 +35,34 @@ import (
3535
)
3636

3737
const (
38-
DefaultSSHKeyPairName = "cluster-api-provider-openstack-sigs-k8s-io"
39-
KubeContext = "KUBE_CONTEXT"
40-
KubernetesVersion = "KUBERNETES_VERSION"
41-
CCMPath = "CCM"
42-
CCMResources = "CCM_RESOURCES"
43-
OpenStackBastionFlavorAlt = "OPENSTACK_BASTION_MACHINE_FLAVOR_ALT"
44-
OpenStackCloudYAMLFile = "OPENSTACK_CLOUD_YAML_FILE"
45-
OpenStackCloud = "OPENSTACK_CLOUD"
46-
OpenStackCloudCACertB64 = "OPENSTACK_CLOUD_CACERT_B64"
47-
OpenStackCloudAdmin = "OPENSTACK_CLOUD_ADMIN"
48-
OpenStackFailureDomain = "OPENSTACK_FAILURE_DOMAIN" //nolint:gosec // Linter thinks this could be credentials...
49-
OpenStackFailureDomainAlt = "OPENSTACK_FAILURE_DOMAIN_ALT"
50-
OpenStackVolumeTypeAlt = "OPENSTACK_VOLUME_TYPE_ALT"
51-
OpenStackImageName = "OPENSTACK_IMAGE_NAME"
52-
OpenStackNodeMachineFlavor = "OPENSTACK_NODE_MACHINE_FLAVOR"
53-
SSHUserMachine = "SSH_USER_MACHINE"
54-
FlavorDefault = ""
55-
FlavorNoBastion = "no-bastion"
56-
FlavorWithoutLB = "without-lb"
57-
FlavorMultiNetwork = "multi-network"
58-
FlavorMultiAZ = "multi-az"
59-
FlavorMDRemediation = "md-remediation"
60-
FlavorKCPRemediation = "kcp-remediation"
61-
FlavorFlatcar = "flatcar"
62-
FlavorKubernetesUpgrade = "k8s-upgrade"
63-
FlavorFlatcarSysext = "flatcar-sysext"
64-
FlavorHealthMonitor = "health-monitor"
65-
FlavorClusterIdentity = "cluster-identity"
66-
FlavorClusterIdentityDenied = "cluster-identity-denied"
38+
DefaultSSHKeyPairName = "cluster-api-provider-openstack-sigs-k8s-io"
39+
KubeContext = "KUBE_CONTEXT"
40+
KubernetesVersion = "KUBERNETES_VERSION"
41+
CCMPath = "CCM"
42+
CCMResources = "CCM_RESOURCES"
43+
OpenStackBastionFlavorAlt = "OPENSTACK_BASTION_MACHINE_FLAVOR_ALT"
44+
OpenStackCloudYAMLFile = "OPENSTACK_CLOUD_YAML_FILE"
45+
OpenStackCloud = "OPENSTACK_CLOUD"
46+
OpenStackCloudCACertB64 = "OPENSTACK_CLOUD_CACERT_B64"
47+
OpenStackCloudAdmin = "OPENSTACK_CLOUD_ADMIN"
48+
OpenStackFailureDomain = "OPENSTACK_FAILURE_DOMAIN" //nolint:gosec // Linter thinks this could be credentials...
49+
OpenStackFailureDomainAlt = "OPENSTACK_FAILURE_DOMAIN_ALT"
50+
OpenStackVolumeTypeAlt = "OPENSTACK_VOLUME_TYPE_ALT"
51+
OpenStackImageName = "OPENSTACK_IMAGE_NAME"
52+
OpenStackNodeMachineFlavor = "OPENSTACK_NODE_MACHINE_FLAVOR"
53+
SSHUserMachine = "SSH_USER_MACHINE"
54+
FlavorDefault = ""
55+
FlavorNoBastion = "no-bastion"
56+
FlavorWithoutLB = "without-lb"
57+
FlavorMultiNetwork = "multi-network"
58+
FlavorMultiAZ = "multi-az"
59+
FlavorMDRemediation = "md-remediation"
60+
FlavorKCPRemediation = "kcp-remediation"
61+
FlavorFlatcar = "flatcar"
62+
FlavorKubernetesUpgrade = "k8s-upgrade"
63+
FlavorFlatcarSysext = "flatcar-sysext"
64+
FlavorHealthMonitor = "health-monitor"
65+
FlavorClusterIdentity = "cluster-identity"
6766
)
6867

6968
// DefaultScheme returns the default scheme to use for testing.

0 commit comments

Comments
 (0)