Update Rainy day handling to be more robust 61/87461/2
authorSmokowski, Steven <steve.smokowski@att.com>
Fri, 10 May 2019 14:01:06 +0000 (10:01 -0400)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Fri, 10 May 2019 14:26:10 +0000 (10:26 -0400)
Clean up unused tests and code, update UT
Fix issue with junits and conflicts on id field
Update Rainy day handling to be more robust

Change-Id: I2ce9a1288457017613dece19357e44b8566867c5
Issue-ID: SO-1866
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.7.2__Add_Error_Message_Rainy_Day.sql [new file with mode: 0644]
adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java
adapters/mso-catalog-db-adapter/src/test/resources/db/migration/afterMigrate.sql
adapters/mso-catalog-db-adapter/src/test/resources/logback-test.xml
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildingBlockRainyDay.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/ExecuteBuildlingBlockRainyDayTest.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/macro/RainyDayHandlerStatus.java
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/RainyDayHandlerStatusRepository.java

diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.7.2__Add_Error_Message_Rainy_Day.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.7.2__Add_Error_Message_Rainy_Day.sql
new file mode 100644 (file)
index 0000000..cf54d55
--- /dev/null
@@ -0,0 +1,2 @@
+use catalogdb;
+ALTER TABLE rainy_day_handler_macro ADD COLUMN IF NOT EXISTS REG_EX_ERROR_MESSAGE varchar(300) DEFAULT NULL;
\ No newline at end of file
index 4127d07..31cb124 100644 (file)
@@ -79,20 +79,12 @@ public class CatalogDbClientTest extends CatalogDbAdapterBaseTest {
         client.wiremockPort = String.valueOf(port);
     }
 
-    @Test
-    public void testGetRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep() {
-        RainyDayHandlerStatus rainyDayHandlerStatus =
-                client.getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        "AssignServiceInstanceBB", "*", "*", "*", "*");
-        Assert.assertEquals("Rollback", rainyDayHandlerStatus.getPolicy());
-    }
 
     @Test
-    public void testGetRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStepRecordNotFound() {
-        RainyDayHandlerStatus rainyDayHandlerStatus =
-                client.getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        UUID.randomUUID().toString(), "*", "*", "*", "*");
-        Assert.assertNull(rainyDayHandlerStatus);
+    public void testGetRainyDayHandler_Regex() {
+        RainyDayHandlerStatus rainyDayHandlerStatus = client.getRainyDayHandlerStatus("AssignServiceInstanceBB", "*",
+                "*", "*", "*", "The Flavor ID (nd.c6r16d20) could not be found.");
+        Assert.assertEquals("Rollback", rainyDayHandlerStatus.getPolicy());
     }
 
     @Test
index 0229dd0..0e981f2 100644 (file)
@@ -183,7 +183,10 @@ VALUES      ( '9bcce658-9b37-11e8-98d0-529269fb1459',
               'toscaNodeType',
               'testVnfcCustomizationDescription',
               '2018-07-17 14:05:08');
