Files
zeekayandHanzo Dev 84ee9fa0ce cd: kill the argo naming — binaries, packages, identifiers
Every command is cd-*: cd, cd-server, cd-repo-server,
cd-application-controller, cd-applicationset-controller, cd-cmp-server,
cd-commit-server, cd-dex, cd-git-ask-pass, cd-k8s-auth, cd-notification.
util/argo is util/cd; util/notification/argocd is util/notification/cd.

Preserved deliberately: github.com/argoproj/argocd-example-apps is an
EXTERNAL repo used as an e2e fixture, and notifications-engine + pkg/v2 are
real dependencies. Renaming a URL we do not own would break the tests.

Two bugs I made and caught, both from a careless sed:
- s/argo/cd/g turned 'argocd' into 'cdcd' in two directory names
- renaming the package declaration left every call site saying argo.X

go build ./... exit 0.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 16:00:25 -07:00

165 lines
5.0 KiB
Lua

function checkReplicasStatus(obj)
local hs = {}
local desiredReplicas = getNumberValueOrDefault(obj.spec.replicas, 1)
statusReplicas = getNumberValueOrDefault(obj.status.replicas, 0)
updatedReplicas = getNumberValueOrDefault(obj.status.updatedReplicas, 0)
local availableReplicas = getNumberValueOrDefault(obj.status.availableReplicas, 0)
if updatedReplicas < desiredReplicas then
hs.status = "Progressing"
hs.message = "Waiting for roll out to finish: More replicas need to be updated"
return hs
end
if availableReplicas < updatedReplicas then
hs.status = "Progressing"
hs.message = "Waiting for roll out to finish: updated replicas are still becoming available"
return hs
end
return nil
end
-- In Argo Rollouts v0.8 we deprecated .status.canary.stableRS for .status.stableRS
-- This func grabs the correct one.
function getStableRS(obj)
if obj.status.stableRS ~= nil then
return obj.status.stableRS
end
if obj.status.canary ~= nil then
return obj.status.canary.stableRS
end
return ""
end
function getNumberValueOrDefault(field, default)
if field ~= nil then
return field
end
return default
end
function checkPaused(obj)
local hs = {}
hs.status = "Suspended"
hs.message = "Rollout is paused"
if obj.status.pauseConditions ~= nil and table.getn(obj.status.pauseConditions) > 0 then
return hs
end
if obj.spec.paused ~= nil and obj.spec.paused then
return hs
end
return nil
end
-- isGenerationObserved determines if the rollout spec has been observed by the controller. This
-- only applies to v0.10 rollout which uses a numeric status.observedGeneration. For v0.9 rollouts
-- and below this function always returns true.
function isGenerationObserved(obj)
if obj.status == nil then
return false
end
observedGeneration = tonumber(obj.status.observedGeneration)
if observedGeneration == nil or observedGeneration > obj.metadata.generation then
-- if we get here, the rollout is a v0.9 rollout
return true
end
return observedGeneration == obj.metadata.generation
end
-- isWorkloadGenerationObserved determines if the referenced workload's generation spec has been
-- observed by the controller. This only applies to v1.1 rollout
function isWorkloadGenerationObserved(obj)
if obj.spec.workloadRef == nil or obj.metadata.annotations == nil then
-- rollout is v1.0 or earlier
return true
end
local workloadGen = tonumber(obj.metadata.annotations["rollout.argoproj.io/workload-generation"])
local observedWorkloadGen = tonumber(obj.status.workloadObservedGeneration)
return workloadGen == observedWorkloadGen
end
local hs = {}
if not isGenerationObserved(obj) or not isWorkloadGenerationObserved(obj) then
hs.status = "Progressing"
hs.message = "Waiting for rollout spec update to be observed"
return hs
end
-- Argo Rollouts v1.0 has been improved to record a phase/message in status, which Argo CD can blindly surface
if obj.status.phase ~= nil then
if obj.status.phase == "Paused" then
-- Map Rollout's "Paused" status to Argo CD's "Suspended"
hs.status = "Suspended"
else
hs.status = obj.status.phase
end
hs.message = obj.status.message
return hs
end
for _, condition in ipairs(obj.status.conditions) do
if condition.type == "InvalidSpec" then
hs.status = "Degraded"
hs.message = condition.message
return hs
end
if condition.type == "Progressing" and condition.reason == "RolloutAborted" then
hs.status = "Degraded"
hs.message = condition.message
return hs
end
if condition.type == "Progressing" and condition.reason == "ProgressDeadlineExceeded" then
hs.status = "Degraded"
hs.message = condition.message
return hs
end
end
local isPaused = checkPaused(obj)
if isPaused ~= nil then
return isPaused
end
if obj.status.currentPodHash == nil then
hs.status = "Progressing"
hs.message = "Waiting for rollout to finish: status has not been reconciled."
return hs
end
replicasHS = checkReplicasStatus(obj)
if replicasHS ~= nil then
return replicasHS
end
local stableRS = getStableRS(obj)
if obj.spec.strategy.blueGreen ~= nil then
if obj.status.blueGreen == nil or obj.status.blueGreen.activeSelector ~= obj.status.currentPodHash then
hs.status = "Progressing"
hs.message = "active service cutover pending"
return hs
end
-- Starting in v0.8 blue-green uses status.stableRS. To drop support for v0.7, uncomment following
-- if stableRS == "" or stableRS ~= obj.status.currentPodHash then
if stableRS ~= "" and stableRS ~= obj.status.currentPodHash then
hs.status = "Progressing"
hs.message = "waiting for analysis to complete"
return hs
end
elseif obj.spec.strategy.canary ~= nil then
if statusReplicas > updatedReplicas then
hs.status = "Progressing"
hs.message = "Waiting for roll out to finish: old replicas are pending termination"
return hs
end
if stableRS == "" or stableRS ~= obj.status.currentPodHash then
hs.status = "Progressing"
hs.message = "Waiting for rollout to finish steps"
return hs
end
end
hs.status = "Healthy"
hs.message = ""
return hs