2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
21 package org.openecomp.mso.bpmn.common.scripts;
\r
23 //import groovy.util.Node;
\r
25 import javax.xml.parsers.DocumentBuilder
\r
26 import javax.xml.parsers.DocumentBuilderFactory
\r
28 import org.apache.commons.lang3.*
\r
29 import org.camunda.bpm.engine.runtime.Execution
\r
30 import org.w3c.dom.Document
\r
31 import org.w3c.dom.Element
\r
32 import org.w3c.dom.Node
\r
33 import org.w3c.dom.NodeList
\r
34 import org.xml.sax.InputSource
\r
37 public abstract class VfModuleBase extends AbstractServiceTaskProcessor {
\r
39 protected XmlParser xmlParser = new XmlParser()
\r
42 * Get the XmlParser.
\r
44 * @return the XmlParser.
\r
46 protected XmlParser getXmlParser() {
\r
51 * Find the VF Module with specified ID in the specified Generic VF. If no such
\r
52 * VF Module is found, null is returned.
\r
54 * @param genericVnf The Generic VNF in which to search for the specified VF Moduel.
\r
55 * @param vfModuleId The ID of the VF Module for which to search.
\r
56 * @return a VFModule object for the found VF Module or null if no VF Module is found.
\r
58 protected VfModule findVfModule(String genericVnf, String vfModuleId) {
\r
60 def genericVnfNode = xmlParser.parseText(genericVnf)
\r
61 def vfModulesNode = utils.getChildNode(genericVnfNode, 'vf-modules')
\r
62 if (vfModulesNode == null) {
\r
65 def vfModuleList = utils.getIdenticalChildren(vfModulesNode, 'vf-module')
\r
66 for (vfModuleNode in vfModuleList) {
\r
67 def vfModuleIdNode = utils.getChildNode(vfModuleNode, 'vf-module-id')
\r
68 if ((vfModuleIdNode != null) && (vfModuleIdNode.text().equals(vfModuleId))) {
\r
69 return new VfModule(vfModuleNode, (vfModuleList.size() == 1))
\r
76 * Transform all '*_network' parameter specifications from the incoming '*-params' root
\r
77 * element to a corresponding list of 'vnf-networks' specifications (typically used when
\r
78 * invoking the VNF Rest Adpater). Each element in '*-params' whose name attribute ends
\r
79 * with '_network' is used to create an 'vnf-networks' element.
\r
81 * @param paramsNode A Node representing a '*-params' element.
\r
82 * @return a String of 'vnf-networks' elements, one for each 'param' element whose name
\r
83 * attribute ends with '_network'.
\r
85 protected String transformNetworkParamsToVnfNetworks(String paramsRootXml) {
\r
86 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
\r
89 def String vnfNetworks = ''
\r
91 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
\r
92 def paramsNode = xmlParser.parseText(paramsRootXml)
\r
93 def params = utils.getIdenticalChildren(paramsNode, 'param')
\r
94 for (param in params) {
\r
95 def String attrName = (String) param.attribute('name')
\r
96 if (attrName.endsWith('_network')) {
\r
97 def networkRole = attrName.substring(0, (attrName.length()-'_network'.length()))
\r
98 def networkName = param.text()
\r
99 String vnfNetwork = """
\r
101 <network-role>${networkRole}</network-role>
\r
102 <network-name>${networkName}</network-name>
\r
105 vnfNetworks = vnfNetworks + vnfNetwork
\r
108 } catch (Exception e) {
\r
109 logWarn('Exception transforming \'_network\' params to vnfNetworks', e)
\r
115 * Transform the parameter specifications from the incoming '*-params' root element to
\r
116 * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
\r
117 * Each element in '*-params' is used to create an 'entry' element.
\r
119 * @param paramsNode A Node representing a '*-params' element.
\r
120 * @return a String of 'entry' elements, one for each 'param' element.
\r
122 protected String transformParamsToEntries(String paramsRootXml) {
\r
123 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
\r
126 def String entries = ''
\r
128 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
\r
129 def paramsNode = xmlParser.parseText(paramsRootXml)
\r
130 def params = utils.getIdenticalChildren(paramsNode, 'param')
\r
131 for (param in params) {
\r
132 def key = (String) param.attribute('name')
\r
136 def value = (String) param.text()
\r
140 <value>${value}</value>
\r
143 entries = entries + entry
\r
145 } catch (Exception e) {
\r
146 logWarn('Exception transforming params to entries', e)
\r
152 * Transform the parameter specifications from the incoming '*-params' root element to
\r
153 * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
\r
154 * Each element in '*-params' is used to create an 'entry' element.
\r
156 * @param paramsNode A Node representing a '*-params' element.
\r
157 * @return a String of 'entry' elements, one for each 'param' element.
\r
159 protected String transformVolumeParamsToEntries(String paramsRootXml) {
\r
160 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
\r
163 def String entries = ''
\r
165 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
\r
166 def paramsNode = xmlParser.parseText(paramsRootXml)
\r
167 def params = utils.getIdenticalChildren(paramsNode, 'param')
\r
168 for (param in params) {
\r
169 def key = (String) param.attribute('name')
\r
173 if ( !(key in ['vnf_id', 'vnf_name', 'vf_module_id', 'vf_module_name'])) {
\r
174 def value = (String) param.text()
\r
178 <value>${value}</value>
\r
181 entries = entries + entry
\r
184 } catch (Exception e) {
\r
185 logWarn('Exception transforming params to entries', e)
\r
191 * Extract the Tenant Id from the Volume Group information returned by AAI.
\r
193 * @param volumeGroupXml Volume Group XML returned by AAI.
\r
194 * @return the Tenant Id extracted from the Volume Group information. 'null' is returned if
\r
195 * the Tenant Id is missing or could not otherwise be extracted.
\r
197 protected String getTenantIdFromVolumeGroup(String volumeGroupXml) {
\r
198 def groovy.util.Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
\r
199 def groovy.util.Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
\r
200 if (relationshipList != null) {
\r
201 def groovy.util.NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
\r
202 for (groovy.util.Node relationship in relationships) {
\r
203 def groovy.util.Node relatedTo = utils.getChildNode(relationship, 'related-to')
\r
204 if ((relatedTo != null) && (relatedTo.text().equals('tenant'))) {
\r
205 def groovy.util.NodeList relationshipDataList = utils.getIdenticalChildren(relationship, 'relationship-data')
\r
206 for (groovy.util.Node relationshipData in relationshipDataList) {
\r
207 def groovy.util.Node relationshipKey = utils.getChildNode(relationshipData, 'relationship-key')
\r
208 if ((relationshipKey != null) && (relationshipKey.text().equals('tenant.tenant-id'))) {
\r
209 def groovy.util.Node relationshipValue = utils.getChildNode(relationshipData, 'relationship-value')
\r
210 if (relationshipValue != null) {
\r
211 return relationshipValue.text()
\r
223 * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
\r
224 * and puts them into the format expected by VNF adapter.
\r
225 * @param vnfParamsMap - map of VNF parameters passed in the request body
\r
226 * @param sdncGetResponse - response string from SDNC GET topology request
\r
229 * @param vfModuleId
\r
230 * @param vfModuleName
\r
231 * @param vfModuleIndex - can be null
\r
232 * @return a String of key/value entries for vfModuleParams
\r
236 protected String buildVfModuleParams(Map<String, String> vnfParamsMap, String sdncGetResponse, String vnfId, String vnfName,
\r
237 String vfModuleId, String vfModuleName, String vfModuleIndex) {
\r
239 //Get SDNC Response Data
\r
241 String data = utils.getNodeXml(sdncGetResponse, "response-data")
\r
242 data = data.replaceAll("<", "<")
\r
243 data = data.replaceAll(">", ">")
\r
245 String serviceData = utils.getNodeXml(data, "service-data")
\r
246 serviceData = utils.removeXmlPreamble(serviceData)
\r
247 serviceData = utils.removeXmlNamespaces(serviceData)
\r
248 String vnfRequestInfo = utils.getNodeXml(serviceData, "vnf-request-information")
\r
249 String oldVnfId = utils.getNodeXml(vnfRequestInfo, "vnf-id")
\r
250 oldVnfId = utils.removeXmlPreamble(oldVnfId)
\r
251 oldVnfId = utils.removeXmlNamespaces(oldVnfId)
\r
252 serviceData = serviceData.replace(oldVnfId, "")
\r
253 def vnfId1 = utils.getNodeText1(serviceData, "vnf-id")
\r
255 Map<String, String> paramsMap = new HashMap<String, String>()
\r
257 if (vfModuleIndex != null) {
\r
258 paramsMap.put("vf_module_index", "${vfModuleIndex}")
\r
262 paramsMap.put("vnf_id", "${vnfId}")
\r
263 paramsMap.put("vnf_name", "${vnfName}")
\r
264 paramsMap.put("vf_module_id", "${vfModuleId}")
\r
265 paramsMap.put("vf_module_name", "${vfModuleName}")
\r
267 InputSource source = new InputSource(new StringReader(data));
\r
268 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
\r
269 docFactory.setNamespaceAware(true)
\r
270 DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
\r
271 Document responseXml = docBuilder.parse(source)
\r
274 // Availability Zones Data
\r
276 NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
\r
277 String aZonePosition = "0"
\r
278 for (int z = 0; z < aZonesList.getLength(); z++) {
\r
279 Node node = aZonesList.item(z)
\r
280 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
281 Element eElement = (Element) node
\r
282 String aZoneValue = utils.getElementText(eElement, "availability-zone")
\r
283 aZonePosition = z.toString()
\r
284 paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
\r
288 // VNF Networks Data
\r
290 StringBuilder sbNet = new StringBuilder()
\r
292 NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
\r
293 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
\r
294 Node node = vnfNetworkList.item(x)
\r
295 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
296 Element eElement = (Element) node
\r
297 String vnfNetworkKey = utils.getElementText(eElement, "network-role")
\r
298 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
\r
299 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
\r
300 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
\r
301 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
\r
302 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
\r
303 paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
\r
304 paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
\r
305 paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
\r
306 paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
\r
307 paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
\r
309 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
\r
310 StringBuffer sriovFilterBuf = new StringBuffer()
\r
312 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
\r
313 Node node1 = sriovVlanFilterList.item(i)
\r
314 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
315 Element eElement1 = (Element) node1
\r
316 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
\r
317 if (i != sriovVlanFilterList.getLength() - 1) {
\r
318 values = sriovFilterBuf.append(value + ",")
\r
321 values = sriovFilterBuf.append(value);
\r
325 if (!values.isEmpty()) {
\r
326 paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
\r
338 def floatingIPKeyValue
\r
339 def floatingIPV6Key
\r
340 def floatingIPV6KeyValue
\r
341 StringBuilder sb = new StringBuilder()
\r
343 NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
\r
344 for (int x = 0; x < vmsList.getLength(); x++) {
\r
345 Node node = vmsList.item(x)
\r
346 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
347 Element eElement = (Element) node
\r
348 key = utils.getElementText(eElement, "vm-type")
\r
350 String position = "0"
\r
351 StringBuilder sb1 = new StringBuilder()
\r
352 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
\r
353 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
\r
354 for(int i = 0; i < valueList.getLength(); i++){
\r
355 Node node1 = valueList.item(i)
\r
356 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
357 Element eElement1 = (Element) node1
\r
358 value = utils.getElementText(eElement1, "vm-name")
\r
359 if (i != valueList.getLength() - 1) {
\r
360 values = sb1.append(value + ",")
\r
363 values = sb1.append(value);
\r
365 position = i.toString()
\r
366 paramsMap.put("${key}_name_${position}", "${value}")
\r
369 for(int n = 0; n < vmNetworksList.getLength(); n++){
\r
370 String floatingIpKeyValueStr = ""
\r
371 String floatingIpV6KeyValueStr = ""
\r
372 Node nodeNetworkKey = vmNetworksList.item(n)
\r
373 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
374 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
375 String ipAddressValues
\r
376 String ipV6AddressValues
\r
377 String networkPosition = "0"
\r
378 StringBuilder sb2 = new StringBuilder()
\r
379 StringBuilder sb3 = new StringBuilder()
\r
380 StringBuilder sb4 = new StringBuilder()
\r
381 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
\r
382 floatingIPKey = key + '_' + networkKey + '_floating_ip'
\r
383 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
\r
384 if(!floatingIPKeyValue.isEmpty()){
\r
385 paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
\r
387 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
\r
388 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
\r
389 if(!floatingIPV6KeyValue.isEmpty()){
\r
390 paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
\r
392 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
\r
393 for(int a = 0; a < networkIpsList.getLength(); a++){
\r
394 Node ipAddress = networkIpsList.item(a)
\r
395 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
\r
396 Element eElementIpAddress = (Element) ipAddress
\r
397 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
\r
398 if (a != networkIpsList.getLength() - 1) {
\r
399 ipAddressValues = sb2.append(ipAddressValue + ",")
\r
402 ipAddressValues = sb2.append(ipAddressValue);
\r
404 networkPosition = a.toString()
\r
405 paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
\r
409 paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
\r
411 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
\r
412 String interfaceRoutePrefixValues = sb3.append("[")
\r
414 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
\r
415 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
\r
416 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
\r
417 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
\r
418 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
\r
419 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
\r
420 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
\r
422 if (a != interfaceRoutePrefixesList.getLength() - 1) {
\r
423 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
\r
426 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
\r
430 interfaceRoutePrefixValues = sb3.append("]")
\r
431 if (interfaceRoutePrefixesList.getLength() > 0) {
\r
432 paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
\r
435 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
\r
436 for(int a = 0; a < networkIpsV6List.getLength(); a++){
\r
437 Node ipV6Address = networkIpsV6List.item(a)
\r
438 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
\r
439 Element eElementIpV6Address = (Element) ipV6Address
\r
440 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
\r
441 if (a != networkIpsV6List.getLength() - 1) {
\r
442 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
\r
445 ipV6AddressValues = sb4.append(ipV6AddressValue);
\r
447 networkPosition = a.toString()
\r
448 paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
\r
451 paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
\r
454 paramsMap.put("${key}_names", "${values}")
\r
457 //SDNC Response Params
\r
458 String sdncResponseParams = ""
\r
459 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
\r
460 String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
\r
461 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
\r
464 NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
\r
465 for (int z = 0; z < paramsList.getLength(); z++) {
\r
466 Node node = paramsList.item(z)
\r
467 Element eElement = (Element) node
\r
468 String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
\r
469 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
470 String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
\r
471 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
\r
476 // Parameters received from the request should overwrite any parameters received from SDNC
\r
477 if (vnfParamsMap != null) {
\r
478 for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
\r
479 String vnfKey = entry.getKey()
\r
480 String vnfValue = entry.getValue()
\r
481 paramsMap.put("$vnfKey", "$vnfValue")
\r
485 StringBuilder sbParams = new StringBuilder()
\r
486 def vfModuleParams = ""
\r
487 for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
\r
489 String paramName = entry.getKey()
\r
490 String paramValue = entry.getValue()
\r
493 <key>${paramName}</key>
\r
494 <value>${paramValue}</value>
\r
498 vfModuleParams = sbParams.append(paramsXml)
\r
501 return vfModuleParams
\r
507 * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
\r
508 * for both VNF and VF Module
\r
509 * and puts them into the format expected by VNF adapter.
\r
510 * @param vnfParamsMap - map of VNF parameters passed in the request body
\r
511 * @param vnfSdncGetResponse - response string from SDNC GET VNF topology request
\r
512 * @param vfmoduleSdncGetResponse - response string from SDNC GET VF Module topology request
\r
515 * @param vfModuleId
\r
516 * @param vfModuleName
\r
517 * @param vfModuleIndex - can be null
\r
518 * @return a String of key/value entries for vfModuleParams
\r
521 protected String buildVfModuleParamsFromCombinedTopologies(Map<String, String> vnfParamsMap, String vnfSdncGetResponse, String vfmoduleSdncGetResponse, String vnfId, String vnfName,
\r
522 String vfModuleId, String vfModuleName, String vfModuleIndex) {
\r
524 // Set up initial parameters
\r
526 Map<String, String> paramsMap = new HashMap<String, String>()
\r
528 if (vfModuleIndex != null) {
\r
529 paramsMap.put("vf_module_index", "${vfModuleIndex}")
\r
533 paramsMap.put("vnf_id", "${vnfId}")
\r
534 paramsMap.put("vnf_name", "${vnfName}")
\r
535 paramsMap.put("vf_module_id", "${vfModuleId}")
\r
536 paramsMap.put("vf_module_name", "${vfModuleName}")
\r
538 //Get SDNC Response Data for VNF
\r
540 String vnfData = utils.getNodeXml(vnfSdncGetResponse, "response-data")
\r
541 vnfData = vnfData.replaceAll("<", "<")
\r
542 vnfData = vnfData.replaceAll(">", ">")
\r
544 String vnfTopology = utils.getNodeXml(vnfData, "vnf-topology")
\r
545 vnfTopology = utils.removeXmlPreamble(vnfTopology)
\r
546 vnfTopology = utils.removeXmlNamespaces(vnfTopology)
\r
548 InputSource sourceVnf = new InputSource(new StringReader(vnfData));
\r
549 DocumentBuilderFactory docFactoryVnf = DocumentBuilderFactory.newInstance();
\r
550 docFactoryVnf.setNamespaceAware(true)
\r
551 DocumentBuilder docBuilderVnf = docFactoryVnf.newDocumentBuilder()
\r
552 Document responseXmlVnf = docBuilderVnf.parse(sourceVnf)
\r
554 // Availability Zones Data
\r
556 NodeList aZonesList = responseXmlVnf.getElementsByTagNameNS("*", "availability-zones")
\r
557 String aZonePosition = "0"
\r
558 for (int z = 0; z < aZonesList.getLength(); z++) {
\r
559 Node node = aZonesList.item(z)
\r
560 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
561 Element eElement = (Element) node
\r
562 String aZoneValue = utils.getElementText(eElement, "availability-zone")
\r
563 aZonePosition = z.toString()
\r
564 paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
\r
568 // VNF Networks Data
\r
570 StringBuilder sbNet = new StringBuilder()
\r
572 NodeList vnfNetworkList = responseXmlVnf.getElementsByTagNameNS("*", "vnf-networks")
\r
573 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
\r
574 Node node = vnfNetworkList.item(x)
\r
575 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
576 Element eElement = (Element) node
\r
577 String vnfNetworkKey = utils.getElementText(eElement, "network-role")
\r
578 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
\r
579 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
\r
580 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
\r
581 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
\r
582 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
\r
583 paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
\r
584 paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
\r
585 paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
\r
586 paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
\r
587 paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
\r
589 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
\r
590 StringBuffer sriovFilterBuf = new StringBuffer()
\r
592 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
\r
593 Node node1 = sriovVlanFilterList.item(i)
\r
594 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
595 Element eElement1 = (Element) node1
\r
596 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
\r
597 if (i != sriovVlanFilterList.getLength() - 1) {
\r
598 values = sriovFilterBuf.append(value + ",")
\r
601 values = sriovFilterBuf.append(value);
\r
605 if (!values.isEmpty()) {
\r
606 paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
\r
611 //Get SDNC Response Data for VF Module
\r
613 String vfModuleData = utils.getNodeXml(vfmoduleSdncGetResponse, "response-data")
\r
614 vfModuleData = vfModuleData.replaceAll("<", "<")
\r
615 vfModuleData = vfModuleData.replaceAll(">", ">")
\r
617 String vfModuleTopology = utils.getNodeXml(vfModuleData, "vf-module-topology")
\r
618 vfModuleTopology = utils.removeXmlPreamble(vfModuleTopology)
\r
619 vfModuleTopology = utils.removeXmlNamespaces(vfModuleTopology)
\r
620 String vfModuleTopologyIdentifier = utils.getNodeXml(vfModuleTopology, "vf-module-topology-identifier")
\r
622 InputSource sourceVfModule = new InputSource(new StringReader(vfModuleData));
\r
623 DocumentBuilderFactory docFactoryVfModule = DocumentBuilderFactory.newInstance();
\r
624 docFactoryVfModule.setNamespaceAware(true)
\r
625 DocumentBuilder docBuilderVfModule = docFactoryVfModule.newDocumentBuilder()
\r
626 Document responseXmlVfModule = docBuilderVfModule.parse(sourceVfModule)
\r
635 def floatingIPKeyValue
\r
636 def floatingIPV6Key
\r
637 def floatingIPV6KeyValue
\r
638 StringBuilder sb = new StringBuilder()
\r
640 NodeList vmsList = responseXmlVfModule.getElementsByTagNameNS("*","vm")
\r
641 for (int x = 0; x < vmsList.getLength(); x++) {
\r
642 Node node = vmsList.item(x)
\r
643 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
644 Element eElement = (Element) node
\r
645 key = utils.getElementText(eElement, "vm-type")
\r
647 String position = "0"
\r
648 StringBuilder sb1 = new StringBuilder()
\r
649 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
\r
650 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
\r
651 for(int i = 0; i < valueList.getLength(); i++){
\r
652 Node node1 = valueList.item(i)
\r
653 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
654 Element eElement1 = (Element) node1
\r
655 value = utils.getElementText(eElement1, "vm-name")
\r
656 if (i != valueList.getLength() - 1) {
\r
657 values = sb1.append(value + ",")
\r
660 values = sb1.append(value);
\r
662 position = i.toString()
\r
663 paramsMap.put("${key}_name_${position}", "${value}")
\r
666 for(int n = 0; n < vmNetworksList.getLength(); n++){
\r
667 String floatingIpKeyValueStr = ""
\r
668 String floatingIpV6KeyValueStr = ""
\r
669 Node nodeNetworkKey = vmNetworksList.item(n)
\r
670 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
671 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
672 String ipAddressValues
\r
673 String ipV6AddressValues
\r
674 String networkPosition = "0"
\r
675 StringBuilder sb2 = new StringBuilder()
\r
676 StringBuilder sb3 = new StringBuilder()
\r
677 StringBuilder sb4 = new StringBuilder()
\r
678 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
\r
679 floatingIPKey = key + '_' + networkKey + '_floating_ip'
\r
680 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
\r
681 if(!floatingIPKeyValue.isEmpty()){
\r
682 paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
\r
684 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
\r
685 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
\r
686 if(!floatingIPV6KeyValue.isEmpty()){
\r
687 paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
\r
689 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
\r
690 for(int a = 0; a < networkIpsList.getLength(); a++){
\r
691 Node ipAddress = networkIpsList.item(a)
\r
692 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
\r
693 Element eElementIpAddress = (Element) ipAddress
\r
694 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
\r
695 if (a != networkIpsList.getLength() - 1) {
\r
696 ipAddressValues = sb2.append(ipAddressValue + ",")
\r
699 ipAddressValues = sb2.append(ipAddressValue);
\r
701 networkPosition = a.toString()
\r
702 paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
\r
706 paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
\r
708 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
\r
709 String interfaceRoutePrefixValues = sb3.append("[")
\r
711 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
\r
712 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
\r
713 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
\r
714 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
\r
715 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
\r
716 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
\r
717 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
\r
719 if (a != interfaceRoutePrefixesList.getLength() - 1) {
\r
720 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
\r
723 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
\r
727 interfaceRoutePrefixValues = sb3.append("]")
\r
728 if (interfaceRoutePrefixesList.getLength() > 0) {
\r
729 paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
\r
732 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
\r
733 for(int a = 0; a < networkIpsV6List.getLength(); a++){
\r
734 Node ipV6Address = networkIpsV6List.item(a)
\r
735 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
\r
736 Element eElementIpV6Address = (Element) ipV6Address
\r
737 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
\r
738 if (a != networkIpsV6List.getLength() - 1) {
\r
739 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
\r
742 ipV6AddressValues = sb4.append(ipV6AddressValue);
\r
744 networkPosition = a.toString()
\r
745 paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
\r
748 paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
\r
751 paramsMap.put("${key}_names", "${values}")
\r
754 //SDNC Response Params
\r
755 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
\r
757 String vnfParamsChildNodes = utils.getChildNodes(vnfData, "param")
\r
758 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
\r
759 // No SDNC params for VNF
\r
761 NodeList paramsList = responseXmlVnf.getElementsByTagNameNS("*", "param")
\r
762 for (int z = 0; z < paramsList.getLength(); z++) {
\r
763 Node node = paramsList.item(z)
\r
764 Element eElement = (Element) node
\r
765 String vnfParameterName = utils.getElementText(eElement, "name")
\r
766 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
767 String vnfParameterValue = utils.getElementText(eElement, "value")
\r
768 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
\r
773 String vfModuleParamsChildNodes = utils.getChildNodes(vfModuleData, "param")
\r
774 if(vfModuleParamsChildNodes == null || vfModuleParamsChildNodes.length() < 1){
\r
775 // No SDNC params for VF Module
\r
777 NodeList paramsList = responseXmlVfModule.getElementsByTagNameNS("*", "param")
\r
778 for (int z = 0; z < paramsList.getLength(); z++) {
\r
779 Node node = paramsList.item(z)
\r
780 Element eElement = (Element) node
\r
781 String vnfParameterName = utils.getElementText(eElement, "name")
\r
782 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
783 String vnfParameterValue = utils.getElementText(eElement, "value")
\r
784 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
\r
789 // Parameters received from the request should overwrite any parameters received from SDNC
\r
790 if (vnfParamsMap != null) {
\r
791 for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
\r
792 String vnfKey = entry.getKey()
\r
793 String vnfValue = entry.getValue()
\r
794 paramsMap.put("$vnfKey", "$vnfValue")
\r
798 StringBuilder sbParams = new StringBuilder()
\r
799 def vfModuleParams = ""
\r
800 for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
\r
802 String paramName = entry.getKey()
\r
803 String paramValue = entry.getValue()
\r
806 <key>${paramName}</key>
\r
807 <value>${paramValue}</value>
\r
811 vfModuleParams = sbParams.append(paramsXml)
\r
814 return vfModuleParams
\r
820 * VBNG specific method that parses VNF parameters passed in on the
\r
821 * incoming requests and SDNC parameters returned from SDNC get response
\r
822 * and puts them into the format expected by VNF adapter.
\r
823 * @param vnfParamsMap - map of VNF parameters passed in the request body
\r
824 * @param sdncGetResponse - response string from SDNC GET topology request
\r
827 * @param vfModuleId
\r
828 * @param vfModuleName
\r
829 * @return a String of key/value entries for vfModuleParams
\r
832 protected String buildVfModuleParamsVbng(String vnfParams, String sdncGetResponse, String vnfId, String vnfName,
\r
833 String vfModuleId, String vfModuleName) {
\r
835 //Get SDNC Response Data
\r
837 String data = utils.getNodeXml(sdncGetResponse, "response-data")
\r
838 data = data.replaceAll("<", "<")
\r
839 data = data.replaceAll(">", ">")
\r
847 <value>${vnfId}</value>
\r
850 <key>vnf_name</key>
\r
851 <value>${vnfName}</value>
\r
854 <key>vf_module_id</key>
\r
855 <value>${vfModuleId}</value>
\r
858 <key>vf_module_name</key>
\r
859 <value>${vfModuleName}</value>
\r
862 utils.logAudit("vnfInfo: " + vnfInfo)
\r
863 InputSource source = new InputSource(new StringReader(data));
\r
864 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
\r
865 docFactory.setNamespaceAware(true)
\r
866 DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
\r
867 Document responseXml = docBuilder.parse(source)
\r
870 // Availability Zones Data
\r
872 StringBuilder sbAZone = new StringBuilder()
\r
873 NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
\r
874 String aZonePosition = "0"
\r
875 for (int z = 0; z < aZonesList.getLength(); z++) {
\r
876 Node node = aZonesList.item(z)
\r
877 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
878 Element eElement = (Element) node
\r
879 String aZoneValue = utils.getElementText(eElement, "availability-zone")
\r
880 aZonePosition = z.toString()
\r
883 <key>availability_zone_${aZonePosition}</key>
\r
884 <value>${aZoneValue}</value>
\r
886 aZones = sbAZone.append(aZoneXml)
\r
890 // VNF Networks Data
\r
891 String vnfNetworkNetId = ""
\r
892 String vnfNetworkNetName = ""
\r
893 String vnfNetworkSubNetId = ""
\r
894 String vnfNetworkV6SubNetId = ""
\r
895 String vnfNetworkNetFqdn = ""
\r
896 String vnfNetworksSriovVlanFilters = ""
\r
897 StringBuilder sbNet = new StringBuilder()
\r
898 StringBuilder sbNet2 = new StringBuilder()
\r
899 StringBuilder sbNet3 = new StringBuilder()
\r
900 StringBuilder sbNet4 = new StringBuilder()
\r
901 StringBuilder sbNet5 = new StringBuilder()
\r
902 StringBuilder sbNet6 = new StringBuilder()
\r
903 NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
\r
904 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
\r
905 Node node = vnfNetworkList.item(x)
\r
906 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
907 Element eElement = (Element) node
\r
908 String vnfNetworkKey = utils.getElementText(eElement, "network-role")
\r
909 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
\r
910 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
\r
911 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
\r
912 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
\r
913 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
\r
914 String vnfNetworkNetIdXml =
\r
916 <key>${vnfNetworkKey}_net_id</key>
\r
917 <value>${vnfNetworkNeutronIdValue}</value>
\r
919 vnfNetworkNetId = sbNet.append(vnfNetworkNetIdXml)
\r
920 String vnfNetworkNetNameXml =
\r
922 <key>${vnfNetworkKey}_net_name</key>
\r
923 <value>${vnfNetworkNetNameValue}</value>
\r
925 vnfNetworkNetName = sbNet2.append(vnfNetworkNetNameXml)
\r
926 String vnfNetworkSubNetIdXml =
\r
928 <key>${vnfNetworkKey}_subnet_id</key>
\r
929 <value>${vnfNetworkSubNetIdValue}</value>
\r
931 vnfNetworkSubNetId = sbNet3.append(vnfNetworkSubNetIdXml)
\r
932 String vnfNetworkV6SubNetIdXml =
\r
934 <key>${vnfNetworkKey}_v6_subnet_id</key>
\r
935 <value>${vnfNetworkV6SubNetIdValue}</value>
\r
937 vnfNetworkV6SubNetId = sbNet5.append(vnfNetworkV6SubNetIdXml)
\r
938 String vnfNetworkNetFqdnXml =
\r
940 <key>${vnfNetworkKey}_net_fqdn</key>
\r
941 <value>${vnfNetworkNetFqdnValue}</value>
\r
943 vnfNetworkNetFqdn = sbNet4.append(vnfNetworkNetFqdnXml)
\r
945 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
\r
946 StringBuffer sriovFilterBuf = new StringBuffer()
\r
948 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
\r
949 Node node1 = sriovVlanFilterList.item(i)
\r
950 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
951 Element eElement1 = (Element) node1
\r
952 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
\r
953 if (i != sriovVlanFilterList.getLength() - 1) {
\r
954 values = sriovFilterBuf.append(value + ",")
\r
957 values = sriovFilterBuf.append(value);
\r
961 if (!values.isEmpty()) {
\r
962 String vnfNetworkSriovVlanFilterXml =
\r
964 <key>${vnfNetworkKey}_ATT_VF_VLAN_FILTER</key>
\r
965 <value>${values}</value>
\r
967 vnfNetworksSriovVlanFilters = sbNet6.append(vnfNetworkSriovVlanFilterXml)
\r
974 String vnfVMSPositions = ""
\r
975 String vmNetworks = ""
\r
976 String vmNetworksPositions = ""
\r
977 String vmNetworksPositionsV6 = ""
\r
978 String interfaceRoutePrefixes = ""
\r
984 def floatingIPKeyValue
\r
985 def floatingIPV6Key
\r
986 def floatingIPV6KeyValue
\r
987 StringBuilder sb = new StringBuilder()
\r
988 StringBuilder sbPositions = new StringBuilder()
\r
989 StringBuilder sbVmNetworks = new StringBuilder()
\r
990 StringBuilder sbNetworksPositions = new StringBuilder()
\r
991 StringBuilder sbInterfaceRoutePrefixes = new StringBuilder()
\r
992 StringBuilder sbNetworksPositionsV6 = new StringBuilder()
\r
994 NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
\r
995 for (int x = 0; x < vmsList.getLength(); x++) {
\r
996 Node node = vmsList.item(x)
\r
997 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
998 Element eElement = (Element) node
\r
999 key = utils.getElementText(eElement, "vm-type")
\r
1001 String position = "0"
\r
1002 StringBuilder sb1 = new StringBuilder()
\r
1003 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
\r
1004 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
\r
1005 for(int i = 0; i < valueList.getLength(); i++){
\r
1006 Node node1 = valueList.item(i)
\r
1007 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
1008 Element eElement1 = (Element) node1
\r
1009 value = utils.getElementText(eElement1, "vm-name")
\r
1010 if (i != valueList.getLength() - 1) {
\r
1011 values = sb1.append(value + ",")
\r
1014 values = sb1.append(value);
\r
1016 position = i.toString()
\r
1017 String vnfPositionXml =
\r
1019 <key>${key}_name_${position}</key>
\r
1020 <value>${value}</value>
\r
1022 vnfVMSPositions = sbPositions.append(vnfPositionXml)
\r
1025 for(int n = 0; n < vmNetworksList.getLength(); n++){
\r
1026 String floatingIpKeyValueStr = ""
\r
1027 String floatingIpV6KeyValueStr = ""
\r
1028 Node nodeNetworkKey = vmNetworksList.item(n)
\r
1029 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
1030 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
1031 String ipAddressValues
\r
1032 String ipV6AddressValues
\r
1033 String networkPosition = "0"
\r
1034 StringBuilder sb2 = new StringBuilder()
\r
1035 StringBuilder sb3 = new StringBuilder()
\r
1036 StringBuilder sb4 = new StringBuilder()
\r
1037 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
\r
1038 floatingIPKey = key + '_' + networkKey + '_floating_ip'
\r
1039 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
\r
1040 if(!floatingIPKeyValue.isEmpty()){
\r
1041 floatingIpKeyValueStr = """<entry>
\r
1042 <key>$floatingIPKey</key>
\r
1043 <value>$floatingIPKeyValue</value>
\r
1046 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
\r
1047 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
\r
1048 if(!floatingIPV6KeyValue.isEmpty()){
\r
1049 floatingIpV6KeyValueStr = """<entry>
\r
1050 <key>$floatingIPV6Key</key>
\r
1051 <value>$floatingIPV6KeyValue</value>
\r
1054 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
\r
1055 for(int a = 0; a < networkIpsList.getLength(); a++){
\r
1056 Node ipAddress = networkIpsList.item(a)
\r
1057 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
\r
1058 Element eElementIpAddress = (Element) ipAddress
\r
1059 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
\r
1060 if (a != networkIpsList.getLength() - 1) {
\r
1061 ipAddressValues = sb2.append(ipAddressValue + ",")
\r
1064 ipAddressValues = sb2.append(ipAddressValue);
\r
1066 networkPosition = a.toString()
\r
1067 String vmNetworksPositionsXml =
\r
1069 <key>${key}_${networkKey}_ip_${networkPosition}</key>
\r
1070 <value>${ipAddressValue}</value>
\r
1072 vmNetworksPositions = sbNetworksPositions.append(vmNetworksPositionsXml)
\r
1075 vmNetworksPositions = sbNetworksPositions.append(floatingIpKeyValueStr).append(floatingIpV6KeyValueStr)
\r
1077 String vmNetworksXml =
\r
1079 <key>${key}_${networkKey}_ips</key>
\r
1080 <value>${ipAddressValues}</value>
\r
1082 vmNetworks = sbVmNetworks.append(vmNetworksXml)
\r
1084 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
\r
1085 String interfaceRoutePrefixValues = sb3.append("[")
\r
1087 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
\r
1088 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
\r
1089 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
\r
1090 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
\r
1091 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
\r
1092 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
\r
1093 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
\r
1095 if (a != interfaceRoutePrefixesList.getLength() - 1) {
\r
1096 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
\r
1099 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
\r
1103 interfaceRoutePrefixValues = sb3.append("]")
\r
1104 if (interfaceRoutePrefixesList.getLength() > 0) {
\r
1105 String interfaceRoutePrefixesXml =
\r
1107 <key>${key}_${networkKey}_route_prefixes</key>
\r
1108 <value>${interfaceRoutePrefixValues}</value>
\r
1110 interfaceRoutePrefixes = sbInterfaceRoutePrefixes.append(interfaceRoutePrefixesXml)
\r
1113 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
\r
1114 for(int a = 0; a < networkIpsV6List.getLength(); a++){
\r
1115 Node ipV6Address = networkIpsV6List.item(a)
\r
1116 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
\r
1117 Element eElementIpV6Address = (Element) ipV6Address
\r
1118 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
\r
1119 if (a != networkIpsV6List.getLength() - 1) {
\r
1120 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
\r
1123 ipV6AddressValues = sb4.append(ipV6AddressValue);
\r
1125 networkPosition = a.toString()
\r
1126 String vmNetworksPositionsV6Xml =
\r
1128 <key>${key}_${networkKey}_v6_ip_${networkPosition}</key>
\r
1129 <value>${ipV6AddressValue}</value>
\r
1131 vmNetworksPositionsV6 = sbNetworksPositionsV6.append(vmNetworksPositionsV6Xml)
\r
1134 String vmNetworksV6Xml =
\r
1136 <key>${key}_${networkKey}_v6_ips</key>
\r
1137 <value>${ipV6AddressValues}</value>
\r
1139 vmNetworks = sbVmNetworks.append(vmNetworksV6Xml)
\r
1144 <key>${key}_names</key>
\r
1145 <value>${values}</value>
\r
1147 vnfVMS = sb.append(vnfXml)
\r
1150 //SDNC Response Params
\r
1151 String sdncResponseParams = ""
\r
1152 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
\r
1153 String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
\r
1154 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
\r
1157 NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
\r
1158 for (int z = 0; z < paramsList.getLength(); z++) {
\r
1159 Node node = paramsList.item(z)
\r
1160 Element eElement = (Element) node
\r
1161 String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
\r
1162 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
1163 String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
\r
1164 String paraEntry =
\r
1166 <key>${vnfParameterName}</key>
\r
1167 <value>${vnfParameterValue}</value>
\r
1169 sdncResponseParams = sb.append(paraEntry)
\r
1175 def vfModuleParams = """
\r
1178 ${vnfNetworkNetId}
\r
1179 ${vnfNetworkNetName}
\r
1180 ${vnfNetworkSubNetId}
\r
1181 ${vnfNetworkV6SubNetId}
\r
1182 ${vnfNetworkNetFqdn}
\r
1183 ${vnfNetworksSriovVlanFilters}
\r
1185 ${vnfVMSPositions}
\r
1187 ${vmNetworksPositions}
\r
1188 ${vmNetworksPositionsV6}
\r
1189 ${interfaceRoutePrefixes}
\r
1191 ${sdncResponseParams}"""
\r
1193 return vfModuleParams
\r