Skip to content

Commit 7b2be10

Browse files
committed
extract common code wrt service capability in network & vpc offering in add/clone operations
1 parent 10333df commit 7b2be10

File tree

5 files changed

+216
-251
lines changed

5 files changed

+216
-251
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
export function buildServiceCapabilityParams (params, values, selectedServiceProviderMap, registeredServicePackages) {
19+
const supportedServices = Object.keys(selectedServiceProviderMap)
20+
params.supportedservices = supportedServices.join(',')
21+
for (const k in supportedServices) {
22+
params[`serviceProviderList[${k}].service`] = supportedServices[k]
23+
params[`serviceProviderList[${k}].provider`] = selectedServiceProviderMap[supportedServices[k]]
24+
}
25+
let serviceCapabilityIndex = 0
26+
if (supportedServices.includes('Connectivity')) {
27+
if (values.supportsstrechedl2subnet === true) {
28+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'Connectivity'
29+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'RegionLevelVpc'
30+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
31+
serviceCapabilityIndex++
32+
}
33+
if (values.supportspublicaccess === true) {
34+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'Connectivity'
35+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'DistributedRouter'
36+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
37+
serviceCapabilityIndex++
38+
}
39+
delete params.supportsstrechedl2subnet
40+
delete params.supportspublicaccess
41+
}
42+
// SourceNat capabilities
43+
if (supportedServices.includes('SourceNat')) {
44+
if (values.redundantroutercapability === true) {
45+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'SourceNat'
46+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'RedundantRouter'
47+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
48+
serviceCapabilityIndex++
49+
}
50+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'SourceNat'
51+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'SupportedSourceNatTypes'
52+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = values.sourcenattype
53+
serviceCapabilityIndex++
54+
delete params.redundantroutercapability
55+
delete params.sourcenattype
56+
} else if (values.redundantroutercapability === true) {
57+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'Gateway'
58+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'RedundantRouter'
59+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
60+
serviceCapabilityIndex++
61+
}
62+
// StaticNat capabilities
63+
if (supportedServices.includes('SourceNat')) {
64+
if (values.elasticip === true) {
65+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'StaticNat'
66+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'ElasticIp'
67+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = true
68+
serviceCapabilityIndex++
69+
}
70+
if (values.elasticip === true || values.associatepublicip === true) {
71+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'StaticNat'
72+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'associatePublicIP'
73+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = values.associatepublicip
74+
serviceCapabilityIndex++
75+
}
76+
delete params.elasticip
77+
delete params.associatepublicip
78+
}
79+
// Lb capabilities
80+
if (supportedServices.includes('Lb')) {
81+
if ('vmautoscalingcapability' in values) {
82+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'lb'
83+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'VmAutoScaling'
84+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = values.vmautoscalingcapability
85+
serviceCapabilityIndex++
86+
}
87+
if (values.elasticlb === true) {
88+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'lb'
89+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'ElasticLb'
90+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = true
91+
serviceCapabilityIndex++
92+
}
93+
if (values.inlinemode === true && ((selectedServiceProviderMap.Lb === 'F5BigIp') || (selectedServiceProviderMap.Lb === 'Netscaler'))) {
94+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'lb'
95+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'InlineMode'
96+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = values.inlinemode
97+
serviceCapabilityIndex++
98+
}
99+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'lb'
100+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'SupportedLbIsolation'
101+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = values.isolation || 'dedicated'
102+
serviceCapabilityIndex++
103+
if (selectedServiceProviderMap.Lb === 'InternalLbVm') {
104+
params[`servicecapabilitylist[${serviceCapabilityIndex}].service`] = 'lb'
105+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilitytype`] = 'lbSchemes'
106+
params[`servicecapabilitylist[${serviceCapabilityIndex}].capabilityvalue`] = 'internal'
107+
serviceCapabilityIndex++
108+
}
109+
if ('netscalerservicepackages' in values &&
110+
registeredServicePackages.length > values.netscalerservicepackages &&
111+
'netscalerservicepackagesdescription' in values) {
112+
params['details[0].servicepackageuuid'] = registeredServicePackages[values.netscalerservicepackages].id
113+
params['details[1].servicepackagedescription'] = values.netscalerservicepackagesdescription
114+
}
115+
}
116+
}
117+
118+
/**
119+
* Build the VPC service capability params for Add/Clone VPC Offering forms.
120+
* Handles: RegionLevelVpc, DistributedRouter, RedundantRouter (SourceNat/Gateway)
121+
*/
122+
export function buildVpcServiceCapabilityParams (params, values, selectedServiceProviderMap, isVpcVirtualRouterForAtLeastOneService) {
123+
const supportedServices = Object.keys(selectedServiceProviderMap)
124+
let serviceCapabilityIndex = 0
125+
if (supportedServices.includes('Connectivity')) {
126+
if (values.regionlevelvpc === true) {
127+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'Connectivity'
128+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'RegionLevelVpc'
129+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
130+
serviceCapabilityIndex++
131+
}
132+
if (values.distributedrouter === true) {
133+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'Connectivity'
134+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'DistributedRouter'
135+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
136+
serviceCapabilityIndex++
137+
}
138+
}
139+
if (supportedServices.includes('SourceNat') && values.redundantrouter === true) {
140+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'SourceNat'
141+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'RedundantRouter'
142+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
143+
serviceCapabilityIndex++
144+
} else if (values.redundantrouter === true) {
145+
params[`serviceCapabilityList[${serviceCapabilityIndex}].service`] = 'Gateway'
146+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilitytype`] = 'RedundantRouter'
147+
params[`serviceCapabilityList[${serviceCapabilityIndex}].capabilityvalue`] = true
148+
serviceCapabilityIndex++
149+
}
150+
if (values.serviceofferingid && isVpcVirtualRouterForAtLeastOneService) {
151+
params.serviceofferingid = values.serviceofferingid
152+
}
153+
}

