karmada/pkg/resourceinterpreter/default/thirdparty/resourcecustomizations/apps.kruise.io/v1alpha1/CloneSet/customizations.yaml

126 lines
5.5 KiB
YAML

apiVersion: config.karmada.io/v1alpha1
kind: ResourceInterpreterCustomization
metadata:
name: declarative-configuration-cloneset
spec:
target:
apiVersion: apps.kruise.io/v1alpha1
kind: CloneSet
customizations:
replicaResource:
luaScript: >
local kube = require("kube")
function GetReplicas(obj)
replica = obj.spec.replicas
requirement = kube.accuratePodRequirements(obj.spec.template)
return replica, requirement
end
replicaRevision:
luaScript: >
function ReviseReplica(obj, desiredReplica)
obj.spec.replicas = desiredReplica
return obj
end
statusAggregation:
luaScript: >
function AggregateStatus(desiredObj, statusItems)
if statusItems == nil then
return desiredObj
end
if desiredObj.status == nil then
desiredObj.status = {}
end
if desiredObj.metadata.generation == nil then
desiredObj.metadata.generation = 0
end
generation = desiredObj.metadata.generation
replicas = 0
updatedReplicas = 0
readyReplicas = 0
availableReplicas = 0
updatedReadyReplicas = 0
expectedUpdatedReplicas = 0
updateRevision = ''
currentRevision = ''
for i = 1, #statusItems do
if statusItems[i].status ~= nil and statusItems[i].status.replicas ~= nil then
replicas = replicas + statusItems[i].status.replicas
end
if statusItems[i].status ~= nil and statusItems[i].status.updatedReplicas ~= nil then
updatedReplicas = updatedReplicas + statusItems[i].status.updatedReplicas
end
if statusItems[i].status ~= nil and statusItems[i].status.readyReplicas ~= nil then
readyReplicas = readyReplicas + statusItems[i].status.readyReplicas
end
if statusItems[i].status ~= nil and statusItems[i].status.availableReplicas ~= nil then
availableReplicas = availableReplicas + statusItems[i].status.availableReplicas
end
if statusItems[i].status ~= nil and statusItems[i].status.updatedReadyReplicas ~= nil then
updatedReadyReplicas = updatedReadyReplicas + statusItems[i].status.updatedReadyReplicas
end
if statusItems[i].status ~= nil and statusItems[i].status.expectedUpdatedReplicas ~= nil then
expectedUpdatedReplicas = expectedUpdatedReplicas + statusItems[i].status.expectedUpdatedReplicas
end
if statusItems[i].status ~= nil and statusItems[i].status.updateRevision ~= nil and statusItems[i].status.updateRevision ~= '' then
updateRevision = statusItems[i].status.updateRevision
end
if statusItems[i].status ~= nil and statusItems[i].status.currentRevision ~= nil and statusItems[i].status.currentRevision ~= '' then
currentRevision = statusItems[i].status.currentRevision
end
if statusItems[i].status ~= nil and statusItems[i].status.observedGeneration ~= nil and statusItems[i].status.observedGeneration ~= '' then
generation = statusItems[i].status.observedGeneration
end
end
desiredObj.status.observedGeneration = generation
desiredObj.status.replicas = replicas
desiredObj.status.updatedReplicas = updatedReplicas
desiredObj.status.readyReplicas = readyReplicas
desiredObj.status.availableReplicas = availableReplicas
desiredObj.status.updatedReadyReplicas = updatedReadyReplicas
desiredObj.status.expectedUpdatedReplicas = expectedUpdatedReplicas
desiredObj.status.updateRevision = updateRevision
desiredObj.status.currentRevision = currentRevision
return desiredObj
end
statusReflection:
luaScript: >
function ReflectStatus (observedObj)
status = {}
if observedObj == nil or observedObj.status == nil then
return status
end
status.replicas = observedObj.status.replicas
status.updatedReplicas = observedObj.status.updatedReplicas
status.readyReplicas = observedObj.status.readyReplicas
status.availableReplicas = observedObj.status.availableReplicas
status.updatedReadyReplicas = observedObj.status.updatedReadyReplicas
status.expectedUpdatedReplicas = observedObj.status.expectedUpdatedReplicas
status.updateRevision = observedObj.status.updateRevision
status.currentRevision = observedObj.status.currentRevision
status.observedGeneration = observedObj.status.observedGeneration
return status
end
healthInterpretation:
luaScript: >
function InterpretHealth(observedObj)
if observedObj.status.observedGeneration ~= observedObj.metadata.generation then
return false
end
if observedObj.spec.replicas ~= nil then
if observedObj.status.updatedReplicas < observedObj.spec.replicas then
return false
end
end
if observedObj.status.availableReplicas < observedObj.status.updatedReplicas then
return false
end
return true
end
dependencyInterpretation:
luaScript: >
local kube = require("kube")
function GetDependencies(desiredObj)
refs = kube.getPodDependencies(desiredObj.spec.template, desiredObj.metadata.namespace)
return refs
end