diff --git a/charts/vela-core/templates/defwithtemplate/expose.yaml b/charts/vela-core/templates/defwithtemplate/expose.yaml index 81033a13f..289bd0082 100644 --- a/charts/vela-core/templates/defwithtemplate/expose.yaml +++ b/charts/vela-core/templates/defwithtemplate/expose.yaml @@ -96,21 +96,17 @@ spec: stage: PostDispatch status: customStatus: |- - message: *"" | string service: context.outputs.service + message: *"" | string if service.spec.type == "ClusterIP" { message: "ClusterIP: \(service.spec.clusterIP)" } if service.spec.type == "LoadBalancer" { status: service.status isHealth: *false | bool + message: *"ExternalIP: Pending" | string if status != _|_ if status.loadBalancer != _|_ if status.loadBalancer.ingress != _|_ if len(status.loadBalancer.ingress) > 0 if status.loadBalancer.ingress[0].ip != _|_ { isHealth: true - } - if !isHealth { - message: "ExternalIP: Pending" - } - if isHealth { message: "ExternalIP: \(status.loadBalancer.ingress[0].ip)" } } diff --git a/charts/vela-core/templates/defwithtemplate/gateway.yaml b/charts/vela-core/templates/defwithtemplate/gateway.yaml index d8370b484..bfa3e2c77 100644 --- a/charts/vela-core/templates/defwithtemplate/gateway.yaml +++ b/charts/vela-core/templates/defwithtemplate/gateway.yaml @@ -160,13 +160,17 @@ spec: if parameter.name == _|_ { "" } } let ingressMetaName = context.name + nameSuffix - let ig = [for i in context.outputs if (i.kind == "Ingress") && (i.metadata.name == ingressMetaName) {i}][0] + let igList = [for i in context.outputs if (i.kind == "Ingress") && (i.metadata.name == ingressMetaName) {i}] + ig: *_|_ | _ + if len(igList) > 0 { + ig: igList[0] + } igs: *{} | {} - if ig != _|_ if ig.status != _|_ if ig.status.loadbalancer != _|_ { + if ig != _|_ if ig.status != _|_ if ig.status.loadbalancer != _|_ if len(ig.status.loadbalancer.ingress) > 0 { igs: ig.status.loadbalancer.ingress[0] } igr: *{} | {} - if ig != _|_ if ig.spec != _|_ { + if ig != _|_ if ig.spec != _|_ if len(ig.spec.rules) > 0 { igr: ig.spec.rules[0] } if igs == _|_ { diff --git a/charts/vela-core/templates/defwithtemplate/ingress-1-20.yaml b/charts/vela-core/templates/defwithtemplate/ingress-1-20.yaml index ed85f6d27..5f4daf77e 100644 --- a/charts/vela-core/templates/defwithtemplate/ingress-1-20.yaml +++ b/charts/vela-core/templates/defwithtemplate/ingress-1-20.yaml @@ -69,11 +69,16 @@ spec: message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + "'\n" } if len(igs) > 0 { + let rules = context.outputs.ingress.spec.rules + host: *"" | string + if rules != _|_ if len(rules) > 0 if rules[0].host != _|_ { + host: rules[0].host + } if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + message: "Visiting URL: " + host + ", IP: " + igs[0].ip } if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + message: "Visiting URL: " + host } } healthPolicy: 'isHealth: len(context.outputs.service.spec.clusterIP) > 0' diff --git a/charts/vela-core/templates/defwithtemplate/ingress.yaml b/charts/vela-core/templates/defwithtemplate/ingress.yaml index 20ee45063..3eb0467fc 100644 --- a/charts/vela-core/templates/defwithtemplate/ingress.yaml +++ b/charts/vela-core/templates/defwithtemplate/ingress.yaml @@ -62,11 +62,16 @@ spec: message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + "'\n" } if len(igs) > 0 { + let rules = context.outputs.ingress.spec.rules + host: *"" | string + if rules != _|_ if len(rules) > 0 if rules[0].host != _|_ { + host: rules[0].host + } if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + message: "Visiting URL: " + host + ", IP: " + igs[0].ip } if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + message: "Visiting URL: " + host } } healthPolicy: 'isHealth: len(context.outputs.service.spec.clusterIP) > 0' diff --git a/charts/vela-core/templates/defwithtemplate/k8s-objects.yaml b/charts/vela-core/templates/defwithtemplate/k8s-objects.yaml index 49bf1e9a6..f8215dbb1 100644 --- a/charts/vela-core/templates/defwithtemplate/k8s-objects.yaml +++ b/charts/vela-core/templates/defwithtemplate/k8s-objects.yaml @@ -11,7 +11,12 @@ spec: schematic: cue: template: | - output: parameter.objects[0] + output: { + if len(parameter.objects) > 0 { + parameter.objects[0] + } + ... + } outputs: { for i, v in parameter.objects { diff --git a/charts/vela-core/templates/defwithtemplate/pure-ingress.yaml b/charts/vela-core/templates/defwithtemplate/pure-ingress.yaml index 55f680b34..7885a6ead 100644 --- a/charts/vela-core/templates/defwithtemplate/pure-ingress.yaml +++ b/charts/vela-core/templates/defwithtemplate/pure-ingress.yaml @@ -49,11 +49,16 @@ spec: message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" } if len(igs) > 0 { + let rules = context.outputs.ingress.spec.rules + host: *"" | string + if rules != _|_ if len(rules) > 0 if rules[0].host != _|_ { + host: rules[0].host + } if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + message: "Visiting URL: " + host + ", IP: " + igs[0].ip } if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + message: "Visiting URL: " + host } } workloadRefPath: "" diff --git a/pkg/workflow/providers/legacy/multicluster/multicluster.cue b/pkg/workflow/providers/legacy/multicluster/multicluster.cue index 3988ed33f..7b232a4a0 100644 --- a/pkg/workflow/providers/legacy/multicluster/multicluster.cue +++ b/pkg/workflow/providers/legacy/multicluster/multicluster.cue @@ -103,7 +103,9 @@ envBindingPolicies: [] if inputs.policy == "" && loadPolicies.value != _|_ { envBindingPolicies: [for k, v in loadPolicies.value if v.type == "env-binding" {k}] - policy_: envBindingPolicies[0] + if len(envBindingPolicies) > 0 { + policy_: envBindingPolicies[0] + } } if inputs.policy != "" { policy_: inputs.policy diff --git a/vela-templates/definitions/deprecated/ingress-1-20.cue b/vela-templates/definitions/deprecated/ingress-1-20.cue index 5108b5574..05c93fbf6 100644 --- a/vela-templates/definitions/deprecated/ingress-1-20.cue +++ b/vela-templates/definitions/deprecated/ingress-1-20.cue @@ -14,11 +14,16 @@ message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + "'\n" } if len(igs) > 0 { + let rules = context.outputs.ingress.spec.rules + host: *"" | string + if rules != _|_ if len(rules) > 0 if rules[0].host != _|_ { + host: rules[0].host + } if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + message: "Visiting URL: " + host + ", IP: " + igs[0].ip } if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + message: "Visiting URL: " + host } } """# diff --git a/vela-templates/definitions/deprecated/ingress.cue b/vela-templates/definitions/deprecated/ingress.cue index 74cbe27be..93bce4b2e 100644 --- a/vela-templates/definitions/deprecated/ingress.cue +++ b/vela-templates/definitions/deprecated/ingress.cue @@ -14,11 +14,16 @@ ingress: { message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + "'\n" } if len(igs) > 0 { + let rules = context.outputs.ingress.spec.rules + host: *"" | string + if rules != _|_ if len(rules) > 0 if rules[0].host != _|_ { + host: rules[0].host + } if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + message: "Visiting URL: " + host + ", IP: " + igs[0].ip } if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + message: "Visiting URL: " + host } } """# diff --git a/vela-templates/definitions/internal/component/k8s-objects.cue b/vela-templates/definitions/internal/component/k8s-objects.cue index d9a2a4477..a9b61f48c 100644 --- a/vela-templates/definitions/internal/component/k8s-objects.cue +++ b/vela-templates/definitions/internal/component/k8s-objects.cue @@ -6,7 +6,12 @@ attributes: workload: type: "autodetects.core.oam.dev" } template: { - output: parameter.objects[0] + output: { + if len(parameter.objects) > 0 { + parameter.objects[0] + } + ... + } outputs: { for i, v in parameter.objects { diff --git a/vela-templates/definitions/internal/trait/expose.cue b/vela-templates/definitions/internal/trait/expose.cue index 281640dfd..528fb57ab 100644 --- a/vela-templates/definitions/internal/trait/expose.cue +++ b/vela-templates/definitions/internal/trait/expose.cue @@ -13,21 +13,17 @@ expose: { appliesToWorkloads: ["deployments.apps", "statefulsets.apps"] status: { customStatus: #""" - message: *"" | string service: context.outputs.service + message: *"" | string if service.spec.type == "ClusterIP" { message: "ClusterIP: \(service.spec.clusterIP)" } if service.spec.type == "LoadBalancer" { status: service.status isHealth: *false | bool + message: *"ExternalIP: Pending" | string if status != _|_ if status.loadBalancer != _|_ if status.loadBalancer.ingress != _|_ if len(status.loadBalancer.ingress) > 0 if status.loadBalancer.ingress[0].ip != _|_ { isHealth: true - } - if !isHealth { - message: "ExternalIP: Pending" - } - if isHealth { message: "ExternalIP: \(status.loadBalancer.ingress[0].ip)" } } diff --git a/vela-templates/definitions/internal/trait/gateway.cue b/vela-templates/definitions/internal/trait/gateway.cue index 772d252ad..955a66081 100644 --- a/vela-templates/definitions/internal/trait/gateway.cue +++ b/vela-templates/definitions/internal/trait/gateway.cue @@ -16,13 +16,17 @@ gateway: { if parameter.name == _|_ { "" } } let ingressMetaName = context.name + nameSuffix - let ig = [for i in context.outputs if (i.kind == "Ingress") && (i.metadata.name == ingressMetaName) {i}][0] + let igList = [for i in context.outputs if (i.kind == "Ingress") && (i.metadata.name == ingressMetaName) {i}] + ig: *_|_ | _ + if len(igList) > 0 { + ig: igList[0] + } igs: *{} | {} - if ig != _|_ if ig.status != _|_ if ig.status.loadbalancer != _|_ { + if ig != _|_ if ig.status != _|_ if ig.status.loadbalancer != _|_ if len(ig.status.loadbalancer.ingress) > 0 { igs: ig.status.loadbalancer.ingress[0] } igr: *{} | {} - if ig != _|_ if ig.spec != _|_ { + if ig != _|_ if ig.spec != _|_ if len(ig.spec.rules) > 0 { igr: ig.spec.rules[0] } if igs == _|_ { diff --git a/vela-templates/definitions/internal/trait/pure-ingress.cue b/vela-templates/definitions/internal/trait/pure-ingress.cue index adc710b40..84480f080 100644 --- a/vela-templates/definitions/internal/trait/pure-ingress.cue +++ b/vela-templates/definitions/internal/trait/pure-ingress.cue @@ -10,11 +10,16 @@ message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" } if len(igs) > 0 { + let rules = context.outputs.ingress.spec.rules + host: *"" | string + if rules != _|_ if len(rules) > 0 if rules[0].host != _|_ { + host: rules[0].host + } if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + message: "Visiting URL: " + host + ", IP: " + igs[0].ip } if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + message: "Visiting URL: " + host } } """#