From f46e824fe4730738cc422e87facc5c80ffa44b10 Mon Sep 17 00:00:00 2001 From: Rupali Shirode Date: Mon, 28 Aug 2023 18:39:15 +0530 Subject: [SO] Macro flow for PNF-Modify operation Macro flow for PNF-Modify operation Issue-ID: SO-4111 Change-Id: Ic51cbee5fe59f3aafb2ec41773504b183763d9ec Signed-off-by: Rupali Shirode --- .../infrastructure/aai/tasks/AAIFlagTasks.java | 38 ++++++++++++++++++++++ .../workflow/tasks/WorkflowAction.java | 7 ++++ .../onap/so/client/aai/mapper/AAIObjectMapper.java | 1 + .../so/client/orchestration/AAIPnfResources.java | 33 ++++++++++++++++++- 4 files changed, 78 insertions(+), 1 deletion(-) (limited to 'bpmn/so-bpmn-tasks/src') diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java index 997d20036f..10bb720844 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIFlagTasks.java @@ -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; @@ -40,6 +42,9 @@ public class AAIFlagTasks { @Autowired private AAIVnfResources aaiVnfResources; + + @Autowired + private AAIPnfResources aaiPnfResources; @Autowired private ExceptionBuilder exceptionUtil; @Autowired @@ -74,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 { diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java index 82f44bc802..3e4e2d16a3 100755 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java @@ -308,6 +308,9 @@ public class WorkflowAction { } else if (isPNFDelete(resourceType, requestAction)) { pnfEBBLoader.traverseAAIPnf(execution, resourceList, workflowResourceIds.getServiceInstanceId(), resourceId, aaiResourceIds); + } else if (isPNFUpdate(resourceType, requestAction)) { + pnfEBBLoader.traverseAAIPnf(execution, resourceList, workflowResourceIds.getServiceInstanceId(), resourceId, + aaiResourceIds); } else if (resourceType == WorkflowType.VNF && (DELETE_INSTANCE.equalsIgnoreCase(requestAction) || REPLACEINSTANCE.equalsIgnoreCase(requestAction) || (RECREATE_INSTANCE.equalsIgnoreCase(requestAction)))) { @@ -410,6 +413,10 @@ public class WorkflowAction { return resourceType == WorkflowType.PNF && DELETE_INSTANCE.equalsIgnoreCase(requestAction); } + private boolean isPNFUpdate(WorkflowType resourceType, String requestAction) { + return resourceType == WorkflowType.PNF && UPDATE_INSTANCE.equalsIgnoreCase(requestAction); + } + private void setExecutionVariables(DelegateExecution execution, List flowsToExecute, List flowNames) { execution.setVariable("flowNames", flowNames); diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/aai/mapper/AAIObjectMapper.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/aai/mapper/AAIObjectMapper.java index 4664ffcc37..9974e6c20d 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/aai/mapper/AAIObjectMapper.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/aai/mapper/AAIObjectMapper.java @@ -114,6 +114,7 @@ public class AAIObjectMapper { map().setModelInvariantId(source.getModelInfoPnf().getModelInvariantUuid()); map().setModelVersionId(source.getModelInfoPnf().getModelUuid()); map().setNfType(source.getModelInfoPnf().getNfType()); + map().setInMaint(source.isInMaint()); } }); } diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIPnfResources.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIPnfResources.java index acfca5d55a..d042fd68d4 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIPnfResources.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIPnfResources.java @@ -62,8 +62,15 @@ public class AAIPnfResources { public void updateOrchestrationStatusPnf(Pnf pnf, OrchestrationStatus orchestrationStatus) { AAIResourceUri pnfURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(pnf.getPnfName())); - Pnf pnfCopy = pnf.shallowCopyId(); + if (orchestrationStatus.equals(OrchestrationStatus.REGISTER) + || orchestrationStatus.equals(OrchestrationStatus.REGISTERED)) { + pnf.setInMaint(true); + pnfCopy.setInMaint(true); + } else { + pnf.setInMaint(false); + pnfCopy.setInMaint(false); + } pnf.setOrchestrationStatus(orchestrationStatus); pnfCopy.setOrchestrationStatus(orchestrationStatus); @@ -93,6 +100,30 @@ public class AAIPnfResources { injectionHelper.getAaiClient().delete(pnfURI); } + public void updateObjectPnf(Pnf pnf) { + Optional pnfFromAai = + injectionHelper.getAaiClient().get(org.onap.aai.domain.yang.Pnf.class, + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(pnf.getPnfName()))); + logger.info("***in updateObjectPnf getPnfName====> {} ", pnfFromAai.get().getPnfName()); + injectionHelper.getAaiClient().update( + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(pnf.getPnfName())), + aaiObjectMapper.mapPnf((pnf))); + } + + /** + * Check inMaint flag value of PNF from AAI using pnfName + * + * @param pnfName - pnf-id required pnf + * @return inMaint flag value + */ + public boolean checkInMaintFlag(String pnfName) { + org.onap.aai.domain.yang.Pnf pnf = injectionHelper.getAaiClient() + .get(org.onap.aai.domain.yang.Pnf.class, + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(pnfName))) + .orElse(new org.onap.aai.domain.yang.Pnf()); + return pnf.isInMaint(); + } + private void updatePnfFields(Pnf pnf, org.onap.aai.domain.yang.Pnf pnfFromAai) { if (pnf.getModelInfoPnf() != null && StringUtils.isNotBlank(pnf.getModelInfoPnf().getModelCustomizationUuid())) { -- cgit 1.2.3-korg