Use getEnitity API for ingestion of TOSCA PNF 60/82160/1
authorAria, Lalena (la505a) <la505a@att.com>
Wed, 13 Mar 2019 18:18:14 +0000 (18:18 +0000)
committerAria, Lalena (la505a) <lalena.aria@att.com>
Wed, 13 Mar 2019 18:26:33 +0000 (18:26 +0000)
Changes made:
Update SdncUebCallback.processToscaCsar to ingest PNF entities.
Add methods in SdncBaseModel.java to support processing of IEntityDetails.
Add SdncPNFModel.java to populate VF_MODEL with PNF data.
Add SdncPNFModelTest.java junit coverage.

Change-Id: I9a82a94e8198d629395a60779f74178e4f8f065e
Issue-ID: SDNC-675
Signed-off-by: Aria, Lalena (la505a) <lalena.aria@att.com>
ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncBaseModel.java
ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncPNFModel.java [new file with mode: 0644]
ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebCallback.java
ueb-listener/src/test/java/org/onap/ccsdk/sli/northbound/uebclient/SdncPNFModelTest.java [new file with mode: 0644]

index 37b100c..4824d9f 100644 (file)
@@ -31,6 +31,7 @@ import java.util.Map;
 
 import javax.sql.rowset.CachedRowSet;
 
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
 import org.onap.sdc.toscaparser.api.CapabilityAssignment;
@@ -70,6 +71,7 @@ public class SdncBaseModel {
        protected static DBResourceManager jdbcDataSource = null;
        protected static SdncUebConfiguration config = null;
        protected NodeTemplate nodeTemplate = null;
+       protected IEntityDetails entityDetails = null;
        
        public SdncBaseModel(DBResourceManager jdbcDataSource) {
                this.jdbcDataSource = jdbcDataSource;           
@@ -89,6 +91,14 @@ public class SdncBaseModel {
                this.jdbcDataSource = jdbcDataSource;           
                this.config = config;
        }
+       
+       public SdncBaseModel(ISdcCsarHelper sdcCsarHelper, IEntityDetails entityDetails, DBResourceManager jdbcDataSource, SdncUebConfiguration config) throws IOException {
+               this (sdcCsarHelper, entityDetails);
+               this.sdcCsarHelper = sdcCsarHelper;
+               this.entityDetails = entityDetails;
+               this.jdbcDataSource = jdbcDataSource;           
+               this.config = config;
+       }
 
        public SdncBaseModel(ISdcCsarHelper sdcCsarHelper, Metadata metadata) {
 
@@ -128,6 +138,23 @@ public class SdncBaseModel {
                
        }
        
+       public SdncBaseModel(ISdcCsarHelper sdcCsarHelper, IEntityDetails entityDetails) {
+
+               params = new HashMap<String, String>();
+               attributeValueParams = new HashMap<String, String>();
+               this.sdcCsarHelper = sdcCsarHelper;
+               this.entityDetails = entityDetails;
+
+               // extract common nodeTemplate metadata
+               Metadata metadata = entityDetails.getMetadata();
+               customizationUUID = extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
+               invariantUUID = extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID);
+               addParameter(PARAM_INVARIANT_UUID_KEY, invariantUUID);
+               UUID = extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_UUID);
+               addParameter(PARAM_UUID_KEY, UUID);
+               addParameter(PARAM_VERSION_KEY, extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VERSION));
+       }
+       
        public SdncBaseModel(ISdcCsarHelper sdcCsarHelper, Group group, SdncUebConfiguration config, DBResourceManager jdbcDataSource) throws IOException {
                this (sdcCsarHelper, group);
                this.sdcCsarHelper = sdcCsarHelper;
@@ -662,6 +689,22 @@ public class SdncBaseModel {
                }
        }
 
+       protected String extractValue (IEntityDetails  entityDetails, String name) {
+               String value = null; 
+               if (entityDetails.getProperties().containsKey(name)) {
+                       Property property = entityDetails.getProperties().get(name);
+                       if (property != null && property.getValue() != null) {
+                               value = property.getValue().toString();
+                       }
+               }
+               
+               if (value != null) {
+                       return value;
+               } else {
+                       return "";
+               }
+       }
+
        protected String extractGetInputValue (Group group, NodeTemplate nodeTemplate, String name) {
 
                String value = sdcCsarHelper.getNodeTemplatePropertyLeafValue(nodeTemplate, extractGetInputName (group, name));
@@ -761,6 +804,22 @@ public class SdncBaseModel {
                }
        }
 
