import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElement;
+import org.onap.policy.clamp.models.acm.concepts.DeployState;
+import org.onap.policy.clamp.models.acm.concepts.LockState;
import org.onap.policy.clamp.models.acm.concepts.NodeTemplateState;
import org.onap.policy.clamp.models.acm.concepts.Participant;
import org.onap.policy.clamp.models.acm.persistence.concepts.JpaParticipant;
return ProviderUtils.asEntityList(nodeTemplateStateRepository
.findByParticipantId(participantId.toString()));
}
+
+ /**
+ * Reset the Deploy and Lock states of all the ac elements associated with a participant.
+ *
+ * @param participantId the participant id associated with the automation composition elements
+ */
+ public void resetParticipantAcElementState(@NonNull final UUID participantId) {
+ var participantAcElementList = automationCompositionElementRepository
+ .findByParticipantId(participantId.toString());
+ participantAcElementList.forEach(e -> {
+ e.setDeployState(DeployState.UNDEPLOYED);
+ e.setLockState(LockState.NONE);
+ });
+ automationCompositionElementRepository.saveAll(participantAcElementList);
+ }
}
import org.junit.jupiter.api.Test;
import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions;
+import org.onap.policy.clamp.models.acm.concepts.DeployState;
+import org.onap.policy.clamp.models.acm.concepts.LockState;
import org.onap.policy.clamp.models.acm.concepts.NodeTemplateState;
import org.onap.policy.clamp.models.acm.concepts.Participant;
import org.onap.policy.clamp.models.acm.persistence.concepts.JpaAutomationComposition;
private static final String AUTOMATION_COMPOSITION_JSON =
"src/test/resources/providers/TestAutomationCompositions.json";
+ private static final String AUTOMATION_COMPOSITION_JSON_DEREGISTER =
+ "src/test/resources/providers/TestAutomationCompositionsDeregister.json";
+
private static final String NODE_TEMPLATE_STATE_JSON = "src/test/resources/providers/NodeTemplateState.json";
private static final String LIST_IS_NULL = ".*. is marked .*ull but is null";
private static final UUID INVALID_ID = UUID.randomUUID();
private List<JpaAutomationComposition> inputAutomationCompositionsJpa;
private final String originalAcJson = ResourceUtils.getResourceAsString(AUTOMATION_COMPOSITION_JSON);
+ private AutomationCompositions inputAutomationCompositionsDeregister;
+ private List<JpaAutomationComposition> inputAutomationCompositionsJpaDeregister;
+ private final String deregisterAcJson = ResourceUtils.getResourceAsString(AUTOMATION_COMPOSITION_JSON_DEREGISTER);
+
private final String nodeTemplateStatesJson = ResourceUtils.getResourceAsString(NODE_TEMPLATE_STATE_JSON);
private List<NodeTemplateState> nodeTemplateStateList = new ArrayList<>();
ProviderUtils.getJpaAndValidateList(inputAutomationCompositions.getAutomationCompositionList(),
JpaAutomationComposition::new, "automation compositions");
+ inputAutomationCompositionsDeregister = CODER.decode(deregisterAcJson, AutomationCompositions.class);
+ inputAutomationCompositionsJpaDeregister =
+ ProviderUtils.getJpaAndValidateList(inputAutomationCompositionsDeregister.getAutomationCompositionList(),
+ JpaAutomationComposition::new, "automation compositions");
+
nodeTemplateStateList.add(CODER.decode(nodeTemplateStatesJson, NodeTemplateState.class));
nodeTemplateStateList.get(0).setState(AcTypeState.COMMISSIONED);
jpaNodeTemplateStateList = ProviderUtils.getJpaAndValidateList(nodeTemplateStateList,
assertThrows(NullPointerException.class, () -> participantProvider.deleteParticipant(null));
assertThrows(NullPointerException.class, () -> participantProvider.getAutomationCompositionElements(null));
assertThrows(NullPointerException.class, () -> participantProvider.getAcNodeTemplateStates(null));
-
-
+ assertThrows(NullPointerException.class, () -> participantProvider.resetParticipantAcElementState(null));
}
@Test
var result = participantProvider.getSupportedElementMap();
assertThat(result).hasSize(2);
}
+
+ @Test
+ void testResetParticipantAcElementState() {
+ var participantRepository = mock(ParticipantRepository.class);
+ var automationCompositionElementRepository = mock(AutomationCompositionElementRepository.class);
+
+ var acElementList = inputAutomationCompositionsJpaDeregister
+ .stream().map(c -> c.getElements()).collect(Collectors.toList());
+
+ when(automationCompositionElementRepository.findByParticipantId(any())).thenReturn(acElementList.get(0));
+
+ var nodeTemplateStateRepository = mock(NodeTemplateStateRepository.class);
+ var participantProvider = new ParticipantProvider(participantRepository,
+ automationCompositionElementRepository, nodeTemplateStateRepository);
+
+ acElementList.get(0).stream().forEach(e -> {
+ assertThat(e.getDeployState().equals(DeployState.DEPLOYED));
+ assertThat(e.getLockState().equals(LockState.LOCKED));
+ });
+
+ participantProvider.resetParticipantAcElementState(UUID.randomUUID());
+
+ acElementList.get(0).stream().forEach(e -> {
+ assertThat(e.getDeployState().equals(DeployState.UNDEPLOYED));
+ assertThat(e.getLockState().equals(LockState.NONE));
+ });
+
+ }
}
--- /dev/null
+{
+ "automationCompositionList": [
+ {
+ "compositionId": "709c62b3-8918-41b9-a747-e21eb79c6c40",
+ "instanceId": "809c62b3-8918-41b9-a748-e21eb79c6c89",
+ "deployState": "DEPLOYED",
+ "lockState": "UNLOCKED",
+ "elements": {
+ "709c62b3-8918-41b9-a747-e21eb79c6c20": {
+ "id": "709c62b3-8918-41b9-a747-e21eb79c6c20",
+ "definition": {
+ "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
+ "version": "1.2.3"
+ },
+ "deployState": "DEPLOYED",
+ "lockState": "UNLOCKED",
+ "description": "DCAE automation composition element for the PMSH instance 0 automation composition"
+ },
+ "709c62b3-8918-41b9-a747-e21eb79c6c21": {
+ "id": "709c62b3-8918-41b9-a747-e21eb79c6c21",
+ "definition": {
+ "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "deployState": "DEPLOYED",
+ "lockState": "UNLOCKED",
+ "description": "Monitoring Policy element for the PMSH instance 0 automation composition"
+ },
+ "709c62b3-8918-41b9-a747-e21eb79c6c22": {
+ "id": "709c62b3-8918-41b9-a747-e21eb79c6c22",
+ "definition": {
+ "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "deployState": "DEPLOYED",
+ "lockState": "UNLOCKED",
+ "description": "Operational Policy element for the PMSH instance 0 automation composition"
+ },
+ "709c62b3-8918-41b9-a747-e21eb79c6c23": {
+ "id": "709c62b3-8918-41b9-a747-e21eb79c6c23",
+ "definition": {
+ "name": "org.onap.domain.pmsh.PMSH_CDS_AutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "deployState": "DEPLOYED",
+ "lockState": "UNLOCKED",
+ "description": "CDS automation composition element for the PMSH instance 0 automation composition"
+ }
+ },
+ "name": "PMSHInstance0",
+ "version": "1.0.1",
+ "description": "PMSH automation composition instance 0"
+ }
+ ]
+}