From 75e09b7e35ba8ed8b5e115d277d2f519dd13b963 Mon Sep 17 00:00:00 2001 From: SoonYoung Oh Date: Fri, 23 Oct 2020 15:35:20 +0900 Subject: [PATCH] https://github.com/uengine-oss/kuber-ez/issues/54 --- .../designer/k8s-modeling/element/Ingress.vue | 88 +++++++------------ .../k8s-modeling/element/IngressToService.vue | 9 +- .../element/IngressToServicePanel.vue | 41 ++++----- 3 files changed, 50 insertions(+), 88 deletions(-) diff --git a/src/components/designer/k8s-modeling/element/Ingress.vue b/src/components/designer/k8s-modeling/element/Ingress.vue index 1d0b0e4..1aedc51 100644 --- a/src/components/designer/k8s-modeling/element/Ingress.vue +++ b/src/components/designer/k8s-modeling/element/Ingress.vue @@ -154,8 +154,7 @@ try { var serviceNames = ""; this.value.outboundServices.forEach((element) => { - // serviceNames += element.host + element.path + ' ' + element.targetElement.name + "," - serviceNames += element.host + element.path + " " + element.name + ","; + serviceNames += element.host + element.path + element.name + ","; }); return serviceNames; } catch (e) { @@ -173,9 +172,9 @@ this.$EventBus.$on(`${me.value.elementView.id}`, function (obj) { if (obj.state == "addRelation" && obj.element && obj.element.targetElement && obj.element.targetElement._type == "Service") { - obj.element.targetElement.routeType = obj.element.routeType; - obj.element.targetElement.host = obj.element.host; - obj.element.targetElement.path = obj.element.path; + obj.element.targetElement.routeType = "path"; + obj.element.targetElement.host = ""; + obj.element.targetElement.path = "/"; me.value.outboundServices.push(obj.element.targetElement); } @@ -186,10 +185,6 @@ if (obj.state == "get" && obj.element && obj.element.kind == me.value.object.kind) { me.value.status = obj.element.status; } - - if (obj.state == "updateType" && obj.targetElement) { - me.setRoute(obj); - } }); }, watch: { @@ -197,61 +192,40 @@ var me = this; me.value.object.spec.rules = []; me.value.outboundServices.forEach((element) => { - if (element.routeType == "path" && me.findHost(element.host) != -1 && me.value.object.spec.rules.length > 0) { - var index = me.findHost(element.host); - me.value.object.spec.rules[index].http.paths.push({ - path: element.path, - backend: { - serviceName: element.object.metadata.name, - servicePort: element.object.spec.ports[0].port, - }, - }); - element.host = me.value.object.spec.rules[index].host; - } else { - var obj = { - host: "", - http: { paths: [] }, - }; - obj.host = element.host; - obj.http.paths.push({ - path: element.path, - backend: { - serviceName: element.object.metadata.name, - servicePort: element.object.spec.ports[0].port, - }, - }); - me.value.object.spec.rules.push(obj); - } + me.setService(element); }); }, }, methods: { - setRoute(obj) { - var me = this; - var index = me.value.outboundServices.findIndex(function (val) { - return val == obj.targetElement; - }); - me.value.outboundServices.splice(index, 1); - me.value.outboundServices.push(obj.targetElement); - // me.value.object.spec.rules[index].host = obj.value.host; - }, - findHost(host) { + setService(element) { var me = this; - var num = 0; - me.value.outboundServices.forEach(function (el) { - if (el.host == host) { - num++; + var obj = {}; + if(element.routeType = "path" && me.value.object.spec.rules.length > 0 && element.host == "") { + obj = { + path: element.path, + backend: { + serviceName: element.object.metadata.name, + servicePort: element.object.spec.ports[0].port, + } } - }); - if (num > 1) { - // return me.value.outboundServices.findIndex(function (el) { - // return el.host == host; - // }); - return me.value.object.spec.rules.findIndex(function (el) { - return el.host == host; - }); + me.value.object.spec.rules[0].http.paths.push(obj); + } else { + obj = { + host: element.host, + http: { + paths: [{ + path: element.path, + pathType: "Prefix", + backend: { + serviceName: element.object.metadata.name, + servicePort: element.object.spec.ports[0].port, + } + }] + }, + }; + me.value.object.spec.rules.push(obj); } - }, + } }, }; diff --git a/src/components/designer/k8s-modeling/element/IngressToService.vue b/src/components/designer/k8s-modeling/element/IngressToService.vue index 28490ec..b0a7234 100644 --- a/src/components/designer/k8s-modeling/element/IngressToService.vue +++ b/src/components/designer/k8s-modeling/element/IngressToService.vue @@ -71,9 +71,6 @@ }, sourceMultiplicity: 3, targetMultiplicity: 3, - path: "", - host: "", - routeType: "path" } }, isOpen() { @@ -84,11 +81,7 @@ }, name() { try { - if(this.value.routeType == "path") { - return this.value.host + this.value.path - } else if(this.value.routeType == "host") { - return this.value.host + this.value.path - } + return this.value.targetElement.host + this.value.targetElement.path } catch(e) { return '' } diff --git a/src/components/designer/k8s-modeling/element/IngressToServicePanel.vue b/src/components/designer/k8s-modeling/element/IngressToServicePanel.vue index 77e2f33..ad45ac6 100644 --- a/src/components/designer/k8s-modeling/element/IngressToServicePanel.vue +++ b/src/components/designer/k8s-modeling/element/IngressToServicePanel.vue @@ -50,24 +50,22 @@ computed: { path: { get() { - return this.value.path + return this.value.targetElement.path; }, set(val) { - var me = this - me.value.path = val - me.value.targetElement.path = val - me.updateSourceElement() + var me = this; + me.value.targetElement.path = val; + me.updateData(); } }, host: { get() { - return this.value.host + return this.value.targetElement.host; }, set(val) { - var me = this - me.value.host = val - me.value.targetElement.host = val - me.updateSourceElement() + var me = this; + me.value.targetElement.host = val; + me.updateData(); } }, }, @@ -81,32 +79,29 @@ }, mounted() { var me = this - if(me.value.routeType == 'path') { + if(me.value.targetElement.routeType == 'path') { me.activeTab = 0 - } else if(me.value.routeType == 'host') { + } else if(me.value.targetElement.routeType == 'host') { me.activeTab = 1 } }, beforeDestroy() { - var me = this - var obj = {} - me.updateSourceElement() }, methods: { - updateSourceElement() { - var me = this - var obj = {} - obj.state = 'updateType' - obj.targetElement = me.value.targetElement - me.$EventBus.$emit(`${me.value.sourceElement.elementView.id}`, obj) + updateData() { + var me = this; + me.value.targetElement.object.metadata.name = me.value.targetElement.object.metadata.name + "," + me.$nextTick(function () { + me.value.targetElement.object.metadata.name = (me.value.targetElement.object.metadata.name).replace(',', '') + }); }, changeType(val) { var me = this me.activeTab = val if(val == 0) { - me.value.routeType = "path" + me.value.targetElement.routeType = "path" } else if(val == 1) { - me.value.routeType = "host" + me.value.targetElement.routeType = "host" } } }