+       protected String extractBooleanValue (IEntityDetails entityDetails, String name) {
+               String value = null; 
+               if (entityDetails.getProperties().containsKey(name)) {
+                       Property property = entityDetails.getProperties().get(name);
+                       if (property != null && property.getValue() != null) {
+                               value = property.getValue().toString();
+                       }
+               }
+               
+               if (value != null && !value.isEmpty()) {
+                       return value.contains("true") ? "Y" : "N";
+               } else {
+                       return "";
+               }
+       }
+
        public static String extractBooleanValue (ISdcCsarHelper sdcCsarHelper, NodeTemplate nodeTemplate, String name) {
                String value = sdcCsarHelper.getNodeTemplatePropertyLeafValue(nodeTemplate, name);
                if (value != null && !value.isEmpty()) {
diff --git a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncPNFModel.java b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncPNFModel.java
new file mode 100644 (file)
index 0000000..296b138
--- /dev/null
@@ -0,0 +1,142 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights
+ *                                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.ccsdk.sli.northbound.uebclient;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SdncPNFModel extends SdncBaseModel {
+       
+       private static final Logger LOG = LoggerFactory
+                       .getLogger(SdncVFModel.class);
+
+       private String vendor = null;
+       private String vendorModelDescription = null;
+       private String nfNamingCode = null;
+       private String serviceUUID = null;
+       private String serviceInvariantUUID = null;
+
+       public SdncPNFModel(ISdcCsarHelper sdcCsarHelper, IEntityDetails entityDetails, DBResourceManager jdbcDataSource, SdncUebConfiguration config) throws IOException {
+
+               super(sdcCsarHelper, entityDetails, jdbcDataSource, config);
+
+               // extract metadata
+               Metadata metadata = entityDetails.getMetadata();
+               addParameter("name", extractValue(metadata, SdcPropertyNames.PROPERTY_NAME_NAME));
+               vendor = extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_RESOURCEVENDOR);
+               addParameter("vendor", vendor); 
+               vendorModelDescription = extractValue (metadata, "description");
+               addParameter("vendor_version", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_RESOURCEVENDORRELEASE)); 
+               
+               // extract properties
+               addParameter("ecomp_generated_naming", extractBooleanValue(entityDetails, "nf_naming#ecomp_generated_naming"));
+               addParameter("naming_policy", extractValue(entityDetails, "nf_naming#naming_policy"));
+               addParameter("nf_type", extractValue(entityDetails, SdcPropertyNames.PROPERTY_NAME_NFTYPE));
+               addParameter("nf_role", extractValue(entityDetails, SdcPropertyNames.PROPERTY_NAME_NFROLE));
+               nfNamingCode = extractValue(entityDetails, "nf_naming_code");
+               addParameter("nf_code", nfNamingCode);
+               addParameter("nf_function", extractValue(entityDetails, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION));
+               addIntParameter("avail_zone_max_count", extractValue(entityDetails, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONEMAXCOUNT));
+               addParameter("sdnc_model_name", extractValue(entityDetails, "sdnc_model_name"));
+               addParameter("sdnc_model_version", extractValue(entityDetails, "sdnc_model_version"));
+               addParameter("sdnc_artifact_name", extractValue(entityDetails, "sdnc_artifact_name"));
+               
+       }
+       
+       public void insertData() throws IOException {
+               
+               insertPNFModelData();
+       }
+       
+       private void insertPNFModelData () throws IOException {
+
+               try {
+                       cleanUpExistingToscaData("VF_MODEL", "customization_uuid", getCustomizationUUID()) ;
+                       cleanUpExistingToscaData("SERVICE_MODEL_TO_VF_MODEL_MAPPING", "service_uuid", serviceUUID, "vf_customization_uuid", getCustomizationUUID());
+                       
+                       // insert into VF_MODEL/ATTRIBUTE_VALUE_PAIR and SERVICE_MODEL_TO_VF_MODEL_MAPPING
+                       LOG.info("Call insertToscaData for VF_MODEL where customization_uuid = " + getCustomizationUUID());
+                       insertToscaData(buildSql("VF_MODEL", model_yaml), null);
+                       //insertRelevantAttributeData();
+                       
+                       Map<String, String> mappingParams = new HashMap<String, String>();
+                       addParameter("service_invariant_uuid", serviceInvariantUUID, mappingParams);
+                       addParameter("vf_uuid", getUUID(), mappingParams);
+                       addParameter("vf_customization_uuid", getCustomizationUUIDNoQuotes(), mappingParams);
+                       insertToscaData(buildSql("SERVICE_MODEL_TO_VF_MODEL_MAPPING", "service_uuid", serviceUUID, model_yaml, mappingParams), null);
+
+               } catch (IOException e) {
+                       LOG.error("Could not insert Tosca CSAR data into the VF_MODEL table");
+                       throw new IOException (e);
+               }
+               
+       }
+
+       public String getVendor() {
+               return vendor;
+       }
+
+       public void setVendor(String vendor) {
+               this.vendor = vendor;
+       }
+
+       public String getVendorModelDescription() {
+               return vendorModelDescription;
+       }
+
+       public void setVendorModelDescription(String vendorModelDescription) {
+               this.vendorModelDescription = vendorModelDescription;
+       }
+
+       public String getNfNamingCode() {
+               return nfNamingCode;
+       }
+
+       public void setNfNamingCode(String nfNamingCode) {
+               this.nfNamingCode = nfNamingCode;
+       }
+       
+       public String getServiceUUID() {
+               return serviceUUID;
+       }
+       public void setServiceUUID(String serviceUUID) {
+               this.serviceUUID = serviceUUID;
+       }
+
+       public String getServiceInvariantUUID() {
+               return serviceInvariantUUID;
+       }
+
+       public void setServiceInvariantUUID(String serviceInvariantUUID) {
+               this.serviceInvariantUUID = serviceInvariantUUID;
+       }
+
+}
index ba644f3..4d9dbda 100644 (file)
@@ -70,7 +70,11 @@ import org.onap.sdc.api.notification.INotificationData;
 import org.onap.sdc.api.notification.IResourceInstance;
 import org.onap.sdc.api.results.IDistributionClientDownloadResult;
 import org.onap.sdc.api.results.IDistributionClientResult;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.tosca.parser.elements.queries.EntityQuery;
