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 java.io.ObjectInputStream.BlockDataInputStream
\r
25 //import groovy.util.Node;
\r
27 import javax.xml.parsers.DocumentBuilder
\r
28 import javax.xml.parsers.DocumentBuilderFactory
\r
30 import org.apache.commons.lang3.*
\r
31 import org.w3c.dom.Document
\r
32 import org.w3c.dom.Element
\r
33 import org.w3c.dom.Node
\r
34 import org.w3c.dom.NodeList
\r
35 import org.xml.sax.InputSource
\r
38 public abstract class VfModuleBase extends AbstractServiceTaskProcessor {
\r
40 protected XmlParser xmlParser = new XmlParser()
\r
43 * Get the XmlParser.
\r
45 * @return the XmlParser.
\r
47 protected XmlParser getXmlParser() {
\r
52 * Find the VF Module with specified ID in the specified Generic VF. If no such
\r
53 * VF Module is found, null is returned.
\r
55 * @param genericVnf The Generic VNF in which to search for the specified VF Moduel.
\r
56 * @param vfModuleId The ID of the VF Module for which to search.
\r
57 * @return a VFModule object for the found VF Module or null if no VF Module is found.
\r
59 protected VfModule findVfModule(String genericVnf, String vfModuleId) {
\r
61 def genericVnfNode = xmlParser.parseText(genericVnf)
\r
62 def vfModulesNode = utils.getChildNode(genericVnfNode, 'vf-modules')
\r
63 if (vfModulesNode == null) {
\r
66 def vfModuleList = utils.getIdenticalChildren(vfModulesNode, 'vf-module')
\r
67 for (vfModuleNode in vfModuleList) {
\r
68 def vfModuleIdNode = utils.getChildNode(vfModuleNode, 'vf-module-id')
\r
69 if ((vfModuleIdNode != null) && (vfModuleIdNode.text().equals(vfModuleId))) {
\r
70 return new VfModule(vfModuleNode, (vfModuleList.size() == 1))
\r
77 * Transform all '*_network' parameter specifications from the incoming '*-params' root
\r
78 * element to a corresponding list of 'vnf-networks' specifications (typically used when
\r
79 * invoking the VNF Rest Adpater). Each element in '*-params' whose name attribute ends
\r
80 * with '_network' is used to create an 'vnf-networks' element.
\r
82 * @param paramsNode A Node representing a '*-params' element.
\r
83 * @return a String of 'vnf-networks' elements, one for each 'param' element whose name
\r
84 * attribute ends with '_network'.
\r
86 protected String transformNetworkParamsToVnfNetworks(String paramsRootXml) {
\r
87 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
\r
90 def String vnfNetworks = ''
\r
92 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
\r
93 def paramsNode = xmlParser.parseText(paramsRootXml)
\r
94 def params = utils.getIdenticalChildren(paramsNode, 'param')
\r
95 for (param in params) {
\r
96 def String attrName = (String) param.attribute('name')
\r
97 if (attrName.endsWith('_network')) {
\r
98 def networkRole = attrName.substring(0, (attrName.length()-'_network'.length()))
\r
99 def networkName = param.text()
\r
100 String vnfNetwork = """
\r
102 <network-role>${networkRole}</network-role>
\r
103 <network-name>${networkName}</network-name>
\r
106 vnfNetworks = vnfNetworks + vnfNetwork
\r
109 } catch (Exception e) {
\r
110 logWarn('Exception transforming \'_network\' params to vnfNetworks', e)
\r
116 * Transform the parameter specifications from the incoming '*-params' root element to
\r
117 * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
\r
118 * Each element in '*-params' is used to create an 'entry' element.
\r
120 * @param paramsNode A Node representing a '*-params' element.
\r
121 * @return a String of 'entry' elements, one for each 'param' element.
\r
123 protected String transformParamsToEntries(String paramsRootXml) {
\r
124 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
\r
127 def String entries = ''
\r
129 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
\r
130 def paramsNode = xmlParser.parseText(paramsRootXml)
\r
131 def params = utils.getIdenticalChildren(paramsNode, 'param')
\r
132 for (param in params) {
\r
133 def key = (String) param.attribute('name')
\r
137 def value = (String) param.text()
\r
141 <value>${value}</value>
\r
144 entries = entries + entry
\r
146 } catch (Exception e) {
\r
147 logWarn('Exception transforming params to entries', e)
\r
153 * Transform the parameter specifications from the incoming '*-params' root element to
\r
154 * a corresponding list of 'entry's (typically used when invoking the VNF Rest Adpater).
\r
155 * Each element in '*-params' is used to create an 'entry' element.
\r
157 * @param paramsNode A Node representing a '*-params' element.
\r
158 * @return a String of 'entry' elements, one for each 'param' element.
\r
160 protected String transformVolumeParamsToEntries(String paramsRootXml) {
\r
161 if ((paramsRootXml == null) || (paramsRootXml.isEmpty())) {
\r
164 def String entries = ''
\r
166 paramsRootXml = utils.removeXmlNamespaces(paramsRootXml)
\r
167 def paramsNode = xmlParser.parseText(paramsRootXml)
\r
168 def params = utils.getIdenticalChildren(paramsNode, 'param')
\r
169 for (param in params) {
\r
170 def key = (String) param.attribute('name')
\r
174 if ( !(key in ['vnf_id', 'vnf_name', 'vf_module_id', 'vf_module_name'])) {
\r
175 def value = (String) param.text()
\r
179 <value>${value}</value>
\r
182 entries = entries + entry
\r
185 } catch (Exception e) {
\r
186 logWarn('Exception transforming params to entries', e)
\r
192 * Extract the Tenant Id from the Volume Group information returned by AAI.
\r
194 * @param volumeGroupXml Volume Group XML returned by AAI.
\r
195 * @return the Tenant Id extracted from the Volume Group information. 'null' is returned if
\r
196 * the Tenant Id is missing or could not otherwise be extracted.
\r
198 protected String getTenantIdFromVolumeGroup(String volumeGroupXml) {
\r
199 def groovy.util.Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
\r
200 def groovy.util.Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
\r
201 if (relationshipList != null) {
\r
202 def groovy.util.NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
\r
203 for (groovy.util.Node relationship in relationships) {
\r
204 def groovy.util.Node relatedTo = utils.getChildNode(relationship, 'related-to')
\r
205 if ((relatedTo != null) && (relatedTo.text().equals('tenant'))) {
\r
206 def groovy.util.NodeList relationshipDataList = utils.getIdenticalChildren(relationship, 'relationship-data')
\r
207 for (groovy.util.Node relationshipData in relationshipDataList) {
\r
208 def groovy.util.Node relationshipKey = utils.getChildNode(relationshipData, 'relationship-key')
\r
209 if ((relationshipKey != null) && (relationshipKey.text().equals('tenant.tenant-id'))) {
\r
210 def groovy.util.Node relationshipValue = utils.getChildNode(relationshipData, 'relationship-value')
\r
211 if (relationshipValue != null) {
\r
212 return relationshipValue.text()
\r
224 * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
\r
225 * and puts them into the format expected by VNF adapter.
\r
226 * @param vnfParamsMap - map of VNF parameters passed in the request body
\r
227 * @param sdncGetResponse - response string from SDNC GET topology request
\r
230 * @param vfModuleId
\r
231 * @param vfModuleName
\r
232 * @param vfModuleIndex - can be null
\r
233 * @return a String of key/value entries for vfModuleParams
\r
237 protected String buildVfModuleParams(Map<String, String> vnfParamsMap, String sdncGetResponse, String vnfId, String vnfName,
\r
238 String vfModuleId, String vfModuleName, String vfModuleIndex, String environmentContext, String workloadContext) {
\r
240 //Get SDNC Response Data
\r
242 String data = utils.getNodeXml(sdncGetResponse, "response-data")
\r
243 data = data.replaceAll("<", "<")
\r
244 data = data.replaceAll(">", ">")
\r
246 String serviceData = utils.getNodeXml(data, "service-data")
\r
247 serviceData = utils.removeXmlPreamble(serviceData)
\r
248 serviceData = utils.removeXmlNamespaces(serviceData)
\r
249 String vnfRequestInfo = utils.getNodeXml(serviceData, "vnf-request-information")
\r
250 String oldVnfId = utils.getNodeXml(vnfRequestInfo, "vnf-id")
\r
251 oldVnfId = utils.removeXmlPreamble(oldVnfId)
\r
252 oldVnfId = utils.removeXmlNamespaces(oldVnfId)
\r
253 serviceData = serviceData.replace(oldVnfId, "")
\r
254 def vnfId1 = utils.getNodeText1(serviceData, "vnf-id")
\r
256 Map<String, String> paramsMap = new HashMap<String, String>()
\r
258 if (vfModuleIndex != null) {
\r
259 paramsMap.put("vf_module_index", "${vfModuleIndex}")
\r
263 paramsMap.put("vnf_id", "${vnfId}")
\r
264 paramsMap.put("vnf_name", "${vnfName}")
\r
265 paramsMap.put("vf_module_id", "${vfModuleId}")
\r
266 paramsMap.put("vf_module_name", "${vfModuleName}")
\r
267 paramsMap.put("environment_context", "${environmentContext}")
\r
268 paramsMap.put("workload_context", "${workloadContext}")
\r
270 InputSource source = new InputSource(new StringReader(data));
\r
271 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
\r
272 docFactory.setNamespaceAware(true)
\r
273 DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
\r
274 Document responseXml = docBuilder.parse(source)
\r
277 // Availability Zones Data
\r
279 NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
\r
280 String aZonePosition = "0"
\r
281 for (int z = 0; z < aZonesList.getLength(); z++) {
\r
282 Node node = aZonesList.item(z)
\r
283 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
284 Element eElement = (Element) node
\r
285 String aZoneValue = utils.getElementText(eElement, "availability-zone")
\r
286 aZonePosition = z.toString()
\r
287 paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
\r
291 // Map of network-roles and network-tags from vm-networks
\r
293 NodeList vmNetworksListGlobal = responseXml.getElementsByTagNameNS("*", "vm-networks")
\r
294 Map<String, String> networkRoleMap = new HashMap<String, String>()
\r
295 for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
\r
296 Node nodeNetworkKey = vmNetworksListGlobal.item(n)
\r
297 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
298 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
299 String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
\r
300 String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
\r
301 if (networkRoleValue.isEmpty()) {
\r
302 networkRoleValue = networkRole
\r
304 networkRoleMap.put(networkRole, networkRoleValue)
\r
308 // VNF Networks Data
\r
310 StringBuilder sbNet = new StringBuilder()
\r
312 NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
\r
313 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
\r
314 Node node = vnfNetworkList.item(x)
\r
315 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
316 Element eElement = (Element) node
\r
317 String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
\r
318 String networkRole = utils.getElementText(eElement, "network-role")
\r
319 if (vnfNetworkKey.isEmpty()) {
\r
320 vnfNetworkKey = networkRoleMap.get(networkRole)
\r
321 if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
\r
322 vnfNetworkKey = networkRole
\r
325 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
\r
326 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
\r
327 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
\r
328 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
\r
329 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
\r
330 paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
\r
331 paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
\r
332 paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
\r
333 paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
\r
334 paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
\r
336 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
\r
337 StringBuffer sriovFilterBuf = new StringBuffer()
\r
339 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
\r
340 Node node1 = sriovVlanFilterList.item(i)
\r
341 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
342 Element eElement1 = (Element) node1
\r
343 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
\r
344 if (i != sriovVlanFilterList.getLength() - 1) {
\r
345 values = sriovFilterBuf.append(value + ",")
\r
348 values = sriovFilterBuf.append(value);
\r
352 if (!values.isEmpty()) {
\r
353 paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
\r
365 def floatingIPKeyValue
\r
366 def floatingIPV6Key
\r
367 def floatingIPV6KeyValue
\r
368 StringBuilder sb = new StringBuilder()
\r
370 NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
\r
371 for (int x = 0; x < vmsList.getLength(); x++) {
\r
372 Node node = vmsList.item(x)
\r
373 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
374 Element eElement = (Element) node
\r
375 key = utils.getElementText(eElement, "vm-type")
\r
377 String position = "0"
\r
378 StringBuilder sb1 = new StringBuilder()
\r
379 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
\r
380 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
\r
381 for(int i = 0; i < valueList.getLength(); i++){
\r
382 Node node1 = valueList.item(i)
\r
383 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
384 Element eElement1 = (Element) node1
\r
385 value = utils.getElementText(eElement1, "vm-name")
\r
386 if (i != valueList.getLength() - 1) {
\r
387 values = sb1.append(value + ",")
\r
390 values = sb1.append(value);
\r
392 position = i.toString()
\r
393 paramsMap.put("${key}_name_${position}", "${value}")
\r
396 for(int n = 0; n < vmNetworksList.getLength(); n++){
\r
397 String floatingIpKeyValueStr = ""
\r
398 String floatingIpV6KeyValueStr = ""
\r
399 Node nodeNetworkKey = vmNetworksList.item(n)
\r
400 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
401 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
402 String ipAddressValues
\r
403 String ipV6AddressValues
\r
404 String networkPosition = "0"
\r
405 StringBuilder sb2 = new StringBuilder()
\r
406 StringBuilder sb3 = new StringBuilder()
\r
407 StringBuilder sb4 = new StringBuilder()
\r
408 networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
\r
409 if (networkKey.isEmpty()) {
\r
410 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
\r
412 floatingIPKey = key + '_' + networkKey + '_floating_ip'
\r
413 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
\r
414 if(!floatingIPKeyValue.isEmpty()){
\r
415 paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
\r
417 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
\r
418 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
\r
419 if(!floatingIPV6KeyValue.isEmpty()){
\r
420 paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
\r
422 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
\r
423 for(int a = 0; a < networkIpsList.getLength(); a++){
\r
424 Node ipAddress = networkIpsList.item(a)
\r
425 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
\r
426 Element eElementIpAddress = (Element) ipAddress
\r
427 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
\r
428 if (a != networkIpsList.getLength() - 1) {
\r
429 ipAddressValues = sb2.append(ipAddressValue + ",")
\r
432 ipAddressValues = sb2.append(ipAddressValue);
\r
434 networkPosition = a.toString()
\r
435 paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
\r
439 paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
\r
441 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
\r
442 String interfaceRoutePrefixValues = sb3.append("[")
\r
444 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
\r
445 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
\r
446 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
\r
447 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
\r
448 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
\r
449 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
\r
450 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
\r
452 if (a != interfaceRoutePrefixesList.getLength() - 1) {
\r
453 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
\r
456 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
\r
460 interfaceRoutePrefixValues = sb3.append("]")
\r
461 if (interfaceRoutePrefixesList.getLength() > 0) {
\r
462 paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
\r
465 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
\r
466 for(int a = 0; a < networkIpsV6List.getLength(); a++){
\r
467 Node ipV6Address = networkIpsV6List.item(a)
\r
468 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
\r
469 Element eElementIpV6Address = (Element) ipV6Address
\r
470 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
\r
471 if (a != networkIpsV6List.getLength() - 1) {
\r
472 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
\r
475 ipV6AddressValues = sb4.append(ipV6AddressValue);
\r
477 networkPosition = a.toString()
\r
478 paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
\r
481 paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
\r
484 paramsMap.put("${key}_names", "${values}")
\r
487 //SDNC Response Params
\r
488 String sdncResponseParams = ""
\r
489 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
\r
490 String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
\r
491 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
\r
494 NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
\r
495 for (int z = 0; z < paramsList.getLength(); z++) {
\r
496 Node node = paramsList.item(z)
\r
497 Element eElement = (Element) node
\r
498 String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
\r
499 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
500 String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
\r
501 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
\r
506 // Parameters received from the request should overwrite any parameters received from SDNC
\r
507 if (vnfParamsMap != null) {
\r
508 for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
\r
509 String vnfKey = entry.getKey()
\r
510 String vnfValue = entry.getValue()
\r
511 paramsMap.put("$vnfKey", "$vnfValue")
\r
515 StringBuilder sbParams = new StringBuilder()
\r
516 def vfModuleParams = ""
\r
517 for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
\r
519 String paramName = entry.getKey()
\r
520 String paramValue = entry.getValue()
\r
523 <key>${paramName}</key>
\r
524 <value>${paramValue}</value>
\r
528 vfModuleParams = sbParams.append(paramsXml)
\r
531 return vfModuleParams
\r
537 * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response
\r
538 * for both VNF and VF Module
\r
539 * and puts them into the format expected by VNF adapter.
\r
540 * @param vnfParamsMap - map of VNF parameters passed in the request body
\r
541 * @param vnfSdncGetResponse - response string from SDNC GET VNF topology request
\r
542 * @param vfmoduleSdncGetResponse - response string from SDNC GET VF Module topology request
\r
545 * @param vfModuleId
\r
546 * @param vfModuleName
\r
547 * @param vfModuleIndex - can be null
\r
548 * @return a String of key/value entries for vfModuleParams
\r
551 protected String buildVfModuleParamsFromCombinedTopologies(Map<String, String> vnfParamsMap, String vnfSdncGetResponse, String vfmoduleSdncGetResponse, String vnfId, String vnfName,
\r
552 String vfModuleId, String vfModuleName, String vfModuleIndex, String environmentContext, String workloadContext) {
\r
554 // Set up initial parameters
\r
556 Map<String, String> paramsMap = new HashMap<String, String>()
\r
558 if (vfModuleIndex != null) {
\r
559 paramsMap.put("vf_module_index", "${vfModuleIndex}")
\r
563 paramsMap.put("vnf_id", "${vnfId}")
\r
564 paramsMap.put("vnf_name", "${vnfName}")
\r
565 paramsMap.put("vf_module_id", "${vfModuleId}")
\r
566 paramsMap.put("vf_module_name", "${vfModuleName}")
\r
567 paramsMap.put("environment_context","${environmentContext}")
\r
568 paramsMap.put("workload_context", "${workloadContext}")
\r
570 //Get SDNC Response Data for VNF
\r
572 String vnfData = utils.getNodeXml(vnfSdncGetResponse, "response-data")
\r
573 vnfData = vnfData.replaceAll("<", "<")
\r
574 vnfData = vnfData.replaceAll(">", ">")
\r
576 String vnfTopology = utils.getNodeXml(vnfData, "vnf-topology")
\r
577 vnfTopology = utils.removeXmlPreamble(vnfTopology)
\r
578 vnfTopology = utils.removeXmlNamespaces(vnfTopology)
\r
580 InputSource sourceVnf = new InputSource(new StringReader(vnfData));
\r
581 DocumentBuilderFactory docFactoryVnf = DocumentBuilderFactory.newInstance();
\r
582 docFactoryVnf.setNamespaceAware(true)
\r
583 DocumentBuilder docBuilderVnf = docFactoryVnf.newDocumentBuilder()
\r
584 Document responseXmlVnf = docBuilderVnf.parse(sourceVnf)
\r
586 // Availability Zones Data
\r
588 NodeList aZonesList = responseXmlVnf.getElementsByTagNameNS("*", "availability-zones")
\r
589 String aZonePosition = "0"
\r
590 for (int z = 0; z < aZonesList.getLength(); z++) {
\r
591 Node node = aZonesList.item(z)
\r
592 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
593 Element eElement = (Element) node
\r
594 String aZoneValue = utils.getElementText(eElement, "availability-zone")
\r
595 aZonePosition = z.toString()
\r
596 paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")
\r
600 //Get SDNC Response Data for VF Module
\r
602 String vfModuleData = utils.getNodeXml(vfmoduleSdncGetResponse, "response-data")
\r
603 vfModuleData = vfModuleData.replaceAll("<", "<")
\r
604 vfModuleData = vfModuleData.replaceAll(">", ">")
\r
606 String vfModuleTopology = utils.getNodeXml(vfModuleData, "vf-module-topology")
\r
607 vfModuleTopology = utils.removeXmlPreamble(vfModuleTopology)
\r
608 vfModuleTopology = utils.removeXmlNamespaces(vfModuleTopology)
\r
609 String vfModuleTopologyIdentifier = utils.getNodeXml(vfModuleTopology, "vf-module-topology-identifier")
\r
611 InputSource sourceVfModule = new InputSource(new StringReader(vfModuleData));
\r
612 DocumentBuilderFactory docFactoryVfModule = DocumentBuilderFactory.newInstance();
\r
613 docFactoryVfModule.setNamespaceAware(true)
\r
614 DocumentBuilder docBuilderVfModule = docFactoryVfModule.newDocumentBuilder()
\r
615 Document responseXmlVfModule = docBuilderVfModule.parse(sourceVfModule)
\r
617 // Map of network-roles and network-tags from vm-networks
\r
619 NodeList vmNetworksListGlobal = responseXmlVfModule.getElementsByTagNameNS("*", "vm-networks")
\r
620 Map<String, String> networkRoleMap = new HashMap<String, String>()
\r
621 for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
\r
622 Node nodeNetworkKey = vmNetworksListGlobal.item(n)
\r
623 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
624 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
625 String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
\r
626 String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
\r
627 if (networkRoleValue.isEmpty()) {
\r
628 networkRoleValue = networkRole
\r
630 networkRoleMap.put(networkRole, networkRoleValue)
\r
634 // VNF Networks Data
\r
636 StringBuilder sbNet = new StringBuilder()
\r
638 NodeList vnfNetworkList = responseXmlVnf.getElementsByTagNameNS("*", "vnf-networks")
\r
639 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
\r
640 Node node = vnfNetworkList.item(x)
\r
641 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
642 Element eElement = (Element) node
\r
643 String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
\r
644 String networkRole = utils.getElementText(eElement, "network-role")
\r
645 if (vnfNetworkKey.isEmpty()) {
\r
646 vnfNetworkKey = networkRoleMap.get(networkRole)
\r
647 if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
\r
648 vnfNetworkKey = networkRole
\r
651 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
\r
652 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
\r
653 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
\r
654 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
\r
655 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
\r
656 paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")
\r
657 paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")
\r
658 paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")
\r
659 paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")
\r
660 paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")
\r
662 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
\r
663 StringBuffer sriovFilterBuf = new StringBuffer()
\r
665 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
\r
666 Node node1 = sriovVlanFilterList.item(i)
\r
667 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
668 Element eElement1 = (Element) node1
\r
669 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
\r
670 if (i != sriovVlanFilterList.getLength() - 1) {
\r
671 values = sriovFilterBuf.append(value + ",")
\r
674 values = sriovFilterBuf.append(value);
\r
678 if (!values.isEmpty()) {
\r
679 paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")
\r
693 def floatingIPKeyValue
\r
694 def floatingIPV6Key
\r
695 def floatingIPV6KeyValue
\r
696 StringBuilder sb = new StringBuilder()
\r
698 NodeList vmsList = responseXmlVfModule.getElementsByTagNameNS("*","vm")
\r
699 for (int x = 0; x < vmsList.getLength(); x++) {
\r
700 Node node = vmsList.item(x)
\r
701 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
702 Element eElement = (Element) node
\r
703 key = utils.getElementText(eElement, "vm-type")
\r
705 String position = "0"
\r
706 StringBuilder sb1 = new StringBuilder()
\r
707 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
\r
708 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
\r
709 for(int i = 0; i < valueList.getLength(); i++){
\r
710 Node node1 = valueList.item(i)
\r
711 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
712 Element eElement1 = (Element) node1
\r
713 value = utils.getElementText(eElement1, "vm-name")
\r
714 if (i != valueList.getLength() - 1) {
\r
715 values = sb1.append(value + ",")
\r
718 values = sb1.append(value);
\r
720 position = i.toString()
\r
721 paramsMap.put("${key}_name_${position}", "${value}")
\r
724 for(int n = 0; n < vmNetworksList.getLength(); n++){
\r
725 String floatingIpKeyValueStr = ""
\r
726 String floatingIpV6KeyValueStr = ""
\r
727 Node nodeNetworkKey = vmNetworksList.item(n)
\r
728 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
729 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
730 String ipAddressValues
\r
731 String ipV6AddressValues
\r
732 String networkPosition = "0"
\r
733 StringBuilder sb2 = new StringBuilder()
\r
734 StringBuilder sb3 = new StringBuilder()
\r
735 StringBuilder sb4 = new StringBuilder()
\r
736 networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
\r
737 if (networkKey.isEmpty()) {
\r
738 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
\r
740 floatingIPKey = key + '_' + networkKey + '_floating_ip'
\r
741 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
\r
742 if(!floatingIPKeyValue.isEmpty()){
\r
743 paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")
\r
745 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
\r
746 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
\r
747 if(!floatingIPV6KeyValue.isEmpty()){
\r
748 paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")
\r
750 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
\r
751 for(int a = 0; a < networkIpsList.getLength(); a++){
\r
752 Node ipAddress = networkIpsList.item(a)
\r
753 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
\r
754 Element eElementIpAddress = (Element) ipAddress
\r
755 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
\r
756 if (a != networkIpsList.getLength() - 1) {
\r
757 ipAddressValues = sb2.append(ipAddressValue + ",")
\r
760 ipAddressValues = sb2.append(ipAddressValue);
\r
762 networkPosition = a.toString()
\r
763 paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")
\r
767 paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")
\r
769 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
\r
770 String interfaceRoutePrefixValues = sb3.append("[")
\r
772 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
\r
773 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
\r
774 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
\r
775 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
\r
776 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
\r
777 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
\r
778 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
\r
780 if (a != interfaceRoutePrefixesList.getLength() - 1) {
\r
781 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
\r
784 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
\r
788 interfaceRoutePrefixValues = sb3.append("]")
\r
789 if (interfaceRoutePrefixesList.getLength() > 0) {
\r
790 paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")
\r
793 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
\r
794 for(int a = 0; a < networkIpsV6List.getLength(); a++){
\r
795 Node ipV6Address = networkIpsV6List.item(a)
\r
796 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
\r
797 Element eElementIpV6Address = (Element) ipV6Address
\r
798 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
\r
799 if (a != networkIpsV6List.getLength() - 1) {
\r
800 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
\r
803 ipV6AddressValues = sb4.append(ipV6AddressValue);
\r
805 networkPosition = a.toString()
\r
806 paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")
\r
809 paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")
\r
812 paramsMap.put("${key}_names", "${values}")
\r
815 //SDNC Response Params
\r
816 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
\r
818 String vnfParamsChildNodes = utils.getChildNodes(vnfData, "param")
\r
819 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
\r
820 // No SDNC params for VNF
\r
822 NodeList paramsList = responseXmlVnf.getElementsByTagNameNS("*", "param")
\r
823 for (int z = 0; z < paramsList.getLength(); z++) {
\r
824 Node node = paramsList.item(z)
\r
825 Element eElement = (Element) node
\r
826 String vnfParameterName = utils.getElementText(eElement, "name")
\r
827 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
828 String vnfParameterValue = utils.getElementText(eElement, "value")
\r
829 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
\r
834 String vfModuleParamsChildNodes = utils.getChildNodes(vfModuleData, "param")
\r
835 if(vfModuleParamsChildNodes == null || vfModuleParamsChildNodes.length() < 1){
\r
836 // No SDNC params for VF Module
\r
838 NodeList paramsList = responseXmlVfModule.getElementsByTagNameNS("*", "param")
\r
839 for (int z = 0; z < paramsList.getLength(); z++) {
\r
840 Node node = paramsList.item(z)
\r
841 Element eElement = (Element) node
\r
842 String vnfParameterName = utils.getElementText(eElement, "name")
\r
843 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
844 String vnfParameterValue = utils.getElementText(eElement, "value")
\r
845 paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")
\r
850 // Parameters received from the request should overwrite any parameters received from SDNC
\r
851 if (vnfParamsMap != null) {
\r
852 for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {
\r
853 String vnfKey = entry.getKey()
\r
854 String vnfValue = entry.getValue()
\r
855 paramsMap.put("$vnfKey", "$vnfValue")
\r
859 StringBuilder sbParams = new StringBuilder()
\r
860 def vfModuleParams = ""
\r
861 for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
\r
863 String paramName = entry.getKey()
\r
864 String paramValue = entry.getValue()
\r
867 <key>${paramName}</key>
\r
868 <value>${paramValue}</value>
\r
872 vfModuleParams = sbParams.append(paramsXml)
\r
875 return vfModuleParams
\r
881 * VBNG specific method that parses VNF parameters passed in on the
\r
882 * incoming requests and SDNC parameters returned from SDNC get response
\r
883 * and puts them into the format expected by VNF adapter.
\r
884 * @param vnfParamsMap - map of VNF parameters passed in the request body
\r
885 * @param sdncGetResponse - response string from SDNC GET topology request
\r
888 * @param vfModuleId
\r
889 * @param vfModuleName
\r
890 * @return a String of key/value entries for vfModuleParams
\r
893 protected String buildVfModuleParamsVbng(String vnfParams, String sdncGetResponse, String vnfId, String vnfName,
\r
894 String vfModuleId, String vfModuleName) {
\r
896 //Get SDNC Response Data
\r
898 String data = utils.getNodeXml(sdncGetResponse, "response-data")
\r
899 data = data.replaceAll("<", "<")
\r
900 data = data.replaceAll(">", ">")
\r
908 <value>${vnfId}</value>
\r
911 <key>vnf_name</key>
\r
912 <value>${vnfName}</value>
\r
915 <key>vf_module_id</key>
\r
916 <value>${vfModuleId}</value>
\r
919 <key>vf_module_name</key>
\r
920 <value>${vfModuleName}</value>
\r
923 utils.logAudit("vnfInfo: " + vnfInfo)
\r
924 InputSource source = new InputSource(new StringReader(data));
\r
925 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
\r
926 docFactory.setNamespaceAware(true)
\r
927 DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
\r
928 Document responseXml = docBuilder.parse(source)
\r
931 // Availability Zones Data
\r
933 StringBuilder sbAZone = new StringBuilder()
\r
934 NodeList aZonesList = responseXml.getElementsByTagNameNS("*", "availability-zones")
\r
935 String aZonePosition = "0"
\r
936 for (int z = 0; z < aZonesList.getLength(); z++) {
\r
937 Node node = aZonesList.item(z)
\r
938 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
939 Element eElement = (Element) node
\r
940 String aZoneValue = utils.getElementText(eElement, "availability-zone")
\r
941 aZonePosition = z.toString()
\r
944 <key>availability_zone_${aZonePosition}</key>
\r
945 <value>${aZoneValue}</value>
\r
947 aZones = sbAZone.append(aZoneXml)
\r
951 // Map of network-roles and network-tags from vm-networks
\r
953 NodeList vmNetworksListGlobal = responseXml.getElementsByTagNameNS("*", "vm-networks")
\r
954 Map<String, String> networkRoleMap = new HashMap<String, String>()
\r
955 for(int n = 0; n < vmNetworksListGlobal.getLength(); n++){
\r
956 Node nodeNetworkKey = vmNetworksListGlobal.item(n)
\r
957 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
958 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
959 String networkRole = utils.getElementText(eElementNetworkKey, "network-role")
\r
960 String networkRoleValue = utils.getElementText(eElementNetworkKey, "network-role-tag")
\r
961 if (networkRoleValue.isEmpty()) {
\r
962 networkRoleValue = networkRole
\r
964 networkRoleMap.put(networkRole, networkRoleValue)
\r
968 // VNF Networks Data
\r
969 String vnfNetworkNetId = ""
\r
970 String vnfNetworkNetName = ""
\r
971 String vnfNetworkSubNetId = ""
\r
972 String vnfNetworkV6SubNetId = ""
\r
973 String vnfNetworkNetFqdn = ""
\r
974 String vnfNetworksSriovVlanFilters = ""
\r
975 StringBuilder sbNet = new StringBuilder()
\r
976 StringBuilder sbNet2 = new StringBuilder()
\r
977 StringBuilder sbNet3 = new StringBuilder()
\r
978 StringBuilder sbNet4 = new StringBuilder()
\r
979 StringBuilder sbNet5 = new StringBuilder()
\r
980 StringBuilder sbNet6 = new StringBuilder()
\r
981 NodeList vnfNetworkList = responseXml.getElementsByTagNameNS("*", "vnf-networks")
\r
982 for (int x = 0; x < vnfNetworkList.getLength(); x++) {
\r
983 Node node = vnfNetworkList.item(x)
\r
984 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
985 Element eElement = (Element) node
\r
986 String vnfNetworkKey = utils.getElementText(eElement, "network-role-tag")
\r
987 String networkRole = utils.getElementText(eElement, "network-role")
\r
988 if (vnfNetworkKey.isEmpty()) {
\r
989 vnfNetworkKey = networkRoleMap.get(networkRole)
\r
990 if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
\r
991 vnfNetworkKey = networkRole
\r
994 String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")
\r
995 String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")
\r
996 String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")
\r
997 String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")
\r
998 String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")
\r
999 String vnfNetworkNetIdXml =
\r
1001 <key>${vnfNetworkKey}_net_id</key>
\r
1002 <value>${vnfNetworkNeutronIdValue}</value>
\r
1004 vnfNetworkNetId = sbNet.append(vnfNetworkNetIdXml)
\r
1005 String vnfNetworkNetNameXml =
\r
1007 <key>${vnfNetworkKey}_net_name</key>
\r
1008 <value>${vnfNetworkNetNameValue}</value>
\r
1010 vnfNetworkNetName = sbNet2.append(vnfNetworkNetNameXml)
\r
1011 String vnfNetworkSubNetIdXml =
\r
1013 <key>${vnfNetworkKey}_subnet_id</key>
\r
1014 <value>${vnfNetworkSubNetIdValue}</value>
\r
1016 vnfNetworkSubNetId = sbNet3.append(vnfNetworkSubNetIdXml)
\r
1017 String vnfNetworkV6SubNetIdXml =
\r
1019 <key>${vnfNetworkKey}_v6_subnet_id</key>
\r
1020 <value>${vnfNetworkV6SubNetIdValue}</value>
\r
1022 vnfNetworkV6SubNetId = sbNet5.append(vnfNetworkV6SubNetIdXml)
\r
1023 String vnfNetworkNetFqdnXml =
\r
1025 <key>${vnfNetworkKey}_net_fqdn</key>
\r
1026 <value>${vnfNetworkNetFqdnValue}</value>
\r
1028 vnfNetworkNetFqdn = sbNet4.append(vnfNetworkNetFqdnXml)
\r
1030 NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")
\r
1031 StringBuffer sriovFilterBuf = new StringBuffer()
\r
1032 String values = ""
\r
1033 for(int i = 0; i < sriovVlanFilterList.getLength(); i++){
\r
1034 Node node1 = sriovVlanFilterList.item(i)
\r
1035 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
1036 Element eElement1 = (Element) node1
\r
1037 String value = utils.getElementText(eElement1, "sriov-vlan-filter")
\r
1038 if (i != sriovVlanFilterList.getLength() - 1) {
\r
1039 values = sriovFilterBuf.append(value + ",")
\r
1042 values = sriovFilterBuf.append(value);
\r
1046 if (!values.isEmpty()) {
\r
1047 String vnfNetworkSriovVlanFilterXml =
\r
1049 <key>${vnfNetworkKey}_ATT_VF_VLAN_FILTER</key>
\r
1050 <value>${values}</value>
\r
1052 vnfNetworksSriovVlanFilters = sbNet6.append(vnfNetworkSriovVlanFilterXml)
\r
1058 String vnfVMS = ""
\r
1059 String vnfVMSPositions = ""
\r
1060 String vmNetworks = ""
\r
1061 String vmNetworksPositions = ""
\r
1062 String vmNetworksPositionsV6 = ""
\r
1063 String interfaceRoutePrefixes = ""
\r
1069 def floatingIPKeyValue
\r
1070 def floatingIPV6Key
\r
1071 def floatingIPV6KeyValue
\r
1072 StringBuilder sb = new StringBuilder()
\r
1073 StringBuilder sbPositions = new StringBuilder()
\r
1074 StringBuilder sbVmNetworks = new StringBuilder()
\r
1075 StringBuilder sbNetworksPositions = new StringBuilder()
\r
1076 StringBuilder sbInterfaceRoutePrefixes = new StringBuilder()
\r
1077 StringBuilder sbNetworksPositionsV6 = new StringBuilder()
\r
1079 NodeList vmsList = responseXml.getElementsByTagNameNS("*","vnf-vms")
\r
1080 for (int x = 0; x < vmsList.getLength(); x++) {
\r
1081 Node node = vmsList.item(x)
\r
1082 if (node.getNodeType() == Node.ELEMENT_NODE) {
\r
1083 Element eElement = (Element) node
\r
1084 key = utils.getElementText(eElement, "vm-type")
\r
1086 String position = "0"
\r
1087 StringBuilder sb1 = new StringBuilder()
\r
1088 NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")
\r
1089 NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")
\r
1090 for(int i = 0; i < valueList.getLength(); i++){
\r
1091 Node node1 = valueList.item(i)
\r
1092 if (node1.getNodeType() == Node.ELEMENT_NODE) {
\r
1093 Element eElement1 = (Element) node1
\r
1094 value = utils.getElementText(eElement1, "vm-name")
\r
1095 if (i != valueList.getLength() - 1) {
\r
1096 values = sb1.append(value + ",")
\r
1099 values = sb1.append(value);
\r
1101 position = i.toString()
\r
1102 String vnfPositionXml =
\r
1104 <key>${key}_name_${position}</key>
\r
1105 <value>${value}</value>
\r
1107 vnfVMSPositions = sbPositions.append(vnfPositionXml)
\r
1110 for(int n = 0; n < vmNetworksList.getLength(); n++){
\r
1111 String floatingIpKeyValueStr = ""
\r
1112 String floatingIpV6KeyValueStr = ""
\r
1113 Node nodeNetworkKey = vmNetworksList.item(n)
\r
1114 if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {
\r
1115 Element eElementNetworkKey = (Element) nodeNetworkKey
\r
1116 String ipAddressValues
\r
1117 String ipV6AddressValues
\r
1118 String networkPosition = "0"
\r
1119 StringBuilder sb2 = new StringBuilder()
\r
1120 StringBuilder sb3 = new StringBuilder()
\r
1121 StringBuilder sb4 = new StringBuilder()
\r
1122 networkKey = utils.getElementText(eElementNetworkKey, "network-role-tag")
\r
1123 if (networkKey.isEmpty()) {
\r
1124 networkKey = utils.getElementText(eElementNetworkKey, "network-role")
\r
1126 floatingIPKey = key + '_' + networkKey + '_floating_ip'
\r
1127 floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")
\r
1128 if(!floatingIPKeyValue.isEmpty()){
\r
1129 floatingIpKeyValueStr = """<entry>
\r
1130 <key>$floatingIPKey</key>
\r
1131 <value>$floatingIPKeyValue</value>
\r
1134 floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'
\r
1135 floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")
\r
1136 if(!floatingIPV6KeyValue.isEmpty()){
\r
1137 floatingIpV6KeyValueStr = """<entry>
\r
1138 <key>$floatingIPV6Key</key>
\r
1139 <value>$floatingIPV6KeyValue</value>
\r
1142 NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")
\r
1143 for(int a = 0; a < networkIpsList.getLength(); a++){
\r
1144 Node ipAddress = networkIpsList.item(a)
\r
1145 if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {
\r
1146 Element eElementIpAddress = (Element) ipAddress
\r
1147 String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")
\r
1148 if (a != networkIpsList.getLength() - 1) {
\r
1149 ipAddressValues = sb2.append(ipAddressValue + ",")
\r
1152 ipAddressValues = sb2.append(ipAddressValue);
\r
1154 networkPosition = a.toString()
\r
1155 String vmNetworksPositionsXml =
\r
1157 <key>${key}_${networkKey}_ip_${networkPosition}</key>
\r
1158 <value>${ipAddressValue}</value>
\r
1160 vmNetworksPositions = sbNetworksPositions.append(vmNetworksPositionsXml)
\r
1163 vmNetworksPositions = sbNetworksPositions.append(floatingIpKeyValueStr).append(floatingIpV6KeyValueStr)
\r
1165 String vmNetworksXml =
\r
1167 <key>${key}_${networkKey}_ips</key>
\r
1168 <value>${ipAddressValues}</value>
\r
1170 vmNetworks = sbVmNetworks.append(vmNetworksXml)
\r
1172 NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")
\r
1173 String interfaceRoutePrefixValues = sb3.append("[")
\r
1175 for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){
\r
1176 Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)
\r
1177 if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {
\r
1178 Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix
\r
1179 String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")
\r
1180 if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {
\r
1181 interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")
\r
1183 if (a != interfaceRoutePrefixesList.getLength() - 1) {
\r
1184 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")
\r
1187 interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")
\r
1191 interfaceRoutePrefixValues = sb3.append("]")
\r
1192 if (interfaceRoutePrefixesList.getLength() > 0) {
\r
1193 String interfaceRoutePrefixesXml =
\r
1195 <key>${key}_${networkKey}_route_prefixes</key>
\r
1196 <value>${interfaceRoutePrefixValues}</value>
\r
1198 interfaceRoutePrefixes = sbInterfaceRoutePrefixes.append(interfaceRoutePrefixesXml)
\r
1201 NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")
\r
1202 for(int a = 0; a < networkIpsV6List.getLength(); a++){
\r
1203 Node ipV6Address = networkIpsV6List.item(a)
\r
1204 if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {
\r
1205 Element eElementIpV6Address = (Element) ipV6Address
\r
1206 String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")
\r
1207 if (a != networkIpsV6List.getLength() - 1) {
\r
1208 ipV6AddressValues = sb4.append(ipV6AddressValue + ",")
\r
1211 ipV6AddressValues = sb4.append(ipV6AddressValue);
\r
1213 networkPosition = a.toString()
\r
1214 String vmNetworksPositionsV6Xml =
\r
1216 <key>${key}_${networkKey}_v6_ip_${networkPosition}</key>
\r
1217 <value>${ipV6AddressValue}</value>
\r
1219 vmNetworksPositionsV6 = sbNetworksPositionsV6.append(vmNetworksPositionsV6Xml)
\r
1222 String vmNetworksV6Xml =
\r
1224 <key>${key}_${networkKey}_v6_ips</key>
\r
1225 <value>${ipV6AddressValues}</value>
\r
1227 vmNetworks = sbVmNetworks.append(vmNetworksV6Xml)
\r
1232 <key>${key}_names</key>
\r
1233 <value>${values}</value>
\r
1235 vnfVMS = sb.append(vnfXml)
\r
1238 //SDNC Response Params
\r
1239 String sdncResponseParams = ""
\r
1240 List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]
\r
1241 String vnfParamsChildNodes = utils.getChildNodes(data, "vnf-parameters")
\r
1242 if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
\r
1245 NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
\r
1246 for (int z = 0; z < paramsList.getLength(); z++) {
\r
1247 Node node = paramsList.item(z)
\r
1248 Element eElement = (Element) node
\r
1249 String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
\r
1250 if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {
\r
1251 String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
\r
1252 String paraEntry =
\r
1254 <key>${vnfParameterName}</key>
\r
1255 <value>${vnfParameterValue}</value>
\r
1257 sdncResponseParams = sb.append(paraEntry)
\r
1263 def vfModuleParams = """
\r
1266 ${vnfNetworkNetId}
\r
1267 ${vnfNetworkNetName}
\r
1268 ${vnfNetworkSubNetId}
\r
1269 ${vnfNetworkV6SubNetId}
\r
1270 ${vnfNetworkNetFqdn}
\r
1271 ${vnfNetworksSriovVlanFilters}
\r
1273 ${vnfVMSPositions}
\r
1275 ${vmNetworksPositions}
\r
1276 ${vmNetworksPositionsV6}
\r
1277 ${interfaceRoutePrefixes}
\r
1279 ${sdncResponseParams}"""
\r
1281 return vfModuleParams
\r