summaryrefslogtreecommitdiffstats
path: root/runtime-acm/src/main
diff options
context:
space:
mode:
authorrameshiyer27 <ramesh.murugan.iyer@est.tech>2023-09-22 15:46:30 +0100
committerRamesh Murugan Iyer <ramesh.murugan.iyer@est.tech>2023-09-27 13:49:20 +0000
commit5a92f5dc2d2066635d59a0b986ec77487198a821 (patch)
tree4ea39827c5cbc183b4e52c2d28f051b2ceedae90 /runtime-acm/src/main
parent3398b96f53bd1c5f9926a88db996abbbfe1da500 (diff)
Allow customisation in element and composition names in TOSCA
User defined values can be provided in the spring properties file for runtime-acm. The same values will be expected from the TOSCA template. If not configured in application properties, default values will be used. Issue-ID: POLICY-4827 Signed-off-by: zrrmmua <ramesh.murugan.iyer@est.tech> Change-Id: I17bfe811c2531c65e90679e95de9732129b54898
Diffstat (limited to 'runtime-acm/src/main')
-rwxr-xr-xruntime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/commissioning/CommissioningProvider.java18
-rwxr-xr-xruntime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java5
-rwxr-xr-xruntime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcRuntimeParameterGroup.java6
-rw-r--r--runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcmParameters.java38
-rw-r--r--runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionHandler.java5
-rwxr-xr-xruntime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionParticipantHandler.java8
-rw-r--r--runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionScanner.java5
-rw-r--r--runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java5
-rwxr-xr-xruntime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantRestartPublisher.java5
-rwxr-xr-xruntime-acm/src/main/resources/application.yaml3
-rw-r--r--runtime-acm/src/main/resources/openapi/openapi.yaml4
11 files changed, 86 insertions, 16 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 3400b2e60..dd0ddaae9 100755
--- 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
@@ -26,8 +26,8 @@ import java.util.HashSet;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
+import org.onap.policy.clamp.acm.runtime.main.parameters.AcRuntimeParameterGroup;
import org.onap.policy.clamp.acm.runtime.participants.AcmParticipantProvider;
import org.onap.policy.clamp.acm.runtime.supervision.comm.ParticipantPrimePublisher;
import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
@@ -52,13 +52,13 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
public class CommissioningProvider {
- public static final String AUTOMATION_COMPOSITION_NODE_TYPE = "org.onap.policy.clamp.acm.AutomationComposition";
private final AcDefinitionProvider acDefinitionProvider;
private final AutomationCompositionProvider acProvider;
private final AcmParticipantProvider acmParticipantProvider;
private final AcTypeStateResolver acTypeStateResolver;
private final ParticipantPrimePublisher participantPrimePublisher;
+ private final AcRuntimeParameterGroup acRuntimeParameterGroup;
private final ExecutorService executor = Executors.newFixedThreadPool(1);
@@ -87,7 +87,9 @@ public class CommissioningProvider {
@Transactional
public CommissioningResponse createAutomationCompositionDefinition(ToscaServiceTemplate serviceTemplate) {
- var acmDefinition = acDefinitionProvider.createAutomationCompositionDefinition(serviceTemplate);
+ var acmDefinition = acDefinitionProvider.createAutomationCompositionDefinition(serviceTemplate,
+ acRuntimeParameterGroup.getAcmParameters().getToscaElementName(),
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
serviceTemplate = acmDefinition.getServiceTemplate();
return createCommissioningResponse(acmDefinition.getCompositionId(), serviceTemplate);
}
@@ -110,7 +112,9 @@ public class CommissioningProvider {
throw new PfModelRuntimeException(Status.BAD_REQUEST,
"ACM not in COMMISSIONED state, Update of ACM Definition not allowed");
}
- acDefinitionProvider.updateServiceTemplate(compositionId, serviceTemplate);
+ acDefinitionProvider.updateServiceTemplate(compositionId, serviceTemplate,
+ acRuntimeParameterGroup.getAcmParameters().getToscaElementName(),
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
return createCommissioningResponse(compositionId, serviceTemplate);
}
@@ -208,7 +212,8 @@ public class CommissioningProvider {
private void prime(AutomationCompositionDefinition acmDefinition) {
acmDefinition.setStateChangeResult(StateChangeResult.NO_ERROR);
var preparation = participantPrimePublisher.prepareParticipantPriming(acmDefinition);
- acDefinitionProvider.updateAcDefinition(acmDefinition);
+ acDefinitionProvider.updateAcDefinition(acmDefinition,
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
executor.execute(
() -> participantPrimePublisher.sendPriming(preparation, acmDefinition.getCompositionId(), null));
@@ -228,7 +233,8 @@ public class CommissioningProvider {
acmParticipantProvider.verifyParticipantState(participantIds);
}
acmDefinition.setState(AcTypeState.DEPRIMING);
- acDefinitionProvider.updateAcDefinition(acmDefinition);
+ acDefinitionProvider.updateAcDefinition(acmDefinition,
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
executor.execute(() -> participantPrimePublisher.sendDepriming(acmDefinition.getCompositionId()));
}
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java
index f8d5894b3..977708ee1 100755
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java
@@ -27,6 +27,7 @@ import jakarta.ws.rs.core.Response.Status;
import java.util.UUID;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
+import org.onap.policy.clamp.acm.runtime.main.parameters.AcRuntimeParameterGroup;
import org.onap.policy.clamp.acm.runtime.participants.AcmParticipantProvider;
import org.onap.policy.clamp.acm.runtime.supervision.SupervisionAcHandler;
import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
@@ -63,6 +64,7 @@ public class AutomationCompositionInstantiationProvider {
private final AcInstanceStateResolver acInstanceStateResolver;
private final SupervisionAcHandler supervisionAcHandler;
private final AcmParticipantProvider acmParticipantProvider;
+ private final AcRuntimeParameterGroup acRuntimeParameterGroup;
/**
* Create automation composition.
@@ -207,7 +209,8 @@ public class AutomationCompositionInstantiationProvider {
acmParticipantProvider.verifyParticipantState(participantIds);
result.addResult(AcmUtils.validateAutomationComposition(automationComposition,
- acDefinitionOpt.get().getServiceTemplate()));
+ acDefinitionOpt.get().getServiceTemplate(),
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName()));
if (result.isValid()) {
for (var element : automationComposition.getElements().values()) {
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcRuntimeParameterGroup.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcRuntimeParameterGroup.java
index 87aa92386..a30b531a4 100755
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcRuntimeParameterGroup.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcRuntimeParameterGroup.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
+ * Copyright (C) 2021,2023 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -46,4 +46,8 @@ public class AcRuntimeParameterGroup {
@NotNull
@ParameterGroupConstraint
private TopicParameterGroup topicParameterGroup;
+
+ @Valid
+ @NotNull
+ private AcmParameters acmParameters = new AcmParameters();
}
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcmParameters.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcmParameters.java
new file mode 100644
index 000000000..3ae21e5fb
--- /dev/null
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcmParameters.java
@@ -0,0 +1,38 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2023 Nordix Foundation.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.clamp.acm.runtime.main.parameters;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.validation.annotation.Validated;
+
+/**
+ * Parameters for ac element name and ac node type.
+ */
+@Getter
+@Setter
+@Validated
+public class AcmParameters {
+
+ // Default values for the element name and composition name
+ private String toscaElementName = "org.onap.policy.clamp.acm.AutomationCompositionElement";
+
+ private String toscaCompositionName = "org.onap.policy.clamp.acm.AutomationComposition";
+
+}
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 4f58801c3..6090c644c 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
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.runtime.supervision;
import io.micrometer.core.annotation.Timed;
import lombok.AllArgsConstructor;
+import org.onap.policy.clamp.acm.runtime.main.parameters.AcRuntimeParameterGroup;
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;
@@ -42,6 +43,7 @@ public class SupervisionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(SupervisionHandler.class);
private final AcDefinitionProvider acDefinitionProvider;
+ private final AcRuntimeParameterGroup acRuntimeParameterGroup;
/**
* Handle a ParticipantPrimeAck message from a participant.
@@ -101,7 +103,8 @@ public class SupervisionHandler {
if (!restarting) {
acDefinition.setRestarting(null);
}
- acDefinitionProvider.updateAcDefinition(acDefinition);
+ acDefinitionProvider.updateAcDefinition(acDefinition,
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
}
}
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionParticipantHandler.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionParticipantHandler.java
index ebccc2f66..4c136c478 100755
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionParticipantHandler.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionParticipantHandler.java
@@ -28,6 +28,7 @@ import java.util.Map;
import java.util.UUID;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.MapUtils;
+import org.onap.policy.clamp.acm.runtime.main.parameters.AcRuntimeParameterGroup;
import org.onap.policy.clamp.acm.runtime.supervision.comm.ParticipantDeregisterAckPublisher;
import org.onap.policy.clamp.acm.runtime.supervision.comm.ParticipantRegisterAckPublisher;
import org.onap.policy.clamp.acm.runtime.supervision.comm.ParticipantRestartPublisher;
@@ -63,6 +64,7 @@ public class SupervisionParticipantHandler {
private final AutomationCompositionProvider automationCompositionProvider;
private final AcDefinitionProvider acDefinitionProvider;
private final ParticipantRestartPublisher participantRestartPublisher;
+ private final AcRuntimeParameterGroup acRuntimeParameterGroup;
/**
* Handle a ParticipantRegister message from a participant.
@@ -153,7 +155,8 @@ public class SupervisionParticipantHandler {
}
}
}
- acDefinitionProvider.updateAcDefinition(acDefinition);
+ acDefinitionProvider.updateAcDefinition(acDefinition,
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
}
private void checkOnline(Participant participant) {
@@ -196,7 +199,8 @@ public class SupervisionParticipantHandler {
acDefinition.setStateChangeResult(StateChangeResult.NO_ERROR);
}
acDefinition.setRestarting(true);
- acDefinitionProvider.updateAcDefinition(acDefinition);
+ acDefinitionProvider.updateAcDefinition(acDefinition,
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
participantRestartPublisher.send(participantId, acDefinition, automationCompositions);
}
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionScanner.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionScanner.java
index 0ccdaed3e..15283609a 100644
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionScanner.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/SupervisionScanner.java
@@ -56,6 +56,7 @@ public class SupervisionScanner {
private final AcDefinitionProvider acDefinitionProvider;
private final AutomationCompositionStateChangePublisher automationCompositionStateChangePublisher;
private final AutomationCompositionDeployPublisher automationCompositionDeployPublisher;
+ private final AcRuntimeParameterGroup acRuntimeParameterGroup;
/**
* Constructor for instantiating SupervisionScanner.
@@ -75,6 +76,7 @@ public class SupervisionScanner {
this.acDefinitionProvider = acDefinitionProvider;
this.automationCompositionStateChangePublisher = automationCompositionStateChangePublisher;
this.automationCompositionDeployPublisher = automationCompositionDeployPublisher;
+ this.acRuntimeParameterGroup = acRuntimeParameterGroup;
acTimeout.setMaxWaitMs(acRuntimeParameterGroup.getParticipantParameters().getMaxStatusWaitMs());
}
@@ -227,7 +229,8 @@ public class SupervisionScanner {
LOGGER.debug("Report timeout for the ac definition {}", acDefinition.getCompositionId());
acTimeout.setTimeout(compositionId);
acDefinition.setStateChangeResult(StateChangeResult.TIMEOUT);
- acDefinitionProvider.updateAcDefinition(acDefinition);
+ acDefinitionProvider.updateAcDefinition(acDefinition,
+ acRuntimeParameterGroup.getAcmParameters().getToscaCompositionName());
}
}
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java
index 539a992ff..f3fcfe67a 100644
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java
@@ -30,6 +30,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import lombok.AllArgsConstructor;
+import org.onap.policy.clamp.acm.runtime.main.parameters.AcRuntimeParameterGroup;
import org.onap.policy.clamp.acm.runtime.participants.AcmParticipantProvider;
import org.onap.policy.clamp.models.acm.concepts.AcTypeState;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionDefinition;
@@ -53,6 +54,7 @@ public class ParticipantPrimePublisher extends AbstractParticipantPublisher<Part
private final ParticipantProvider participantProvider;
private final AcmParticipantProvider acmParticipantProvider;
+ private final AcRuntimeParameterGroup acRuntimeParameterGroup;
/**
* Send ParticipantPrime to Participant
@@ -83,7 +85,8 @@ public class ParticipantPrimePublisher extends AbstractParticipantPublisher<Part
*/
public List<ParticipantDefinition> prepareParticipantPriming(AutomationCompositionDefinition acmDefinition) {
acmDefinition.setState(AcTypeState.PRIMING);
- var acElements = AcmUtils.extractAcElementsFromServiceTemplate(acmDefinition.getServiceTemplate());
+ var acElements = AcmUtils.extractAcElementsFromServiceTemplate(acmDefinition.getServiceTemplate(),
+ acRuntimeParameterGroup.getAcmParameters().getToscaElementName());
Map<ToscaConceptIdentifier, UUID> supportedElementMap = new HashMap<>();
var participantIds = new HashSet<UUID>();
if (AcTypeState.PRIMED.equals(acmDefinition.getState())) {
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantRestartPublisher.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantRestartPublisher.java
index c00116e3b..163d3299d 100755
--- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantRestartPublisher.java
+++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantRestartPublisher.java
@@ -29,6 +29,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.UUID;
import lombok.AllArgsConstructor;
+import org.onap.policy.clamp.acm.runtime.main.parameters.AcRuntimeParameterGroup;
import org.onap.policy.clamp.models.acm.concepts.AutomationComposition;
import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionDefinition;
import org.onap.policy.clamp.models.acm.concepts.ParticipantDefinition;
@@ -46,6 +47,7 @@ import org.springframework.stereotype.Component;
public class ParticipantRestartPublisher extends AbstractParticipantPublisher<ParticipantRestart> {
private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantRestartPublisher.class);
+ private final AcRuntimeParameterGroup acRuntimeParameterGroup;
/**
* Send Restart to Participant.
@@ -86,7 +88,8 @@ public class ParticipantRestartPublisher extends AbstractParticipantPublisher<Pa
private List<ParticipantDefinition> prepareParticipantRestarting(UUID participantId,
AutomationCompositionDefinition acmDefinition) {
- var acElements = AcmUtils.extractAcElementsFromServiceTemplate(acmDefinition.getServiceTemplate());
+ var acElements = AcmUtils.extractAcElementsFromServiceTemplate(acmDefinition.getServiceTemplate(),
+ acRuntimeParameterGroup.getAcmParameters().getToscaElementName());
// list of entry entry filtered by participantId
List<Entry<String, ToscaNodeTemplate>> elementList = new ArrayList<>();
diff --git a/runtime-acm/src/main/resources/application.yaml b/runtime-acm/src/main/resources/application.yaml
index 6a0213720..84ddcfc76 100755
--- a/runtime-acm/src/main/resources/application.yaml
+++ b/runtime-acm/src/main/resources/application.yaml
@@ -61,6 +61,9 @@ runtime:
servers:
- ${topicServer:localhost}
topicCommInfrastructure: dmaap
+ acmParameters:
+ toscaElementName: org.onap.policy.clamp.acm.AutomationCompositionElement
+ toscaCompositionName: org.onap.policy.clamp.acm.AutomationComposition
management:
endpoints:
diff --git a/runtime-acm/src/main/resources/openapi/openapi.yaml b/runtime-acm/src/main/resources/openapi/openapi.yaml
index 74f1d4874..988b9d164 100644
--- a/runtime-acm/src/main/resources/openapi/openapi.yaml
+++ b/runtime-acm/src/main/resources/openapi/openapi.yaml
@@ -1011,12 +1011,12 @@ paths:
schema:
$ref: '#/components/schemas/AutomationCompositions'
example:
- externalValue: 'https://raw.githubusercontent.com/onap/policy-clamp/master/runtime-acm/src/main/resources/openapi/examples/getCompositionInstancesResponse.json'
+ externalValue: 'https://raw.githubusercontent.com/onap/policy-clamp/master/runtime-acm/src/main/resources/openapi/examples/getAllCompositionInstancesResponse.json'
application/yaml:
schema:
$ref: '#/components/schemas/AutomationCompositions'
example:
- externalValue: 'https://raw.githubusercontent.com/onap/policy-clamp/master/runtime-acm/src/main/resources/openapi/examples/getCompositionInstancesResponse.yaml'
+ externalValue: 'https://raw.githubusercontent.com/onap/policy-clamp/master/runtime-acm/src/main/resources/openapi/examples/getAllCompositionInstancesResponse.yaml'
401:
description: Authentication Error, returns an instance of
[SimpleResponse](https://github.com/onap/policy-clamp/blob/master/models/src/main/java/org/onap/policy/clamp/models/acm/messages/rest/SimpleResponse.java)