feat(health): support for resourcerecordsets aws.crossplane.io resource (#16823)

Signed-off-by: nueavv <nuguni@kakao.com>
This commit is contained in:
1102 2024-01-24 14:23:58 +09:00 committed by GitHub
parent 0012e787f3
commit 666499f610
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 205 additions and 0 deletions

View file

@ -0,0 +1,25 @@
tests:
- healthStatus:
status: Progressing
message: Waiting for resourcrecordset to be available
inputPath: testdata/progressing_creating.yaml
- healthStatus:
status: Progressing
message: Waiting for resourcrecordset to be created
inputPath: testdata/progressing_noStatus.yaml
- healthStatus:
status: Degraded
message: >-
create failed: failed to create the ResourceRecordSet resource:
InvalidChangeBatch: [RRSet of type CNAME with DNS name
www.crossplane.io. is not permitted as it conflicts with other
records with the same DNS name in zone crossplane.io.]
inputPath: testdata/degraded_reconcileError.yaml
- healthStatus:
status: Suspended
message: ReconcilePaused
inputPath: testdata/suspended_reconcilePaused.yaml
- healthStatus:
status: Healthy
message: Available
inputPath: testdata/healthy.yaml

View file

@ -0,0 +1,41 @@
local hs = {}
if obj.status ~= nil then
if obj.status.conditions ~= nil then
local ready = false
local synced = false
local suspended = false
for i, condition in ipairs(obj.status.conditions) do
if condition.type == "Ready" then
ready = condition.status == "True"
ready_message = condition.reason
elseif condition.type == "Synced" then
synced = condition.status == "True"
if condition.reason == "ReconcileError" then
synced_message = condition.message
elseif condition.reason == "ReconcilePaused" then
suspended = true
suspended_message = condition.reason
end
end
end
if ready and synced then
hs.status = "Healthy"
hs.message = ready_message
elseif synced == false and suspended == true then
hs.status = "Suspended"
hs.message = suspended_message
elseif ready == false and synced == true and suspended == false then
hs.status = "Progressing"
hs.message = "Waiting for resourcrecordset to be available"
else
hs.status = "Degraded"
hs.message = synced_message
end
return hs
end
end
hs.status = "Progressing"
hs.message = "Waiting for resourcrecordset to be created"
return hs

View file

@ -0,0 +1,35 @@
apiVersion: route53.aws.crossplane.io/v1alpha1
kind: ResourceRecordSet
metadata:
creationTimestamp: '2024-01-11T03:48:32Z'
generation: 1
name: www-domain
resourceVersion: '187731157'
selfLink: /apis/route53.aws.crossplane.io/v1alpha1/resourcerecordsets/www-domain
uid: c9c85395-0830-4549-b255-e9e426663547
spec:
providerConfigRef:
name: crossplane
forProvider:
resourceRecords:
- value: www.crossplane.io
setIdentifier: www
ttl: 60
type: CNAME
weight: 0
zoneId: ABCDEFGAB07CD
status:
conditions:
- lastTransitionTime: '2024-01-11T03:48:57Z'
message: >-
create failed: failed to create the ResourceRecordSet resource:
InvalidChangeBatch: [RRSet of type CNAME with DNS name
www.crossplane.io. is not permitted as it conflicts with other
records with the same DNS name in zone crossplane.io.]
reason: ReconcileError
status: 'False'
type: Synced
- lastTransitionTime: '2024-01-11T03:48:34Z'
reason: Creating
status: 'False'
type: Ready

View file

@ -0,0 +1,29 @@
apiVersion: route53.aws.crossplane.io/v1alpha1
kind: ResourceRecordSet
metadata:
creationTimestamp: "2023-11-16T04:44:19Z"
generation: 4
name: www-domain
resourceVersion: "140397563"
selfLink: /apis/route53.aws.crossplane.io/v1alpha1/resourcerecordsets/www-domain
uid: 11f0d48d-134f-471b-9340-b6d45d953fcb
spec:
providerConfigRef:
name: crossplane
forProvider:
zoneId: A1B2C3D4
type: A
aliasTarget:
dnsName: abcdefg.cloudfront.net.
evaluateTargetHealth: false
hostedZoneId: AZBZCZDEFG
status:
conditions:
- lastTransitionTime: "2023-11-16T04:44:27Z"
reason: Available
status: "True"
type: Ready
- lastTransitionTime: "2023-11-16T04:44:25Z"
reason: ReconcileSuccess
status: "True"
type: Synced

View file

@ -0,0 +1,29 @@
apiVersion: route53.aws.crossplane.io/v1alpha1
kind: ResourceRecordSet
metadata:
creationTimestamp: "2023-11-16T04:44:19Z"
generation: 4
name: www-domain
resourceVersion: "140397563"
selfLink: /apis/route53.aws.crossplane.io/v1alpha1/resourcerecordsets/www-domain
uid: 11f0d48d-134f-471b-9340-b6d45d953fcb
spec:
providerConfigRef:
name: crossplane
forProvider:
zoneId: A1B2C3D4
type: A
aliasTarget:
dnsName: abcdefg.cloudfront.net.
evaluateTargetHealth: false
hostedZoneId: AZBZCZDEFG
status:
conditions:
- lastTransitionTime: "2023-11-16T04:44:27Z"
reason: Creating
status: "False"
type: Ready
- lastTransitionTime: "2023-11-16T04:44:25Z"
reason: ReconcileSuccess
status: "True"
type: Synced

View file

@ -0,0 +1,19 @@
apiVersion: route53.aws.crossplane.io/v1alpha1
kind: ResourceRecordSet
metadata:
creationTimestamp: "2023-11-16T04:44:19Z"
generation: 4
name: www-domain
resourceVersion: "140397563"
selfLink: /apis/route53.aws.crossplane.io/v1alpha1/resourcerecordsets/www-domain
uid: 11f0d48d-134f-471b-9340-b6d45d953fcb
spec:
providerConfigRef:
name: crossplane
forProvider:
zoneId: A1B2C3D4
type: A
aliasTarget:
dnsName: abcdefg.cloudfront.net.
evaluateTargetHealth: false
hostedZoneId: AZBZCZDEFG

View file

@ -0,0 +1,27 @@
apiVersion: route53.aws.crossplane.io/v1alpha1
kind: ResourceRecordSet
metadata:
annotations:
crossplane.io/paused: "true"
creationTimestamp: "2024-01-11T04:16:15Z"
generation: 1
name: www-domain
resourceVersion: "187746011"
uid: 5517b419-5052-43d9-941e-c32f60d8c7e5
spec:
providerConfigRef:
name: crossplane
forProvider:
resourceRecords:
- value: www.crossplane.io
setIdentifier: www
ttl: 60
type: CNAME
weight: 0
zoneId: ABCDEFGAB07CD
status:
conditions:
- lastTransitionTime: "2024-01-11T04:16:16Z"
reason: ReconcilePaused
status: "False"
type: Synced