ui/src/views/offering/AddNetworkOffering.vue

Lines changed: 2 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,7 @@ import { mixinForm } from '@/utils/mixin'
588588
import CheckBoxSelectPair from '@/components/CheckBoxSelectPair'
589589
import ResourceIcon from '@/components/view/ResourceIcon'
590590
import TooltipLabel from '@/components/widgets/TooltipLabel'
591+
import { buildServiceCapabilityParams } from '@/composables/useServiceCapabilityParams'
591592
592593
export default {
593594
name: 'AddNetworkOffering',
@@ -1173,99 +1174,7 @@ export default {
11731174
}
11741175
}
11751176
if (this.selectedServiceProviderMap != null) {
1176-
var supportedServices = Object.keys(this.selectedServiceProviderMap)
1177-
params.supportedservices = supportedServices.join(',')
1178-
for (var k in supportedServices) {
1179-
params['serviceProviderList[' + k + '].service'] = supportedServices[k]
1180-
params['serviceProviderList[' + k + '].provider'] = this.selectedServiceProviderMap[supportedServices[k]]
1181-
}
1182-
var serviceCapabilityIndex = 0
1183-
if (supportedServices.includes('Connectivity')) {
1184-
if (values.supportsstrechedl2subnet === true) {
1185-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'Connectivity'
1186-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'RegionLevelVpc'
1187-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
1188-
serviceCapabilityIndex++
1189-
}
1190-
if (values.supportspublicaccess === true) {
1191-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'Connectivity'
1192-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'DistributedRouter'
1193-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
1194-
serviceCapabilityIndex++
1195-
}
1196-
delete params.supportsstrechedl2subnet
1197-
delete params.supportspublicaccess
1198-
}
1199-
if (supportedServices.includes('SourceNat')) {
1200-
if (values.redundantroutercapability === true) {
1201-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'SourceNat'
1202-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'RedundantRouter'
1203-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
1204-
serviceCapabilityIndex++
1205-
}
1206-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'SourceNat'
1207-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'SupportedSourceNatTypes'
1208-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = values.sourcenattype
1209-
serviceCapabilityIndex++
1210-
delete params.redundantroutercapability
1211-
delete params.sourcenattype
1212-
} else if (values.redundantroutercapability === true) {
1213-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'Gateway'
1214-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'RedundantRouter'
1215-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
1216-
}
1217-
if (supportedServices.includes('SourceNat')) {
1218-
if (values.elasticip === true) {
1219-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'StaticNat'
1220-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'ElasticIp'
1221-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = true
1222-
serviceCapabilityIndex++
1223-
}
1224-
if (values.elasticip === true || values.associatepublicip === true) {
1225-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'StaticNat'
1226-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'associatePublicIP'
1227-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = values.associatepublicip
1228-
serviceCapabilityIndex++
1229-
}
1230-
delete params.elasticip
1231-
delete params.associatepublicip
1232-
}
1233-
if (supportedServices.includes('Lb')) {
1234-
if ('vmautoscalingcapability' in values) {
1235-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'lb'
1236-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'VmAutoScaling'
1237-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = values.vmautoscalingcapability
1238-
serviceCapabilityIndex++
1239-
}
1240-
if (values.elasticlb === true) {
1241-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'lb'
1242-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'ElasticLb'
1243-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = true
1244-
serviceCapabilityIndex++
1245-
}
1246-
if (values.inlinemode === true && ((this.selectedServiceProviderMap.Lb === 'F5BigIp') || (this.selectedServiceProviderMap.Lb === 'Netscaler'))) {
1247-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'lb'
1248-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'InlineMode'
1249-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = values.inlinemode
1250-
serviceCapabilityIndex++
1251-
}
1252-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'lb'
1253-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'SupportedLbIsolation'
1254-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = values.isolation
1255-
serviceCapabilityIndex++
1256-
if (this.selectedServiceProviderMap.Lb === 'InternalLbVm') {
1257-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].service'] = 'lb'
1258-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilitytype'] = 'lbSchemes'
1259-
params['servicecapabilitylist[' + serviceCapabilityIndex + '].capabilityvalue'] = 'internal'
1260-
serviceCapabilityIndex++
1261-
}
1262-
if ('netscalerservicepackages' in values &&
1263-
this.registeredServicePackages.length > values.netscalerservicepackages &&
1264-
'netscalerservicepackagesdescription' in values) {
1265-
params['details[' + 0 + '].servicepackageuuid'] = this.registeredServicePackages[values.netscalerservicepackages].id
1266-
params['details[' + 1 + '].servicepackagedescription'] = values.netscalerservicepackagesdescription
1267-
}
1268-
}
1177+
buildServiceCapabilityParams(params, values, this.selectedServiceProviderMap, this.registeredServicePackages)
12691178
} else {
12701179
if (!('supportedservices' in params)) {
12711180
params.supportedservices = ''

ui/src/views/offering/AddVpcOffering.vue

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ import { mixinForm } from '@/utils/mixin'
269269
import CheckBoxSelectPair from '@/components/CheckBoxSelectPair'
270270
import ResourceIcon from '@/components/view/ResourceIcon'
271271
import TooltipLabel from '@/components/widgets/TooltipLabel'
272+
import { buildVpcServiceCapabilityParams } from '@/composables/useServiceCapabilityParams'
272273
273274
export default {
274275
name: 'AddVpcOffering',
@@ -733,35 +734,7 @@ export default {
733734
params['serviceProviderList[' + k + '].service'] = supportedServices[k]
734735
params['serviceProviderList[' + k + '].provider'] = this.selectedServiceProviderMap[supportedServices[k]]
735736
}
736-
var serviceCapabilityIndex = 0
737-
if (supportedServices.includes('Connectivity')) {
738-
if (values.regionlevelvpc === true) {
739-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'Connectivity'
740-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'RegionLevelVpc'
741-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
742-
serviceCapabilityIndex++
743-
}
744-
if (values.distributedrouter === true) {
745-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'Connectivity'
746-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'DistributedRouter'
747-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
748-
serviceCapabilityIndex++
749-
}
750-
}
751-
if (supportedServices.includes('SourceNat') && values.redundantrouter === true) {
752-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'SourceNat'
753-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'RedundantRouter'
754-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
755-
serviceCapabilityIndex++
756-
} else if (values.redundantrouter === true) {
757-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].service'] = 'Gateway'
758-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilitytype'] = 'RedundantRouter'
759-
params['serviceCapabilityList[' + serviceCapabilityIndex + '].capabilityvalue'] = true
760-
serviceCapabilityIndex++
761-
}
762-
if (values.serviceofferingid && this.isVpcVirtualRouterForAtLeastOneService) {
763-
params.serviceofferingid = values.serviceofferingid
764-
}
737+
buildVpcServiceCapabilityParams(params, values, this.selectedServiceProviderMap, this.isVpcVirtualRouterForAtLeastOneService)
765738
} else {
766739
params.supportedservices = []
767740
}

0 commit comments

Comments
 (0)