-              
+
+INSERT INTO `rainy_day_handler_macro` (`FLOW_NAME`,`SERVICE_TYPE`,`VNF_TYPE`,`ERROR_CODE`,`WORK_STEP`,`POLICY`,`SECONDARY_POLICY`,`REG_EX_ERROR_MESSAGE`) 
+VALUES ('AssignServiceInstanceBB','*','*','*','*','Rollback','Rollback','The Flavor ID.*could not be found.');
+
 INSERT INTO `cvnfc_customization`
             (`id`,
              `model_customization_uuid`,
index 463be2e..97a4503 100644 (file)
@@ -1,45 +1,46 @@
 <configuration>
-       
-       <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-               <encoder>
+
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
       <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n</pattern>
     </encoder>
-       </appender>
-
-       <appender name="test"
-               class="org.onap.so.adapters.catalogdb.catalogrest.TestAppender" />
-
-       <logger name="com.att.ecomp.audit" level="info" additivity="false">
-               <appender-ref ref="STDOUT" />
-       </logger>
-
-       <logger name="com.att.eelf.metrics" level="info" additivity="false">
-               <appender-ref ref="STDOUT" />
-       </logger>
-
-       <logger name="com.att.eelf.error" level="WARN" additivity="false">
-               <appender-ref ref="STDOUT" />
-       </logger>
-
-       <logger name="org.onap" level="${so.log.level:-DEBUG}" additivity="false">
-               <appender-ref ref="STDOUT" />
-               <appender-ref ref="test" />
-       </logger>
-       
-       <logger name="org.flywaydb" level="DEBUG" additivity="false">
-        <appender-ref ref="STDOUT" />
-    </logger>
-       
-
-       <logger name="ch.vorburger" level="WARN" additivity="false">
-               <appender-ref ref="STDOUT" />
-       </logger>
-       
-
-       <root level="WARN">
-               <appender-ref ref="STDOUT" />
-               <appender-ref ref="test" />
-       </root>
+  </appender>
+
+  <appender name="test" class="org.onap.so.adapters.catalogdb.catalogrest.TestAppender" />
+
+  <logger name="com.att.ecomp.audit" level="info" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger>
+
+  <logger name="com.att.eelf.metrics" level="info" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger>
+
+  <logger name="com.att.eelf.error" level="WARN" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger>
+
+  <logger name="org.onap" level="${so.log.level:-DEBUG}" additivity="false">
+    <appender-ref ref="STDOUT" />
+    <appender-ref ref="test" />
+  </logger>
+
+  <logger name="org.flywaydb" level="DEBUG" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger>
+  <logger name="org.hibernate" level="DEBUG" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger>
+
+  <logger name="ch.vorburger" level="WARN" additivity="false">
+    <appender-ref ref="STDOUT" />
+  </logger>
+
+
+  <root level="WARN">
+    <appender-ref ref="STDOUT" />
+    <appender-ref ref="test" />
+  </root>
 
 
 </configuration>
\ No newline at end of file
index c8e296d..0a7a75c 100644 (file)
@@ -82,7 +82,6 @@ public class ExecuteBuildingBlockRainyDay {
             boolean aLaCarte = (boolean) execution.getVariable("aLaCarte");
             boolean suppressRollback = (boolean) execution.getVariable("suppressRollback");
             String handlingCode = "";
-
             WorkflowException workflowException = (WorkflowException) execution.getVariable("WorkflowException");
             try {
                 // Extract error data to be returned to WorkflowAction
@@ -97,6 +96,9 @@ public class ExecuteBuildingBlockRainyDay {
                 try {
                     serviceType = gBBInput.getCustomer().getServiceSubscription().getServiceInstances().get(0)
                             .getModelInfoServiceInstance().getServiceType();
+                    if (serviceType == null || serviceType.isEmpty()) {
+                        serviceType = ASTERISK;
+                    }
                 } catch (Exception ex) {
                     // keep default serviceType value
                 }
@@ -118,6 +120,7 @@ public class ExecuteBuildingBlockRainyDay {
                 } catch (Exception ex) {
                     // keep default errorCode value
                 }
+
                 try {
                     errorCode = "" + (String) execution.getVariable("WorkflowExceptionCode");
                 } catch (Exception ex) {
@@ -131,29 +134,19 @@ public class ExecuteBuildingBlockRainyDay {
                     // keep default workStep value
                 }
 
-                RainyDayHandlerStatus rainyDayHandlerStatus;
-                rainyDayHandlerStatus = catalogDbClient
-                        .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,
-                                serviceType, vnfType, errorCode, workStep);
-                if (rainyDayHandlerStatus == null) {
-                    rainyDayHandlerStatus = catalogDbClient
-                            .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,
-                                    ASTERISK, ASTERISK, errorCode, ASTERISK);
+                String errorMessage = ASTERISK;
+                try {
+                    errorMessage = workflowException.getErrorMessage();
+                } catch (Exception ex) {
+                    // keep default workStep value
                 }
 
+                RainyDayHandlerStatus rainyDayHandlerStatus;
+                rainyDayHandlerStatus = catalogDbClient.getRainyDayHandlerStatus(bbName, serviceType, vnfType,
+                        errorCode, workStep, errorMessage);
+
                 if (rainyDayHandlerStatus == null) {
-                    rainyDayHandlerStatus = catalogDbClient
-                            .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(bbName,
-                                    ASTERISK, ASTERISK, ASTERISK, ASTERISK);
-                    if (rainyDayHandlerStatus == null) {
-                        handlingCode = "Abort";
-                    } else {
-                        if (primaryPolicy) {
-                            handlingCode = rainyDayHandlerStatus.getPolicy();
-                        } else {
-                            handlingCode = rainyDayHandlerStatus.getSecondaryPolicy();
-                        }
-                    }
+                    handlingCode = "Abort";
                 } else {
                     if (primaryPolicy) {
                         handlingCode = rainyDayHandlerStatus.getPolicy();
index e8d597a..c5da3cb 100644 (file)
@@ -68,6 +68,8 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
         delegateExecution.setVariable("WorkflowException", new WorkflowException("", 7000, ""));
         delegateExecution.setVariable("buildingBlock", executeBuildingBlock);
         delegateExecution.setVariable("lookupKeyMap", lookupKeyMap);
+
+        delegateExecution.setVariable("WorkflowException", new WorkflowException("processKey", 7000, "errorMessage"));
     }
 
     @Test
@@ -101,12 +103,10 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
         rainyDayHandlerStatus.setPolicy("Rollback");
         rainyDayHandlerStatus.setWorkStep(ASTERISK);
 
-        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        "AssignServiceInstanceBB", "st1", "vnft1", "7000", "*");
+        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB",
+                "st1", "vnft1", "7000", "*", "errorMessage");
 
         executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true);
-
         assertEquals("Rollback", delegateExecution.getVariable("handlingCode"));
     }
 
@@ -126,15 +126,9 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
         rainyDayHandlerStatus.setPolicy("Rollback");
         rainyDayHandlerStatus.setWorkStep(ASTERISK);
 
-        doReturn(null).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        "AssignServiceInstanceBB", "st1", "vnft1", "7000", ASTERISK);
-        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        "AssignServiceInstanceBB", ASTERISK, ASTERISK, ASTERISK, ASTERISK);
-
+        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB",
+                "st1", "vnft1", ASTERISK, ASTERISK, "errorMessage");
         executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true);
