diff options
Diffstat (limited to 'appc-dg-util')
4 files changed, 320 insertions, 246 deletions
diff --git a/appc-dg-util/appc-dg-util-bundle/pom.xml b/appc-dg-util/appc-dg-util-bundle/pom.xml index 082204749..425bc9944 100644 --- a/appc-dg-util/appc-dg-util-bundle/pom.xml +++ b/appc-dg-util/appc-dg-util-bundle/pom.xml @@ -1,206 +1,212 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-dg-util</artifactId> - <version>1.1.0-SNAPSHOT</version> - </parent> - - <artifactId>appc-dg-util-bundle</artifactId> - <packaging>bundle</packaging> - <name>appc-dg-util - bundle</name> - <properties> - <exam.version>4.9.1</exam.version> - <url.version>1.6.0</url.version> - <sal-netconf-connector.version>1.3.1-Beryllium-SR1</sal-netconf-connector.version> - </properties> - - <dependencies> - <dependency> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-common</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>javax</groupId> - <artifactId>javaee-api</artifactId> - <version>7.0</version> - </dependency> - - <dependency> - <groupId>org.openecomp.sdnc.adaptors</groupId> - <artifactId>aai-service-provider</artifactId> - </dependency> - - <dependency> - <groupId>javax.ws.rs</groupId> - <artifactId>javax.ws.rs-api</artifactId> - </dependency> - - <!-- Jersey support needed for OpenStack connector and API version logic --> - <dependency> - <groupId>com.sun.jersey</groupId> - <artifactId>jersey-client</artifactId> - </dependency> - - <dependency> - <groupId>com.sun.jersey</groupId> - <artifactId>jersey-json</artifactId> - </dependency> - - <dependency> - <groupId>javax.xml.bind</groupId> - <artifactId>jaxb-api</artifactId> - <version>2.1</version> - </dependency> - - <dependency> - <groupId>javax.xml</groupId> - <artifactId>jaxp-api</artifactId> - <version>1.4.2</version> - </dependency> - - <!-- Needed to run test cases --> - <dependency> - <groupId>org.glassfish.jersey.core</groupId> - <artifactId>jersey-common</artifactId> - <version>2.9.1</version> - </dependency> - - <dependency> - <groupId>org.codehaus.jackson</groupId> - <artifactId>jackson-jaxrs</artifactId> - <version>1.9.12</version> - </dependency> - - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>4.5.1</version> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.openecomp.sdnc.core</groupId> - <artifactId>sli-common</artifactId> - <scope>compile</scope> - <!-- Added exclusion to prevent missing dependency issue on dblib --> - <exclusions> - <exclusion> - <groupId>org.openecomp.sdnc.core</groupId> - <artifactId>dblib-provider</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.openecomp.sdnc.core</groupId> - <artifactId>sli-provider</artifactId> - <scope>compile</scope> - <!-- Added exclusion to prevent missing dependency issue on dblib --> - <exclusions> - <exclusion> - <groupId>org.openecomp.sdnc.core</groupId> - <artifactId>dblib-provider</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>equinoxSDK381</groupId> - <artifactId>org.eclipse.osgi</artifactId> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - </dependency> - - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>5.1.31</version> - <type>jar</type> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>com.vmware</groupId> - <artifactId>vijava</artifactId> - <version>5.1</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>xerces</groupId> - <artifactId>xerces</artifactId> - <version>2.4.0</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpcore</artifactId> - <version>${apache.httpcomponents.version}</version> - </dependency> - - <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - <version>1.2</version> - </dependency> - - <dependency> - <groupId>org.json</groupId> - <artifactId>json</artifactId> - </dependency> - - <dependency> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-dmaap-adapter-bundle</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-netconf-adapter-bundle</artifactId> - <version>${project.version}</version> - </dependency> - - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <instructions> - <Bundle-SymbolicName>appc-dg-util</Bundle-SymbolicName> - <Bundle-Activator>org.openecomp.appc.dg.util.AppcDgUtilActivator</Bundle-Activator> - <Export-Package>org.openecomp.appc.dg.util.*</Export-Package> - <Import-Package>org.openecomp.appc.adapter.netconf,org.openecomp.appc.adapter.netconf.dao,org.openecomp.appc.adapter.netconf.util,org.openecomp.appc.adapter.netconf.exception,org.openecomp.appc.adapter.dmaap.*,org.openecomp.sdnc.sli.*,org.osgi.framework.*,org.slf4j.*,com.vmware.*,org.apache.xerces.*,javax.net.*,javax.net.ssl.*,org.xml.sax.*,javax.xml.bind.*,javax.naming.*,com.fasterxml.*,javax.xml.parsers</Import-Package>n - <Embed-Dependency>appc-common,eelf-core,logback-core,logback-classic;scope=compile|runtime;inline=false</Embed-Dependency> - <Embed-Transitive>true</Embed-Transitive> - </instructions> - </configuration> - </plugin> - </plugins> - </build> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-dg-util</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <artifactId>appc-dg-util-bundle</artifactId> + <packaging>bundle</packaging> + <name>appc-dg-util - bundle</name> + <properties> + <exam.version>4.9.1</exam.version> + <url.version>1.6.0</url.version> + <sal-netconf-connector.version>1.3.1-Beryllium-SR1</sal-netconf-connector.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-common</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>javax</groupId> + <artifactId>javaee-api</artifactId> + <version>7.0</version> + </dependency> + + <dependency> + <groupId>org.openecomp.sdnc.adaptors</groupId> + <artifactId>aai-service-provider</artifactId> + </dependency> + + <dependency> + <groupId>javax.ws.rs</groupId> + <artifactId>javax.ws.rs-api</artifactId> + </dependency> + + <!-- Jersey support needed for OpenStack connector and API version logic --> + <dependency> + <groupId>com.sun.jersey</groupId> + <artifactId>jersey-client</artifactId> + </dependency> + + <dependency> + <groupId>com.sun.jersey</groupId> + <artifactId>jersey-json</artifactId> + </dependency> + + <dependency> + <groupId>javax.xml.bind</groupId> + <artifactId>jaxb-api</artifactId> + <version>2.1</version> + </dependency> + + <dependency> + <groupId>javax.xml</groupId> + <artifactId>jaxp-api</artifactId> + <version>1.4.2</version> + </dependency> + + <!-- Needed to run test cases --> + <dependency> + <groupId>org.glassfish.jersey.core</groupId> + <artifactId>jersey-common</artifactId> + <version>2.9.1</version> + </dependency> + + <dependency> + <groupId>org.codehaus.jackson</groupId> + <artifactId>jackson-jaxrs</artifactId> + <version>1.9.12</version> + </dependency> + + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.5.1</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.openecomp.sdnc.core</groupId> + <artifactId>sli-common</artifactId> + <scope>compile</scope> + <!-- Added exclusion to prevent missing dependency issue on dblib --> + <exclusions> + <exclusion> + <groupId>org.openecomp.sdnc.core</groupId> + <artifactId>dblib-provider</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.openecomp.sdnc.core</groupId> + <artifactId>sli-provider</artifactId> + <scope>compile</scope> + <!-- Added exclusion to prevent missing dependency issue on dblib --> + <exclusions> + <exclusion> + <groupId>org.openecomp.sdnc.core</groupId> + <artifactId>dblib-provider</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>equinoxSDK381</groupId> + <artifactId>org.eclipse.osgi</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </dependency> + + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>5.1.31</version> + <type>jar</type> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.vmware</groupId> + <artifactId>vijava</artifactId> + <version>5.1</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>xerces</groupId> + <artifactId>xerces</artifactId> + <version>2.4.0</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <version>${apache.httpcomponents.version}</version> + </dependency> + + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.2</version> + </dependency> + + <dependency> + <groupId>org.json</groupId> + <artifactId>json</artifactId> + </dependency> + + <dependency> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-dmaap-adapter-bundle</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-netconf-adapter-bundle</artifactId> + <!--<version>${project.version}</version> --> + <version>1.1.0-SNAPSHOT</version> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>appc-dg-util</Bundle-SymbolicName> + <Bundle-Activator>org.openecomp.appc.dg.util.AppcDgUtilActivator</Bundle-Activator> + <Export-Package>org.openecomp.appc.dg.util.*</Export-Package> + <Import-Package> + org.openecomp.appc.adapter.netconf,org.openecomp.appc.adapter.netconf.dao,org.openecomp.appc.adapter.netconf.util,com.att.eelf.*, + org.openecomp.appc.adapter.netconf.exception, org.openecomp.appc.adapter.messaging.*,org.openecomp.sdnc.sli.*, + org.openecomp.appc.exceptions, org.openecomp.appc.i18n, + org.osgi.framework.*,org.slf4j.*,com.vmware.*,org.apache.xerces.*,javax.net.*, + javax.net.ssl.*,org.xml.sax.*,javax.xml.bind.*, + javax.naming.*,com.fasterxml.*,javax.xml.parsers, *;resolution:=optional + </Import-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> diff --git a/appc-dg-util/appc-dg-util-bundle/src/main/java/org/openecomp/appc/dg/util/impl/ExecuteNodeActionImpl.java b/appc-dg-util/appc-dg-util-bundle/src/main/java/org/openecomp/appc/dg/util/impl/ExecuteNodeActionImpl.java index 6f5bb0c92..1c898d4d3 100644 --- a/appc-dg-util/appc-dg-util-bundle/src/main/java/org/openecomp/appc/dg/util/impl/ExecuteNodeActionImpl.java +++ b/appc-dg-util/appc-dg-util-bundle/src/main/java/org/openecomp/appc/dg/util/impl/ExecuteNodeActionImpl.java @@ -21,7 +21,6 @@ package org.openecomp.appc.dg.util.impl; -import org.openecomp.appc.adapter.netconf.util.Constants; import org.openecomp.appc.dg.util.ExecuteNodeAction; import org.openecomp.appc.exceptions.APPCException; import org.openecomp.appc.i18n.Msg; @@ -33,13 +32,11 @@ import org.openecomp.sdnc.sli.SvcLogicException; import org.openecomp.sdnc.sli.SvcLogicResource; import org.openecomp.sdnc.sli.aai.AAIClient; import org.openecomp.sdnc.sli.aai.AAIService; -import org.openecomp.sdnc.sli.provider.ExecuteNodeExecutor; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.ServiceReference; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -49,6 +46,7 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { protected static AAIClient client; private static final EELFLogger logger = EELFManager.getInstance().getLogger(ExecuteNodeActionImpl.class); + public static final String DG_OUTPUT_STATUS_MESSAGE = "output.status.message"; public ExecuteNodeActionImpl() { } @@ -69,7 +67,7 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { } else { logger.info("AAIService error from bundlecontext"); - logger.error(EELFResourceManager.format(Msg.AAI_CONNECTION_FAILED, sref.toString())); + logger.error(EELFResourceManager.format(Msg.AAI_CONNECTION_FAILED, "AAIService")); } } @@ -95,7 +93,7 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { @Override public void getResource(Map<String, String> params, SvcLogicContext ctx) throws APPCException { initialize(); String resourceType = params.get("resourceType"), ctx_prefix = params.get("prefix"), resourceKey = - params.get("resourceKey"); + params.get("resourceKey"); if (logger.isDebugEnabled()) { logger.debug("inside getResorce"); logger.debug("Retrieving " + resourceType + " details from A&AI for Key : " + resourceKey); @@ -103,7 +101,7 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { client = aaiService; try { SvcLogicResource.QueryStatus response = - client.query(resourceType, false, null, resourceKey, ctx_prefix, null, ctx); + client.query(resourceType, false, null, resourceKey, ctx_prefix, null, ctx); logger.info("AAIResponse: " + response.toString()); ctx.setAttribute("getResource_result", response.toString()); } catch (SvcLogicException e) { @@ -117,8 +115,8 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { @Override public void postResource(Map<String, String> params, SvcLogicContext ctx) throws APPCException { initialize(); String resourceType = params.get("resourceType"), ctx_prefix = params.get("prefix"), resourceKey = - params.get("resourceKey"), att_name = params.get("attributeName"), att_value = - params.get("attributeValue"); + params.get("resourceKey"), att_name = params.get("attributeName"), att_value = + params.get("attributeValue"); if (logger.isDebugEnabled()) { logger.debug("inside postResource"); logger.debug("Updating " + resourceType + " details in A&AI for Key : " + resourceKey); @@ -167,36 +165,46 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { } //String ctx_prefix = params.get("prefix"); String resourceKey = params.get("resourceKey"); - String retrivalVnfKey = "vnf-id = '" + resourceKey + "' AND relationship-key = 'vserver.vserver-id'"; + // String retrivalVnfKey = "vnf-id = '" + resourceKey + "' AND relationship-key = 'vserver.vserver-id'"; + String retrivalVnfKey = "generic-vnf.vnf-id = '" + resourceKey + "'"; Map<String, String> paramsVnf = new HashMap<String, String>(); - paramsVnf.put("resourceType", "generic-vnf:relationship-list"); + paramsVnf.put("resourceType", "generic-vnf"); paramsVnf.put("prefix", "vnfRetrived"); paramsVnf.put("resourceKey", retrivalVnfKey); logger.debug("Retrieving VNF details from A&AI"); //Retrive all the relations of VNF - getResource(paramsVnf, ctx); - if (ctx.getAttribute("getResource_result").equals("SUCCESS")) { - if (ctx.getAttribute("vnfRetrived.heat-stack-id") != null) { - ctx.setAttribute("VNF.heat-stack-id", ctx.getAttribute("vnfRetrived.heat-stack-id")); + SvcLogicContext vnfCtx = new SvcLogicContext(); + getResource(paramsVnf, vnfCtx); + if (vnfCtx.getAttribute("getResource_result").equals("SUCCESS")) { + if (vnfCtx.getAttribute("vnfRetrived.heat-stack-id") != null) { + ctx.setAttribute("VNF.heat-stack-id", vnfCtx.getAttribute("vnfRetrived.heat-stack-id")); } + ctx.setAttribute("vnf.type",vnfCtx.getAttribute("vnfRetrived.vnf-type")); Map<String, String> vnfHierarchyMap = new ConcurrentHashMap<String, String>(); + + Map<String, Set<String>> vnfcHierarchyMap = new HashMap<String, Set<String>>(); int vmCount = 0; + int vnfcCount = 0; + Set<String> vmSet = null; + String vmURL = ""; logger.debug("Parsing Vserver details from VNF relations"); - for (String ctxKeySet : ctx - .getAttributeKeySet()) { //loop through relationship-list data, to get vserver relations - if (ctxKeySet.startsWith("vnfRetrived.") && ctx.getAttribute(ctxKeySet).equalsIgnoreCase("vserver")) { + for (String ctxKeySet : vnfCtx + .getAttributeKeySet()) { //loop through relationship-list data, to get vserver relations + if (ctxKeySet.startsWith("vnfRetrived.") && vnfCtx.getAttribute(ctxKeySet).equalsIgnoreCase("vserver")) { String vmKey = ctxKeySet.substring(0, ctxKeySet.length() - "related-to".length()); String vserverID = null; String tenantID = null; + String cloudOwner = null; + String cloudRegionId = null; int relationshipLength = 0; - if (ctx.getAttributeKeySet().contains(vmKey + "relationship-data_length")) { - relationshipLength = Integer.parseInt(ctx.getAttribute(vmKey + "relationship-data_length")); + if (vnfCtx.getAttributeKeySet().contains(vmKey + "relationship-data_length")) { + relationshipLength = Integer.parseInt(vnfCtx.getAttribute(vmKey + "relationship-data_length")); } for (int j = 0; j - < relationshipLength; j++) { //loop inside relationship data, to get vserver-id and tenant-id - String key = ctx.getAttribute(vmKey + "relationship-data[" + j + "].relationship-key"); - String value = ctx.getAttribute(vmKey + "relationship-data[" + j + "].relationship-value"); + < relationshipLength; j++) { //loop inside relationship data, to get vserver-id and tenant-id + String key = vnfCtx.getAttribute(vmKey + "relationship-data[" + j + "].relationship-key"); + String value = vnfCtx.getAttribute(vmKey + "relationship-data[" + j + "].relationship-value"); vnfHierarchyMap.put("VNF.VM[" + vmCount + "]." + key, value); if ("vserver.vserver-id".equals(key)) { vserverID = value; @@ -204,23 +212,29 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { if ("tenant.tenant-id".equals(key)) { tenantID = value; } + if ("cloud-region.cloud-owner".equals(key)) { + cloudOwner = value; + } + if ("cloud-region.cloud-region-id".equals(key)) { + cloudRegionId = value; + } } int relatedPropertyLength = 0; - if (ctx.getAttributeKeySet().contains(vmKey + "related-to-property_length")) { + if (vnfCtx.getAttributeKeySet().contains(vmKey + "related-to-property_length")) { relatedPropertyLength = - Integer.parseInt(ctx.getAttribute(vmKey + "related-to-property_length")); + Integer.parseInt(vnfCtx.getAttribute(vmKey + "related-to-property_length")); } for (int j = 0; j < relatedPropertyLength; j++) { //loop inside related-to-property data, to get vserver-name - String key = ctx.getAttribute(vmKey + "related-to-property[" + j + "].property-key"); - String value = ctx.getAttribute(vmKey + "related-to-property[" + j + "].property-value"); + String key = vnfCtx.getAttribute(vmKey + "related-to-property[" + j + "].property-key"); + String value = vnfCtx.getAttribute(vmKey + "related-to-property[" + j + "].property-value"); vnfHierarchyMap.put("VNF.VM[" + vmCount + "]." + key, value); } //Retrive VM relations to find vnfc's //VM to VNFC is 1 to 1 relation - String vmRetrivalKey = "vserver-id = '" + vserverID + "' AND tenant_id = '" + tenantID + "'"; + String vmRetrivalKey = "vserver.vserver-id = '" + vserverID + "' AND tenant.tenant_id = '" + tenantID + "'" + "' AND cloud-region.cloud-owner = '" + cloudOwner + "' AND cloud-region.cloud-region-id = '" + cloudRegionId + "'"; Map<String, String> paramsVm = new HashMap<String, String>(); - paramsVm.put("resourceType", "vserver:relationship-list"); + paramsVm.put("resourceType", "vserver"); paramsVm.put("prefix", "vmRetrived"); paramsVm.put("resourceKey", vmRetrivalKey); SvcLogicContext vmCtx = new SvcLogicContext(); @@ -231,37 +245,43 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { if (logger.isDebugEnabled()) { logger.debug("Parsing VNFC details from VM relations"); } - vnfHierarchyMap.put("VNF.VM[" + vmCount + "].URL", - vmCtx.getAttribute("vmRetrived.vserver-selflink")); + vmURL = vmCtx.getAttribute("vmRetrived.vserver-selflink"); + vnfHierarchyMap.put("VNF.VM[" + vmCount + "].URL",vmURL); for (String ctxVnfcKeySet : vmCtx - .getAttributeKeySet()) { //loop through relationship-list data, to get vnfc relations + .getAttributeKeySet()) { //loop through relationship-list data, to get vnfc relations if (ctxVnfcKeySet.startsWith("vmRetrived.") && vmCtx.getAttribute(ctxVnfcKeySet) - .equalsIgnoreCase("vnfc")) { + .equalsIgnoreCase("vnfc")) { String vnfcKey = ctxVnfcKeySet.substring(0, - ctxVnfcKeySet.length() - "related-to".length()); + ctxVnfcKeySet.length() - "related-to".length()); relationshipLength = 0; if (vmCtx.getAttributeKeySet().contains(vnfcKey + "relationship-data_length")) { relationshipLength = Integer.parseInt( - vmCtx.getAttribute(vnfcKey + "relationship-data_length")); + vmCtx.getAttribute(vnfcKey + "relationship-data_length")); } for (int j = 0; j - < relationshipLength; j++) { //loop through relationship data, to get vnfc name + < relationshipLength; j++) { //loop through relationship data, to get vnfc name String key = vmCtx.getAttribute( - vnfcKey + "relationship-data[" + j + "].relationship-key"); + vnfcKey + "relationship-data[" + j + "].relationship-key"); String value = vmCtx.getAttribute( - vnfcKey + "relationship-data[" + j + "].relationship-value"); + vnfcKey + "relationship-data[" + j + "].relationship-value"); if (key.equalsIgnoreCase("vnfc.vnfc-name")) { vnfHierarchyMap.put("VNF.VM[" + vmCount + "].VNFC", value); + vmSet = vnfcHierarchyMap.get(value); + if(vmSet == null){ + vmSet = new HashSet<>(); + } + vmSet.add(vmURL); + vnfcHierarchyMap.put(value,vmSet); break; //VM to VNFC is 1 to 1 relation, once we got the VNFC name we can break the loop } } } } } else { - ctx.setAttribute(Constants.DG_OUTPUT_STATUS_MESSAGE, "Error Retrieving VNFC hierarchy"); + ctx.setAttribute(DG_OUTPUT_STATUS_MESSAGE, "Error Retrieving VNFC hierarchy"); vnfHierarchyMap.put("getVnfHierarchy_result", "FAILURE"); logger.error("Failed in getVnfHierarchy, Error retrieving Vserver details. Error message: " - + vmCtx.getAttribute("getResource_result")); + + vmCtx.getAttribute("getResource_result")); logger.warn("Incorrect or Incomplete VNF Hierarchy"); throw new APPCException("Error Retrieving VNFC hierarchy"); } @@ -270,8 +290,14 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { } vnfHierarchyMap.put("VNF.VMCount", vmCount + ""); if (vmCount == 0) { - ctx.setAttribute(Constants.DG_OUTPUT_STATUS_MESSAGE, "VM count is 0"); + ctx.setAttribute(DG_OUTPUT_STATUS_MESSAGE, "VM count is 0"); } + //code changes for getting vnfcs hirearchy + populateVnfcsDetailsinContext(vnfcHierarchyMap,ctx); + //vnf,vnfcCount + ctx.setAttribute("VNF.VNFCCount", + Integer.toString(vnfcHierarchyMap.size())); + //code changes for getting vnfcs hirearchy ctx.setAttribute("getVnfHierarchy_result", "SUCCESS"); //Finally set all attributes to ctx for (String attribute : vnfHierarchyMap.keySet()) { @@ -279,9 +305,9 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { } } else { ctx.setAttribute("getVnfHierarchy_result", "FAILURE"); - ctx.setAttribute(Constants.DG_OUTPUT_STATUS_MESSAGE, "Error Retrieving VNFC hierarchy"); + ctx.setAttribute(DG_OUTPUT_STATUS_MESSAGE, "Error Retrieving VNFC hierarchy"); logger.error("Failed in getVnfHierarchy, Error retrieving VNF details. Error message: " + ctx - .getAttribute("getResource_result")); + .getAttribute("getResource_result")); logger.warn("Incorrect or Incomplete VNF Hierarchy"); throw new APPCException("Error Retrieving VNFC hierarchy"); } @@ -289,4 +315,45 @@ public class ExecuteNodeActionImpl implements ExecuteNodeAction { logger.debug("exiting getVnfHierarchy======"); } } + + private void populateVnfcsDetailsinContext(Map<String, Set<String>> vnfcHierarchyMap, SvcLogicContext ctx) throws APPCException { +// int vnfcCount = vnfcHierarchyMap.size(); + SvcLogicContext vnfcCtx = new SvcLogicContext(); + int vnfcCounter = 0; + for (String vnfcName : vnfcHierarchyMap.keySet()) { + String vnfcRetrivalKey = "vnfc-name = '" + vnfcName + "'"; + Map<String, String> paramsVnfc = new HashMap<String, String>(); + paramsVnfc.put("resourceType", "vnfc"); + paramsVnfc.put("prefix", "vnfcRetrived"); + paramsVnfc.put("resourceKey", vnfcRetrivalKey); + + logger.debug("Retrieving VM details from A&AI"); + getResource(paramsVnfc, vnfcCtx); + if (vnfcCtx.getAttribute("getResource_result").equals("SUCCESS")) { + if (logger.isDebugEnabled()) { + logger.debug("Parsing VNFC details from VM relations"); + } + //putting required values in the map + //vnf.vnfc[vnfcIndex].type + ctx.setAttribute("VNF.VNFC[" + vnfcCounter + "].TYPE", + vnfcCtx.getAttribute("vnfcRetrived.vnfc-type")); + + // vnf.vnfc[vnfcIndex].name + ctx.setAttribute("VNF.VNFC[" + vnfcCounter + "].NAME", + vnfcCtx.getAttribute("vnfcRetrived.vnfc-name")); + + //vnf.vnfc[vnfcIndex].vmCount + Set<String> vmSet = vnfcHierarchyMap.get(vnfcName); + String vmCountinVnfcs = Integer.toString(vmSet.size()); + ctx.setAttribute("VNF.VNFC[" + vnfcCounter + "].VM_COUNT", + vmCountinVnfcs); + int vmCount =0; + for(String vmURL:vmSet){ + ctx.setAttribute("VNF.VNFC[" + vnfcCounter + "].VM[" + vmCount++ + "].URL",vmURL); + } + + } + vnfcCounter++; + } + } } diff --git a/appc-dg-util/appc-dg-util-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/appc-dg-util/appc-dg-util-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml index 547b8cdfb..0d4c96df8 100644 --- a/appc-dg-util/appc-dg-util-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml +++ b/appc-dg-util/appc-dg-util-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -41,7 +41,7 @@ <property name="eventSender" ref="eventSenderServiceRef"/> </bean--> - <!--reference interface="org.openecomp.appc.adapter.dmaap.EventSender" id="eventSenderServiceRef"/--> + <!--reference interface="org.openecomp.appc.adapter.messaging.dmaap.EventSender" id="eventSenderServiceRef"/--> <!--service id = "DCAEReporterPluginService" interface="org.openecomp.appc.dg.util.DCAEReporterPlugin" ref="DCAEReporterPlugin"/--> <!--bean id="NetconfClientPlugin" class="org.openecomp.appc.dg.util.impl.NetconfClientPluginImpl" scope="prototype" ></bean--> diff --git a/appc-dg-util/appc-dg-util-features/src/main/resources/features.xml b/appc-dg-util/appc-dg-util-features/src/main/resources/features.xml index 7c641661a..044c0c9a6 100644 --- a/appc-dg-util/appc-dg-util-features/src/main/resources/features.xml +++ b/appc-dg-util/appc-dg-util-features/src/main/resources/features.xml @@ -31,6 +31,7 @@ <!--<feature version="${project.version}">appc-aai-adapter</feature>--> <!-- Most applications will have a dependency on the ODL MD-SAL Broker --> <feature version="${broker-mdsal.version}">odl-mdsal-broker</feature> + <bundle dependency="true">mvn:org.openecomp.appc/appc-common/${project.version}</bundle> <bundle>mvn:org.openecomp.appc/appc-dg-util-bundle/${project.version}</bundle> </feature> |