[SO] Macro flow for PNF-Modify operation
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / aai / tasks / AAIFlagTasks.java
index 1add5e6..10bb720 100644 (file)
@@ -24,9 +24,11 @@ package org.onap.so.bpmn.infrastructure.aai.tasks;
 
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf;
 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
 import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.client.orchestration.AAIPnfResources;
 import org.onap.so.client.orchestration.AAIVnfResources;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,9 +37,14 @@ import org.springframework.stereotype.Component;
 
 @Component
 public class AAIFlagTasks {
+    private static final Logger logger = LoggerFactory.getLogger(AAIFlagTasks.class);
+
 
     @Autowired
     private AAIVnfResources aaiVnfResources;
+
+    @Autowired
+    private AAIPnfResources aaiPnfResources;
     @Autowired
     private ExceptionBuilder exceptionUtil;
     @Autowired
@@ -72,6 +79,39 @@ public class AAIFlagTasks {
         }
     }
 
+    public void checkPnfInMaintFlag(BuildingBlockExecution execution) {
+        boolean inMaint = false;
+        try {
+            Pnf pnf = extractPojosForBB.extractByKey(execution, ResourceKey.PNF);
+            String pnfName = pnf.getPnfName();
+            inMaint = aaiPnfResources.checkInMaintFlag(pnfName);
+        } catch (Exception ex) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+        }
+        if (inMaint) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "PNF is already in maintenance in A&AI");
+        }
+    }
+
+    public void modifyPnfInMaintFlag(BuildingBlockExecution execution, boolean inMaint) {
+        try {
+            Pnf pnf = extractPojosForBB.extractByKey(execution, ResourceKey.PNF);
+            logger.info("In modifyPnfInMaintFlag pnfname: {}", pnf.getPnfName());
+            Pnf copiedPnf = pnf.shallowCopyId();
+            copiedPnf.setPnfName(pnf.getPnfName());
+
+            copiedPnf.setInMaint(inMaint);
+            pnf.setInMaint(inMaint);
+            logger.info("In modifyPnfInMaintFlag if block pnfInMaint: {}, copiedPnfInMaint: {}", pnf.isInMaint(),
+                    copiedPnf.isInMaint());
+            aaiPnfResources.updateObjectPnf(copiedPnf);
+
+        } catch (Exception ex) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+        }
+    }
+
+
     public void checkVnfClosedLoopDisabledFlag(BuildingBlockExecution execution) {
         boolean isClosedLoopDisabled = false;
         try {
@@ -107,7 +147,7 @@ public class AAIFlagTasks {
             String vnfId = vnf.getVnfId();
             inPserversLocked = aaiVnfResources.checkVnfPserversLockedFlag(vnfId);
         } catch (Exception ex) {
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+            logger.warn("Exception on checking pservers: " + ex.getMessage());
         }
         if (inPserversLocked) {
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "VNF PServers in Locked in A&AI");