2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.common.scripts;
23 import javax.xml.parsers.DocumentBuilder
24 import javax.xml.parsers.DocumentBuilderFactory
26 import org.w3c.dom.Document
27 import org.w3c.dom.Element
28 import org.w3c.dom.Node
29 import org.w3c.dom.NodeList
30 import org.xml.sax.InputSource
31 import org.onap.so.logger.MessageEnum
32 import org.onap.so.logger.MsoLogger
34 public abstract class VfModuleBase extends AbstractServiceTaskProcessor {
35 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, VfModuleBase.class);
38 protected XmlParser xmlParser = new XmlParser()
43 * @return the XmlParser.
45 protected XmlParser getXmlParser() {
50 * Find the VF Module with specified ID in the specified Generic VF. If no such
51 * VF Module is found, null is returned.
53 * @param genericVnf The Generic VNF in which to search for the specified VF Moduel.
54 * @param vfModuleId The ID of the VF Module for which to search.
55 * @return a VFModule object for the found VF Module or null if no VF Module is found.
57 protected VfModule findVfModule(String genericVnf, String vfModuleId) {
59 def genericVnfNode = xmlParser.parseText(genericVnf)
60 def vfModulesNode = utils.getChildNode(genericVnfNode, 'vf-modules')
61 if (vfModulesNode == null) {
64 def vfModuleList = utils.getIdenticalChildren(vfModulesNode, 'vf-module')
65 for (vfModuleNode in vfModuleList) {
66 def vfModuleIdNode = utils.getChildNode(vfModuleNode, 'vf-module-id')
67 if ((vfModuleIdNode != null) && (vfModuleIdNode.text().equals(vfModuleId))) {
68 return new VfModule(vfModuleNode, (vfModuleList.size() == 1))
75 * Transform all '*_network' parameter specifications from the incoming '*-params' root
76 * element to a corresponding list of 'vnf-networks' specifications (typically used when
77 * invoking the VNF Rest Adpater). Each element in '*-params' whose name attribute ends
78 * with '_network' is used to create an 'vnf-networks' element.
80 * @param paramsNode A Node representing a '*-params' element.
81 * @return a String of 'vnf-networks' elements, one for each 'param' element whose name
82 * attribute ends with '_network'.
84 protected String transformNetworkParamsToVnfNetworks(String paramsRootXml) {
85 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
88 def String vnfNetworks = ''
90 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
91 def paramsNode = xmlParser.parseText(paramsRootXml)
92 def params = utils.getIdenticalChildren(paramsNode, 'param')
93 for (param in params) {
94 def String attrName = (String) param.attribute('name')
95 if (attrName.endsWith('_network')) {
96 def networkRole = attrName.substring(0, (attrName.length()-'_network'.length()))
97 def networkName = param.text()
98 String vnfNetwork = """
100 <network-role>${MsoUtils.xmlEscape(networkRole)}</network-role>
101 <network-name>${MsoUtils.xmlEscape(networkName)}</network-name>
104 vnfNetworks = vnfNetworks + vnfNetwork
107 } catch (Exception e) {
108 msoLogger.warn(MessageEnum.BPMN_GENERAL_WARNING, 'Exception transforming network params to vnfNetworks', "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, 'Exception is: \n' + e);
114 * Transform the parameter specifications from the incoming '*-params' root element to
115 * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
116 * Each element in '*-params' is used to create an 'entry' element.
118 * @param paramsNode A Node representing a '*-params' element.
119 * @return a String of 'entry' elements, one for each 'param' element.
121 protected String transformParamsToEntries(String paramsRootXml) {
122 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
125 def String entries = ''
127 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
128 def paramsNode = xmlParser.parseText(paramsRootXml)
129 def params = utils.getIdenticalChildren(paramsNode, 'param')
130 for (param in params) {
131 def key = (String) param.attribute('name')
135 def value = (String) param.text()
138 <key>${MsoUtils.xmlEscape(key)}</key>
139 <value>${MsoUtils.xmlEscape(value)}</value>
142 entries = entries + entry
144 } catch (Exception e) {
145 msoLogger.warn(MessageEnum.BPMN_GENERAL_WARNING, 'Exception transforming params to entries', "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, 'Exception transforming params to entries', e);
151 * Transform the parameter specifications from the incoming '*-params' root element to
152 * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
153 * Each element in '*-params' is used to create an 'entry' element.
155 * @param paramsNode A Node representing a '*-params' element.
156 * @return a String of 'entry' elements, one for each 'param' element.
158 protected String transformVolumeParamsToEntries(String paramsRootXml) {
159 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
162 def String entries = ''
164 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
165 def paramsNode = xmlParser.parseText(paramsRootXml)
166 def params = utils.getIdenticalChildren(paramsNode, 'param')
167 for (param in params) {
168 def key = (String) param.attribute('name')
172 if ( !(key in ['vnf_id', 'vnf_name', 'vf_module_id', 'vf_module_name'])) {
173 def value = (String) param.text()
176 <key>${MsoUtils.xmlEscape(key)}</key>
177 <value>${MsoUtils.xmlEscape(value)}</value>
180 entries = entries + entry
183 } catch (Exception e) {
184 msoLogger.warn(MessageEnum.BPMN_GENERAL_WARNING, 'Exception transforming params to entries', "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, 'Exception transforming params to entries', e);
190 * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
191 * and puts them into the format expected by VNF adapter.
192 * @param vnfParamsMap - map of VNF parameters passed in the request body
193 * @param sdncGetResponse - response string from SDNC GET topology request
197 * @param vfModuleName
198 * @param vfModuleIndex - can be null
199 * @return a String of key/value entries for vfModuleParams
203 protected String buildVfModuleParams(Map<String, String> vnfParamsMap, String sdncGetResponse, String vnfId, String vnfName,
204 String vfModuleId, String vfModuleName, String vfModuleIndex, String environmentContext, String workloadContext) {
206 //Get SDNC Response Data
208 String data = utils.getNodeXml(sdncGetResponse, "response-data")
210 String serviceData = utils.getNodeXml(data, "service-data")
211 serviceData = utils.removeXmlPreamble(serviceData)
212 serviceData = utils.removeXmlNamespaces(serviceData)
213 String vnfRequestInfo = utils.getNodeXml(serviceData, "vnf-request-information")
214 String oldVnfId = utils.getNodeXml(vnfRequestInfo, "vnf-id")
215 oldVnfId = utils.removeXmlPreamble(oldVnfId)
216 oldVnfId = utils.removeXmlNamespaces(oldVnfId)
217 serviceData = serviceData.replace(oldVnfId, "")
218 def vnfId1 = utils.getNodeText(serviceData, "vnf-id")
220 Map<String, String> paramsMap = new HashMap<String, String>()
222 if (vfModuleIndex != null) {
223 paramsMap.put("vf_module_index", "${vfModuleIndex}")
227 paramsMap.put("vnf_id", "${vnfId}")
228 paramsMap.put("vnf_name", "${vnfName}")
229 paramsMap.put("vf_module_id", "${vfModuleId}")
230 paramsMap.put("vf_module_name", "${vfModuleName}")
231 paramsMap.put("environment_context", "${environmentContext}")
232 paramsMap.put("workload_context", "${workloadContext}")
234 InputSource source = new InputSource(new StringReader(data));
235 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
236 docFactory.setNamespaceAware(true)
237 DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
238 Document responseXml = docBuilder.parse(source)
241 // Availability Zones Data
243 NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
244 String aZonePosition = "0"
245 for (int z = 0; z < aZonesList.getLength(); z++) {
246 Node node = aZonesList.item(z)
247 if (node.getNodeType() == Node.ELEMENT_NODE) {
248 Element eElement = (Element) node
249 String aZoneValue = utils.getElementText(eElement, "availability-zone")
250 aZonePosition = z.toString()
251 paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
255 // Map of network-roles and network-tags from vm-networks
257 NodeList vmNetworksListGlobal = responseXml.getElementsByTagNameNS("*", "vm-networks")
258 Map<String, String> networkRoleMap = new HashMap<String, String>()
259 for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
260 Node nodeNetworkKey = vmNetworksListGlobal.item(n)
261 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
262 Element eElementNetworkKey = (Element) nodeNetworkKey
263 String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
264 String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
265 if (networkRoleValue.isEmpty()) {
266 networkRoleValue = networkRole
268 networkRoleMap.put(networkRole, networkRoleValue)
274 StringBuilder sbNet = new StringBuilder()
276 NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
277 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
278 Node node = vnfNetworkList.item(x)
279 if (node.getNodeType() == Node.ELEMENT_NODE) {
280 Element eElement = (Element) node
281 String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
282 String networkRole = utils.getElementText(eElement, "network-role")
283 if (vnfNetworkKey.isEmpty()) {
284 vnfNetworkKey = networkRoleMap.get(networkRole)
285 if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
286 vnfNetworkKey = networkRole
289 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
290 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
291 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
292 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
293 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
294 paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
295 paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
296 paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
297 paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
298 paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
300 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
301 StringBuffer sriovFilterBuf = new StringBuffer()
303 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
304 Node node1 = sriovVlanFilterList.item(i)
305 if (node1.getNodeType() == Node.ELEMENT_NODE) {
306 Element eElement1 = (Element) node1
307 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
308 if (i != sriovVlanFilterList.getLength() - 1) {
309 values = sriovFilterBuf.append(value + ",")
312 values = sriovFilterBuf.append(value);
316 if (!values.isEmpty()) {
317 paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
329 def floatingIPKeyValue
331 def floatingIPV6KeyValue
332 StringBuilder sb = new StringBuilder()
334 NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
335 for (int x = 0; x < vmsList.getLength(); x++) {
336 Node node = vmsList.item(x)
337 if (node.getNodeType() == Node.ELEMENT_NODE) {
338 Element eElement = (Element) node
339 key = utils.getElementText(eElement, "vm-type")
341 String position = "0"
342 StringBuilder sb1 = new StringBuilder()
343 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
344 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
345 for(int i = 0; i < valueList.getLength(); i++){
346 Node node1 = valueList.item(i)
347 if (node1.getNodeType() == Node.ELEMENT_NODE) {
348 Element eElement1 = (Element) node1
349 value = utils.getElementText(eElement1, "vm-name")
350 if (i != valueList.getLength() - 1) {
351 values = sb1.append(value + ",")
354 values = sb1.append(value);
356 position = i.toString()
357 paramsMap.put("${key}_name_${position}", "${value}")
360 for(int n = 0; n < vmNetworksList.getLength(); n++){
361 String floatingIpKeyValueStr = ""
362 String floatingIpV6KeyValueStr = ""
363 Node nodeNetworkKey = vmNetworksList.item(n)
364 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
365 Element eElementNetworkKey = (Element) nodeNetworkKey
366 String ipAddressValues
367 String ipV6AddressValues
368 String networkPosition = "0"
369 StringBuilder sb2 = new StringBuilder()
370 StringBuilder sb3 = new StringBuilder()
371 StringBuilder sb4 = new StringBuilder()
372 networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
373 if (networkKey.isEmpty()) {
374 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
376 floatingIPKey = key + '_' + networkKey + '_floating_ip'
377 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
378 if(!floatingIPKeyValue.isEmpty()){
379 paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
381 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
382 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
383 if(!floatingIPV6KeyValue.isEmpty()){
384 paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
386 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
387 for(int a = 0; a < networkIpsList.getLength(); a++){
388 Node ipAddress = networkIpsList.item(a)
389 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
390 Element eElementIpAddress = (Element) ipAddress
391 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
392 if (a != networkIpsList.getLength() - 1) {
393 ipAddressValues = sb2.append(ipAddressValue + ",")
396 ipAddressValues = sb2.append(ipAddressValue);
398 networkPosition = a.toString()
399 paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
403 paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
405 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
406 String interfaceRoutePrefixValues = sb3.append("[")
408 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
409 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
410 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
411 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
412 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
413 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
414 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
416 if (a != interfaceRoutePrefixesList.getLength() - 1) {
417 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
420 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
424 interfaceRoutePrefixValues = sb3.append("]")
425 if (interfaceRoutePrefixesList.getLength() > 0) {
426 paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
429 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
430 for(int a = 0; a < networkIpsV6List.getLength(); a++){
431 Node ipV6Address = networkIpsV6List.item(a)
432 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
433 Element eElementIpV6Address = (Element) ipV6Address
434 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
435 if (a != networkIpsV6List.getLength() - 1) {
436 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
439 ipV6AddressValues = sb4.append(ipV6AddressValue);
441 networkPosition = a.toString()
442 paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
445 paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
448 paramsMap.put("${key}_names", "${values}")
451 //SDNC Response Params
452 String sdncResponseParams = ""
453 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
454 String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
455 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
458 NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
459 for (int z = 0; z < paramsList.getLength(); z++) {
460 Node node = paramsList.item(z)
461 Element eElement = (Element) node
462 String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
463 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
464 String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
465 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
470 // Parameters received from the request should overwrite any parameters received from SDNC
471 if (vnfParamsMap != null) {
472 for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
473 String vnfKey = entry.getKey()
474 String vnfValue = entry.getValue()
475 paramsMap.put("$vnfKey", "$vnfValue")
479 StringBuilder sbParams = new StringBuilder()
480 def vfModuleParams = ""
481 for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
483 String paramName = entry.getKey()
484 String paramValue = entry.getValue()
487 <key>${MsoUtils.xmlEscape(paramName)}</key>
488 <value>${MsoUtils.xmlEscape(paramValue)}</value>
492 vfModuleParams = sbParams.append(paramsXml)
495 return vfModuleParams
501 * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
502 * for both VNF and VF Module
503 * and puts them into the format expected by VNF adapter.
504 * @param vnfParamsMap - map of VNF parameters passed in the request body
505 * @param vnfSdncGetResponse - response string from SDNC GET VNF topology request
506 * @param vfmoduleSdncGetResponse - response string from SDNC GET VF Module topology request
510 * @param vfModuleName
511 * @param vfModuleIndex - can be null
512 * @return a String of key/value entries for vfModuleParams
515 protected String buildVfModuleParamsFromCombinedTopologies(Map<String, String> vnfParamsMap, String vnfSdncGetResponse, String vfmoduleSdncGetResponse, String vnfId, String vnfName,
516 String vfModuleId, String vfModuleName, String vfModuleIndex, String environmentContext, String workloadContext) {
518 // Set up initial parameters
520 Map<String, String> paramsMap = new HashMap<String, String>()
522 if (vfModuleIndex != null) {
523 paramsMap.put("vf_module_index", "${vfModuleIndex}")
527 paramsMap.put("vnf_id", "${vnfId}")
528 paramsMap.put("vnf_name", "${vnfName}")
529 paramsMap.put("vf_module_id", "${vfModuleId}")
530 paramsMap.put("vf_module_name", "${vfModuleName}")
531 paramsMap.put("environment_context","${environmentContext}")
532 paramsMap.put("workload_context", "${workloadContext}")
534 //Get SDNC Response Data for VNF
536 String vnfData = utils.getNodeXml(vnfSdncGetResponse, "response-data")
538 String vnfTopology = utils.getNodeXml(vnfData, "vnf-topology")
539 vnfTopology = utils.removeXmlPreamble(vnfTopology)
540 vnfTopology = utils.removeXmlNamespaces(vnfTopology)
542 InputSource sourceVnf = new InputSource(new StringReader(vnfData));
543 DocumentBuilderFactory docFactoryVnf = DocumentBuilderFactory.newInstance();
544 docFactoryVnf.setNamespaceAware(true)
545 DocumentBuilder docBuilderVnf = docFactoryVnf.newDocumentBuilder()
546 Document responseXmlVnf = docBuilderVnf.parse(sourceVnf)
548 // Availability Zones Data
550 NodeList aZonesList = responseXmlVnf.getElementsByTagNameNS("*", "availability-zones")
551 String aZonePosition = "0"
552 for (int z = 0; z < aZonesList.getLength(); z++) {
553 Node node = aZonesList.item(z)
554 if (node.getNodeType() == Node.ELEMENT_NODE) {
555 Element eElement = (Element) node
556 String aZoneValue = utils.getElementText(eElement, "availability-zone")
557 aZonePosition = z.toString()
558 paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
562 //Get SDNC Response Data for VF Module
564 String vfModuleData = utils.getNodeXml(vfmoduleSdncGetResponse, "response-data")
566 String vfModuleTopology = utils.getNodeXml(vfModuleData, "vf-module-topology")
567 vfModuleTopology = utils.removeXmlPreamble(vfModuleTopology)
568 vfModuleTopology = utils.removeXmlNamespaces(vfModuleTopology)
569 String vfModuleTopologyIdentifier = utils.getNodeXml(vfModuleTopology, "vf-module-topology-identifier")
571 InputSource sourceVfModule = new InputSource(new StringReader(vfModuleData));
572 DocumentBuilderFactory docFactoryVfModule = DocumentBuilderFactory.newInstance();
573 docFactoryVfModule.setNamespaceAware(true)
574 DocumentBuilder docBuilderVfModule = docFactoryVfModule.newDocumentBuilder()
575 Document responseXmlVfModule = docBuilderVfModule.parse(sourceVfModule)
577 // Map of network-roles and network-tags from vm-networks
579 NodeList vmNetworksListGlobal = responseXmlVfModule.getElementsByTagNameNS("*", "vm-networks")
580 Map<String, String> networkRoleMap = new HashMap<String, String>()
581 for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
582 Node nodeNetworkKey = vmNetworksListGlobal.item(n)
583 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
584 Element eElementNetworkKey = (Element) nodeNetworkKey
585 String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
586 String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
587 if (networkRoleValue.isEmpty()) {
588 networkRoleValue = networkRole
590 networkRoleMap.put(networkRole, networkRoleValue)
596 StringBuilder sbNet = new StringBuilder()
598 NodeList vnfNetworkList = responseXmlVnf.getElementsByTagNameNS("*", "vnf-networks")
599 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
600 Node node = vnfNetworkList.item(x)
601 if (node.getNodeType() == Node.ELEMENT_NODE) {
602 Element eElement = (Element) node
603 String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
604 String networkRole = utils.getElementText(eElement, "network-role")
605 if (vnfNetworkKey.isEmpty()) {
606 vnfNetworkKey = networkRoleMap.get(networkRole)
607 if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
608 vnfNetworkKey = networkRole
611 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
612 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
613 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
614 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
615 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
616 paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
617 paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
618 paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
619 paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
620 paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
622 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
623 StringBuffer sriovFilterBuf = new StringBuffer()
625 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
626 Node node1 = sriovVlanFilterList.item(i)
627 if (node1.getNodeType() == Node.ELEMENT_NODE) {
628 Element eElement1 = (Element) node1
629 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
630 if (i != sriovVlanFilterList.getLength() - 1) {
631 values = sriovFilterBuf.append(value + ",")
634 values = sriovFilterBuf.append(value);
638 if (!values.isEmpty()) {
639 paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
653 def floatingIPKeyValue
655 def floatingIPV6KeyValue
656 StringBuilder sb = new StringBuilder()
658 NodeList vmsList = responseXmlVfModule.getElementsByTagNameNS("*","vm")
659 for (int x = 0; x < vmsList.getLength(); x++) {
660 Node node = vmsList.item(x)
661 if (node.getNodeType() == Node.ELEMENT_NODE) {
662 Element eElement = (Element) node
663 key = utils.getElementText(eElement, "vm-type")
665 String position = "0"
666 StringBuilder sb1 = new StringBuilder()
667 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
668 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
669 for(int i = 0; i < valueList.getLength(); i++){
670 Node node1 = valueList.item(i)
671 if (node1.getNodeType() == Node.ELEMENT_NODE) {
672 Element eElement1 = (Element) node1
673 value = utils.getElementText(eElement1, "vm-name")
674 if (i != valueList.getLength() - 1) {
675 values = sb1.append(value + ",")
678 values = sb1.append(value);
680 position = i.toString()
681 paramsMap.put("${key}_name_${position}", "${value}")
684 for(int n = 0; n < vmNetworksList.getLength(); n++){
685 String floatingIpKeyValueStr = ""
686 String floatingIpV6KeyValueStr = ""
687 Node nodeNetworkKey = vmNetworksList.item(n)
688 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
689 Element eElementNetworkKey = (Element) nodeNetworkKey
690 String ipAddressValues
691 String ipV6AddressValues
692 String networkPosition = "0"
693 StringBuilder sb2 = new StringBuilder()
694 StringBuilder sb3 = new StringBuilder()
695 StringBuilder sb4 = new StringBuilder()
696 networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
697 if (networkKey.isEmpty()) {
698 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
700 floatingIPKey = key + '_' + networkKey + '_floating_ip'
701 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
702 if(!floatingIPKeyValue.isEmpty()){
703 paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
705 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
706 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
707 if(!floatingIPV6KeyValue.isEmpty()){
708 paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
710 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
711 for(int a = 0; a < networkIpsList.getLength(); a++){
712 Node ipAddress = networkIpsList.item(a)
713 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
714 Element eElementIpAddress = (Element) ipAddress
715 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
716 if (a != networkIpsList.getLength() - 1) {
717 ipAddressValues = sb2.append(ipAddressValue + ",")
720 ipAddressValues = sb2.append(ipAddressValue);
722 networkPosition = a.toString()
723 paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
727 paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
729 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
730 String interfaceRoutePrefixValues = sb3.append("[")
732 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
733 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
734 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
735 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
736 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
737 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
738 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
740 if (a != interfaceRoutePrefixesList.getLength() - 1) {
741 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
744 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
748 interfaceRoutePrefixValues = sb3.append("]")
749 if (interfaceRoutePrefixesList.getLength() > 0) {
750 paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
753 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
754 for(int a = 0; a < networkIpsV6List.getLength(); a++){
755 Node ipV6Address = networkIpsV6List.item(a)
756 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
757 Element eElementIpV6Address = (Element) ipV6Address
758 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
759 if (a != networkIpsV6List.getLength() - 1) {
760 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
763 ipV6AddressValues = sb4.append(ipV6AddressValue);
765 networkPosition = a.toString()
766 paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
769 paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
772 paramsMap.put("${key}_names", "${values}")
775 //SDNC Response Params
776 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
778 String vnfParamsChildNodes = utils.getChildNodes(vnfData, "param")
779 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
780 // No SDNC params for VNF
782 NodeList paramsList = responseXmlVnf.getElementsByTagNameNS("*", "param")
783 for (int z = 0; z < paramsList.getLength(); z++) {
784 Node node = paramsList.item(z)
785 Element eElement = (Element) node
786 String vnfParameterName = utils.getElementText(eElement, "name")
787 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
788 String vnfParameterValue = utils.getElementText(eElement, "value")
789 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
794 String vfModuleParamsChildNodes = utils.getChildNodes(vfModuleData, "param")
795 if(vfModuleParamsChildNodes == null || vfModuleParamsChildNodes.length() < 1){
796 // No SDNC params for VF Module
798 NodeList paramsList = responseXmlVfModule.getElementsByTagNameNS("*", "param")
799 for (int z = 0; z < paramsList.getLength(); z++) {
800 Node node = paramsList.item(z)
801 Element eElement = (Element) node
802 String vnfParameterName = utils.getElementText(eElement, "name")
803 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
804 String vnfParameterValue = utils.getElementText(eElement, "value")
805 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
810 // Parameters received from the request should overwrite any parameters received from SDNC
811 if (vnfParamsMap != null) {
812 for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
813 String vnfKey = entry.getKey()
814 String vnfValue = entry.getValue()
815 paramsMap.put("$vnfKey", "$vnfValue")
819 StringBuilder sbParams = new StringBuilder()
820 def vfModuleParams = ""
821 for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
823 String paramName = entry.getKey()
824 String paramValue = entry.getValue()
827 <key>${MsoUtils.xmlEscape(paramName)}</key>
828 <value>${MsoUtils.xmlEscape(paramValue)}</value>
832 vfModuleParams = sbParams.append(paramsXml)
835 return vfModuleParams
841 * VBNG specific method that parses VNF parameters passed in on the
842 * incoming requests and SDNC parameters returned from SDNC get response
843 * and puts them into the format expected by VNF adapter.
844 * @param vnfParamsMap - map of VNF parameters passed in the request body
845 * @param sdncGetResponse - response string from SDNC GET topology request
849 * @param vfModuleName
850 * @return a String of key/value entries for vfModuleParams
853 protected String buildVfModuleParamsVbng(String vnfParams, String sdncGetResponse, String vnfId, String vnfName,
854 String vfModuleId, String vfModuleName) {
856 //Get SDNC Response Data
858 String data = utils.getNodeXml(sdncGetResponse, "response-data")
866 <value>${MsoUtils.xmlEscape(vnfId)}</value>
870 <value>${MsoUtils.xmlEscape(vnfName)}</value>
873 <key>vf_module_id</key>
874 <value>${MsoUtils.xmlEscape(vfModuleId)}</value>
877 <key>vf_module_name</key>
878 <value>${MsoUtils.xmlEscape(vfModuleName)}</value>
881 msoLogger.debug("vnfInfo: " + vnfInfo)
882 InputSource source = new InputSource(new StringReader(data));
883 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
884 docFactory.setNamespaceAware(true)
885 DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
886 Document responseXml = docBuilder.parse(source)
889 // Availability Zones Data
891 StringBuilder sbAZone = new StringBuilder()
892 NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
893 String aZonePosition = "0"
894 for (int z = 0; z < aZonesList.getLength(); z++) {
895 Node node = aZonesList.item(z)
896 if (node.getNodeType() == Node.ELEMENT_NODE) {
897 Element eElement = (Element) node
898 String aZoneValue = utils.getElementText(eElement, "availability-zone")
899 aZonePosition = z.toString()
902 <key>availability_zone_${MsoUtils.xmlEscape(aZonePosition)}</key>
903 <value>${MsoUtils.xmlEscape(aZoneValue)}</value>
905 aZones = sbAZone.append(aZoneXml)
909 // Map of network-roles and network-tags from vm-networks
911 NodeList vmNetworksListGlobal = responseXml.getElementsByTagNameNS("*", "vm-networks")
912 Map<String, String> networkRoleMap = new HashMap<String, String>()
913 for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
914 Node nodeNetworkKey = vmNetworksListGlobal.item(n)
915 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
916 Element eElementNetworkKey = (Element) nodeNetworkKey
917 String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
918 String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
919 if (networkRoleValue.isEmpty()) {
920 networkRoleValue = networkRole
922 networkRoleMap.put(networkRole, networkRoleValue)
927 String vnfNetworkNetId = ""
928 String vnfNetworkNetName = ""
929 String vnfNetworkSubNetId = ""
930 String vnfNetworkV6SubNetId = ""
931 String vnfNetworkNetFqdn = ""
932 String vnfNetworksSriovVlanFilters = ""
933 StringBuilder sbNet = new StringBuilder()
934 StringBuilder sbNet2 = new StringBuilder()
935 StringBuilder sbNet3 = new StringBuilder()
936 StringBuilder sbNet4 = new StringBuilder()
937 StringBuilder sbNet5 = new StringBuilder()
938 StringBuilder sbNet6 = new StringBuilder()
939 NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
940 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
941 Node node = vnfNetworkList.item(x)
942 if (node.getNodeType() == Node.ELEMENT_NODE) {
943 Element eElement = (Element) node
944 String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
945 String networkRole = utils.getElementText(eElement, "network-role")
946 if (vnfNetworkKey.isEmpty()) {
947 vnfNetworkKey = networkRoleMap.get(networkRole)
948 if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
949 vnfNetworkKey = networkRole
952 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
953 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
954 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
955 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
956 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
957 String vnfNetworkNetIdXml =
959 <key>${MsoUtils.xmlEscape(vnfNetworkKey)}_net_id</key>
960 <value>${MsoUtils.xmlEscape(vnfNetworkNeutronIdValue)}</value>
962 vnfNetworkNetId = sbNet.append(vnfNetworkNetIdXml)
963 String vnfNetworkNetNameXml =
965 <key>${MsoUtils.xmlEscape(vnfNetworkKey)}_net_name</key>
966 <value>${MsoUtils.xmlEscape(vnfNetworkNetNameValue)}</value>
968 vnfNetworkNetName = sbNet2.append(vnfNetworkNetNameXml)
969 String vnfNetworkSubNetIdXml =
971 <key>${MsoUtils.xmlEscape(vnfNetworkKey)}_subnet_id</key>
972 <value>${MsoUtils.xmlEscape(vnfNetworkSubNetIdValue)}</value>
974 vnfNetworkSubNetId = sbNet3.append(vnfNetworkSubNetIdXml)
975 String vnfNetworkV6SubNetIdXml =
977 <key>${MsoUtils.xmlEscape(vnfNetworkKey)}_v6_subnet_id</key>
978 <value>${MsoUtils.xmlEscape(vnfNetworkV6SubNetIdValue)}</value>
980 vnfNetworkV6SubNetId = sbNet5.append(vnfNetworkV6SubNetIdXml)
981 String vnfNetworkNetFqdnXml =
983 <key>${MsoUtils.xmlEscape(vnfNetworkKey)}_net_fqdn</key>
984 <value>${MsoUtils.xmlEscape(vnfNetworkNetFqdnValue)}</value>
986 vnfNetworkNetFqdn = sbNet4.append(vnfNetworkNetFqdnXml)
988 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
989 StringBuffer sriovFilterBuf = new StringBuffer()
991 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
992 Node node1 = sriovVlanFilterList.item(i)
993 if (node1.getNodeType() == Node.ELEMENT_NODE) {
994 Element eElement1 = (Element) node1
995 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
996 if (i != sriovVlanFilterList.getLength() - 1) {
997 values = sriovFilterBuf.append(value + ",")
1000 values = sriovFilterBuf.append(value);
1004 if (!values.isEmpty()) {
1005 String vnfNetworkSriovVlanFilterXml =
1007 <key>${MsoUtils.xmlEscape(vnfNetworkKey)}_ATT_VF_VLAN_FILTER</key>
1008 <value>${MsoUtils.xmlEscape(values)}</value>
1010 vnfNetworksSriovVlanFilters = sbNet6.append(vnfNetworkSriovVlanFilterXml)
1017 String vnfVMSPositions = ""
1018 String vmNetworks = ""
1019 String vmNetworksPositions = ""
1020 String vmNetworksPositionsV6 = ""
1021 String interfaceRoutePrefixes = ""
1027 def floatingIPKeyValue
1029 def floatingIPV6KeyValue
1030 StringBuilder sb = new StringBuilder()
1031 StringBuilder sbPositions = new StringBuilder()
1032 StringBuilder sbVmNetworks = new StringBuilder()
1033 StringBuilder sbNetworksPositions = new StringBuilder()
1034 StringBuilder sbInterfaceRoutePrefixes = new StringBuilder()
1035 StringBuilder sbNetworksPositionsV6 = new StringBuilder()
1037 NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
1038 for (int x = 0; x < vmsList.getLength(); x++) {
1039 Node node = vmsList.item(x)
1040 if (node.getNodeType() == Node.ELEMENT_NODE) {
1041 Element eElement = (Element) node
1042 key = utils.getElementText(eElement, "vm-type")
1044 String position = "0"
1045 StringBuilder sb1 = new StringBuilder()
1046 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
1047 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
1048 for(int i = 0; i < valueList.getLength(); i++){
1049 Node node1 = valueList.item(i)
1050 if (node1.getNodeType() == Node.ELEMENT_NODE) {
1051 Element eElement1 = (Element) node1
1052 value = utils.getElementText(eElement1, "vm-name")
1053 if (i != valueList.getLength() - 1) {
1054 values = sb1.append(value + ",")
1057 values = sb1.append(value);
1059 position = i.toString()
1060 String vnfPositionXml =
1062 <key>${MsoUtils.xmlEscape(key)}_name_${MsoUtils.xmlEscape(position)}</key>
1063 <value>${MsoUtils.xmlEscape(value)}</value>
1065 nfVMSPositions = sbPositions.append(vnfPositionXml)
1068 for(int n = 0; n < vmNetworksList.getLength(); n++){
1069 String floatingIpKeyValueStr = ""
1070 String floatingIpV6KeyValueStr = ""
1071 Node nodeNetworkKey = vmNetworksList.item(n)
1072 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
1073 Element eElementNetworkKey = (Element) nodeNetworkKey
1074 String ipAddressValues
1075 String ipV6AddressValues
1076 String networkPosition = "0"
1077 StringBuilder sb2 = new StringBuilder()
1078 StringBuilder sb3 = new StringBuilder()
1079 StringBuilder sb4 = new StringBuilder()
1080 networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
1081 if (networkKey.isEmpty()) {
1082 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
1084 floatingIPKey = key + '_' + networkKey + '_floating_ip'
1085 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
1086 if(!floatingIPKeyValue.isEmpty()){
1087 floatingIpKeyValueStr = """<entry>
1088 <key>$floatingIPKey</key>
1089 <value>$floatingIPKeyValue</value>
1092 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
1093 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
1094 if(!floatingIPV6KeyValue.isEmpty()){
1095 floatingIpV6KeyValueStr = """<entry>
1096 <key>$floatingIPV6Key</key>
1097 <value>$floatingIPV6KeyValue</value>
1100 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
1101 for(int a = 0; a < networkIpsList.getLength(); a++){
1102 Node ipAddress = networkIpsList.item(a)
1103 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
1104 Element eElementIpAddress = (Element) ipAddress
1105 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
1106 if (a != networkIpsList.getLength() - 1) {
1107 ipAddressValues = sb2.append(ipAddressValue + ",")
1110 ipAddressValues = sb2.append(ipAddressValue);
1112 networkPosition = a.toString()
1113 String vmNetworksPositionsXml =
1115 <key>${MsoUtils.xmlEscape(key)}_${MsoUtils.xmlEscape(networkKey)}_ip_${MsoUtils.xmlEscape(networkPosition)}</key>
1116 <value>${MsoUtils.xmlEscape(ipAddressValue)}</value>
1118 vmNetworksPositions = sbNetworksPositions.append(vmNetworksPositionsXml)
1121 vmNetworksPositions = sbNetworksPositions.append(floatingIpKeyValueStr).append(floatingIpV6KeyValueStr)
1123 String vmNetworksXml =
1125 <key>${MsoUtils.xmlEscape(key)}_${MsoUtils.xmlEscape(networkKey)}_ips</key>
1126 <value>${MsoUtils.xmlEscape(ipAddressValues)}</value>
1128 vmNetworks = sbVmNetworks.append(vmNetworksXml)
1130 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
1131 String interfaceRoutePrefixValues = sb3.append("[")
1133 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
1134 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
1135 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
1136 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
1137 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
1138 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
1139 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
1141 if (a != interfaceRoutePrefixesList.getLength() - 1) {
1142 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
1145 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
1149 interfaceRoutePrefixValues = sb3.append("]")
1150 if (interfaceRoutePrefixesList.getLength() > 0) {
1151 String interfaceRoutePrefixesXml =
1153 <key>${MsoUtils.xmlEscape(key)}_${MsoUtils.xmlEscape(networkKey)}_route_prefixes</key>
1154 <value>${MsoUtils.xmlEscape(interfaceRoutePrefixValues)}</value>
1156 interfaceRoutePrefixes = sbInterfaceRoutePrefixes.append(interfaceRoutePrefixesXml)
1159 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
1160 for(int a = 0; a < networkIpsV6List.getLength(); a++){
1161 Node ipV6Address = networkIpsV6List.item(a)
1162 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
1163 Element eElementIpV6Address = (Element) ipV6Address
1164 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
1165 if (a != networkIpsV6List.getLength() - 1) {
1166 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
1169 ipV6AddressValues = sb4.append(ipV6AddressValue);
1171 networkPosition = a.toString()
1172 String vmNetworksPositionsV6Xml =
1174 <key>${MsoUtils.xmlEscape(key)}_${MsoUtils.xmlEscape(networkKey)}_v6_ip_${MsoUtils.xmlEscape(networkPosition)}</key>
1175 <value>${MsoUtils.xmlEscape(ipV6AddressValue)}</value>
1177 vmNetworksPositionsV6 = sbNetworksPositionsV6.append(vmNetworksPositionsV6Xml)
1180 String vmNetworksV6Xml =
1182 <key>${MsoUtils.xmlEscape(key)}_${MsoUtils.xmlEscape(networkKey)}_v6_ips</key>
1183 <value>${MsoUtils.xmlEscape(ipV6AddressValues)}</value>
1185 vmNetworks = sbVmNetworks.append(vmNetworksV6Xml)
1190 <key>${MsoUtils.xmlEscape(key)}_names</key>
1191 <value>${MsoUtils.xmlEscape(values)}</value>
1193 vnfVMS = sb.append(vnfXml)
1196 //SDNC Response Params
1197 String sdncResponseParams = ""
1198 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
1199 String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
1200 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
1203 NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
1204 for (int z = 0; z < paramsList.getLength(); z++) {
1205 Node node = paramsList.item(z)
1206 Element eElement = (Element) node
1207 String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
1208 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
1209 String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
1212 <key>${MsoUtils.xmlEscape(vnfParameterName)}</key>
1213 <value>${MsoUtils.xmlEscape(vnfParameterValue)}</value>
1215 sdncResponseParams = sb.append(paraEntry)
1221 def vfModuleParams = """
1225 ${vnfNetworkNetName}
1226 ${vnfNetworkSubNetId}
1227 ${vnfNetworkV6SubNetId}
1228 ${vnfNetworkNetFqdn}
1229 ${vnfNetworksSriovVlanFilters}
1233 ${vmNetworksPositions}
1234 ${vmNetworksPositionsV6}
1235 ${interfaceRoutePrefixes}
1237 ${sdncResponseParams}"""
1239 return vfModuleParams