Skip to content

Commit 60bb5b3

Browse files
committed
Skip limit import tests on older OpenStack versions in e2e tests due to Keystone API issue
Use prebuilt image to avoid slow creation of registered limits
1 parent 9b0a8e9 commit 60bb5b3

30 files changed

Lines changed: 500 additions & 209 deletions

.github/workflows/e2e.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ jobs:
6464
6565
- name: Run e2e tests
6666
run: |
67+
if [[ "${{ matrix.name }}" != "gazpacho" ]]; then
68+
echo "Skip limit import tests due to Keystone API issue(list limit) in older versions"
69+
rm -rf internal/controllers/limit/tests/limit-import*
70+
fi
71+
6772
make test-e2e
6873
make test-examples
6974

internal/controllers/limit/actuator.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,13 @@ func (actuator limitActuator) ListOSResourcesForImport(ctx context.Context, obj
180180
}
181181

182182
func (actuator limitActuator) listOSResources(ctx context.Context, filters []osclients.ResourceFilter[osResourceT], listOpts limits.ListOptsBuilder) iter.Seq2[*limits.Limit, error] {
183-
registeredLimits := actuator.osClient.ListLimits(ctx, listOpts)
184-
return osclients.Filter(registeredLimits, filters...)
183+
ctrl.LoggerFrom(ctx).V(logging.Debug).Info("list option", "listOpts", listOpts)
184+
185+
return osclients.Filter(actuator.osClient.ListLimits(ctx, listOpts), filters...)
185186
}
186187