+import org.onap.sdc.tosca.parser.elements.queries.TopologyTemplateQuery;
+import org.onap.sdc.tosca.parser.enums.SdcTypes;
 import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
 import org.onap.sdc.toscaparser.api.NodeTemplate;
@@ -751,6 +755,28 @@ public class SdncUebCallback implements INotificationCallback {
 
                } // VF loop
                
+
+               // Ingest Network (PNF) Data - Dublin/1906
+               EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.PNF).build();
+               TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE).build();
+               List<IEntityDetails> pnfs = sdcCsarHelper.getEntity(entityQuery, topologyTemplateQuery, false);
+               if (!pnfs.isEmpty()) {
+                       
+                       for (IEntityDetails pnf :  pnfs) {
+                               
+                               try {
+                                       SdncPNFModel pnfModel = new SdncPNFModel(sdcCsarHelper, pnf, jdbcDataSource, config);
+                                       pnfModel.setServiceUUID(serviceModel.getServiceUUID());
+                                       pnfModel.setServiceInvariantUUID(serviceModel.getServiceInvariantUUID());
+                                       pnfModel.insertData();
+                                       
+                               } catch (IOException e) {
+                                       deployStatus = DistributionStatusEnum.DEPLOY_ERROR;
+                               }       
+                       } // PNF loop   
+               }
+               
                DistributionStatusEnum complexToscaDeployStatus = customProcessComplexTosca(sdcCsarHelper, config, jdbcDataSource, serviceModel,
                                data, svcName, resourceName, artifact, archiveDir);
                if (complexToscaDeployStatus == DistributionStatusEnum.DEPLOY_ERROR) {
diff --git a/ueb-listener/src/test/java/org/onap/ccsdk/sli/northbound/uebclient/SdncPNFModelTest.java b/ueb-listener/src/test/java/org/onap/ccsdk/sli/northbound/uebclient/SdncPNFModelTest.java
new file mode 100644 (file)
index 0000000..d4c06b0
--- /dev/null
@@ -0,0 +1,102 @@
+package org.onap.ccsdk.sli.northbound.uebclient;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.onap.sdc.toscaparser.api.Property;
+
+import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
+ public class SdncPNFModelTest {
+       SdncPNFModel testSdncPNFModel = null;
+        
+       @Before 
+       public void setUp() throws Exception {
+               ISdcCsarHelper mockCsarHelper = mock(ISdcCsarHelper.class);
+               IEntityDetails mockEntityDetails = mock(IEntityDetails.class);
+               Metadata mockMetadata = mock(Metadata.class);
+               Property mockProperty = mock(Property.class);
+               Map<String, Property> mockProperties = new HashMap<String, Property>();
+               DBResourceManager mockDBResourceManager = mock(DBResourceManager.class);
+               SdncUebConfiguration mockSdncUebConfiguration = mock(SdncUebConfiguration.class);
+               
+               when(mockEntityDetails.getMetadata()).thenReturn(mockMetadata);
+               when(mockCsarHelper.getMetadataPropertyValue(mockMetadata, "customizationUUID")).thenReturn("aaaa-bbbb-cccc-dddd");
+               mockProperty.setValue("test-nf-naming-code");
+               when(mockProperties.get("nf_naming_code")).thenReturn(mockProperty);
+               
+               try {
+                       testSdncPNFModel = new SdncPNFModel(mockCsarHelper,mockEntityDetails,mockDBResourceManager,mockSdncUebConfiguration);
+                       testSdncPNFModel.setServiceUUID("bbbb-cccc-dddd-eeee"); 
+                       testSdncPNFModel.setServiceInvariantUUID("cccc-dddd-eeee-ffff"); 
+                       testSdncPNFModel.setVendor("Cisco"); 
+                       testSdncPNFModel.setVendorModelDescription("Cisco Equipment Model"); 
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+
+               assertNotNull(testSdncPNFModel);
+       }
+       @Test 
+       public void testSetGetVendor() {
+               String newVendorModel = "new-vendor-model";
+               testSdncPNFModel.setVendor(newVendorModel); 
+               String result = testSdncPNFModel.getVendor(); 
+               assertEquals(result, newVendorModel); 
+       } 
+       
+       @Test 
+       public void testSetGetVendorModelDescription() { 
+               String newVendorModelDescription = "new-vendor-model-description";
+               testSdncPNFModel.setVendorModelDescription(newVendorModelDescription); 
+               String result = testSdncPNFModel.getVendorModelDescription(); 
+               assertEquals(result, newVendorModelDescription); 
+       }
+       
+       @Test 
+       public void testSetGetNfNamingCode() { 
+               String newNfNamingCode = "new-nf-naming-code";
+               testSdncPNFModel.setNfNamingCode(newNfNamingCode); 
+               String result = testSdncPNFModel.getNfNamingCode(); 
+               assertEquals(result, newNfNamingCode); 
+       }
+       
+       @Test 
+       public void testSetGetServiceUUID() { 
+               String newServiceUuid = "cccc-dddd-eeee-ffff";
+               testSdncPNFModel.setServiceUUID(newServiceUuid);
+               String result = testSdncPNFModel.getServiceUUID(); 
+               assertEquals(newServiceUuid, result); 
+       } 
+       @Test 
+       public void testSetGetServiceInvariantUUID() { 
+               String newServiceInvariantUuid = "dddd-eeee-ffff-eeee";
+               testSdncPNFModel.setServiceInvariantUUID(newServiceInvariantUuid);
+               String result = testSdncPNFModel.getServiceInvariantUUID(); 
+               assertEquals(result, newServiceInvariantUuid); 
+       } 
+
+       @Test 
+       public void testInsertData() { 
+               try {
+                       testSdncPNFModel.insertData();
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } 
+       }
+       
+ }