From 117b877d1b1436f06502cc6f403cf71918d62fdf Mon Sep 17 00:00:00 2001 From: utchoang Date: Wed, 17 Mar 2021 09:19:23 +0700 Subject: [PATCH] Support for specifying VR IP in shared networks --- ui/public/locales/en.json | 2 + .../views/network/CreateSharedNetworkForm.vue | 53 ++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 5b1cc6a95178..0c274c64e0f2 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -1812,6 +1812,8 @@ "label.root.disk.size": "Root disk size (GB)", "label.rootdiskcontrollertype": "Root disk controller", "label.rootdiskcontrollertypekvm": "Root disk controller", +"label.routerip": "IPv4 address for Router in Shared Network", +"label.routeripv6": "IPv6 address for Router in Shared Network", "label.router.health.check.last.updated": "Last updated", "label.router.health.check.name": "Check name", "label.router.health.check.success": "Success", diff --git a/ui/src/views/network/CreateSharedNetworkForm.vue b/ui/src/views/network/CreateSharedNetworkForm.vue index e91a5631c4af..42996e4298ee 100644 --- a/ui/src/views/network/CreateSharedNetworkForm.vue +++ b/ui/src/views/network/CreateSharedNetworkForm.vue @@ -332,6 +332,17 @@ v-decorator="['endipv4', {}]" :placeholder="this.$t('label.endipv4')"/> + + + {{ $t('label.routerip') }} + + + + + + {{ $t('label.ip6gateway') }} @@ -376,6 +387,17 @@ v-decorator="['endipv6', {}]" :placeholder="this.$t('label.endipv6')"/> + + + {{ $t('label.routeripv6') }} + + + + + + {{ $t('label.networkdomain') }} @@ -457,7 +479,9 @@ export default { selectedNetworkOffering: {}, projects: [], projectLoading: false, - selectedProject: {} + selectedProject: {}, + isVirtualRouterForAtLeastOneService: false, + selectedServiceProviderMap: {} } }, watch: { @@ -672,6 +696,27 @@ export default { }, handleNetworkOfferingChange (networkOffering) { this.selectedNetworkOffering = networkOffering + if (this.selectedNetworkOffering) { + this.networkServiceProviderMap(this.selectedNetworkOffering.id) + } + }, + networkServiceProviderMap (id) { + api('listNetworkOfferings', { id: id }).then(json => { + const networkOffering = json.listnetworkofferingsresponse.networkoffering[0] + const services = networkOffering.service + this.selectedServiceProviderMap = {} + for (const svc of services) { + this.selectedServiceProviderMap[svc.name] = svc.provider[0].name + } + const providers = Object.values(this.selectedServiceProviderMap) + this.isVirtualRouterForAtLeastOneService = false + const self = this + providers.forEach(function (prvdr, idx) { + if (prvdr === 'VirtualRouter') { + self.isVirtualRouterForAtLeastOneService = true + } + }) + }) }, fetchDomainData () { const params = {} @@ -776,6 +821,9 @@ export default { if (this.isValidTextValueForKey(values, 'ip4gateway')) { params.gateway = values.ip4gateway } + if (this.isValidTextValueForKey(values, 'routerip')) { + params.routerip = values.routerip + } if (this.isValidTextValueForKey(values, 'netmask')) { params.netmask = values.netmask } @@ -800,6 +848,9 @@ export default { if (this.isValidTextValueForKey(values, 'endipv6')) { params.endipv6 = values.endipv6 } + if (this.isValidTextValueForKey(values, 'routeripv6')) { + params.routeripv6 = values.routeripv6 + } // IPv6 (end) if (this.isValidTextValueForKey(values, 'networkdomain')) {