187188
func (actuator limitActuator) CreateResource(ctx context.Context, obj orcObjectPT) (*osResourceT, progress.ReconcileStatus) {
189+
logger := ctrl.LoggerFrom(ctx).WithValues("limitName", obj.Name)
188190
resource := obj.Spec.Resource
189191

190192
if resource == nil {
@@ -226,7 +228,7 @@ func (actuator limitActuator) CreateResource(ctx context.Context, obj orcObjectP
226228
}
227229
if needsReschedule, err := reconcileStatus.NeedsReschedule(); needsReschedule {
228230
if err != nil {
229-
ctrl.LoggerFrom(ctx).Info("fetch dependency before creating limit", "error", err)
231+
logger.Info("fetch dependency before creating limit", "error", err)
230232
}
231233

232234
return nil, reconcileStatus
@@ -248,6 +250,8 @@ func (actuator limitActuator) CreateResource(ctx context.Context, obj orcObjectP
248250
return nil, progress.WrapError(err)
249251
}
250252

253+
logger.Info("limit created", "createOpts", createOpts)
254+
251255
return osResource, nil
252256
}
253257

internal/controllers/limit/tests/limit-create-full/00-assert.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,43 @@ status:
66
readyReplicas: 1
77
---
88
apiVersion: openstack.k-orc.cloud/v1alpha1
9+
kind: Service
10+
status:
11+
conditions:
12+
- type: Available
13+
status: "True"
14+
reason: Success
15+
- type: Progressing
16+
status: "False"
17+
reason: Success
18+
---
19+
apiVersion: openstack.k-orc.cloud/v1alpha1
20+
kind: Project
21+
metadata:
22+
name: project-limit-create-full
23+
status:
24+
conditions:
25+
- type: Available
26+
status: "True"
27+
reason: Success
28+
- type: Progressing
29+
status: "False"
30+
reason: Success
31+
---
32+
apiVersion: openstack.k-orc.cloud/v1alpha1
33+
kind: Domain
34+
metadata:
35+
name: domain-limit-create-full
36+
status:
37+
conditions:
38+
- type: Available
39+
status: "True"
40+
reason: Success
41+
- type: Progressing
42+
status: "False"
43+
reason: Success
44+
---
45+
apiVersion: openstack.k-orc.cloud/v1alpha1
946
kind: Limit
1047
metadata:
1148
name: limit-create-full-1
@@ -41,6 +78,14 @@ status:
4178
---
4279
apiVersion: kuttl.dev/v1beta1
4380
kind: TestAssert
81+
collectors:
82+
- selector: app=setup-teardown
83+
commands:
84+
- script: |-
85+
cd $(dirname ${E2E_KUTTL_OSCLOUDS})
86+
export OS_CLOUD=openstack-admin
87+
openstack registered limit list --resource-name limit-create-full-1 &&
88+
openstack registered limit list --resource-name limit-create-full-2
4489
resourceRefs:
4590
- apiVersion: openstack.k-orc.cloud/v1alpha1
4691
kind: Limit

internal/controllers/limit/tests/limit-create-full/00-secret.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,3 @@ kind: TestStep
44
commands:
55
- command: kubectl create secret generic openstack-clouds --from-file=clouds.yaml=${E2E_KUTTL_OSCLOUDS} ${E2E_KUTTL_CACERT_OPT}
66
namespaced: true
7-
- command: kubectl create configmap common --from-file=../utils
8-
namespaced: true

internal/controllers/limit/tests/limit-create-full/00-setup-cleanup.yaml

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,13 @@ spec:
1616
spec:
1717
containers:
1818
- name: setup-teardown
19-
image: golang:alpine
19+
image: ghcr.io/chenwng/orc-helper:latest
2020
command:
21-
- sh
22-
- -c
23-
- |
24-
mkdir /test-helper &&
25-
cp /app/* /test-helper &&
26-
cd /test-helper;
27-
go mod init test-helper &&
28-
go mod tidy &&
29-
go build -o ./test-helper . &&
30-
exec ./test-helper
21+
- /orc-helper
3122
volumeMounts:
3223
- name: openstack-clouds
3324
mountPath: /etc/openstack
3425
readOnly: true
35-
- name: common
36-
mountPath: /app
37-
readOnly: true
3826
- name: log-volume
3927
mountPath: /log
4028
env:
@@ -69,9 +57,6 @@ spec:
6957
- name: openstack-clouds
7058
secret:
7159
secretName: openstack-clouds
72-
- name: common
73-
configMap:
74-
name: common
7560
- name: log-volume
7661
hostPath:
7762
path: /log

internal/controllers/limit/tests/limit-create-minimal/00-assert.yaml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,45 @@ status:
66
readyReplicas: 1
77
---
88
apiVersion: openstack.k-orc.cloud/v1alpha1
9+
kind: Service
10+
metadata:
11+
name: service-limit-create-minimal
12+
status:
13+
conditions:
14+
- type: Available
15+
status: "True"
16+
reason: Success
17+
- type: Progressing
18+
status: "False"
19+
reason: Success
20+
---
21+
apiVersion: openstack.k-orc.cloud/v1alpha1
22+
kind: Project
23+
metadata:
24+
name: project-limit-create-minimal
25+
status:
26+
conditions:
27+
- type: Available
28+
status: "True"
29+
reason: Success
30+
- type: Progressing
31+
status: "False"
32+
reason: Success
33+
---
34+
apiVersion: openstack.k-orc.cloud/v1alpha1
35+
kind: Domain
36+
metadata:
37+
name: domain-limit-create-minimal
38+
status:
39+
conditions:
40+
- type: Available
41+
status: "True"
42+
reason: Success
43+
- type: Progressing
44+
status: "False"
45+
reason: Success
46+
---
47+
apiVersion: openstack.k-orc.cloud/v1alpha1
948
kind: Limit
1049
metadata:
1150
name: limit-create-minimal-1
@@ -39,6 +78,14 @@ status:
3978
---
4079
apiVersion: kuttl.dev/v1beta1
4180
kind: TestAssert
81+
collectors:
82+
- selector: app=setup-teardown
83+
commands:
84+
- script: |-
85+
cd $(dirname ${E2E_KUTTL_OSCLOUDS})
86+
export OS_CLOUD=openstack-admin
87+
openstack registered limit list --resource-name limit-create-minimal-1 &&
88+
openstack registered limit list --resource-name limit-create-minimal-2
4289
resourceRefs:
4390
- apiVersion: openstack.k-orc.cloud/v1alpha1
4491
kind: Limit

internal/controllers/limit/tests/limit-create-minimal/00-secret.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,4 @@ apiVersion: kuttl.dev/v1beta1
33
kind: TestStep
44
commands:
55
- command: kubectl create secret generic openstack-clouds --from-file=clouds.yaml=${E2E_KUTTL_OSCLOUDS} ${E2E_KUTTL_CACERT_OPT}
6-
namespaced: true
7-
- command: kubectl create configmap common --from-file=../utils
8-
namespaced: true
6+
namespaced: true

internal/controllers/limit/tests/limit-create-minimal/00-setup-cleanup.yaml

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,13 @@ spec:
1616
spec:
1717
containers:
1818
- name: setup-teardown
19-
image: golang:alpine
19+
image: ghcr.io/chenwng/orc-helper:latest
2020
command:
21-
- sh
22-
- -c
23-
- |
24-
mkdir /test-helper &&
25-
cp /app/* /test-helper &&
26-
cd /test-helper;
27-
go mod init test-helper &&
28-
go mod tidy &&
29-
go build -o ./test-helper . &&
30-
exec ./test-helper
21+
- /orc-helper
3122
volumeMounts:
3223
- name: openstack-clouds
3324
mountPath: /etc/openstack
3425
readOnly: true
35-
- name: common
36-
mountPath: /app
37-
readOnly: true
3826
- name: log-volume
3927
mountPath: /log
4028
env:
@@ -69,9 +57,6 @@ spec:
6957
- name: openstack-clouds
7058
secret:
7159
secretName: openstack-clouds
72-
- name: common
73-
configMap:
74-
name: common
7560
- name: log-volume
7661
hostPath:
7762
path: /log

internal/controllers/limit/tests/limit-dependency/01-assert.yaml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,45 @@ status:
66
readyReplicas: 1
77
---
88
apiVersion: openstack.k-orc.cloud/v1alpha1
9+
kind: Service
10+
metadata:
11+
name: service-limit-dependency
12+
status:
13+
conditions:
14+
- type: Available
15+
status: "True"
16+
reason: Success
17+
- type: Progressing
18+
status: "False"
19+
reason: Success
20+
---
21+
apiVersion: openstack.k-orc.cloud/v1alpha1
22+
kind: Project
23+
metadata:
24+
name: project-limit-dependency
25+
status:
26+
conditions:
27+
- type: Available
28+
status: "True"
29+
reason: Success
30+
- type: Progressing
31+
status: "False"
32+
reason: Success
33+
---
34+
apiVersion: openstack.k-orc.cloud/v1alpha1
35+
kind: Domain
36+
metadata:
37+
name: domain-limit-dependency
38+
status:
39+
conditions:
40+
- type: Available
41+
status: "True"
42+
reason: Success
43+
- type: Progressing
44+
status: "False"
45+
reason: Success
46+
---
47+
apiVersion: openstack.k-orc.cloud/v1alpha1
948
kind: Limit
1049
metadata:
1150
name: limit-dependency-1
@@ -49,3 +88,15 @@ status:
4988
message: OpenStack resource is up to date
5089
status: "False"
5190
reason: Success
91+
---
92+
apiVersion: kuttl.dev/v1beta1
93+
kind: TestAssert
94+
collectors:
95+
- selector: app=setup-teardown
96+
commands:
97+
- script: |-
98+
cd $(dirname ${E2E_KUTTL_OSCLOUDS})
99+
export OS_CLOUD=openstack-admin
100+
openstack registered limit list --resource-name limit-dependency-1 &&
101+
openstack registered limit list --resource-name limit-dependency-2 &&
102+
openstack registered limit list --resource-name limit-dependency-3

internal/controllers/limit/tests/limit-dependency/01-create-dependencies.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ kind: TestStep
44
commands:
55
- command: kubectl create secret generic limit-dependency --from-file=clouds.yaml=${E2E_KUTTL_OSCLOUDS} ${E2E_KUTTL_CACERT_OPT}
66
namespaced: true
7-
- command: kubectl create configmap common --from-file=../utils
8-
namespaced: true
97
---
108
apiVersion: openstack.k-orc.cloud/v1alpha1
119
kind: Service

0 commit comments

Comments
 (0)