aboutsummaryrefslogtreecommitdiffstats
path: root/runtime-acm/src/main/java/org/onap/policy
diff options
context:
space:
mode:
Diffstat (limited to 'runtime-acm/src/main/java/org/onap/policy')
-rw-r--r--runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/commissioning/CommissioningProvider.java19
-rw-r--r--runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionAcHandler.java33
-rw-r--r--runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionHandler.java28
3 files changed, 51 insertions, 29 deletions
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/commissioning/CommissioningProvider.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/commissioning/CommissioningProvider.java
index d8eddf558..141207651 100644
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/commissioning/CommissioningProvider.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/commissioning/CommissioningProvider.java
@@ -30,6 +30,7 @@ import lombok.RequiredArgsConstructor;
import org.onap.policy.clamp.acm.runtime.supervision.comm.ParticipantPrimePublisher;
import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionDefinition;
+import org.onap.policy.clamp.models.acm.concepts.StateChangeResult;
import org.onap.policy.clamp.models.acm.messages.rest.commissioning.AcTypeStateUpdate;
import org.onap.policy.clamp.models.acm.messages.rest.commissioning.CommissioningResponse;
import org.onap.policy.clamp.models.acm.persistence.provider.AcDefinitionProvider;
@@ -180,7 +181,8 @@ public class CommissioningProvider {
throw new PfModelRuntimeException(Status.BAD_REQUEST, "There are instances, Priming/Depriming not allowed");
}
var acmDefinition = acDefinitionProvider.getAcDefinition(compositionId);
- var stateOrdered = acTypeStateResolver.resolve(acTypeStateUpdate.getPrimeOrder(), acmDefinition.getState());
+ var stateOrdered = acTypeStateResolver.resolve(acTypeStateUpdate.getPrimeOrder(), acmDefinition.getState(),
+ acmDefinition.getStateChangeResult());
switch (stateOrdered) {
case PRIME:
prime(acmDefinition);
@@ -197,21 +199,24 @@ public class CommissioningProvider {
}
private void prime(AutomationCompositionDefinition acmDefinition) {
- var prearation = participantPrimePublisher.prepareParticipantPriming(acmDefinition);
+ acmDefinition.setStateChangeResult(StateChangeResult.NO_ERROR);
+ var preparation = participantPrimePublisher.prepareParticipantPriming(acmDefinition);
acDefinitionProvider.updateAcDefinition(acmDefinition);
executor.execute(
- () -> participantPrimePublisher.sendPriming(prearation, acmDefinition.getCompositionId(), null));
+ () -> participantPrimePublisher.sendPriming(preparation, acmDefinition.getCompositionId(), null));
}
private void deprime(AutomationCompositionDefinition acmDefinition) {
- if (!AcTypeState.COMMISSIONED.equals(acmDefinition.getState())) {
- for (var elementState : acmDefinition.getElementStateMap().values()) {
+ acmDefinition.setStateChangeResult(StateChangeResult.NO_ERROR);
+ for (var elementState : acmDefinition.getElementStateMap().values()) {
+ if (elementState.getParticipantId() != null) {
elementState.setState(AcTypeState.DEPRIMING);
}
- acmDefinition.setState(AcTypeState.DEPRIMING);
- acDefinitionProvider.updateAcDefinition(acmDefinition);
}
+ acmDefinition.setState(AcTypeState.DEPRIMING);
+ acDefinitionProvider.updateAcDefinition(acmDefinition);
+
executor.execute(() -> participantPrimePublisher.sendDepriming(acmDefinition.getCompositionId()));
}
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionAcHandler.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionAcHandler.java
index e9f8d6ce5..536e3e246 100644
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionAcHandler.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionAcHandler.java
@@ -78,8 +78,8 @@ public class SupervisionAcHandler {
automationComposition.setStateChangeResult(StateChangeResult.NO_ERROR);
automationCompositionProvider.updateAutomationComposition(automationComposition);
var startPhase = ParticipantUtils.getFirstStartPhase(automationComposition, acDefinition.getServiceTemplate());
- automationCompositionDeployPublisher.send(automationComposition, acDefinition.getServiceTemplate(), startPhase,
- true);
+ automationCompositionDeployPublisher.send(automationComposition, acDefinition.getServiceTemplate(),
+ startPhase, true);
}
/**
@@ -207,24 +207,25 @@ public class SupervisionAcHandler {
}
private void setAcElementStateInDb(AutomationCompositionDeployAck automationCompositionAckMessage) {
- var automationComposition = automationCompositionProvider
+ var automationCompositionOpt = automationCompositionProvider
.findAutomationComposition(automationCompositionAckMessage.getAutomationCompositionId());
- if (automationComposition.isEmpty()) {
+ if (automationCompositionOpt.isEmpty()) {
LOGGER.warn("AutomationComposition not found in database {}",
automationCompositionAckMessage.getAutomationCompositionId());
return;
}
+ var automationComposition = automationCompositionOpt.get();
if (automationCompositionAckMessage.getAutomationCompositionResultMap() == null
|| automationCompositionAckMessage.getAutomationCompositionResultMap().isEmpty()) {
- if (DeployState.DELETING.equals(automationComposition.get().getDeployState())) {
+ if (DeployState.DELETING.equals(automationComposition.getDeployState())) {
// scenario when Automation Composition instance has never been deployed
- for (var element : automationComposition.get().getElements().values()) {
+ for (var element : automationComposition.getElements().values()) {
if (element.getParticipantId().equals(automationCompositionAckMessage.getParticipantId())) {
element.setDeployState(DeployState.DELETED);
}
}
- automationCompositionProvider.updateAutomationComposition(automationComposition.get());
+ automationCompositionProvider.updateAutomationComposition(automationComposition);
} else {
LOGGER.warn("Empty AutomationCompositionResultMap {} {}",
automationCompositionAckMessage.getAutomationCompositionId(),
@@ -233,11 +234,11 @@ public class SupervisionAcHandler {
return;
}
- var updated = updateState(automationComposition.get(),
+ var updated = updateState(automationComposition,
automationCompositionAckMessage.getAutomationCompositionResultMap().entrySet(),
automationCompositionAckMessage.getStateChangeResult());
if (updated) {
- automationCompositionProvider.updateAutomationComposition(automationComposition.get());
+ automationCompositionProvider.updateAutomationComposition(automationComposition);
}
}
@@ -246,7 +247,10 @@ public class SupervisionAcHandler {
StateChangeResult stateChangeResult) {
var updated = false;
var elementInErrors = StateChangeResult.FAILED.equals(stateChangeResult);
- boolean inProgress = StateChangeResult.NO_ERROR.equals(automationComposition.getStateChangeResult());
+ boolean inProgress = !StateChangeResult.FAILED.equals(automationComposition.getStateChangeResult());
+ if (elementInErrors && inProgress) {
+ automationComposition.setStateChangeResult(StateChangeResult.FAILED);
+ }
for (var acElementAck : automationCompositionResultSet) {
var element = automationComposition.getElements().get(acElementAck.getKey());
@@ -255,16 +259,11 @@ public class SupervisionAcHandler {
element.setOutProperties(acElementAck.getValue().getOutProperties());
element.setOperationalState(acElementAck.getValue().getOperationalState());
element.setUseState(acElementAck.getValue().getUseState());
+ element.setDeployState(acElementAck.getValue().getDeployState());
+ element.setLockState(acElementAck.getValue().getLockState());
updated = true;
- if (!elementInErrors || inProgress) {
- element.setDeployState(acElementAck.getValue().getDeployState());
- element.setLockState(acElementAck.getValue().getLockState());
- }
}
}
- if (elementInErrors && inProgress) {
- automationComposition.setStateChangeResult(stateChangeResult.FAILED);
- }
return updated;
}
}
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionHandler.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionHandler.java
index 6a1e12f70..862672f3b 100644
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionHandler.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionHandler.java
@@ -24,6 +24,8 @@ package org.onap.policy.clamp.acm.runtime.supervision;
import io.micrometer.core.annotation.Timed;
import lombok.AllArgsConstructor;
import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
+import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionDefinition;
+import org.onap.policy.clamp.models.acm.concepts.StateChangeResult;
import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantPrimeAck;
import org.onap.policy.clamp.models.acm.persistence.provider.AcDefinitionProvider;
import org.slf4j.Logger;
@@ -61,18 +63,34 @@ public class SupervisionHandler {
participantPrimeAckMessage.getCompositionId(), participantPrimeAckMessage.getParticipantId());
return;
}
- var state = AcTypeState.PRIMING.equals(acDefinition.getState()) ? AcTypeState.PRIMED : AcTypeState.COMMISSIONED;
+ handleParticipantPrimeAck(participantPrimeAckMessage, acDefinition);
+ }
+
+ private void handleParticipantPrimeAck(ParticipantPrimeAck participantPrimeAckMessage,
+ AutomationCompositionDefinition acDefinition) {
+ var finalState =
+ AcTypeState.PRIMING.equals(acDefinition.getState()) ? AcTypeState.PRIMED : AcTypeState.COMMISSIONED;
+ var msgInErrors = StateChangeResult.FAILED.equals(participantPrimeAckMessage.getStateChangeResult());
+ boolean inProgress = !StateChangeResult.FAILED.equals(acDefinition.getStateChangeResult());
+ if (inProgress && msgInErrors) {
+ acDefinition.setStateChangeResult(StateChangeResult.FAILED);
+ }
+
boolean completed = true;
for (var element : acDefinition.getElementStateMap().values()) {
if (participantPrimeAckMessage.getParticipantId().equals(element.getParticipantId())) {
- element.setState(state);
- } else if (!state.equals(element.getState())) {
+ element.setMessage(participantPrimeAckMessage.getMessage());
+ element.setState(participantPrimeAckMessage.getCompositionState());
+ }
+ if (!finalState.equals(element.getState())) {
completed = false;
}
}
- if (completed) {
- acDefinition.setState(state);
+
+ if (inProgress && !msgInErrors && completed) {
+ acDefinition.setState(finalState);
}
acDefinitionProvider.updateAcDefinition(acDefinition);
}
+
}