return vfModuleParams\r
\r
}\r
+ \r
+ \r
+ /*\r
+ * Parses VNF parameters passed in on the incoming requests and SDNC parameters returned from SDNC get response\r
+ * for both VNF and VF Module\r
+ * and puts them into the format expected by VNF adapter.\r
+ * @param vnfParamsMap - map of VNF parameters passed in the request body\r
+ * @param vnfSdncGetResponse - response string from SDNC GET VNF topology request\r
+ * @param vfmoduleSdncGetResponse - response string from SDNC GET VF Module topology request\r
+ * @param vnfId\r
+ * @param vnfName\r
+ * @param vfModuleId\r
+ * @param vfModuleName\r
+ * @param vfModuleIndex - can be null\r
+ * @return a String of key/value entries for vfModuleParams\r
+ */ \r
+ \r
+ protected String buildVfModuleParamsFromCombinedTopologies(Map<String, String> vnfParamsMap, String vnfSdncGetResponse, String vfmoduleSdncGetResponse, String vnfId, String vnfName,\r
+ String vfModuleId, String vfModuleName, String vfModuleIndex) {\r
+ \r
+ // Set up initial parameters\r
+ \r
+ Map<String, String> paramsMap = new HashMap<String, String>()\r
+ \r
+ if (vfModuleIndex != null) {\r
+ paramsMap.put("vf_module_index", "${vfModuleIndex}")\r
+ }\r
+ \r
+ // Add-on data\r
+ paramsMap.put("vnf_id", "${vnfId}")\r
+ paramsMap.put("vnf_name", "${vnfName}")\r
+ paramsMap.put("vf_module_id", "${vfModuleId}")\r
+ paramsMap.put("vf_module_name", "${vfModuleName}") \r
+ \r
+ //Get SDNC Response Data for VNF\r
+ \r
+ String vnfData = utils.getNodeXml(vnfSdncGetResponse, "response-data")\r
+ vnfData = vnfData.replaceAll("<", "<")\r
+ vnfData = vnfData.replaceAll(">", ">")\r
+ \r
+ String vnfTopology = utils.getNodeXml(vnfData, "vnf-topology")\r
+ vnfTopology = utils.removeXmlPreamble(vnfTopology)\r
+ vnfTopology = utils.removeXmlNamespaces(vnfTopology)\r
+ \r
+ InputSource sourceVnf = new InputSource(new StringReader(vnfData));\r
+ DocumentBuilderFactory docFactoryVnf = DocumentBuilderFactory.newInstance();\r
+ docFactoryVnf.setNamespaceAware(true)\r
+ DocumentBuilder docBuilderVnf = docFactoryVnf.newDocumentBuilder()\r
+ Document responseXmlVnf = docBuilderVnf.parse(sourceVnf)\r
+ \r
+ // Availability Zones Data\r
+ \r
+ NodeList aZonesList = responseXmlVnf.getElementsByTagNameNS("*", "availability-zones")\r
+ String aZonePosition = "0"\r
+ for (int z = 0; z < aZonesList.getLength(); z++) {\r
+ Node node = aZonesList.item(z)\r
+ if (node.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElement = (Element) node\r
+ String aZoneValue = utils.getElementText(eElement, "availability-zone")\r
+ aZonePosition = z.toString()\r
+ paramsMap.put("availability_zone_${aZonePosition}", "${aZoneValue}")\r
+ }\r
+ }\r
+ \r
+ // VNF Networks Data\r
+ \r
+ StringBuilder sbNet = new StringBuilder()\r
+ \r
+ NodeList vnfNetworkList = responseXmlVnf.getElementsByTagNameNS("*", "vnf-networks")\r
+ for (int x = 0; x < vnfNetworkList.getLength(); x++) {\r
+ Node node = vnfNetworkList.item(x)\r
+ if (node.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElement = (Element) node\r
+ String vnfNetworkKey = utils.getElementText(eElement, "network-role")\r
+ String vnfNetworkNeutronIdValue = utils.getElementText(eElement, "neutron-id")\r
+ String vnfNetworkNetNameValue = utils.getElementText(eElement, "network-name")\r
+ String vnfNetworkSubNetIdValue = utils.getElementText(eElement, "subnet-id")\r
+ String vnfNetworkV6SubNetIdValue = utils.getElementText(eElement, "ipv6-subnet-id")\r
+ String vnfNetworkNetFqdnValue = utils.getElementText(eElement, "contrail-network-fqdn")\r
+ paramsMap.put("${vnfNetworkKey}_net_id", "${vnfNetworkNeutronIdValue}")\r
+ paramsMap.put("${vnfNetworkKey}_net_name", "${vnfNetworkNetNameValue}")\r
+ paramsMap.put("${vnfNetworkKey}_subnet_id", "${vnfNetworkSubNetIdValue}")\r
+ paramsMap.put("${vnfNetworkKey}_v6_subnet_id", "${vnfNetworkV6SubNetIdValue}")\r
+ paramsMap.put("${vnfNetworkKey}_net_fqdn", "${vnfNetworkNetFqdnValue}")\r
+ \r
+ NodeList sriovVlanFilterList = eElement.getElementsByTagNameNS("*","sriov-vlan-filter-list")\r
+ StringBuffer sriovFilterBuf = new StringBuffer()\r
+ String values = ""\r
+ for(int i = 0; i < sriovVlanFilterList.getLength(); i++){\r
+ Node node1 = sriovVlanFilterList.item(i)\r
+ if (node1.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElement1 = (Element) node1\r
+ String value = utils.getElementText(eElement1, "sriov-vlan-filter")\r
+ if (i != sriovVlanFilterList.getLength() - 1) {\r
+ values = sriovFilterBuf.append(value + ",")\r
+ }\r
+ else {\r
+ values = sriovFilterBuf.append(value);\r
+ }\r
+ }\r
+ }\r
+ if (!values.isEmpty()) {\r
+ paramsMap.put("${vnfNetworkKey}_ATT_VF_VLAN_FILTER", "${values}")\r
+ }\r
+ }\r
+ }\r
+ \r
+ //Get SDNC Response Data for VF Module\r
+ \r
+ String vfModuleData = utils.getNodeXml(vfmoduleSdncGetResponse, "response-data")\r
+ vfModuleData = vfModuleData.replaceAll("<", "<")\r
+ vfModuleData = vfModuleData.replaceAll(">", ">")\r
+ \r
+ String vfModuleTopology = utils.getNodeXml(vfModuleData, "vf-module-topology")\r
+ vfModuleTopology = utils.removeXmlPreamble(vfModuleTopology)\r
+ vfModuleTopology = utils.removeXmlNamespaces(vfModuleTopology)\r
+ String vfModuleTopologyIdentifier = utils.getNodeXml(vfModuleTopology, "vf-module-topology-identifier")\r
+ \r
+ InputSource sourceVfModule = new InputSource(new StringReader(vfModuleData));\r
+ DocumentBuilderFactory docFactoryVfModule = DocumentBuilderFactory.newInstance();\r
+ docFactoryVfModule.setNamespaceAware(true)\r
+ DocumentBuilder docBuilderVfModule = docFactoryVfModule.newDocumentBuilder()\r
+ Document responseXmlVfModule = docBuilderVfModule.parse(sourceVfModule)\r
+ \r
+ // VMS Data\r
+ \r
+ def key\r
+ def value\r
+ def networkKey\r
+ def networkValue\r
+ def floatingIPKey\r
+ def floatingIPKeyValue\r
+ def floatingIPV6Key\r
+ def floatingIPV6KeyValue\r
+ StringBuilder sb = new StringBuilder()\r
+ \r
+ NodeList vmsList = responseXmlVfModule.getElementsByTagNameNS("*","vm")\r
+ for (int x = 0; x < vmsList.getLength(); x++) {\r
+ Node node = vmsList.item(x)\r
+ if (node.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElement = (Element) node\r
+ key = utils.getElementText(eElement, "vm-type")\r
+ String values\r
+ String position = "0"\r
+ StringBuilder sb1 = new StringBuilder()\r
+ NodeList valueList = eElement.getElementsByTagNameNS("*","vm-names")\r
+ NodeList vmNetworksList = eElement.getElementsByTagNameNS("*","vm-networks")\r
+ for(int i = 0; i < valueList.getLength(); i++){\r
+ Node node1 = valueList.item(i)\r
+ if (node1.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElement1 = (Element) node1\r
+ value = utils.getElementText(eElement1, "vm-name")\r
+ if (i != valueList.getLength() - 1) {\r
+ values = sb1.append(value + ",")\r
+ }\r
+ else {\r
+ values = sb1.append(value);\r
+ }\r
+ position = i.toString()\r
+ paramsMap.put("${key}_name_${position}", "${value}")\r
+ }\r
+ }\r
+ for(int n = 0; n < vmNetworksList.getLength(); n++){\r
+ String floatingIpKeyValueStr = ""\r
+ String floatingIpV6KeyValueStr = ""\r
+ Node nodeNetworkKey = vmNetworksList.item(n)\r
+ if (nodeNetworkKey.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElementNetworkKey = (Element) nodeNetworkKey\r
+ String ipAddressValues\r
+ String ipV6AddressValues\r
+ String networkPosition = "0"\r
+ StringBuilder sb2 = new StringBuilder()\r
+ StringBuilder sb3 = new StringBuilder()\r
+ StringBuilder sb4 = new StringBuilder()\r
+ networkKey = utils.getElementText(eElementNetworkKey, "network-role")\r
+ floatingIPKey = key + '_' + networkKey + '_floating_ip'\r
+ floatingIPKeyValue = utils.getElementText(eElementNetworkKey, "floating-ip")\r
+ if(!floatingIPKeyValue.isEmpty()){\r
+ paramsMap.put("$floatingIPKey", "$floatingIPKeyValue")\r
+ }\r
+ floatingIPV6Key = key + '_' + networkKey + '_floating_v6_ip'\r
+ floatingIPV6KeyValue = utils.getElementText(eElementNetworkKey, "floating-ip-v6")\r
+ if(!floatingIPV6KeyValue.isEmpty()){\r
+ paramsMap.put("$floatingIPV6Key", "$floatingIPV6KeyValue")\r
+ }\r
+ NodeList networkIpsList = eElementNetworkKey.getElementsByTagNameNS("*","network-ips")\r
+ for(int a = 0; a < networkIpsList.getLength(); a++){\r
+ Node ipAddress = networkIpsList.item(a)\r
+ if (ipAddress.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElementIpAddress = (Element) ipAddress\r
+ String ipAddressValue = utils.getElementText(eElementIpAddress, "ip-address")\r
+ if (a != networkIpsList.getLength() - 1) {\r
+ ipAddressValues = sb2.append(ipAddressValue + ",")\r
+ }\r
+ else {\r
+ ipAddressValues = sb2.append(ipAddressValue);\r
+ }\r
+ networkPosition = a.toString()\r
+ paramsMap.put("${key}_${networkKey}_ip_${networkPosition}", "${ipAddressValue}")\r
+ }\r
+ }\r
+ \r
+ paramsMap.put("${key}_${networkKey}_ips", "${ipAddressValues}")\r
+ \r
+ NodeList interfaceRoutePrefixesList = eElementNetworkKey.getElementsByTagNameNS("*","interface-route-prefixes")\r
+ String interfaceRoutePrefixValues = sb3.append("[")\r
+ \r
+ for(int a = 0; a < interfaceRoutePrefixesList.getLength(); a++){\r
+ Node interfaceRoutePrefix = interfaceRoutePrefixesList.item(a)\r
+ if (interfaceRoutePrefix.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElementInterfaceRoutePrefix = (Element) interfaceRoutePrefix\r
+ String interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix-cidr")\r
+ if (interfaceRoutePrefixValue == null || interfaceRoutePrefixValue.isEmpty()) {\r
+ interfaceRoutePrefixValue = utils.getElementText(eElementInterfaceRoutePrefix, "interface-route-prefix")\r
+ }\r
+ if (a != interfaceRoutePrefixesList.getLength() - 1) {\r
+ interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",")\r
+ }\r
+ else {\r
+ interfaceRoutePrefixValues = sb3.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}")\r
+ }\r
+ }\r
+ }\r
+ interfaceRoutePrefixValues = sb3.append("]")\r
+ if (interfaceRoutePrefixesList.getLength() > 0) {\r
+ paramsMap.put("${key}_${networkKey}_route_prefixes", "${interfaceRoutePrefixValues}")\r
+ }\r
+ \r
+ NodeList networkIpsV6List = eElementNetworkKey.getElementsByTagNameNS("*","network-ips-v6")\r
+ for(int a = 0; a < networkIpsV6List.getLength(); a++){\r
+ Node ipV6Address = networkIpsV6List.item(a)\r
+ if (ipV6Address.getNodeType() == Node.ELEMENT_NODE) {\r
+ Element eElementIpV6Address = (Element) ipV6Address\r
+ String ipV6AddressValue = utils.getElementText(eElementIpV6Address, "ip-address-ipv6")\r
+ if (a != networkIpsV6List.getLength() - 1) {\r
+ ipV6AddressValues = sb4.append(ipV6AddressValue + ",")\r
+ }\r
+ else {\r
+ ipV6AddressValues = sb4.append(ipV6AddressValue);\r
+ }\r
+ networkPosition = a.toString()\r
+ paramsMap.put("${key}_${networkKey}_v6_ip_${networkPosition}", "${ipV6AddressValue}")\r
+ }\r
+ }\r
+ paramsMap.put("${key}_${networkKey}_v6_ips", "${ipV6AddressValues}")\r
+ }\r
+ }\r
+ paramsMap.put("${key}_names", "${values}")\r
+ }\r
+ }\r
+ //SDNC Response Params\r
+ List<String> sdncResponseParamsToSkip = ["vnf_id", "vf_module_id", "vnf_name", "vf_module_name"]\r
+ \r
+ String vnfParamsChildNodes = utils.getChildNodes(vnfData, "param")\r
+ if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){\r
+ // No SDNC params for VNF\r
+ }else{\r
+ NodeList paramsList = responseXmlVnf.getElementsByTagNameNS("*", "param")\r
+ for (int z = 0; z < paramsList.getLength(); z++) {\r
+ Node node = paramsList.item(z)\r
+ Element eElement = (Element) node\r
+ String vnfParameterName = utils.getElementText(eElement, "name")\r
+ if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {\r
+ String vnfParameterValue = utils.getElementText(eElement, "value")\r
+ paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")\r
+ }\r
+ }\r
+ }\r
+ \r
+ String vfModuleParamsChildNodes = utils.getChildNodes(vfModuleData, "param")\r
+ if(vfModuleParamsChildNodes == null || vfModuleParamsChildNodes.length() < 1){\r
+ // No SDNC params for VF Module\r
+ }else{\r
+ NodeList paramsList = responseXmlVfModule.getElementsByTagNameNS("*", "param")\r
+ for (int z = 0; z < paramsList.getLength(); z++) {\r
+ Node node = paramsList.item(z)\r
+ Element eElement = (Element) node\r
+ String vnfParameterName = utils.getElementText(eElement, "name")\r
+ if (!sdncResponseParamsToSkip.contains(vnfParameterName)) {\r
+ String vnfParameterValue = utils.getElementText(eElement, "value")\r
+ paramsMap.put("${vnfParameterName}", "${vnfParameterValue}")\r
+ }\r
+ }\r
+ }\r
+ \r
+ // Parameters received from the request should overwrite any parameters received from SDNC\r
+ if (vnfParamsMap != null) {\r
+ for (Map.Entry<String, String> entry : vnfParamsMap.entrySet()) {\r
+ String vnfKey = entry.getKey()\r
+ String vnfValue = entry.getValue()\r
+ paramsMap.put("$vnfKey", "$vnfValue")\r
+ }\r
+ }\r
+ \r
+ StringBuilder sbParams = new StringBuilder()\r
+ def vfModuleParams = ""\r
+ for (Map.Entry<String, String> entry : paramsMap.entrySet()) {\r
+ String paramsXml\r
+ String paramName = entry.getKey()\r
+ String paramValue = entry.getValue()\r
+ paramsXml =\r
+ """<entry>\r
+ <key>${paramName}</key>\r
+ <value>${paramValue}</value>\r
+ </entry>\r
+ """\r
+ \r
+ vfModuleParams = sbParams.append(paramsXml)\r
+ }\r
+ \r
+ return vfModuleParams\r
+ \r
+ }\r
\r
\r
/*\r