mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-17 06:46:47 +00:00
94 lines
3.1 KiB
CUE
94 lines
3.1 KiB
CUE
"ref-objects": {
|
|
type: "component"
|
|
annotations: {}
|
|
labels: {
|
|
"ui-hidden": "true"
|
|
}
|
|
description: "Ref-objects allow users to specify ref objects to use. Notice that this component type have special handle logic."
|
|
attributes: {
|
|
workload: type: "autodetects.core.oam.dev"
|
|
status: {
|
|
customStatus: #"""
|
|
if context.output.apiVersion == "apps/v1" && context.output.kind == "Deployment" {
|
|
ready: {
|
|
readyReplicas: *0 | int
|
|
} & {
|
|
if context.output.status.readyReplicas != _|_ {
|
|
readyReplicas: context.output.status.readyReplicas
|
|
}
|
|
}
|
|
message: "Ready:\(ready.readyReplicas)/\(context.output.spec.replicas)"
|
|
}
|
|
if context.output.apiVersion != "apps/v1" || context.output.kind != "Deployment" {
|
|
message: ""
|
|
}
|
|
"""#
|
|
healthPolicy: #"""
|
|
if context.output.apiVersion == "apps/v1" && context.output.kind == "Deployment" {
|
|
ready: {
|
|
updatedReplicas: *0 | int
|
|
readyReplicas: *0 | int
|
|
replicas: *0 | int
|
|
observedGeneration: *0 | int
|
|
} & {
|
|
if context.output.status.updatedReplicas != _|_ {
|
|
updatedReplicas: context.output.status.updatedReplicas
|
|
}
|
|
if context.output.status.readyReplicas != _|_ {
|
|
readyReplicas: context.output.status.readyReplicas
|
|
}
|
|
if context.output.status.replicas != _|_ {
|
|
replicas: context.output.status.replicas
|
|
}
|
|
if context.output.status.observedGeneration != _|_ {
|
|
observedGeneration: context.output.status.observedGeneration
|
|
}
|
|
}
|
|
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
|
|
}
|
|
if context.output.apiVersion != "apps/v1" || context.output.kind != "Deployment" {
|
|
isHealth: true
|
|
}
|
|
"""#
|
|
}
|
|
}
|
|
}
|
|
template: {
|
|
#K8sObject: {
|
|
// +usage=The resource type for the Kubernetes objects
|
|
resource?: string
|
|
// +usage=The group name for the Kubernetes objects
|
|
group?: string
|
|
// +usage=If specified, fetch the Kubernetes objects with the name, exclusive to labelSelector
|
|
name?: string
|
|
// +usage=If specified, fetch the Kubernetes objects from the namespace. Otherwise, fetch from the application's namespace.
|
|
namespace?: string
|
|
// +usage=If specified, fetch the Kubernetes objects from the cluster. Otherwise, fetch from the local cluster.
|
|
cluster?: string
|
|
// +usage=If specified, fetch the Kubernetes objects according to the label selector, exclusive to name
|
|
labelSelector?: [string]: string
|
|
...
|
|
}
|
|
|
|
output: {
|
|
if len(parameter.objects) > 0 {
|
|
parameter.objects[0]
|
|
}
|
|
...
|
|
}
|
|
|
|
outputs: {
|
|
for i, v in parameter.objects {
|
|
if i > 0 {
|
|
"objects-\(i)": v
|
|
}
|
|
}
|
|
}
|
|
parameter: {
|
|
// +usage=If specified, application will fetch native Kubernetes objects according to the object description
|
|
objects?: [...#K8sObject]
|
|
// +usage=If specified, the objects in the urls will be loaded.
|
|
urls?: [...string]
|
|
}
|
|
}
|