find workflow by pnf model uuid with CatalogDbClient 52/100052/1
authorUbuntu <sunshine.wang@huawei.com>
Tue, 7 Jan 2020 14:08:38 +0000 (22:08 +0800)
committerUbuntu <sunshine.wang@huawei.com>
Tue, 7 Jan 2020 14:15:15 +0000 (22:15 +0800)
Issue-ID: SO-2558

Signed-off-by: Yaoguang Wang <sunshine.wang@huawei.com>
Change-Id: I62d9ae70befdd870d217de64cca36fe04a69e96e

adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__WorkflowDesignerData.sql
mso-catalog-db/pom.xml
mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/WorkflowRepository.java
mso-catalog-db/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java

index 137f73c..42df1ad 100644 (file)
@@ -202,4 +202,6 @@ INSERT INTO `workflow` (`ARTIFACT_UUID`,`ARTIFACT_NAME`,`NAME`,`OPERATION_NAME`,
 VALUES
 ('9d45cd30-1a89-4993-87c1-6dd09c1696cf','VFModule-ScaleOut','VNF Scale Out','ScaleOut',1.0,'native static workflow to support ScaleOut','vfModule','native'),
 ('da6478e4-ea33-3346-ac12-ab121284a333','VnfInPlaceUpdate.bpmn','VnfInPlaceUpdate','inPlaceSoftwareUpdate',1.0,'native static workflow to support inPlaceSoftwareUpdate','vnf','native'),
-('fdb3ac48-70f9-4584-bd92-253bdbdec1e1','VnfConfigUpdate.bpmn','VnfConfigUpdate','applyConfigModify',1.0,'native static workflow to support applyConfigModify','vnf','native');
+('fdb3ac48-70f9-4584-bd92-253bdbdec1e1','VnfConfigUpdate.bpmn','VnfConfigUpdate','applyConfigModify',1.0,'native static workflow to support applyConfigModify','vnf','native'),
+('b2fd5627-55e4-4f4f-8064-9e6f443e9152','DummyPnfWorkflow','Dummy Pnf Workflow','DummyPnfWorkflow',1.0,'Dummy Pnf Workflow to test custom Pnf workflow','pnf','native');
+
index 08e9719..610ed25 100644 (file)
       <artifactId>asm-xml</artifactId>
       <version>6.1</version>
     </dependency>
+    <dependency>
+      <groupId>org.glassfish.jersey.core</groupId>
+      <artifactId>jersey-common</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <version>2.28.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.powermock</groupId>
+      <artifactId>powermock-api-mockito2</artifactId>
+      <version>2.0.4</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
index 8754673..7873d70 100644 (file)
@@ -133,6 +133,7 @@ public class CatalogDbClient {
     private static final String MODEL_VERSION = "modelVersion";
     private static final String MODEL_INVARIANT_UUID = "modelInvariantUUID";
     private static final String VNF_RESOURCE_MODEL_UUID = "vnfResourceModelUUID";
+    private static final String PNF_RESOURCE_MODEL_UUID = "pnfResourceModelUUID";
     private static final String NF_ROLE = "nfRole";
     private static final String VF_MODULE_MODEL_UUID = "vfModuleModelUUID";
     private static final String VNF_COMPONENT_TYPE = "vnfComponentType";
@@ -201,6 +202,7 @@ public class CatalogDbClient {
     private String findPnfResourceCustomizationByModelUuid = "/findPnfResourceCustomizationByModelUuid";
     private String findWorkflowByArtifactUUID = "/findByArtifactUUID";
     private String findWorkflowByModelUUID = "/findWorkflowByModelUUID";
+    private String findWorkflowByPnfModelUUID = "/findWorkflowByPnfModelUUID";
     private String findWorkflowBySource = "/findBySource";
     private String findVnfResourceCustomizationByModelUuid = "/findVnfResourceCustomizationByModelUuid";
 
@@ -338,6 +340,7 @@ public class CatalogDbClient {
 
         findWorkflowByArtifactUUID = endpoint + WORKFLOW + SEARCH + findWorkflowByArtifactUUID;
         findWorkflowByModelUUID = endpoint + WORKFLOW + SEARCH + findWorkflowByModelUUID;
+        findWorkflowByPnfModelUUID = endpoint + WORKFLOW + SEARCH + findWorkflowByPnfModelUUID;
         findWorkflowBySource = endpoint + WORKFLOW + SEARCH + findWorkflowBySource;
 
         findVnfResourceCustomizationByModelUuid =
@@ -998,6 +1001,11 @@ public class CatalogDbClient {
                 .queryParam(VNF_RESOURCE_MODEL_UUID, vnfResourceModelUUID).build().toString()));
     }
 
+    public List<Workflow> findWorkflowByPnfModelUUID(String pnfResourceModelUUID) {
+        return this.getMultipleResources(workflowClient, getUri(UriBuilder.fromUri(findWorkflowByPnfModelUUID)
+                .queryParam(PNF_RESOURCE_MODEL_UUID, pnfResourceModelUUID).build().toString()));
+    }
+
     public List<Workflow> findWorkflowBySource(String source) {
         return this.getMultipleResources(workflowClient,
                 getUri(UriBuilder.fromUri(findWorkflowBySource).queryParam(SOURCE, source).build().toString()));
index 8bcc60c..f1b3993 100644 (file)
@@ -39,10 +39,23 @@ public interface WorkflowRepository extends JpaRepository<Workflow, Integer> {
      * This operation is required by {@link org.onap.so.db.catalog.client.CatalogDbClient} to provide Workflow based on
      * model UUID without projection.
      *
-     * @param vnfResourceModelUUIDmodel UUID
+     * @param vnfResourceModelUUID UUID
      * @return List of Workflow
      */
     @Query(value = "select b.* from vnf_resource_to_workflow a join workflow b where a.WORKFLOW_ID = b.ID and a.VNF_RESOURCE_MODEL_UUID = ?1",
             nativeQuery = true)
     List<Workflow> findWorkflowByModelUUID(String vnfResourceModelUUID);
+
+    /**
+     * Used to fetch the @{link Workflow} by the Pnf Model UUID.
+     *
+     * This operation is required by {@link org.onap.so.db.catalog.client.CatalogDbClient} to provide Workflow based on
+     * pnf model UUID without projection.
+     *
+     * @param pnfResourceModelUUID UUID
+     * @return List of Workflow
+     */
+    @Query(value = "select b.* from pnf_resource_to_workflow a join workflow b where a.WORKFLOW_ID = b.ID and a.PNF_RESOURCE_MODEL_UUID = ?1",
+            nativeQuery = true)
+    List<Workflow> findWorkflowByPnfModelUUID(String pnfResourceModelUUID);
 }
index b82c17d..d87ed51 100644 (file)
 package org.onap.so.db.catalog.client;
 
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
 import java.util.ArrayList;
+import java.util.List;
 import javax.persistence.EntityNotFoundException;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.ArgumentMatchers;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
 import org.onap.so.db.catalog.beans.CvnfcCustomization;
 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
+import uk.co.blackpepper.bowman.Client;
+import org.onap.so.db.catalog.beans.Workflow;
 
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(CatalogDbClient.class)
 public class CatalogDbClientTest {
 
     private CatalogDbClient catalogDbClient;
 
+    private CatalogDbClient mockedCatalogDbClient;
+
     @Before
     public void init() {
         catalogDbClient = new CatalogDbClient();
+        mockedCatalogDbClient = PowerMockito.spy(catalogDbClient);
     }
 
     @Rule
@@ -171,4 +187,22 @@ public class CatalogDbClientTest {
         assertTrue(aCvnfc.getModelCustomizationUUID().equals("a123"));
     }
 
+    @Test
+    public final void testFindWorkflowByPnfModelUUID() throws Exception {
+        String pnfResourceModelUUID = "f2d1f2b2-88bb-49da-b716-36ae420ccbff";
+        Workflow wf = new Workflow();
+        wf.setArtifactUUID("b2fd5627-55e4-4f4f-8064-9e6f443e9152");
+        wf.setArtifactName("DummyPnfWorkflow");
+        wf.setVersion(1.0);
+        List<Workflow> wfList = new ArrayList<Workflow>();
+        wfList.add(wf);
+
+        PowerMockito.doReturn(wfList).when(mockedCatalogDbClient, "getMultipleResources",
+                ArgumentMatchers.<Client<Workflow>>any(), ArgumentMatchers.anyObject());
+        List<Workflow> results = mockedCatalogDbClient.findWorkflowByPnfModelUUID(pnfResourceModelUUID);
+        assertEquals(wf.getArtifactUUID(), results.get(0).getArtifactUUID());
+        assertEquals(wf.getArtifactName(), results.get(0).getArtifactName());
+        assertEquals(wf.getVersion(), results.get(0).getVersion());
+    }
+
 }