mirror of
https://github.com/argoproj/argo-cd
synced 2026-04-21 17:07:16 +00:00
feat(health): support for resourcerecordsets aws.crossplane.io resource (#16823)
Signed-off-by: nueavv <nuguni@kakao.com>
This commit is contained in:
parent
0012e787f3
commit
666499f610
7 changed files with 205 additions and 0 deletions
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
29
resource_customizations/route53.aws.crossplane.io/ResourceRecordSet/testdata/healthy.yaml
vendored
Normal file
29
resource_customizations/route53.aws.crossplane.io/ResourceRecordSet/testdata/healthy.yaml
vendored
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Loading…
Reference in a new issue