-
         assertEquals("Rollback", delegateExecution.getVariable("handlingCode"));
         assertEquals(5, delegateExecution.getVariable("maxRetries"));
     }
@@ -145,9 +139,8 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
         serviceInstance.getModelInfoServiceInstance().setServiceType("st1");
         vnf.setVnfType("vnft1");
         delegateExecution.setVariable("aLaCarte", true);
-        doReturn(null).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(isA(String.class),
-                        isA(String.class), isA(String.class), isA(String.class), isA(String.class));
+        doReturn(null).when(MOCK_catalogDbClient).getRainyDayHandlerStatus(isA(String.class), isA(String.class),
+                isA(String.class), isA(String.class), isA(String.class), isA(String.class));
         delegateExecution.setVariable("suppressRollback", false);
 
         executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true);
@@ -157,9 +150,8 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
 
     @Test
     public void queryRainyDayTableExceptionTest() {
-        doThrow(RuntimeException.class).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(isA(String.class),
-                        isA(String.class), isA(String.class), isA(String.class), isA(String.class));
+        doThrow(RuntimeException.class).when(MOCK_catalogDbClient).getRainyDayHandlerStatus(isA(String.class),
+                isA(String.class), isA(String.class), isA(String.class), isA(String.class), isA(String.class));
         delegateExecution.setVariable("aLaCarte", true);
         executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true);
         delegateExecution.setVariable("suppressRollback", false);
