Skip to content

Commit 0b8d70e

Browse files
committed
Add more checks in e2e assertion
Debug CI e2e failures
1 parent 7d4b66f commit 0b8d70e

10 files changed

Lines changed: 449 additions & 31 deletions

File tree

.github/workflows/e2e.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
6565
- name: Run e2e tests
6666
run: |
67-
make test-e2e
67+
E2E_KUTTL_DIR=./internal/controllers/limit/tests make test-e2e
6868
make test-examples
6969
7070
- name: Generate logs on failure

internal/controllers/limit/actuator.go

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,38 @@ 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+
logger := ctrl.LoggerFrom(ctx)
184+
logger.V(logging.Debug).Info("list option", "listOpts", listOpts)
185+
resultLimits := actuator.osClient.ListLimits(ctx, listOpts)
186+
187+
t := []struct {
188+
l *limits.Limit
189+
err error
190+
}{}
191+
192+
// For debugging CI issue
193+
for l, err := range resultLimits {
194+
logger.V(logging.Debug).Info("dump limit", "limit", l, "error", err)
195+
t = append(t, struct {
196+
l *limits.Limit
197+
err error
198+
}{
199+
l, err,
200+
})
201+
}
202+
203+
return osclients.Filter(func(yield func(*limits.Limit, error) bool) {
204+
for _, m := range t {
205+
if !yield(m.l, m.err) {
206+
return
207+
}
208+
}
209+
210+
}, filters...)
185211
}
186212

187213
func (actuator limitActuator) CreateResource(ctx context.Context, obj orcObjectPT) (*osResourceT, progress.ReconcileStatus) {
214+
logger := ctrl.LoggerFrom(ctx).WithValues("limitName", obj.Name)
188215
resource := obj.Spec.Resource
189216

190217
if resource == nil {
@@ -226,7 +253,7 @@ func (actuator limitActuator) CreateResource(ctx context.Context, obj orcObjectP
226253
}
227254
if needsReschedule, err := reconcileStatus.NeedsReschedule(); needsReschedule {
228255
if err != nil {
229-
ctrl.LoggerFrom(ctx).Info("fetch dependency before creating limit", "error", err)
256+
logger.Info("fetch dependency before creating limit", "error", err)
230257
}
231258

232259
return nil, reconcileStatus
@@ -248,6 +275,8 @@ func (actuator limitActuator) CreateResource(ctx context.Context, obj orcObjectP
248275
return nil, progress.WrapError(err)
249276
}
250277

278+
logger.Info("limit created", "createOpts", createOpts)
279+
251280
return osResource, nil
252281
}
253282

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-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-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-import-dependency/00-assert.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
11
---
22
apiVersion: openstack.k-orc.cloud/v1alpha1
3+
kind: Service
4+
metadata:
5+
name: service-limit-import-dependency
6+
status:
7+
conditions:
8+
- type: Available
9+
status: "True"
10+
reason: Success
11+
- type: Progressing
12+
status: "False"
13+
reason: Success
14+
---
15+
apiVersion: openstack.k-orc.cloud/v1alpha1
16+
kind: Project
17+
metadata:
18+
name: project-limit-import-dependency-imported
19+
status:
20+
conditions:
21+
- type: Available
22+
message: |-
23+
Waiting for OpenStack resource to be created externally
24+
status: "False"
25+
reason: Progressing
26+
- type: Progressing
27+
message: |-
28+
Waiting for OpenStack resource to be created externally
29+
status: "True"
30+
reason: Progressing
31+
---
32+
apiVersion: openstack.k-orc.cloud/v1alpha1
333
kind: Limit
434
metadata:
535
name: limit-import-dependency

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

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,44 @@ metadata:
55
status:
66
readyReplicas: 1
77
---
8-
apiVersion: kuttl.dev/v1beta1
9-
kind: TestAssert
10-
resourceRefs:
11-
- apiVersion: openstack.k-orc.cloud/v1alpha1
12-
kind: Limit
13-
name: limit-import-dependency
14-
ref: limit1
15-
- apiVersion: openstack.k-orc.cloud/v1alpha1
16-
kind: Limit
17-
name: limit-import-dependency-external
18-
ref: limit2
19-
- apiVersion: openstack.k-orc.cloud/v1alpha1
20-
kind: Project
21-
name: project-limit-import-dependency
22-
ref: project
23-
assertAll:
24-
- celExpr: "limit1.status.id == limit2.status.id"
25-
- celExpr: "limit1.status.resource.projectID == project.status.id"
8+
apiVersion: openstack.k-orc.cloud/v1alpha1
9+
kind: Domain
10+
metadata:
11+
name: domain-limit-import-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-import-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: Limit
36+
metadata:
37+
name: limit-import-dependency-external
38+
status:
39+
conditions:
40+
- type: Available
41+
status: "True"
42+
reason: Success
43+
- type: Progressing
44+
status: "False"
45+
reason: Success
2646
---
2747
apiVersion: openstack.k-orc.cloud/v1alpha1
2848
kind: Limit
@@ -41,3 +61,29 @@ status:
4161
message: OpenStack resource is up to date
4262
status: "False"
4363
reason: Success
64+
---
65+
apiVersion: kuttl.dev/v1beta1
66+
kind: TestAssert
67+
collectors:
68+
- selector: app=setup-teardown
69+
commands:
70+
- script: |-
71+
cd $(dirname ${E2E_KUTTL_OSCLOUDS})
72+
export OS_CLOUD=openstack-admin
73+
openstack registered limit list --resource-name limit-import-dependency
74+
resourceRefs:
75+
- apiVersion: openstack.k-orc.cloud/v1alpha1
76+
kind: Limit
77+
name: limit-import-dependency
78+
ref: limit1
79+
- apiVersion: openstack.k-orc.cloud/v1alpha1
80+
kind: Limit
81+
name: limit-import-dependency-external
82+
ref: limit2
83+
- apiVersion: openstack.k-orc.cloud/v1alpha1
84+
kind: Project
85+
name: project-limit-import-dependency
86+
ref: project
87+
assertAll:
88+
- celExpr: "limit1.status.id == limit2.status.id"
89+
- celExpr: "limit1.status.resource.projectID == project.status.id"

0 commit comments

Comments
 (0)