mirror of
https://github.com/kubevela/kubevela.git
synced 2026-02-14 10:00:06 +00:00
Fix: Prevent index out-of-bounds in definitions (#6948)
Some checks failed
Webhook Upgrade Validation / webhook-upgrade-check (push) Failing after 24s
Some checks failed
Webhook Upgrade Validation / webhook-upgrade-check (push) Failing after 24s
* Fix: Update ingress messages to handle host retrieval more robustly across multiple templates Signed-off-by: Ayush Kumar <ayushshyamkumar888@gmail.com> * Fix: Enhance output handling in k8s-objects template to check for empty objects Signed-off-by: Ayush Kumar <ayushshyamkumar888@gmail.com> * Fix: Ensure policy selection from envBindingPolicies only occurs if the list is not empty Signed-off-by: Ayush Kumar <ayushshyamkumar888@gmail.com> --------- Signed-off-by: Ayush Kumar <ayushshyamkumar888@gmail.com>
This commit is contained in:
@@ -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)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 == _|_ {
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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: ""
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
"""#
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
"""#
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 == _|_ {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
"""#
|
||||
|
||||
Reference in New Issue
Block a user