@@ -184,9 +176,8 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
         rainyDayHandlerStatus.setWorkStep(ASTERISK);
         rainyDayHandlerStatus.setSecondaryPolicy("Abort");
 
-        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        "AssignServiceInstanceBB", "st1", "vnft1", "7000", "*");
+        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB",
+                "st1", "vnft1", "7000", "*", "errorMessage");
 
         executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, false);
 
@@ -210,9 +201,8 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
         rainyDayHandlerStatus.setWorkStep(ASTERISK);
         rainyDayHandlerStatus.setSecondaryPolicy("Abort");
 
-        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        "AssignServiceInstanceBB", "st1", "vnft1", "7000", "*");
+        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB",
+                "st1", "vnft1", "7000", "*", "errorMessage");
 
         executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true);
 
@@ -236,9 +226,8 @@ public class ExecuteBuildlingBlockRainyDayTest extends BaseTest {
         rainyDayHandlerStatus.setWorkStep(ASTERISK);
         rainyDayHandlerStatus.setSecondaryPolicy("Abort");
 
-        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient)
-                .getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-                        "AssignServiceInstanceBB", "st1", "vnft1", "7000", "*");
+        doReturn(rainyDayHandlerStatus).when(MOCK_catalogDbClient).getRainyDayHandlerStatus("AssignServiceInstanceBB",
+                "st1", "vnft1", "7000", "*", "errorMessage");
 
         executeBuildingBlockRainyDay.queryRainyDayTable(delegateExecution, true);
 
index a12edac..1882ad5 100644 (file)
@@ -62,6 +62,10 @@ public class RainyDayHandlerStatus implements Serializable {
     @Column(name = "ERROR_CODE")
     private String errorCode;
 
+    @BusinessKey
+    @Column(name = "REG_EX_ERROR_MESSAGE")
+    private String errorMessage;
+
     @BusinessKey
     @Column(name = "WORK_STEP")
     private String workStep;
@@ -77,8 +81,8 @@ public class RainyDayHandlerStatus implements Serializable {
     public String toString() {
         return new ToStringBuilder(this).append("id", id).append("flowName", flowName)
                 .append("serviceType", serviceType).append("vnfType", vnfType).append("errorCode", errorCode)
-                .append("workStep", workStep).append("policy", policy).append("secondaryPolicy", secondaryPolicy)
-                .toString();
+                .append("errorMessage", errorMessage).append("workStep", workStep).append("policy", policy)
+                .append("secondaryPolicy", secondaryPolicy).toString();
     }
 
     @Override
@@ -161,4 +165,14 @@ public class RainyDayHandlerStatus implements Serializable {
     public void setSecondaryPolicy(String secondaryPolicy) {
         this.secondaryPolicy = secondaryPolicy;
     }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+
 }
index 1920046..a1f926e 100644 (file)
@@ -84,7 +84,6 @@ public class CatalogDbClient {
 
     private static final String CLOUD_SITE = "/cloudSite";
     private static final String CLOUDIFY_MANAGER = "/cloudifyManager";
-    private static final String CVNFC_CUSTOMZIATION = "/cvnfcCustomization";
     private static final String RAINY_DAY_HANDLER_MACRO = "/rainy_day_handler_macro";
     private static final String NORTHBOUND_REQUEST_REF_LOOKUP = "/northbound_request_ref_lookup";
     private static final String NETWORK_RESOURCE_CUSTOMIZATION = "/networkResourceCustomization";
@@ -124,7 +123,6 @@ public class CatalogDbClient {
     private static final String MODEL_NAME = "modelName";
     private static final String MODEL_VERSION = "modelVersion";
     private static final String MODEL_INVARIANT_UUID = "modelInvariantUUID";
-    private static final String MODEL_INSTANCE_NAME = "modelInstanceName";
     private static final String VNF_RESOURCE_MODEL_UUID = "vnfResourceModelUUID";
     private static final String NF_ROLE = "nfRole";
     private static final String VF_MODULE_MODEL_UUID = "vfModuleModelUUID";
@@ -137,6 +135,7 @@ public class CatalogDbClient {
     private static final String IS_ALACARTE = "isALaCarte";
     private static final String CLOUD_OWNER = "cloudOwner";
     private static final String FLOW_NAME = "flowName";
+    private static final String ERROR_MESSAGE = "errorMessage";
     private static final String SERVICE_TYPE = "serviceType";
     private static final String VNF_TYPE = "vnfType";
     private static final String ERROR_CODE = "errorCode";
@@ -184,8 +183,8 @@ public class CatalogDbClient {
             "/findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwner";
     private String findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType =
             "/findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType";
-    private String findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep =
-            "/findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep";
+
+    private static final String findRainyDayHandler = "/findRainyDayHandler";
     private String findByClliAndCloudVersion = "/findByClliAndCloudVersion";
     private String findServiceByServiceInstanceId = "/findServiceByServiceInstanceId";
     private String findPnfResourceCustomizationByModelUuid = "/findPnfResourceCustomizationByModelUuid";
@@ -196,10 +195,8 @@ public class CatalogDbClient {
     private String serviceURI;
     private String vfModuleURI;
     private String vnfResourceURI;
-    private String vfModuleCustomizationURI;
     private String networkCollectionResourceCustomizationURI;
     private String networkResourceCustomizationURI;
-    private String vnfResourceCustomizationURI;
     private String collectionNetworkResourceCustomizationURI;
     private String instanceGroupURI;
     private String cloudifyManagerURI;
@@ -258,8 +255,6 @@ public class CatalogDbClient {
 
     private final Client<CloudifyManager> cloudifyManagerClient;
 
-    private final Client<CvnfcCustomization> cvnfcCustomizationClient;
-
     private final Client<ControllerSelectionReference> controllerSelectionReferenceClient;
 
     private final Client<PnfResource> pnfResourceClient;
@@ -324,8 +319,6 @@ public class CatalogDbClient {
         findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType =
                 endpoint + NORTHBOUND_REQUEST_REF_LOOKUP + SEARCH
                         + findOneByActionAndRequestScopeAndIsAlacarteAndCloudOwnerAndServiceType;
-        findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep = endpoint + RAINY_DAY_HANDLER_MACRO + SEARCH
-                + findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep;
         findByClliAndCloudVersion = endpoint + CLOUD_SITE + SEARCH + findByClliAndCloudVersion;
 
         findPnfResourceCustomizationByModelUuid =
@@ -340,12 +333,9 @@ public class CatalogDbClient {
         serviceURI = endpoint + SERVICE + URI_SEPARATOR;
         vfModuleURI = endpoint + VFMODULE + URI_SEPARATOR;
         vnfResourceURI = endpoint + VNF_RESOURCE + URI_SEPARATOR;
-        vfModuleCustomizationURI = endpoint + VFMODULE_CUSTOMIZATION + URI_SEPARATOR;
         networkCollectionResourceCustomizationURI =
                 endpoint + NETWORK_COLLECTION_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
         networkResourceCustomizationURI = endpoint + NETWORK_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
-        cvnfcResourceCustomizationURI = endpoint + CVNFC_CUSTOMZIATION + URI_SEPARATOR;
-        vnfResourceCustomizationURI = endpoint + VNF_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
         collectionNetworkResourceCustomizationURI =
                 endpoint + COLLECTION_NETWORK_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
         instanceGroupURI = endpoint + INSTANCE_GROUP + URI_SEPARATOR;
@@ -400,7 +390,6 @@ public class CatalogDbClient {
         homingInstanceClient = clientFactory.create(HomingInstance.class);
         cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
         serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
-        cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
         controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
         externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
         pnfResourceClient = clientFactory.create(PnfResource.class);
@@ -450,7 +439,6 @@ public class CatalogDbClient {
         homingInstanceClient = clientFactory.create(HomingInstance.class);
         cloudifyManagerClient = clientFactory.create(CloudifyManager.class);
         serviceRecipeClient = clientFactory.create(ServiceRecipe.class);
-        cvnfcCustomizationClient = clientFactory.create(CvnfcCustomization.class);
         controllerSelectionReferenceClient = clientFactory.create(ControllerSelectionReference.class);
         externalServiceToInternalServiceClient = clientFactory.create(ExternalServiceToInternalService.class);
         pnfResourceClient = clientFactory.create(PnfResource.class);
@@ -645,13 +633,16 @@ public class CatalogDbClient {
                         .queryParam(SERVICE_TYPE, serviceType).build().toString()));
     }
 
-    public RainyDayHandlerStatus getRainyDayHandlerStatusByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(
-            String flowName, String serviceType, String vnfType, String errorCode, String workStep) {
+    public RainyDayHandlerStatus getRainyDayHandlerStatus(String flowName, String serviceType, String vnfType,
+            String errorCode, String workStep, String errorMessage) {
+        logger.debug(
+                "Get Rainy Day Status - Flow Name {}, Service Type: {} , vnfType {} , errorCode {}, workStep {}, errorMessage {}",
+                flowName, serviceType, vnfType, errorCode, workStep, errorMessage);
         return this.getSingleResource(rainyDayHandlerStatusClient,
-                getUri(UriBuilder.fromUri(findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep)
+                getUri(UriBuilder.fromUri(endpoint + RAINY_DAY_HANDLER_MACRO + SEARCH + findRainyDayHandler)
                         .queryParam(FLOW_NAME, flowName).queryParam(SERVICE_TYPE, serviceType)
                         .queryParam(VNF_TYPE, vnfType).queryParam(ERROR_CODE, errorCode).queryParam(WORK_STEP, workStep)
-                        .build().toString()));
+                        .queryParam(ERROR_MESSAGE, errorMessage).build().toString()));
     }
 
     public ServiceRecipe getFirstByServiceModelUUIDAndAction(String modelUUID, String action) {
index 2c61d91..91ae102 100644 (file)
@@ -22,10 +22,20 @@ package org.onap.so.db.catalog.data.repository;
 
 import org.onap.so.db.catalog.beans.macro.RainyDayHandlerStatus;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 
 @RepositoryRestResource(collectionResourceRel = "rainy_day_handler_macro", path = "rainy_day_handler_macro")
 public interface RainyDayHandlerStatusRepository extends JpaRepository<RainyDayHandlerStatus, Integer> {
-    RainyDayHandlerStatus findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep(String flowName,
-            String serviceType, String vnfType, String errorCode, String workStep);
+
+    @Query(value = "SELECT * FROM rainy_day_handler_macro WHERE (FLOW_NAME = :flowName ) AND SERVICE_TYPE IN (:serviceType ,'*') "
+            + " AND VNF_TYPE IN ( :vnfType , '*') AND ERROR_CODE IN (:errorCode  ,'*') AND WORK_STEP IN (:workStep , '*' ) "
+            + " AND ( :errorMessage REGEXP rainy_day_handler_macro.REG_EX_ERROR_MESSAGE OR REG_EX_ERROR_MESSAGE = '*') "
+            + " ORDER BY CASE WHEN 'asdf' REGEXP REG_EX_ERROR_MESSAGE THEN 0 WHEN ERROR_CODE != '*' THEN 1 WHEN VNF_TYPE != '*' THEN 2 WHEN SERVICE_TYPE != '*' THEN 3 ELSE 4 END LIMIT 1;",
+            nativeQuery = true)
+    RainyDayHandlerStatus findRainyDayHandler(@Param("flowName") String flowName,
+            @Param("serviceType") String serviceType, @Param("vnfType") String vnfType,
+            @Param("errorCode") String errorCode, @Param("workStep") String workStep,
+            @Param("errorMessage") String errorMessage);
 }