summaryrefslogtreecommitdiffstats
path: root/runtime-controlloop
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2022-01-25 19:55:43 +0000
committerliamfallon <liam.fallon@est.tech>2022-02-18 15:54:40 +0000
commit43098043c4ef31d9d5dead66568d7d9482a6b165 (patch)
tree6f6ea4812ff93d65e7c64e12a3ec6ab4462a64e2 /runtime-controlloop
parentf401b5099bcb64f3e21de608d0207dd69d8043cd (diff)
Rename TOSCA Control Loop to ACM
This commit renames the TOSCA Control Loop functionality in CLAMP to Automation Composition Management. This review is a direct renaming review and, as everything is renamed together it is large. Issue-ID: POLICY-3939 Change-Id: I28f0a6dd889bf3570a4c1365ae9e71fc58db6d6c Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'runtime-controlloop')
-rw-r--r--runtime-controlloop/pom.xml124
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java45
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProvider.java378
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/AafConfiguration.java46
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/ConverterConfiguration.java44
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/FilterConfig.java45
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SecurityConfig.java47
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SpringFoxConfig.java45
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Listener.java41
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivator.java137
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Publisher.java34
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProvider.java619
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java49
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantParameters.java45
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantUpdateParameters.java46
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/CommissioningController.java515
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/InstantiationController.java637
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/MonitoringQueryController.java341
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/AbstractRestController.java91
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/ControlLoopAafFilter.java38
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/GlobalControllerExceptionHandler.java67
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/RuntimeErrorController.java104
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/monitoring/MonitoringProvider.java243
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounter.java106
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/MessageIntercept.java32
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspect.java105
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java491
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java301
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantAckPublisher.java62
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantPublisher.java62
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangeAckListener.java68
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangePublisher.java50
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdateAckListener.java68
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java91
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterAckPublisher.java45
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterListener.java69
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterAckPublisher.java50
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterListener.java69
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusListener.java68
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusReqPublisher.java48
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdateAckListener.java69
-rw-r--r--runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdatePublisher.java127
-rw-r--r--runtime-controlloop/src/main/resources/application.yaml67
-rw-r--r--runtime-controlloop/src/main/resources/version.txt4
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java221
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java303
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivatorTest.java102
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java378
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java141
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java527
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/rest/ActuatorControllerTest.java91
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java319
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java242
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounterTest.java84
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspectTest.java66
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java307
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java214
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java225
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/CommonTestData.java123
-rw-r--r--runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java201
-rw-r--r--runtime-controlloop/src/test/resources/application_test.properties37
-rw-r--r--runtime-controlloop/src/test/resources/parameters/TestParameters.json44
-rw-r--r--runtime-controlloop/src/test/resources/parameters/logback-test.xml42
-rw-r--r--runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopElementsNotFound.json142
-rw-r--r--runtime-controlloop/src/test/resources/rest/controlloops/ControlLoops.json174
-rw-r--r--runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsNotFound.json142
-rw-r--r--runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsSmoke.json174
-rw-r--r--runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsUpdate.json174
-rw-r--r--runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsVersionNotMatches.json142
-rw-r--r--runtime-controlloop/src/test/resources/rest/controlloops/PassiveCommand.json13
-rw-r--r--runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics.json44
-rw-r--r--runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json13
-rw-r--r--runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics.json46
-rw-r--r--runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics_Invalid.json16
-rw-r--r--runtime-controlloop/src/test/resources/rest/servicetemplates/PMSHMultipleCLTosca.yaml232
-rw-r--r--runtime-controlloop/src/test/resources/rest/servicetemplates/full-tosca-with-common-properties.yaml3546
-rw-r--r--runtime-controlloop/src/test/resources/rest/servicetemplates/pm_control_loop_tosca.yaml452
-rw-r--r--runtime-controlloop/src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml238
-rw-r--r--runtime-controlloop/src/test/resources/rest/servicetemplates/tosca-for-smoke-testing.yaml3488
-rwxr-xr-xruntime-controlloop/src/test/resources/testscripts/listenOnTopic.sh31
80 files changed, 0 insertions, 18567 deletions
diff --git a/runtime-controlloop/pom.xml b/runtime-controlloop/pom.xml
deleted file mode 100644
index be5597fa1..000000000
--- a/runtime-controlloop/pom.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2021 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.
-
- SPDX-License-Identifier: Apache-2.0
- ============LICENSE_END=========================================================
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onap.policy.clamp</groupId>
- <artifactId>policy-clamp</artifactId>
- <version>6.2.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>policy-clamp-runtime-controlloop</artifactId>
- <name>${project.artifactId}</name>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.policy.clamp</groupId>
- <artifactId>policy-clamp-common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.clamp</groupId>
- <artifactId>policy-clamp-models</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.module</groupId>
- <artifactId>jackson-module-jsonSchema</artifactId>
- <version>${version.jackson}</version>
- <exclusions>
- <exclusion>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-json</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-aop</artifactId>
- <version>${version.springboot}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-security</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-validation</artifactId>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-boot-starter</artifactId>
- <version>${version.springfox}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- <version>${version.springboot}</version>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-registry-prometheus</artifactId>
- <version>${version.io.micrometer}</version>
- </dependency>
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- <phase>package</phase>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java
deleted file mode 100644
index 44a661e55..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-@EnableScheduling
-@SpringBootApplication
-@EnableJpaRepositories({"org.onap.policy.clamp.controlloop.models.controlloop.persistence.repository"})
-@ComponentScan({"org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider",
- "org.onap.policy.clamp.controlloop.runtime",
- "org.onap.policy.clamp.controlloop.common.rest"})
-@ConfigurationPropertiesScan("org.onap.policy.clamp.controlloop.runtime.main.parameters")
-@EntityScan({"org.onap.policy.models.tosca.simple.concepts",
- "org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts"})
-public class Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProvider.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProvider.java
deleted file mode 100644
index 382823b19..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProvider.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.commissioning;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.PropertyNamingStrategies;
-import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import javax.ws.rs.core.Response.Status;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.messages.rest.commissioning.CommissioningResponse;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaRelationshipType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplates;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * This class provides the create, read and delete actions on Commissioning of Control Loop concepts in the database to
- * the callers.
- */
-@Service
-@Transactional
-public class CommissioningProvider {
- public static final String CONTROL_LOOP_NODE_TYPE = "org.onap.policy.clamp.controlloop.ControlLoop";
- private static final String INSTANCE_TEXT = "_Instance";
-
- private final ServiceTemplateProvider serviceTemplateProvider;
- private final ControlLoopProvider clProvider;
- private final ObjectMapper mapper = new ObjectMapper();
- private final ParticipantProvider participantProvider;
- private final SupervisionHandler supervisionHandler;
-
- /**
- * Create a commissioning provider.
- *
- * @param serviceTemplateProvider the ServiceTemplate Provider
- * @param clProvider the ControlLoop Provider
- * @param supervisionHandler the Supervision Handler
- * @param participantProvider the Participant Provider
- */
- public CommissioningProvider(ServiceTemplateProvider serviceTemplateProvider, ControlLoopProvider clProvider,
- SupervisionHandler supervisionHandler, ParticipantProvider participantProvider) {
- this.serviceTemplateProvider = serviceTemplateProvider;
- this.clProvider = clProvider;
- this.supervisionHandler = supervisionHandler;
- this.participantProvider = participantProvider;
- mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
- }
-
- /**
- * Create control loops from a service template.
- *
- * @param serviceTemplate the service template
- * @return the result of the commissioning operation
- * @throws PfModelException on creation errors
- */
- public CommissioningResponse createControlLoopDefinitions(ToscaServiceTemplate serviceTemplate)
- throws PfModelException {
-
- if (verifyIfInstancePropertiesExists()) {
- throw new PfModelException(Status.BAD_REQUEST, "Delete instances, to commission control loop definitions");
- }
- serviceTemplate = serviceTemplateProvider.createServiceTemplate(serviceTemplate);
- List<Participant> participantList = participantProvider.getParticipants();
- if (!participantList.isEmpty()) {
- supervisionHandler.handleSendCommissionMessage(serviceTemplate.getName(), serviceTemplate.getVersion());
- }
- var response = new CommissioningResponse();
- // @formatter:off
- response.setAffectedControlLoopDefinitions(serviceTemplate.getToscaTopologyTemplate().getNodeTemplates()
- .values()
- .stream()
- .map(template -> template.getKey().asIdentifier())
- .collect(Collectors.toList()));
- // @formatter:on
-
- return response;
- }
-
- /**
- * Delete the control loop definition with the given name and version.
- *
- * @param name the name of the control loop definition to delete
- * @param version the version of the control loop to delete
- * @return the result of the deletion
- * @throws PfModelException on deletion errors
- */
- public CommissioningResponse deleteControlLoopDefinition(String name, String version) throws PfModelException {
-
- if (verifyIfInstancePropertiesExists()) {
- throw new PfModelException(Status.BAD_REQUEST, "Delete instances, to commission control loop definitions");
- }
- List<Participant> participantList = participantProvider.getParticipants();
- if (!participantList.isEmpty()) {
- supervisionHandler.handleSendDeCommissionMessage();
- }
- serviceTemplateProvider.deleteServiceTemplate(name, version);
- var response = new CommissioningResponse();
- response.setAffectedControlLoopDefinitions(List.of(new ToscaConceptIdentifier(name, version)));
-
- return response;
- }
-
- /**
- * Get control loop node templates.
- *
- * @param clName the name of the control loop, null for all
- * @param clVersion the version of the control loop, null for all
- * @return list of control loop node templates
- * @throws PfModelException on errors getting control loop definitions
- */
- @Transactional(readOnly = true)
- public List<ToscaNodeTemplate> getControlLoopDefinitions(String clName, String clVersion) throws PfModelException {
-
- // @formatter:off
- ToscaTypedEntityFilter<ToscaNodeTemplate> nodeTemplateFilter = ToscaTypedEntityFilter
- .<ToscaNodeTemplate>builder()
- .name(clName)
- .version(clVersion)
- .type(CONTROL_LOOP_NODE_TYPE)
- .build();
- // @formatter:on
-
- return clProvider.getFilteredNodeTemplates(nodeTemplateFilter);
- }
-
- /**
- * Get the control loop elements from a control loop node template.
- *
- * @param controlLoopNodeTemplate the control loop node template
- * @return a list of the control loop element node templates in a control loop node template
- * @throws PfModelException on errors get control loop element node templates
- */
- @Transactional(readOnly = true)
- public List<ToscaNodeTemplate> getControlLoopElementDefinitions(ToscaNodeTemplate controlLoopNodeTemplate)
- throws PfModelException {
- if (!CONTROL_LOOP_NODE_TYPE.equals(controlLoopNodeTemplate.getType())) {
- return Collections.emptyList();
- }
-
- if (MapUtils.isEmpty(controlLoopNodeTemplate.getProperties())) {
- return Collections.emptyList();
- }
-
- @SuppressWarnings("unchecked")
- List<Map<String, String>> controlLoopElements =
- (List<Map<String, String>>) controlLoopNodeTemplate.getProperties().get("elements");
-
- if (CollectionUtils.isEmpty(controlLoopElements)) {
- return Collections.emptyList();
- }
-
- List<ToscaNodeTemplate> controlLoopElementList = new ArrayList<>();
- // @formatter:off
- controlLoopElementList.addAll(
- controlLoopElements
- .stream()
- .map(elementMap -> clProvider.getNodeTemplates(elementMap.get("name"),
- elementMap.get("version")))
- .flatMap(List::stream)
- .collect(Collectors.toList())
- );
- // @formatter:on
-
- return controlLoopElementList;
- }
-
- /**
- * Get node templates with common properties added.
- *
- * @param common boolean indicating common or instance properties to be used
- * @param name the name of the definition to use, null for all definitions
- * @param version the version of the definition to use, null for all definitions
- * @return the nodes templates with common or instance properties
- * @throws PfModelException on errors getting common or instance properties from node_templates
- */
- @Transactional(readOnly = true)
- public Map<String, ToscaNodeTemplate> getNodeTemplatesWithCommonOrInstanceProperties(boolean common, String name,
- String version) throws PfModelException {
-
- if (common && verifyIfInstancePropertiesExists()) {
- throw new PfModelException(Status.BAD_REQUEST,
- "Cannot create or edit common properties, delete all the instantiations first");
- }
-
- var serviceTemplateList = serviceTemplateProvider.getServiceTemplateList(name, version);
- var commonOrInstanceNodeTypeProps =
- serviceTemplateProvider.getCommonOrInstancePropertiesFromNodeTypes(common, serviceTemplateList.get(0));
-
- var serviceTemplates = new ToscaServiceTemplates();
- serviceTemplates.setServiceTemplates(filterToscaNodeTemplateInstance(serviceTemplateList));
-
- return serviceTemplateProvider.getDerivedCommonOrInstanceNodeTemplates(
- serviceTemplates.getServiceTemplates().get(0).getToscaTopologyTemplate().getNodeTemplates(),
- commonOrInstanceNodeTypeProps);
- }
-
- /**
- * Get the requested control loop definitions.
- *
- * @param name the name of the definition to get, null for all definitions
- * @param version the version of the definition to get, null for all definitions
- * @return the control loop definitions
- * @throws PfModelException on errors getting control loop definitions
- */
- @Transactional(readOnly = true)
- public ToscaServiceTemplate getToscaServiceTemplate(String name, String version) throws PfModelException {
- return serviceTemplateProvider.getToscaServiceTemplate(name, version);
- }
-
- /**
- * Get All the requested control loop definitions.
- *
- * @return the control loop definitions
- * @throws PfModelException on errors getting control loop definitions
- */
- @Transactional(readOnly = true)
- public List<ToscaServiceTemplate> getAllToscaServiceTemplate() throws PfModelException {
- return serviceTemplateProvider.getAllServiceTemplates();
- }
-
- /**
- * Get the tosca service template with only required sections.
- *
- * @param name the name of the template to get, null for all definitions
- * @param version the version of the template to get, null for all definitions
- * @return the tosca service template
- * @throws PfModelException on errors getting tosca service template
- */
- @Transactional(readOnly = true)
- public String getToscaServiceTemplateReduced(String name, String version) throws PfModelException {
- var serviceTemplateList = serviceTemplateProvider.getServiceTemplateList(name, version);
-
- List<ToscaServiceTemplate> filteredServiceTemplateList = filterToscaNodeTemplateInstance(serviceTemplateList);
-
- if (filteredServiceTemplateList.isEmpty()) {
- throw new PfModelException(Status.BAD_REQUEST, "Invalid Service Template");
- }
-
- ToscaServiceTemplate fullTemplate = filteredServiceTemplateList.get(0);
-
- var template = new HashMap<String, Object>();
- template.put("tosca_definitions_version", fullTemplate.getToscaDefinitionsVersion());
- template.put("data_types", fullTemplate.getDataTypes());
- template.put("policy_types", fullTemplate.getPolicyTypes());
- template.put("node_types", fullTemplate.getNodeTypes());
- template.put("topology_template", fullTemplate.getToscaTopologyTemplate());
-
- try {
- return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(template);
-
- } catch (JsonProcessingException e) {
- throw new PfModelException(Status.BAD_REQUEST, "Converion to Json Schema failed", e);
- }
- }
-
- /**
- * Get the requested json schema.
- *
- * @param section section of the tosca service template to get schema for
- * @return the specified tosca service template or section Json Schema
- * @throws PfModelException on errors with retrieving the classes
- */
- @Transactional(readOnly = true)
- public String getToscaServiceTemplateSchema(String section) throws PfModelException {
- var visitor = new SchemaFactoryWrapper();
-
- try {
- switch (section) {
- case "data_types":
- mapper.acceptJsonFormatVisitor(mapper.constructType(ToscaDataType.class), visitor);
- break;
- case "capability_types":
- mapper.acceptJsonFormatVisitor(mapper.constructType(ToscaCapabilityType.class), visitor);
- break;
- case "node_types":
- mapper.acceptJsonFormatVisitor(mapper.constructType(ToscaNodeType.class), visitor);
- break;
- case "relationship_types":
- mapper.acceptJsonFormatVisitor(mapper.constructType(ToscaRelationshipType.class), visitor);
- break;
- case "policy_types":
- mapper.acceptJsonFormatVisitor(mapper.constructType(ToscaPolicyType.class), visitor);
- break;
- case "topology_template":
- mapper.acceptJsonFormatVisitor(mapper.constructType(ToscaTopologyTemplate.class), visitor);
- break;
- case "node_templates":
- mapper.acceptJsonFormatVisitor(
- mapper.getTypeFactory().constructCollectionType(List.class, ToscaNodeTemplate.class),
- visitor);
- break;
- default:
- mapper.acceptJsonFormatVisitor(mapper.constructType(ToscaServiceTemplate.class), visitor);
- }
-
- var jsonSchema = visitor.finalSchema();
- return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema);
- } catch (JsonProcessingException e) {
- throw new PfModelException(Status.BAD_REQUEST, "Converion to Json Schema failed", e);
- }
- }
-
- private List<ToscaServiceTemplate> filterToscaNodeTemplateInstance(List<ToscaServiceTemplate> serviceTemplates) {
-
- List<ToscaServiceTemplate> toscaServiceTemplates = new ArrayList<>();
-
- serviceTemplates.stream().forEach(serviceTemplate -> {
-
- Map<String, ToscaNodeTemplate> toscaNodeTemplates = new HashMap<>();
-
- serviceTemplate.getToscaTopologyTemplate().getNodeTemplates().forEach((key, nodeTemplate) -> {
- if (!nodeTemplate.getName().contains(INSTANCE_TEXT)) {
- toscaNodeTemplates.put(key, nodeTemplate);
- }
- });
-
- serviceTemplate.getToscaTopologyTemplate().getNodeTemplates().clear();
- serviceTemplate.getToscaTopologyTemplate().setNodeTemplates(toscaNodeTemplates);
-
- toscaServiceTemplates.add(serviceTemplate);
- });
-
- return toscaServiceTemplates;
- }
-
- /**
- * Validates to see if there is any instance properties saved.
- *
- * @return true if exists instance properties
- */
- private boolean verifyIfInstancePropertiesExists() {
- return clProvider.getAllNodeTemplates().stream()
- .anyMatch(nodeTemplate -> nodeTemplate.getKey().getName().contains(INSTANCE_TEXT));
-
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/AafConfiguration.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/AafConfiguration.java
deleted file mode 100644
index 4483fbd1b..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/AafConfiguration.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
- * reserved.
- * ================================================================================
- * 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.controlloop.runtime.config;
-
-import javax.servlet.Filter;
-import org.onap.policy.clamp.controlloop.runtime.main.web.ControlLoopAafFilter;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-
-@Configuration
-@Profile("clamp-aaf-authentication")
-public class AafConfiguration {
-
- /**
- * Method to return Aaf filter.
- *
- * @return Filter
- */
- @Bean
- public Filter aafFilter() {
- return new ControlLoopAafFilter();
- }
-
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/ConverterConfiguration.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/ConverterConfiguration.java
deleted file mode 100644
index d67d2e75d..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/ConverterConfiguration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config;
-
-import java.util.Arrays;
-import java.util.List;
-import org.onap.policy.clamp.controlloop.common.rest.CoderHttpMesageConverter;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.http.converter.StringHttpMessageConverter;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-@Configuration
-public class ConverterConfiguration implements WebMvcConfigurer {
-
- @Override
- public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
- converters.add(new CoderHttpMesageConverter<>("yaml"));
- converters.add(new CoderHttpMesageConverter<>("json"));
-
- StringHttpMessageConverter converter = new StringHttpMessageConverter();
- converter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_PLAIN));
- converters.add(converter);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/FilterConfig.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/FilterConfig.java
deleted file mode 100644
index 57bfc2e7c..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/FilterConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config;
-
-import org.onap.policy.clamp.controlloop.common.rest.RequestResponseLoggingFilter;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class FilterConfig {
-
- /**
- * Logging Filter configuration.
- *
- * @return FilterRegistrationBean
- */
- @Bean
- public FilterRegistrationBean<RequestResponseLoggingFilter> loggingFilter() {
- FilterRegistrationBean<RequestResponseLoggingFilter> registrationBean = new FilterRegistrationBean<>();
-
- registrationBean.setFilter(new RequestResponseLoggingFilter());
- registrationBean.addUrlPatterns("/onap/controlloop/v2/*");
-
- return registrationBean;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SecurityConfig.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SecurityConfig.java
deleted file mode 100644
index 846944ea2..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SecurityConfig.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@Configuration
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Value("${security.enable-csrf:true}")
- private boolean csrfEnabled = true;
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers().authenticated()
- .anyRequest().authenticated()
- .and().httpBasic();
- // @formatter:on
-
- if (!csrfEnabled) {
- http.csrf().disable();
- }
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SpringFoxConfig.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SpringFoxConfig.java
deleted file mode 100644
index d8c703397..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/SpringFoxConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config;
-
-import org.onap.policy.clamp.controlloop.runtime.main.rest.MonitoringQueryController;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-
-@Configuration
-public class SpringFoxConfig {
-
- /**
- * Docket Spring Fox Config.
- *
- * @return Docket
- */
- @Bean
- public Docket api() {
- return new Docket(DocumentationType.SWAGGER_2).select()
- .apis(RequestHandlerSelectors.basePackage(MonitoringQueryController.class.getPackageName()))
- .paths(PathSelectors.any()).build();
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Listener.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Listener.java
deleted file mode 100644
index 0afbf1c4c..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Listener.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config.messaging;
-
-import org.onap.policy.common.endpoints.listeners.ScoListener;
-
-public interface Listener<T> {
-
- /**
- * Get the type of message of interest to the listener.
- *
- * @return type of message of interest to the listener
- */
- String getType();
-
- /**
- * Get listener to register.
- *
- * @return listener to register
- */
- ScoListener<T> getScoListener();
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivator.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivator.java
deleted file mode 100644
index 284094bc4..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivator.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config.messaging;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.List;
-import lombok.Getter;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
-import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.common.endpoints.event.comm.TopicSource;
-import org.onap.policy.common.endpoints.listeners.MessageTypeDispatcher;
-import org.onap.policy.common.utils.services.ServiceManagerContainer;
-import org.springframework.context.event.ContextClosedEvent;
-import org.springframework.context.event.ContextRefreshedEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Component;
-
-@Component
-public class MessageDispatcherActivator extends ServiceManagerContainer implements Closeable {
-
- private static final String[] MSG_TYPE_NAMES = {"messageType"};
-
- // Topics from which the application receives and to which the application sends messages
- private List<TopicSink> topicSinks;
- private List<TopicSource> topicSources;
-
- @Getter
- private final MessageTypeDispatcher msgDispatcher;
-
- /**
- * Constructor.
- *
- * @param clRuntimeParameterGroup the parameters for the control loop runtime service
- * @param publishers list of Publishers
- * @param listeners list of Listeners
- * @throws ControlLoopRuntimeException if the activator does not start
- */
- public <T> MessageDispatcherActivator(final ClRuntimeParameterGroup clRuntimeParameterGroup,
- List<Publisher> publishers, List<Listener<T>> listeners) {
- topicSinks = TopicEndpointManager.getManager()
- .addTopicSinks(clRuntimeParameterGroup.getTopicParameterGroup().getTopicSinks());
-
- topicSources = TopicEndpointManager.getManager()
- .addTopicSources(clRuntimeParameterGroup.getTopicParameterGroup().getTopicSources());
-
- msgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES);
-
- // @formatter:off
- addAction("Topic endpoint management",
- () -> TopicEndpointManager.getManager().start(),
- () -> TopicEndpointManager.getManager().shutdown());
-
- publishers.forEach(publisher ->
- addAction("Publisher " + publisher.getClass().getSimpleName(),
- () -> publisher.active(topicSinks),
- publisher::stop));
-
- listeners.forEach(listener ->
- addAction("Listener " + listener.getClass().getSimpleName(),
- () -> msgDispatcher.register(listener.getType(), listener.getScoListener()),
- () -> msgDispatcher.unregister(listener.getType())));
-
- addAction("Topic Message Dispatcher", this::registerMsgDispatcher, this::unregisterMsgDispatcher);
- // @formatter:on
- }
-
- /**
- * Registers the dispatcher with the topic source(s).
- */
- private void registerMsgDispatcher() {
- for (final TopicSource source : topicSources) {
- source.register(msgDispatcher);
- }
- }
-
- /**
- * Unregisters the dispatcher from the topic source(s).
- */
- private void unregisterMsgDispatcher() {
- for (final TopicSource source : topicSources) {
- source.unregister(msgDispatcher);
- }
- }
-
- /**
- * Start Manager after the application is Started.
- *
- * @param cre Refreshed Event
- */
- @EventListener
- public void handleContextStart(ContextRefreshedEvent cre) {
- if (!isAlive()) {
- start();
- }
- }
-
- /**
- * Handle ContextClosedEvent.
- *
- * @param ctxClosedEvent ContextClosedEvent
- */
- @EventListener
- public void handleContextClosedEvent(ContextClosedEvent ctxClosedEvent) {
- if (isAlive()) {
- stop();
- }
- }
-
- @Override
- public void close() throws IOException {
- if (isAlive()) {
- super.shutdown();
- }
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Publisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Publisher.java
deleted file mode 100644
index 3cd4dff85..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/Publisher.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config.messaging;
-
-import java.util.List;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-
-/**
- * Publisher.
- */
-public interface Publisher {
-
- void active(List<TopicSink> topicSinks);
-
- void stop();
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProvider.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProvider.java
deleted file mode 100644
index 1bff2d747..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProvider.java
+++ /dev/null
@@ -1,619 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.instantiation;
-
-import com.google.gson.Gson;
-import com.google.gson.internal.LinkedTreeMap;
-import com.google.gson.reflect.TypeToken;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.function.Function;
-import java.util.function.UnaryOperator;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import lombok.AllArgsConstructor;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.messages.rest.GenericNameVersion;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopOrderStateResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopPrimed;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopPrimedResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstancePropertiesResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
-import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningProvider;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.common.parameters.ObjectValidationResult;
-import org.onap.policy.common.parameters.ValidationResult;
-import org.onap.policy.common.parameters.ValidationStatus;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNameVersion;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * This class is dedicated to the Instantiation of Commissioned control loop.
- */
-@Service
-@Transactional
-@AllArgsConstructor
-public class ControlLoopInstantiationProvider {
- private static final String CONTROL_LOOP_NODE_TYPE = "org.onap.policy.clamp.controlloop.ControlLoop";
- private static final String CONTROL_LOOP_NODE_ELEMENT_TYPE = "ControlLoopElement";
- private static final String PARTICIPANT_ID_PROPERTY_KEY = "participant_id";
- private static final String PARTICIPANT_TYPE_PROPERTY_KEY = "participantType";
- private static final String CL_ELEMENT_NAME = "name";
- private static final String CL_ELEMENT_VERSION = "version";
- private static final String INSTANCE_TEXT = "_Instance";
-
- private static final Gson GSON = new Gson();
-
- private final ControlLoopProvider controlLoopProvider;
- private final CommissioningProvider commissioningProvider;
- private final SupervisionHandler supervisionHandler;
- private final ParticipantProvider participantProvider;
- private static final String ENTRY = "entry ";
-
- /**
- * Creates Instance Properties and Control Loop.
- *
- * @param serviceTemplate the service template
- * @return the result of the instantiation operation
- * @throws PfModelException on creation errors
- */
- public InstancePropertiesResponse createInstanceProperties(ToscaServiceTemplate serviceTemplate)
- throws PfModelException {
-
- String instanceName = generateSequentialInstanceName();
- ControlLoop controlLoop = new ControlLoop();
- Map<UUID, ControlLoopElement> controlLoopElements = new HashMap<>();
-
- ToscaServiceTemplate toscaServiceTemplate = commissioningProvider.getAllToscaServiceTemplate().get(0);
-
- Map<String, ToscaNodeTemplate> persistedNodeTemplateMap =
- toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates();
-
- Map<String, ToscaNodeTemplate> nodeTemplates = deepCloneNodeTemplate(serviceTemplate);
-
- nodeTemplates.forEach((key, template) -> {
- ToscaNodeTemplate newNodeTemplate = new ToscaNodeTemplate();
- String name = key + instanceName;
- String version = template.getVersion();
- String description = template.getDescription() + instanceName;
- newNodeTemplate.setName(name);
- newNodeTemplate.setVersion(version);
- newNodeTemplate.setDescription(description);
- newNodeTemplate.setProperties(new HashMap<>(template.getProperties()));
- newNodeTemplate.setType(template.getType());
- newNodeTemplate.setTypeVersion(template.getTypeVersion());
- newNodeTemplate.setMetadata(template.getMetadata());
-
- crateNewControlLoopInstance(instanceName, controlLoop, controlLoopElements, template, newNodeTemplate);
-
- persistedNodeTemplateMap.put(name, newNodeTemplate);
- });
-
- ControlLoops controlLoops = new ControlLoops();
-
- serviceTemplate.getToscaTopologyTemplate().getNodeTemplates().putAll(persistedNodeTemplateMap);
-
- controlLoop.setElements(controlLoopElements);
- controlLoops.getControlLoopList().add(controlLoop);
-
- return saveInstancePropertiesAndControlLoop(serviceTemplate, controlLoops);
- }
-
- /**
- * Deletes Instance Properties.
- *
- * @param name the name of the control loop to delete
- * @param version the version of the control loop to delete
- * @return the result of the deletion
- * @throws PfModelException on deletion errors
- */
- public InstantiationResponse deleteInstanceProperties(String name, String version) throws PfModelException {
-
- String instanceName = getInstancePropertyName(name, version);
-
- Map<String, ToscaNodeTemplate> filteredToscaNodeTemplateMap = new HashMap<>();
-
- ToscaServiceTemplate toscaServiceTemplate = commissioningProvider.getAllToscaServiceTemplate().get(0);
-
- toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates().forEach((key, nodeTemplate) -> {
- if (!nodeTemplate.getName().contains(instanceName)) {
- filteredToscaNodeTemplateMap.put(key, nodeTemplate);
- }
- });
-
- List<ToscaNodeTemplate> filteredToscaNodeTemplateList = toscaServiceTemplate.getToscaTopologyTemplate()
- .getNodeTemplates().values().stream()
- .filter(nodeTemplate -> nodeTemplate.getName().contains(instanceName)).collect(Collectors.toList());
-
- InstantiationResponse response = this.deleteControlLoop(name, version);
-
- controlLoopProvider.deleteInstanceProperties(filteredToscaNodeTemplateMap, filteredToscaNodeTemplateList);
-
- return response;
- }
-
- /**
- * Create control loops.
- *
- * @param controlLoops the control loop
- * @return the result of the instantiation operation
- * @throws PfModelException on creation errors
- */
- public InstantiationResponse createControlLoops(ControlLoops controlLoops) throws PfModelException {
- for (ControlLoop controlLoop : controlLoops.getControlLoopList()) {
- var checkControlLoopOpt = controlLoopProvider.findControlLoop(controlLoop.getKey().asIdentifier());
- if (checkControlLoopOpt.isPresent()) {
- throw new PfModelException(Response.Status.BAD_REQUEST,
- controlLoop.getKey().asIdentifier() + " already defined");
- }
- }
- BeanValidationResult validationResult = validateControlLoops(controlLoops);
- if (!validationResult.isValid()) {
- throw new PfModelException(Response.Status.BAD_REQUEST, validationResult.getResult());
- }
- controlLoopProvider.saveControlLoops(controlLoops.getControlLoopList());
-
- var response = new InstantiationResponse();
- response.setAffectedControlLoops(controlLoops.getControlLoopList().stream()
- .map(cl -> cl.getKey().asIdentifier()).collect(Collectors.toList()));
-
- return response;
- }
-
- /**
- * Update control loops.
- *
- * @param controlLoops the control loop
- * @return the result of the instantiation operation
- * @throws PfModelException on update errors
- */
- public InstantiationResponse updateControlLoops(ControlLoops controlLoops) throws PfModelException {
- BeanValidationResult validationResult = validateControlLoops(controlLoops);
- if (!validationResult.isValid()) {
- throw new PfModelException(Response.Status.BAD_REQUEST, validationResult.getResult());
- }
- controlLoopProvider.saveControlLoops(controlLoops.getControlLoopList());
-
- var response = new InstantiationResponse();
- response.setAffectedControlLoops(controlLoops.getControlLoopList().stream()
- .map(cl -> cl.getKey().asIdentifier()).collect(Collectors.toList()));
-
- return response;
- }
-
- /**
- * Validate ControlLoops.
- *
- * @param controlLoops ControlLoops to validate
- * @return the result of validation
- * @throws PfModelException if controlLoops is not valid
- */
- private BeanValidationResult validateControlLoops(ControlLoops controlLoops) throws PfModelException {
-
- var result = new BeanValidationResult("ControlLoops", controlLoops);
-
- for (ControlLoop controlLoop : controlLoops.getControlLoopList()) {
- var subResult = new BeanValidationResult(ENTRY + controlLoop.getDefinition().getName(), controlLoop);
-
- List<ToscaNodeTemplate> toscaNodeTemplates = commissioningProvider.getControlLoopDefinitions(
- controlLoop.getDefinition().getName(), controlLoop.getDefinition().getVersion());
-
- if (toscaNodeTemplates.isEmpty()) {
- subResult.addResult(new ObjectValidationResult("ControlLoop", controlLoop.getDefinition().getName(),
- ValidationStatus.INVALID, "Commissioned control loop definition not FOUND"));
- } else if (toscaNodeTemplates.size() > 1) {
- subResult.addResult(new ObjectValidationResult("ControlLoop", controlLoop.getDefinition().getName(),
- ValidationStatus.INVALID, "Commissioned control loop definition not VALID"));
- } else {
-
- List<ToscaNodeTemplate> clElementDefinitions =
- commissioningProvider.getControlLoopElementDefinitions(toscaNodeTemplates.get(0));
-
- // @formatter:off
- Map<String, ToscaConceptIdentifier> definitions = clElementDefinitions
- .stream()
- .map(nodeTemplate -> nodeTemplate.getKey().asIdentifier())
- .collect(Collectors.toMap(ToscaConceptIdentifier::getName, UnaryOperator.identity()));
- // @formatter:on
-
- for (ControlLoopElement element : controlLoop.getElements().values()) {
- subResult.addResult(validateDefinition(definitions, element.getDefinition()));
- }
- }
- result.addResult(subResult);
- }
- return result;
- }
-
- /**
- * Validate ToscaConceptIdentifier, checking if exist in ToscaConceptIdentifiers map.
- *
- * @param definitions map of all ToscaConceptIdentifiers
- * @param definition ToscaConceptIdentifier to validate
- * @return the validation result
- */
- private ValidationResult validateDefinition(Map<String, ToscaConceptIdentifier> definitions,
- ToscaConceptIdentifier definition) {
- var result = new BeanValidationResult(ENTRY + definition.getName(), definition);
- ToscaConceptIdentifier identifier = definitions.get(definition.getName());
- if (identifier == null) {
- result.setResult(ValidationStatus.INVALID, "Not FOUND");
- } else if (!identifier.equals(definition)) {
- result.setResult(ValidationStatus.INVALID, "Version not matching");
- }
- return (result.isClean() ? null : result);
- }
-
- /**
- * Delete the control loop with the given name and version.
- *
- * @param name the name of the control loop to delete
- * @param version the version of the control loop to delete
- * @return the result of the deletion
- * @throws PfModelException on deletion errors
- */
- public InstantiationResponse deleteControlLoop(String name, String version) throws PfModelException {
- var controlLoopOpt = controlLoopProvider.findControlLoop(name, version);
- if (controlLoopOpt.isEmpty()) {
- throw new PfModelException(Response.Status.NOT_FOUND, "Control Loop not found");
- }
- var controlLoop = controlLoopOpt.get();
- if (!ControlLoopState.UNINITIALISED.equals(controlLoop.getState())) {
- throw new PfModelException(Response.Status.BAD_REQUEST,
- "Control Loop State is still " + controlLoop.getState());
- }
- var response = new InstantiationResponse();
- response.setAffectedControlLoops(
- List.of(controlLoopProvider.deleteControlLoop(name, version).getKey().asIdentifier()));
- return response;
- }
-
- /**
- * Get the requested control loops.
- *
- * @param name the name of the control loop to get, null for all control loops
- * @param version the version of the control loop to get, null for all control loops
- * @return the control loops
- * @throws PfModelException on errors getting control loops
- */
- @Transactional(readOnly = true)
- public ControlLoops getControlLoops(String name, String version) throws PfModelException {
- var controlLoops = new ControlLoops();
- controlLoops.setControlLoopList(controlLoopProvider.getControlLoops(name, version));
-
- return controlLoops;
- }
-
- /**
- * Issue a command to control loops, setting their ordered state.
- *
- * @param command the command to issue to control loops
- * @return the result of the initiation command
- * @throws PfModelException on errors setting the ordered state on the control loops
- * @throws ControlLoopException on ordered state invalid
- */
- public InstantiationResponse issueControlLoopCommand(InstantiationCommand command)
- throws ControlLoopException, PfModelException {
-
- if (command.getOrderedState() == null) {
- throw new ControlLoopException(Status.BAD_REQUEST, "ordered state invalid or not specified on command");
- }
-
- var participants = participantProvider.getParticipants();
- if (participants.isEmpty()) {
- throw new ControlLoopException(Status.BAD_REQUEST, "No participants registered");
- }
- var validationResult = new BeanValidationResult("InstantiationCommand", command);
- List<ControlLoop> controlLoops = new ArrayList<>(command.getControlLoopIdentifierList().size());
- for (ToscaConceptIdentifier id : command.getControlLoopIdentifierList()) {
- var controlLoopOpt = controlLoopProvider.findControlLoop(id);
- if (controlLoopOpt.isEmpty()) {
- validationResult.addResult("ToscaConceptIdentifier", id, ValidationStatus.INVALID,
- "ControlLoop with id " + id + " not found");
- } else {
- var controlLoop = controlLoopOpt.get();
- controlLoop.setCascadedOrderedState(command.getOrderedState());
- controlLoops.add(controlLoop);
- }
- }
- if (validationResult.isValid()) {
- validationResult = validateIssueControlLoops(controlLoops, participants);
- }
- if (!validationResult.isValid()) {
- throw new PfModelException(Response.Status.BAD_REQUEST, validationResult.getResult());
- }
- controlLoopProvider.saveControlLoops(controlLoops);
-
- supervisionHandler.triggerControlLoopSupervision(command.getControlLoopIdentifierList());
- var response = new InstantiationResponse();
- response.setAffectedControlLoops(command.getControlLoopIdentifierList());
-
- return response;
- }
-
- private BeanValidationResult validateIssueControlLoops(List<ControlLoop> controlLoops,
- List<Participant> participants) {
- var result = new BeanValidationResult("ControlLoops", controlLoops);
-
- Map<ToscaConceptIdentifier, Participant> participantMap = participants.stream()
- .collect(Collectors.toMap(participant -> participant.getKey().asIdentifier(), Function.identity()));
-
- for (ControlLoop controlLoop : controlLoops) {
-
- for (var element : controlLoop.getElements().values()) {
-
- var subResult = new BeanValidationResult(ENTRY + element.getDefinition().getName(), element);
- Participant p = participantMap.get(element.getParticipantId());
- if (p == null) {
- subResult.addResult(new ObjectValidationResult(CONTROL_LOOP_NODE_ELEMENT_TYPE,
- element.getDefinition().getName(), ValidationStatus.INVALID,
- "Participant with ID " + element.getParticipantId() + " is not registered"));
- } else if (!p.getParticipantType().equals(element.getParticipantType())) {
- subResult.addResult(new ObjectValidationResult(CONTROL_LOOP_NODE_ELEMENT_TYPE,
- element.getDefinition().getName(), ValidationStatus.INVALID,
- "Participant with ID " + element.getParticipantType() + " - " + element.getParticipantId()
- + " is not registered"));
- }
- result.addResult(subResult);
- }
-
- }
-
- return result;
- }
-
- /**
- * Gets a list of control loops with it's ordered state.
- *
- * @param name the name of the control loop to get, null for all control loops
- * @param version the version of the control loop to get, null for all control loops
- * @return a list of Instantiation Command
- * @throws PfModelException on errors getting control loops
- */
- @Transactional(readOnly = true)
- public ControlLoopOrderStateResponse getInstantiationOrderState(String name, String version)
- throws PfModelException {
-
- List<ControlLoop> controlLoops = controlLoopProvider.getControlLoops(name, version);
-
- var response = new ControlLoopOrderStateResponse();
-
- controlLoops.forEach(controlLoop -> {
- var genericNameVersion = new GenericNameVersion();
- genericNameVersion.setName(controlLoop.getName());
- genericNameVersion.setVersion(controlLoop.getVersion());
- response.getControlLoopIdentifierList().add(genericNameVersion);
- });
-
- return response;
- }
-
- /**
- * Saves Instance Properties and Control Loop.
- * Gets a list of control loops which are primed or de-primed.
- *
- * @param name the name of the control loop to get, null for all control loops
- * @param version the version of the control loop to get, null for all control loops
- * @return a list of Instantiation Command
- * @throws PfModelException on errors getting control loops
- */
- @Transactional(readOnly = true)
- public ControlLoopPrimedResponse getControlLoopPriming(String name, String version) throws PfModelException {
-
- List<ControlLoop> controlLoops = controlLoopProvider.getControlLoops(name, version);
-
- var response = new ControlLoopPrimedResponse();
-
- controlLoops.forEach(controlLoop -> {
- var primed = new ControlLoopPrimed();
- primed.setName(controlLoop.getName());
- primed.setVersion(controlLoop.getVersion());
- primed.setPrimed(controlLoop.getPrimed());
- response.getPrimedControlLoopsList().add(primed);
- });
-
- return response;
- }
-
- /**
- * Creates instance element name.
- *
- * @param serviceTemplate the service template
- * @param controlLoops a list of control loops
- * @return the result of the instance properties and instantiation operation
- * @throws PfModelException on creation errors
- */
- private InstancePropertiesResponse saveInstancePropertiesAndControlLoop(ToscaServiceTemplate serviceTemplate,
- ControlLoops controlLoops) throws PfModelException {
-
- for (var controlLoop : controlLoops.getControlLoopList()) {
- var checkControlLoopOpt = controlLoopProvider.findControlLoop(controlLoop.getKey().asIdentifier());
- if (checkControlLoopOpt.isPresent()) {
- throw new PfModelException(Response.Status.BAD_REQUEST,
- "Control loop with id " + controlLoop.getKey().asIdentifier() + " already defined");
- }
- }
- Map<String, ToscaNodeTemplate> toscaSavedNodeTemplate =
- controlLoopProvider.saveInstanceProperties(serviceTemplate);
- controlLoopProvider.saveControlLoops(controlLoops.getControlLoopList());
- List<ToscaConceptIdentifier> affectedControlLoops = controlLoops.getControlLoopList().stream()
- .map(cl -> cl.getKey().asIdentifier()).collect(Collectors.toList());
-
- List<ToscaConceptIdentifier> toscaAffectedProperties = toscaSavedNodeTemplate.values().stream()
- .map(template -> template.getKey().asIdentifier()).collect(Collectors.toList());
-
- var response = new InstancePropertiesResponse();
- response.setAffectedInstanceProperties(Stream.of(affectedControlLoops, toscaAffectedProperties)
- .flatMap(Collection::stream).collect(Collectors.toList()));
-
- return response;
- }
-
- /**
- * Crates a new Control Loop instance.
- *
- * @param instanceName Control Loop Instance name
- * @param controlLoop empty Control Loop
- * @param controlLoopElements new Control Loop Element map
- * @param template original Cloned Tosca Node Template
- * @param newNodeTemplate new Tosca Node Template
- */
- private void crateNewControlLoopInstance(String instanceName, ControlLoop controlLoop,
- Map<UUID, ControlLoopElement> controlLoopElements, ToscaNodeTemplate template,
- ToscaNodeTemplate newNodeTemplate) {
- if (template.getType().equals(CONTROL_LOOP_NODE_TYPE)) {
- controlLoop.setDefinition(getControlLoopDefinition(newNodeTemplate));
- }
-
- if (template.getType().contains(CONTROL_LOOP_NODE_ELEMENT_TYPE)) {
- ControlLoopElement controlLoopElement = getControlLoopElement(newNodeTemplate);
- controlLoopElements.put(controlLoopElement.getId(), controlLoopElement);
- }
-
- controlLoop.setName("PMSH" + instanceName);
- controlLoop.setVersion(template.getVersion());
- controlLoop.setDescription("PMSH control loop " + instanceName);
- controlLoop.setState(ControlLoopState.UNINITIALISED);
- controlLoop.setOrderedState(ControlLoopOrderedState.UNINITIALISED);
- }
-
- /**
- * Get's the instance property name of the control loop.
- *
- * @param name the name of the control loop to get, null for all control loops
- * @param version the version of the control loop to get, null for all control loops
- * @return the instance name of the control loop instance properties
- * @throws PfModelException on errors getting control loops
- */
- private String getInstancePropertyName(String name, String version) throws PfModelException {
- List<String> toscaDefinitionsNames = controlLoopProvider.getControlLoops(name, version).stream()
- .map(ControlLoop::getDefinition).map(ToscaNameVersion::getName).collect(Collectors.toList());
-
- return toscaDefinitionsNames.stream().reduce("", (s1, s2) -> {
-
- if (s2.contains(INSTANCE_TEXT)) {
- String[] instances = s2.split(INSTANCE_TEXT);
-
- return INSTANCE_TEXT + instances[1];
- }
-
- return s1;
- });
- }
-
- /**
- * Generates Instance Name in sequential order and return it to append to the Node Template Name.
- *
- * @return instanceName
- */
- private String generateSequentialInstanceName() {
- List<ToscaNodeTemplate> nodeTemplates = controlLoopProvider.getAllNodeTemplates();
-
- int instanceNumber = nodeTemplates.stream().map(ToscaNodeTemplate::getName)
- .filter(name -> name.contains(INSTANCE_TEXT)).map(n -> {
- String[] defNameArr = n.split(INSTANCE_TEXT);
-
- return Integer.parseInt(defNameArr[1]);
- }).reduce(0, Math::max);
-
- return INSTANCE_TEXT + (instanceNumber + 1);
- }
-
- /**
- * Retrieves Control Loop Definition.
- *
- * @param template tosca node template
- * @return control loop definition
- */
- private ToscaConceptIdentifier getControlLoopDefinition(ToscaNodeTemplate template) {
- ToscaConceptIdentifier definition = new ToscaConceptIdentifier();
- definition.setName(template.getName());
- definition.setVersion(template.getVersion());
- return definition;
- }
-
- /**
- * Retrieves Control Loop Element.
- *
- * @param template tosca node template
- * @return a control loop element
- */
- @SuppressWarnings("unchecked")
- private ControlLoopElement getControlLoopElement(ToscaNodeTemplate template) {
- ControlLoopElement controlLoopElement = new ControlLoopElement();
- ToscaConceptIdentifier definition = new ToscaConceptIdentifier();
- definition.setName(template.getName());
- definition.setVersion(template.getVersion());
- controlLoopElement.setDefinition(definition);
- LinkedTreeMap<String, Object> participantId =
- (LinkedTreeMap<String, Object>) template.getProperties().get(PARTICIPANT_ID_PROPERTY_KEY);
- if (participantId != null) {
- ToscaConceptIdentifier participantIdProperty = new ToscaConceptIdentifier();
- participantIdProperty.setName(String.valueOf(participantId.get(CL_ELEMENT_NAME)));
- participantIdProperty.setVersion(String.valueOf(participantId.get(CL_ELEMENT_VERSION)));
- controlLoopElement.setParticipantId(participantIdProperty);
- }
- LinkedTreeMap<String, Object> participantType =
- (LinkedTreeMap<String, Object>) template.getProperties().get(PARTICIPANT_TYPE_PROPERTY_KEY);
- if (participantType != null) {
- ToscaConceptIdentifier participantTypeProperty = new ToscaConceptIdentifier();
- participantTypeProperty.setName(String.valueOf(participantType.get(CL_ELEMENT_NAME)));
- participantTypeProperty.setVersion(participantType.get(CL_ELEMENT_VERSION).toString());
- controlLoopElement.setParticipantType(participantTypeProperty);
- }
- return controlLoopElement;
- }
-
- /**
- * Deep clones ToscaNodeTemplate.
- *
- * @param serviceTemplate ToscaServiceTemplate
- * @return a cloned Hash Map of ToscaNodeTemplate
- */
- private Map<String, ToscaNodeTemplate> deepCloneNodeTemplate(ToscaServiceTemplate serviceTemplate) {
- String jsonString = GSON.toJson(serviceTemplate.getToscaTopologyTemplate().getNodeTemplates());
- Type type = new TypeToken<HashMap<String, ToscaNodeTemplate>>() {}.getType();
- return GSON.fromJson(jsonString, type);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java
deleted file mode 100644
index 047bca2b1..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.parameters;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import lombok.Getter;
-import lombok.Setter;
-import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
-import org.onap.policy.common.parameters.validation.ParameterGroupConstraint;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.validation.annotation.Validated;
-
-/**
- * Class to hold all parameters needed for the Control Loop runtime component.
- *
- */
-@Validated
-@Getter
-@Setter
-@ConfigurationProperties(prefix = "runtime")
-public class ClRuntimeParameterGroup {
-
- @Valid
- @NotNull
- private ParticipantParameters participantParameters;
-
- @NotNull
- @ParameterGroupConstraint
- private TopicParameterGroup topicParameterGroup;
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantParameters.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantParameters.java
deleted file mode 100644
index e3e34878f..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantParameters.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.controlloop.runtime.main.parameters;
-
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.validation.annotation.Validated;
-
-/**
- * Parameters for communicating with participants.
- */
-@Getter
-@Setter
-@Validated
-public class ParticipantParameters {
-
- @Min(100)
- private long heartBeatMs;
-
- @Min(100)
- private long maxStatusWaitMs;
-
- @Valid
- @NotNull
- private ParticipantUpdateParameters updateParameters;
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantUpdateParameters.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantUpdateParameters.java
deleted file mode 100644
index c0b0480de..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantUpdateParameters.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.controlloop.runtime.main.parameters;
-
-import javax.validation.constraints.Min;
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.validation.annotation.Validated;
-
-/**
- * Parameters for Participant UPDATE requests.
- */
-@Getter
-@Setter
-@Validated
-public class ParticipantUpdateParameters {
-
- /**
- * Maximum number of times to re-send a request to a PDP.
- */
- @Min(value = 1)
- private int maxRetryCount;
-
- /**
- * Maximum time to wait, in milliseconds, for a PDP response.
- */
- @Min(value = 100)
- private long maxWaitMs;
-
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/CommissioningController.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/CommissioningController.java
deleted file mode 100644
index fcb5aed97..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/CommissioningController.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.rest;
-
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Authorization;
-import io.swagger.annotations.Extension;
-import io.swagger.annotations.ExtensionProperty;
-import io.swagger.annotations.ResponseHeader;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import javax.ws.rs.core.Response.Status;
-import lombok.RequiredArgsConstructor;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.models.messages.rest.commissioning.CommissioningResponse;
-import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningProvider;
-import org.onap.policy.clamp.controlloop.runtime.main.web.AbstractRestController;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * Class to provide REST end points for creating, deleting, querying commissioned control loops.
- */
-@RestController
-@RequiredArgsConstructor
-public class CommissioningController extends AbstractRestController {
-
- private static final String TAGS = "Clamp Control Loop Commissioning API";
-
- private final CommissioningProvider provider;
-
- /**
- * Creates a control loop definition.
- *
- * @param requestId request ID used in ONAP logging
- * @param body the body of control loop following TOSCA definition
- * @return a response
- * @throws PfModelException on errors creating a control loop definition
- */
- // @formatter:off
- @PostMapping(value = "/commission",
- consumes = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML},
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(
- value = "Commissions control loop definitions",
- notes = "Commissions control loop definitions, returning the commissioned control loop definition IDs",
- response = CommissioningResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME,
- description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_PATCH_NAME,
- description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_LATEST_NAME,
- description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = REQUEST_ID_NAME,
- description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)
- },
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<CommissioningResponse> create(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Entity Body of Control Loop", required = true) @RequestBody ToscaServiceTemplate body)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.createControlLoopDefinitions(body));
- }
-
- /**
- * Deletes a control loop definition.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop definition to delete
- * @param version the version of the control loop definition to delete
- * @return a response
- * @throws PfModelException on errors deleting a control loop definition
- */
- // @formatter:off
- @DeleteMapping(value = "/commission",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Delete a commissioned control loop",
- notes = "Deletes a Commissioned Control Loop, returning optional error details",
- response = CommissioningResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME,
- description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_PATCH_NAME,
- description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_LATEST_NAME,
- description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = REQUEST_ID_NAME,
- description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<CommissioningResponse> delete(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop definition name", required = true) @RequestParam(
- value = "name") String name,
- @ApiParam(
- value = "Control Loop definition version",
- required = true) @RequestParam("version") String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.deleteControlLoopDefinition(name, version));
- }
-
- /**
- * Queries details of all or specific control loop definitions.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop definition to get, null for all definitions
- * @param version the version of the control loop definition to get, null for all definitions
- * @return the control loop definitions
- * @throws PfModelException on errors getting details of all or specific control loop definitions
- */
- // @formatter:off
- @GetMapping(value = "/commission",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested commissioned control loop definitions",
- notes = "Queries details of the requested commissioned control loop definitions, "
- + "returning all control loop details",
- response = ToscaNodeTemplate.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<List<ToscaNodeTemplate>> query(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop definition name", required = false) @RequestParam(
- value = "name",
- required = false) String name,
- @ApiParam(value = "Control Loop definition version", required = false) @RequestParam(
- value = "version",
- required = false) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.getControlLoopDefinitions(name, version));
- }
-
- /**
- * Retrieves the Tosca Service Template.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the tosca service template to retrieve
- * @param version the version of the tosca service template to get
- * @return the specified tosca service template
- * @throws PfModelException on errors getting the Tosca Service Template
- */
- // @formatter:off
- @GetMapping(value = "/commission/toscaservicetemplate",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested tosca service templates",
- notes = "Queries details of the requested commissioned tosca service template, "
- + "returning all tosca service template details",
- response = ToscaServiceTemplate.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<String> queryToscaServiceTemplate(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Tosca service template name", required = false) @RequestParam(
- value = "name",
- required = false) String name,
- @ApiParam(value = "Tosca service template version", required = false) @RequestParam(
- value = "version",
- required = false) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.getToscaServiceTemplateReduced(name, version));
- }
-
- /**
- * Retrieves the Json Schema for the specified Tosca Service Template.
- *
- * @param requestId request ID used in ONAP logging
- * @param section section of the tosca service template to get schema for
- * @return the specified tosca service template or section Json Schema
- * @throws PfModelException on errros getting the Json Schema for the specified Tosca Service Template
- */
- // @formatter:off
- @GetMapping(value = "/commission/toscaServiceTemplateSchema",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested tosca service template json schema",
- notes = "Queries details of the requested commissioned tosca service template json schema, "
- + "returning all tosca service template json schema details",
- response = ToscaServiceTemplate.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<String> queryToscaServiceTemplateJsonSchema(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Section of Template schema is desired for", required = false) @RequestParam(
- value = "section",
- required = false,
- defaultValue = "all") String section)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.getToscaServiceTemplateSchema(section));
- }
-
- /**
- * Retrieves the Common or Instance Properties for the specified Tosca Service Template.
- *
- * @param requestId request ID used in ONAP logging
- * @param common a flag, true to get common properties, false to get instance properties
- * @param name the name of the tosca service template to retrieve
- * @param version the version of the tosca service template to get
- * @return the specified tosca service template or section Json Schema
- * @throws PfModelException on errors getting the Common or Instance Properties
- * @throws ControlLoopException on error getting the Common or Instance Properties
- */
- // @formatter:off
- @GetMapping(value = "/commission/getCommonOrInstanceProperties",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested tosca service template common or instance properties",
- notes = "Queries details of the requested commissioned tosca service template json common"
- + "or instance properties, returning all tosca service template common or instance property details",
- response = ToscaServiceTemplate.class,
- tags = {"Clamp Control Loop Commissioning API"},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<Map<String, ToscaNodeTemplate>> queryToscaServiceCommonOrInstanceProperties(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Flag, true for common properties, false for instance", required = false) @RequestParam(
- value = "common",
- defaultValue = "false",
- required = false) boolean common,
- @ApiParam(value = "Tosca service template name", required = false) @RequestParam(
- value = "name",
- required = false) String name,
- @ApiParam(value = "Tosca service template version", required = false) @RequestParam(
- value = "version",
- required = false) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.getNodeTemplatesWithCommonOrInstanceProperties(common, name, version));
- }
-
- /**
- * Queries the elements of a specific control loop.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop definition to get
- * @param version the version of the control loop definition to get
- * @return the control loop element definitions
- * @throws PfModelException on errors getting the elements of a specific control loop
- */
- // @formatter:off
- @GetMapping(value = "/commission/elements",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested commissioned control loop element definitions",
- notes = "Queries details of the requested commissioned control loop element definitions, "
- + "returning all control loop elements' details",
- response = ToscaNodeTemplate.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<List<ToscaNodeTemplate>> queryElements(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop definition name", required = false) @RequestParam(
- value = "name",
- required = false) String name,
- @ApiParam(value = "Control Loop definition version", required = false) @RequestParam(
- value = "version",
- required = false) String version)
- throws PfModelException {
-
- List<ToscaNodeTemplate> nodeTemplate = provider.getControlLoopDefinitions(name, version);
- // Prevent ambiguous queries with multiple returns
- if (nodeTemplate.size() > 1) {
- throw new PfModelException(Status.NOT_ACCEPTABLE, "Multiple ControlLoops are not supported");
- }
-
- List<ToscaNodeTemplate> response = provider.getControlLoopElementDefinitions(nodeTemplate.get(0));
- return ResponseEntity.ok().body(response);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/InstantiationController.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/InstantiationController.java
deleted file mode 100644
index d229e68cb..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/InstantiationController.java
+++ /dev/null
@@ -1,637 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.rest;
-
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Authorization;
-import io.swagger.annotations.Extension;
-import io.swagger.annotations.ExtensionProperty;
-import io.swagger.annotations.ResponseHeader;
-import java.util.UUID;
-import lombok.RequiredArgsConstructor;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopOrderStateResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopPrimedResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstancePropertiesResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
-import org.onap.policy.clamp.controlloop.runtime.instantiation.ControlLoopInstantiationProvider;
-import org.onap.policy.clamp.controlloop.runtime.main.web.AbstractRestController;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * Class to provide REST end points for creating, deleting, query and commanding a control loop definition.
- */
-@RestController
-@RequiredArgsConstructor
-public class InstantiationController extends AbstractRestController {
-
- private static final String TAGS = "Clamp Control Loop Instantiation API";
-
- // The CL provider for instantiation requests
- private final ControlLoopInstantiationProvider provider;
-
- /**
- * Creates a control loop.
- *
- * @param requestId request ID used in ONAP logging
- * @param controlLoops the control loops
- * @return a response
- * @throws PfModelException on errors creating a control loop
- */
- // @formatter:off
- @PostMapping(value = "/instantiation",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML},
- consumes = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(
- value = "Commissions control loop definitions",
- notes = "Commissions control loop definitions, returning the control loop IDs",
- response = InstantiationResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME,
- description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_PATCH_NAME,
- description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_LATEST_NAME,
- description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = REQUEST_ID_NAME,
- description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)
- },
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<InstantiationResponse> create(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Entity Body of Control Loop", required = true) @RequestBody ControlLoops controlLoops)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.createControlLoops(controlLoops));
- }
-
- /**
- * Saves instance properties.
- *
- * @param requestId request ID used in ONAP logging
- * @param body the body of control loop following TOSCA definition
- * @return a response
- */
- // @formatter:off
- @PostMapping(value = "/instanceProperties",
- consumes = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML},
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(
- value = "Saves instance properties",
- notes = "Saves instance properties, returning the saved instances properties and it's version",
- response = InstancePropertiesResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME,
- description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_PATCH_NAME,
- description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_LATEST_NAME,
- description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = REQUEST_ID_NAME,
- description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)
- },
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<InstancePropertiesResponse> createInstanceProperties(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Body of instance properties", required = true) @RequestBody ToscaServiceTemplate body)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.createInstanceProperties(body));
- }
-
- /**
- * Deletes a control loop definition and instance properties.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop to delete
- * @param version the version of the control loop to delete
- * @return a response
- * @throws PfModelException on errors deleting of control loop and instance properties
- */
- // @formatter:off
- @DeleteMapping(value = "/instanceProperties",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Delete a control loop and instance properties",
- notes = "Deletes a control loop and instance properties, returning optional error details",
- response = InstantiationResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME,
- description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_PATCH_NAME,
- description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_LATEST_NAME,
- description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = REQUEST_ID_NAME,
- description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
-
- public ResponseEntity<InstantiationResponse> deleteInstanceProperties(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop definition name", required = true) @RequestParam("name") String name,
- @ApiParam(value = "Control Loop definition version") @RequestParam(
- value = "version",
- required = true) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.deleteInstanceProperties(name, version));
- }
-
- /**
- * Queries details of all control loops.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop to get, null for all control loops
- * @param version the version of the control loop to get, null for all control loops
- * @return the control loops
- * @throws PfModelException on errors getting commissioning of control loop
- */
- // @formatter:off
- @GetMapping(value = "/instantiation",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested control loops",
- notes = "Queries details of the requested control loops, returning all control loop details",
- response = ControlLoops.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<ControlLoops> query(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop definition name", required = false) @RequestParam(
- value = "name",
- required = false) String name,
- @ApiParam(value = "Control Loop definition version", required = false) @RequestParam(
- value = "version",
- required = false) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.getControlLoops(name, version));
- }
-
- /**
- * Updates a control loop.
- *
- * @param requestId request ID used in ONAP logging
- * @param controlLoops the control loops
- * @return a response
- * @throws PfModelException on errors updating of control loops
- */
- // @formatter:off
- @PutMapping(value = "/instantiation",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML},
- consumes = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(
- value = "Updates control loop definitions",
- notes = "Updates control loop definitions, returning the updated control loop definition IDs",
- response = InstantiationResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME,
- description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_PATCH_NAME,
- description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_LATEST_NAME,
- description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = REQUEST_ID_NAME,
- description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)
- },
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<InstantiationResponse> update(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Entity Body of Control Loop", required = true) @RequestBody ControlLoops controlLoops)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.updateControlLoops(controlLoops));
- }
-
- /**
- * Deletes a control loop definition.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop to delete
- * @param version the version of the control loop to delete
- * @return a response
- * @throws PfModelException on errors deleting of control loop
- */
- // @formatter:off
- @DeleteMapping(value = "/instantiation",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Delete a control loop",
- notes = "Deletes a control loop, returning optional error details",
- response = InstantiationResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME,
- description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_PATCH_NAME,
- description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = VERSION_LATEST_NAME,
- description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(
- name = REQUEST_ID_NAME,
- description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
-
- public ResponseEntity<InstantiationResponse> delete(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop definition name", required = true) @RequestParam("name") String name,
- @ApiParam(value = "Control Loop definition version") @RequestParam(
- value = "version",
- required = true) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.deleteControlLoop(name, version));
- }
-
- /**
- * Issues control loop commands to control loops.
- *
- * @param requestId request ID used in ONAP logging
- * @param command the command to issue to control loops
- * @return the control loop definitions
- * @throws PfModelException on errors issuing a command
- * @throws ControlLoopException on errors issuing a command
- */
- // @formatter:off
- @PutMapping(value = "/instantiation/command",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML},
- consumes = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Issue a command to the requested control loops",
- notes = "Issues a command to a control loop, ordering a state change on the control loop",
- response = InstantiationResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<InstantiationResponse> issueControlLoopCommand(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(
- value = "Entity Body of control loop command",
- required = true) @RequestBody InstantiationCommand command)
- throws ControlLoopException, PfModelException {
-
- return ResponseEntity.accepted().body(provider.issueControlLoopCommand(command));
- }
-
- /**
- * Queries details of all control loops.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop to get, null for all control loops
- * @param version the version of the control loop to get, null for all control loops
- * @return the control loops
- * @throws PfModelException on errors getting commissioning of control loop
- */
- // @formatter:off
- @GetMapping(value = "/instantiationState",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested control loops",
- notes = "Queries details of the requested control loops, returning all control loop details",
- response = ControlLoops.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<ControlLoopOrderStateResponse> getInstantiationOrderState(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop name", required = false) @RequestParam(
- value = "name",
- required = false) String name,
- @ApiParam(value = "Control Loop version", required = false) @RequestParam(
- value = "version",
- required = false) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.getInstantiationOrderState(name, version));
- }
-
- /**
- * Queries Primed/De-Primed status of a control loop.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop to get, null for all control loops
- * @param version the version of the control loop to get, null for all control loops
- * @return the control loops
- * @throws PfModelException on errors getting priming of control loop
- */
- // @formatter:off
- @GetMapping(value = "/controlLoopPriming",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query priming details of the requested control loops",
- notes = "Queries priming details of the requested control loops, returning primed/deprimed control loops",
- response = ControlLoopPrimedResponse.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<ControlLoopPrimedResponse> getControlLoopPriming(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop definition name", required = false) @RequestParam(
- value = "name",
- required = false) String name,
- @ApiParam(value = "Control Loop definition version", required = false) @RequestParam(
- value = "version",
- required = false) String version)
- throws PfModelException {
-
- return ResponseEntity.ok().body(provider.getControlLoopPriming(name, version));
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/MonitoringQueryController.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/MonitoringQueryController.java
deleted file mode 100644
index c4ce5bb05..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/rest/MonitoringQueryController.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.rest;
-
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-import io.swagger.annotations.Authorization;
-import io.swagger.annotations.Extension;
-import io.swagger.annotations.ExtensionProperty;
-import io.swagger.annotations.ResponseHeader;
-import java.time.Instant;
-import java.util.UUID;
-import lombok.RequiredArgsConstructor;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatisticsList;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatisticsList;
-import org.onap.policy.clamp.controlloop.runtime.main.web.AbstractRestController;
-import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider;
-import org.onap.policy.models.base.PfModelException;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * This class handles REST endpoints for CL Statistics monitoring.
- */
-@RestController
-@RequiredArgsConstructor
-public class MonitoringQueryController extends AbstractRestController {
-
- private static final String TAGS = "Clamp Control Loop Monitoring API";
- private final MonitoringProvider provider;
-
- /**
- * Queries details of control loop participants statistics.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the participant to get, null for all participants statistics
- * @param version the version of the participant to get, null for all participants with the given name
- * @param recordCount the record count to be fetched
- * @param startTime the time from which to get statistics
- * @param endTime the time to which to get statistics
- * @return the participant statistics
- */
- // @formatter:off
- @GetMapping(value = "/monitoring/participant",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested participant stats",
- notes = "Queries details of the requested participant stats, returning all participant stats",
- response = ParticipantStatisticsList.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- }
- )
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<ParticipantStatisticsList> queryParticipantStatistics(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop participant name") @RequestParam(
- value = "name",
- required = false) final String name,
- @ApiParam(value = "Control Loop participant version", required = false) @RequestParam(
- value = "version",
- required = false) final String version,
- @ApiParam(value = "Record count", required = false) @RequestParam(
- value = "recordCount",
- required = false,
- defaultValue = "0") final int recordCount,
- @ApiParam(value = "start time", required = false) @RequestParam(
- value = "startTime",
- required = false) final String startTime,
- @ApiParam(value = "end time", required = false) @RequestParam(
- value = "endTime",
- required = false) final String endTime) {
-
- Instant startTimestamp = null;
- Instant endTimestamp = null;
-
- if (startTime != null) {
- startTimestamp = Instant.parse(startTime);
- }
- if (endTime != null) {
- endTimestamp = Instant.parse(endTime);
- }
- return ResponseEntity.ok().body(
- provider.fetchFilteredParticipantStatistics(name, version, recordCount, startTimestamp, endTimestamp));
- }
-
- /**
- * Queries details of all participant statistics per control loop.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop
- * @param version version of the control loop
- * @return the control loop element statistics
- */
- // @formatter:off
- @GetMapping(value = "/monitoring/participants/controlloop",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of all the participant stats in a control loop",
- notes = "Queries details of the participant stats, returning all participant stats",
- response = ClElementStatisticsList.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- })
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<ParticipantStatisticsList> queryParticipantStatisticsPerControlLoop(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop name", required = true) @RequestParam(
- value = "name",
- required = false) final String name,
- @ApiParam(value = "Control Loop version", required = true) @RequestParam(
- value = "version",
- required = false) final String version) {
-
- return ResponseEntity.ok().body(provider.fetchParticipantStatsPerControlLoop(name, version));
- }
-
- /**
- * Queries details of all control loop element statistics per control loop.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop
- * @param version version of the control loop
- * @return the control loop element statistics
- */
- // @formatter:off
- @GetMapping(value = "/monitoring/clelements/controlloop",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested cl element stats in a control loop",
- notes = "Queries details of the requested cl element stats, returning all clElement stats",
- response = ClElementStatisticsList.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- })
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<ClElementStatisticsList> queryElementStatisticsPerControlLoop(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Control Loop name", required = true) @RequestParam(
- value = "name",
- required = false) final String name,
- @ApiParam(value = "Control Loop version", required = true) @RequestParam(
- value = "version",
- required = false) final String version) {
-
- return ResponseEntity.ok().body(provider.fetchClElementStatsPerControlLoop(name, version));
- }
-
- /**
- * Queries details of all control loop element statistics per control loop.
- *
- * @param requestId request ID used in ONAP logging
- * @param name the name of the control loop
- * @param version version of the control loop
- * @param id Id of the control loop element
- * @param recordCount the record count to be fetched
- * @param startTime the time from which to get statistics
- * @param endTime the time to which to get statistics
- * @return the control loop element statistics
- * @throws PfModelException on errors getting details of all control loop element statistics per control loop
- */
- // @formatter:off
- @GetMapping(value = "/monitoring/clelement",
- produces = {MediaType.APPLICATION_JSON_VALUE, APPLICATION_YAML})
- @ApiOperation(value = "Query details of the requested cl element stats",
- notes = "Queries details of the requested cl element stats, returning all clElement stats",
- response = ClElementStatisticsList.class,
- tags = {TAGS},
- authorizations = @Authorization(value = AUTHORIZATION_TYPE),
- responseHeaders = {
- @ResponseHeader(
- name = VERSION_MINOR_NAME, description = VERSION_MINOR_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_PATCH_NAME, description = VERSION_PATCH_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = VERSION_LATEST_NAME, description = VERSION_LATEST_DESCRIPTION,
- response = String.class),
- @ResponseHeader(name = REQUEST_ID_NAME, description = REQUEST_ID_HDR_DESCRIPTION,
- response = UUID.class)},
- extensions = {
- @Extension
- (
- name = EXTENSION_NAME,
- properties = {
- @ExtensionProperty(name = API_VERSION_NAME, value = API_VERSION),
- @ExtensionProperty(name = LAST_MOD_NAME, value = LAST_MOD_RELEASE)
- }
- )
- })
- @ApiResponses(
- value = {
- @ApiResponse(code = AUTHENTICATION_ERROR_CODE, message = AUTHENTICATION_ERROR_MESSAGE),
- @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
- @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)
- }
- )
- // @formatter:on
- public ResponseEntity<ClElementStatisticsList> queryElementStatistics(
- @RequestHeader(
- name = REQUEST_ID_NAME,
- required = false) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
- @ApiParam(value = "Participant name", required = true) @RequestParam(
- value = "name",
- required = false) final String name,
- @ApiParam(value = "Participant version", required = true) @RequestParam(
- value = "version",
- required = false) final String version,
- @ApiParam(value = "Record count", required = false) @RequestParam(
- value = "recordCount",
- required = false,
- defaultValue = "0") final int recordCount,
- @ApiParam(value = "Control Loop element id", required = false) @RequestParam(
- value = "id",
- required = false) final String id,
- @ApiParam(value = "start time", required = false) @RequestParam(
- value = "startTime",
- required = false) final String startTime,
- @ApiParam(value = "end time", required = false) @RequestParam(
- value = "endTime",
- required = false) final String endTime)
- throws PfModelException {
-
- Instant startTimestamp = null;
- Instant endTimestamp = null;
-
- if (startTime != null) {
- startTimestamp = Instant.parse(startTime);
- }
- if (endTime != null) {
- endTimestamp = Instant.parse(endTime);
- }
- return ResponseEntity.ok().body(provider.fetchFilteredClElementStatistics(name, version, id, startTimestamp,
- endTimestamp, recordCount));
- }
-
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/AbstractRestController.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/AbstractRestController.java
deleted file mode 100644
index 7d279ba67..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/AbstractRestController.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.BasicAuthDefinition;
-import io.swagger.annotations.Info;
-import io.swagger.annotations.SecurityDefinition;
-import io.swagger.annotations.SwaggerDefinition;
-import io.swagger.annotations.Tag;
-import java.net.HttpURLConnection;
-import javax.ws.rs.core.MediaType;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * Common superclass to provide REST endpoints for the participant simulator.
- */
-// @formatter:off
-@RequestMapping(value = "/v2", produces = {MediaType.APPLICATION_JSON, AbstractRestController.APPLICATION_YAML})
-@Api(value = "Control Loop Commissioning API")
-@SwaggerDefinition(
- info = @Info(description =
- "Control Loop Service", version = "v1.0",
- title = "Control Loop"),
- consumes = {MediaType.APPLICATION_JSON, AbstractRestController.APPLICATION_YAML},
- produces = {MediaType.APPLICATION_JSON, AbstractRestController.APPLICATION_YAML},
- schemes = {SwaggerDefinition.Scheme.HTTP, SwaggerDefinition.Scheme.HTTPS},
- tags = {@Tag(name = "controlloop", description = "Control Loop Service")},
- securityDefinition = @SecurityDefinition(basicAuthDefinitions = {@BasicAuthDefinition(key = "basicAuth")}))
-// @formatter:on
-public abstract class AbstractRestController {
- public static final String APPLICATION_YAML = "application/yaml";
-
- public static final String EXTENSION_NAME = "interface info";
-
- public static final String API_VERSION_NAME = "api-version";
- public static final String API_VERSION = "1.0.0";
-
- public static final String LAST_MOD_NAME = "last-mod-release";
- public static final String LAST_MOD_RELEASE = "Dublin";
-
- public static final String VERSION_MINOR_NAME = "X-MinorVersion";
- public static final String VERSION_MINOR_DESCRIPTION =
- "Used to request or communicate a MINOR version back from the client"
- + " to the server, and from the server back to the client";
-
- public static final String VERSION_PATCH_NAME = "X-PatchVersion";
- public static final String VERSION_PATCH_DESCRIPTION = "Used only to communicate a PATCH version in a response for"
- + " troubleshooting purposes only, and will not be provided by" + " the client on request";
-
- public static final String VERSION_LATEST_NAME = "X-LatestVersion";
- public static final String VERSION_LATEST_DESCRIPTION = "Used only to communicate an API's latest version";
-
- public static final String REQUEST_ID_NAME = "X-ONAP-RequestID";
- public static final String REQUEST_ID_HDR_DESCRIPTION = "Used to track REST transactions for logging purpose";
- public static final String REQUEST_ID_PARAM_DESCRIPTION = "RequestID for http transaction";
-
- public static final String AUTHORIZATION_TYPE = "basicAuth";
-
- public static final int AUTHENTICATION_ERROR_CODE = HttpURLConnection.HTTP_UNAUTHORIZED;
- public static final int AUTHORIZATION_ERROR_CODE = HttpURLConnection.HTTP_FORBIDDEN;
- public static final int SERVER_ERROR_CODE = HttpURLConnection.HTTP_INTERNAL_ERROR;
-
- public static final String AUTHENTICATION_ERROR_MESSAGE = "Authentication Error";
- public static final String AUTHORIZATION_ERROR_MESSAGE = "Authorization Error";
- public static final String SERVER_ERROR_MESSAGE = "Internal Server Error";
-
- /**
- * Constructor.
- */
- protected AbstractRestController() {
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/ControlLoopAafFilter.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/ControlLoopAafFilter.java
deleted file mode 100644
index 739a691c9..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/ControlLoopAafFilter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.web;
-
-import org.onap.policy.common.endpoints.http.server.aaf.AafGranularAuthFilter;
-import org.onap.policy.common.utils.resources.MessageConstants;
-
-/**
- * Class to manage AAF filters for the control loop runtime component.
- */
-public class ControlLoopAafFilter extends AafGranularAuthFilter {
-
- public static final String AAF_NODETYPE = MessageConstants.POLICY_CLAMP;
- public static final String AAF_ROOT_PERMISSION = DEFAULT_NAMESPACE + "." + AAF_NODETYPE;
-
- @Override
- public String getPermissionTypeRoot() {
- return AAF_ROOT_PERMISSION;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/GlobalControllerExceptionHandler.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/GlobalControllerExceptionHandler.java
deleted file mode 100644
index fd493fd89..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/GlobalControllerExceptionHandler.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.web;
-
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.models.messages.rest.SimpleResponse;
-import org.onap.policy.clamp.controlloop.models.rest.RestUtils;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-@RestControllerAdvice
-public class GlobalControllerExceptionHandler {
-
- /**
- * Handle ControlLoopException.
- *
- * @param ex ControlLoopException
- * @return ResponseEntity
- */
- @ExceptionHandler(ControlLoopException.class)
- public ResponseEntity<SimpleResponse> handleBadRequest(ControlLoopException ex) {
- return RestUtils.toSimpleResponse(ex);
- }
-
- /**
- * Handle PfModelRuntimeException.
- *
- * @param ex PfModelRuntimeException
- * @return ResponseEntity
- */
- @ExceptionHandler(PfModelRuntimeException.class)
- public ResponseEntity<SimpleResponse> handleBadRequest(PfModelRuntimeException ex) {
- return RestUtils.toSimpleResponse(ex);
- }
-
- /**
- * Handle PfModelException.
- *
- * @param ex PfModelException
- * @return ResponseEntity
- */
- @ExceptionHandler(PfModelException.class)
- public ResponseEntity<SimpleResponse> handleBadRequest(PfModelException ex) {
- return RestUtils.toSimpleResponse(ex);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/RuntimeErrorController.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/RuntimeErrorController.java
deleted file mode 100644
index ac2dba355..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/web/RuntimeErrorController.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.web;
-
-import io.swagger.v3.oas.annotations.Hidden;
-import java.util.Map;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.http.HttpServletRequest;
-import org.onap.policy.clamp.controlloop.models.messages.rest.SimpleResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.TypedSimpleResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.web.error.ErrorAttributeOptions;
-import org.springframework.boot.web.servlet.error.ErrorAttributes;
-import org.springframework.boot.web.servlet.error.ErrorController;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.context.request.ServletWebRequest;
-
-@Controller
-@Hidden
-public class RuntimeErrorController implements ErrorController {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeErrorController.class);
-
- private final ErrorAttributes errorAttributes;
-
- @Value("${server.error.path}")
- private String path;
-
- /**
- * Constructor.
- *
- * @param errorAttributes ErrorAttributes
- */
- public RuntimeErrorController(ErrorAttributes errorAttributes) {
- this.errorAttributes = errorAttributes;
- }
-
- protected HttpStatus getStatus(HttpServletRequest request) {
- Integer statusCode = (Integer) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
- if (statusCode == null) {
- return HttpStatus.INTERNAL_SERVER_ERROR;
- }
- try {
- return HttpStatus.valueOf(statusCode);
- } catch (Exception ex) {
- LOGGER.error("statusCode {} Not Valid", statusCode, ex);
- return HttpStatus.INTERNAL_SERVER_ERROR;
- }
- }
-
- /**
- * Handle Errors not handled to GlobalControllerExceptionHandler.
- *
- * @param request HttpServletRequest
- * @return ResponseEntity
- */
- @RequestMapping(value = "${server.error.path}", produces = MediaType.APPLICATION_JSON_VALUE)
- public ResponseEntity<TypedSimpleResponse<SimpleResponse>> handleError(HttpServletRequest request) {
- Map<String, Object> map = this.errorAttributes.getErrorAttributes(new ServletWebRequest(request),
- ErrorAttributeOptions.defaults());
-
- var sb = new StringBuilder();
- final Object error = map.get("error");
- if (error != null) {
- sb.append(error.toString()).append(" ");
- }
- final Object message = map.get("message");
- if (message != null) {
- sb.append(message.toString());
- }
-
- TypedSimpleResponse<SimpleResponse> resp = new TypedSimpleResponse<>();
- resp.setErrorDetails(sb.toString());
-
- return ResponseEntity.status(getStatus(request)).body(resp);
-
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/monitoring/MonitoringProvider.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/monitoring/MonitoringProvider.java
deleted file mode 100644
index 2ec438bea..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/monitoring/MonitoringProvider.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.monitoring;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import lombok.AllArgsConstructor;
-import lombok.NonNull;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatistics;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatisticsList;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatistics;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatisticsList;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ClElementStatisticsProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantStatisticsProvider;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * This class provides information about statistics data of CL elements and CL Participants in database to callers.
- */
-@Service
-@Transactional
-@AllArgsConstructor
-public class MonitoringProvider {
-
- private static final String DESC_ORDER = "DESC";
- private final ParticipantStatisticsProvider participantStatisticsProvider;
- private final ClElementStatisticsProvider clElementStatisticsProvider;
- private final ControlLoopProvider controlLoopProvider;
-
- /**
- * Create participant statistics.
- *
- * @param participantStatistics the participant statistics
- * @return the result of create operation
- * @throws PfModelException on creation errors
- */
- public ParticipantStatisticsList createParticipantStatistics(List<ParticipantStatistics> participantStatistics)
- throws PfModelException {
- var participantStatisticsList = new ParticipantStatisticsList();
- participantStatisticsList
- .setStatisticsList(participantStatisticsProvider.createParticipantStatistics(participantStatistics));
-
- return participantStatisticsList;
- }
-
- /**
- * Create clElement statistics.
- *
- * @param clElementStatisticsList the clElement statistics
- * @return the result of create operation
- * @throws PfModelException on creation errors
- */
- public ClElementStatisticsList createClElementStatistics(List<ClElementStatistics> clElementStatisticsList)
- throws PfModelException {
- var elementStatisticsList = new ClElementStatisticsList();
- elementStatisticsList
- .setClElementStatistics(clElementStatisticsProvider.createClElementStatistics(clElementStatisticsList));
-
- return elementStatisticsList;
- }
-
- /**
- * Get participant statistics based on specific filters.
- *
- * @param name the name of the participant statistics to get, null to get all statistics
- * @param version the version of the participant statistics to get, null to get all statistics
- * @param recordCount number of records to be fetched.
- * @param startTime start of the timestamp, from statistics to be filtered
- * @param endTime end of the timestamp up to which statistics to be filtered
- * @return the participant found
- */
- @Transactional(readOnly = true)
- public ParticipantStatisticsList fetchFilteredParticipantStatistics(@NonNull final String name,
- final String version, int recordCount, Instant startTime, Instant endTime) {
- var participantStatisticsList = new ParticipantStatisticsList();
-
- // Additional parameters can be added in filterMap for filtering data.
- Map<String, Object> filterMap = null;
- participantStatisticsList.setStatisticsList(participantStatisticsProvider.getFilteredParticipantStatistics(name,
- version, startTime, endTime, filterMap, DESC_ORDER, recordCount));
-
- return participantStatisticsList;
- }
-
- /**
- * Get all participant statistics records found for a specific control loop. *
- *
- * @param controlLoopName name of the control loop
- * @param controlLoopVersion version of the control loop
- * @return All the participant statistics found
- * @throws PfModelRuntimeException on errors getting participant statistics
- */
- @Transactional(readOnly = true)
- public ParticipantStatisticsList fetchParticipantStatsPerControlLoop(@NonNull final String controlLoopName,
- @NonNull final String controlLoopVersion) {
- var statisticsList = new ParticipantStatisticsList();
- List<ParticipantStatistics> participantStatistics = new ArrayList<>();
- try {
- // Fetch all participantIds for a specific control loop
- List<ToscaConceptIdentifier> participantIds =
- getAllParticipantIdsPerControlLoop(controlLoopName, controlLoopVersion);
- for (ToscaConceptIdentifier id : participantIds) {
- participantStatistics.addAll(participantStatisticsProvider.getFilteredParticipantStatistics(
- id.getName(), id.getVersion(), null, null, null, DESC_ORDER, 0));
- }
- statisticsList.setStatisticsList(participantStatistics);
- } catch (PfModelException e) {
- throw new PfModelRuntimeException(e);
- }
- return statisticsList;
- }
-
- /**
- * Get clElement statistics based on specific filters.
- *
- * @param name the name of the clElement statistics to get, null to get all statistics
- * @param version the version of the clElement statistics to get, null to get all statistics
- * @param id UUID of the control loop element
- * @param startTime start of the timestamp, from statistics to be filtered
- * @param endTime end of the timestamp up to which statistics to be filtered
- * @param recordCount number of records to be fetched.
- * @return the participant found
- * @throws PfModelException on errors getting control loop statistics
- */
- @Transactional(readOnly = true)
- public ClElementStatisticsList fetchFilteredClElementStatistics(@NonNull final String name, final String version,
- final String id, Instant startTime, Instant endTime, int recordCount) throws PfModelException {
- var clElementStatisticsList = new ClElementStatisticsList();
- Map<String, Object> filterMap = new HashMap<>();
- // Adding UUID in filter if present
- if (id != null) {
- filterMap.put("localName", id);
- }
- clElementStatisticsList.setClElementStatistics(clElementStatisticsProvider.getFilteredClElementStatistics(name,
- version, startTime, endTime, filterMap, DESC_ORDER, recordCount));
-
- return clElementStatisticsList;
- }
-
- /**
- * Get clElement statistics per control loop.
- *
- * @param name the name of the control loop
- * @param version the version of the control loop
- * @return the clElement statistics found
- * @throws PfModelRuntimeException on errors getting control loop statistics
- */
- @Transactional(readOnly = true)
- public ClElementStatisticsList fetchClElementStatsPerControlLoop(@NonNull final String name,
- @NonNull final String version) {
- var clElementStatisticsList = new ClElementStatisticsList();
- List<ClElementStatistics> clElementStats = new ArrayList<>();
- try {
- List<ControlLoopElement> clElements = new ArrayList<>();
- // Fetch all control loop elements for the control loop
- var controlLoopOpt = controlLoopProvider.findControlLoop(new ToscaConceptIdentifier(name, version));
- if (controlLoopOpt.isPresent()) {
- clElements.addAll(controlLoopOpt.get().getElements().values());
- // Collect control loop element statistics for each cl element.
- for (ControlLoopElement clElement : clElements) {
- clElementStats.addAll(fetchFilteredClElementStatistics(clElement.getParticipantId().getName(),
- clElement.getParticipantId().getVersion(), clElement.getId().toString(), null, null, 0)
- .getClElementStatistics());
- }
- }
- clElementStatisticsList.setClElementStatistics(clElementStats);
- } catch (PfModelException e) {
- throw new PfModelRuntimeException(e);
- }
- return clElementStatisticsList;
- }
-
- /**
- * If required, REST end point can be defined for this method to fetch associated participant Ids
- * for a control loop.
- *
- * @param name the name of the control loop
- * @param version the version of the control loop
- * @return List of participant Id
- * @throws PfModelException on errors
- */
- @Transactional(readOnly = true)
- public List<ToscaConceptIdentifier> getAllParticipantIdsPerControlLoop(String name, String version)
- throws PfModelException {
- List<ToscaConceptIdentifier> participantIds = new ArrayList<>();
- var controlLoopOpt = controlLoopProvider.findControlLoop(new ToscaConceptIdentifier(name, version));
- if (controlLoopOpt.isPresent()) {
- for (ControlLoopElement clElement : controlLoopOpt.get().getElements().values()) {
- participantIds.add(clElement.getParticipantId());
- }
- }
- return participantIds;
- }
-
- /**
- * If required, REST end point can be defined for this method to fetch associated control loop element Ids
- * for a control loop.
- *
- * @param name the name of the control loop
- * @param version the version of the control loop
- * @return Map of control loop Id and participant details
- * @throws PfModelException on errors
- */
- @Transactional(readOnly = true)
- public Map<String, ToscaConceptIdentifier> getAllClElementsIdPerControlLoop(String name, String version)
- throws PfModelException {
- Map<String, ToscaConceptIdentifier> clElementId = new HashMap<>();
- var controlLoopOpt = controlLoopProvider.findControlLoop(new ToscaConceptIdentifier(name, version));
- if (controlLoopOpt.isPresent()) {
- for (ControlLoopElement clElement : controlLoopOpt.get().getElements().values()) {
- clElementId.put(clElement.getId().toString(), clElement.getParticipantId());
- }
- }
- return clElementId;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounter.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounter.java
deleted file mode 100644
index 7e070d700..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounter.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import lombok.Getter;
-import lombok.Setter;
-
-public class HandleCounter<K> {
- @Getter
- @Setter
- private long maxWaitMs;
-
- @Getter
- @Setter
- private int maxRetryCount;
-
- private Map<K, Integer> mapCounter = new HashMap<>();
- private Set<K> mapFault = new HashSet<>();
- private Map<K, Long> mapTimer = new HashMap<>();
-
- public long getDuration(K id) {
- mapTimer.putIfAbsent(id, getEpochMilli());
- return getEpochMilli() - mapTimer.get(id);
- }
-
- /**
- * Reset timer and clear counter and fault by id.
- *
- * @param id the id
- */
- public void clear(K id) {
- mapFault.remove(id);
- mapCounter.put(id, 0);
- mapTimer.put(id, getEpochMilli());
- }
-
- /**
- * Remove counter, timer and fault by id.
- *
- * @param id the id
- */
- public void remove(K id) {
- mapFault.remove(id);
- mapCounter.remove(id);
- mapTimer.remove(id);
- }
-
- public void setFault(K id) {
- mapCounter.put(id, 0);
- mapFault.add(id);
- }
-
- /**
- * Increment RetryCount by id e return true if minor or equal of maxRetryCount.
- *
- * @param id the identifier
- * @return false if count is major of maxRetryCount
- */
- public boolean count(K id) {
- int counter = mapCounter.getOrDefault(id, 0) + 1;
- if (counter <= maxRetryCount) {
- mapCounter.put(id, counter);
- return true;
- }
- return false;
- }
-
- public boolean isFault(K id) {
- return mapFault.contains(id);
- }
-
- public int getCounter(K id) {
- return mapCounter.getOrDefault(id, 0);
- }
-
- protected long getEpochMilli() {
- return Instant.now().toEpochMilli();
- }
-
- public Set<K> keySet() {
- return mapCounter.keySet();
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/MessageIntercept.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/MessageIntercept.java
deleted file mode 100644
index c23ed833d..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/MessageIntercept.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface MessageIntercept {
-
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspect.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspect.java
deleted file mode 100644
index d975ec6bc..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspect.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.aspectj.lang.annotation.After;
-import org.aspectj.lang.annotation.AfterReturning;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegister;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatus;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdateAck;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-@Aspect
-@Component
-@RequiredArgsConstructor
-public class SupervisionAspect implements Closeable {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(SupervisionAspect.class);
-
- private final SupervisionScanner supervisionScanner;
-
- private ThreadPoolExecutor executor =
- new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
-
- @Scheduled(
- fixedRateString = "${runtime.participantParameters.heartBeatMs}",
- initialDelayString = "${runtime.participantParameters.heartBeatMs}")
- public void schedule() {
- LOGGER.info("Add scheduled scanning");
- executor.execute(() -> supervisionScanner.run(true));
- }
-
- /**
- * Intercept Messages from participant and run Supervision Scan.
- */
- @After("@annotation(MessageIntercept)")
- public void doCheck() {
- if (executor.getQueue().size() < 2) {
- LOGGER.debug("Add scanning Message");
- executor.execute(() -> supervisionScanner.run(false));
- }
- }
-
- @Before("@annotation(MessageIntercept) && args(participantStatusMessage,..)")
- public void handleParticipantStatus(ParticipantStatus participantStatusMessage) {
- executor.execute(() -> supervisionScanner.handleParticipantStatus(participantStatusMessage.getParticipantId()));
- }
-
- /**
- * Intercepts participant Register Message
- * if there is a Commissioning starts an execution of handleParticipantRegister.
- *
- * @param participantRegisterMessage the ParticipantRegister message
- * @param isCommissioning is Commissioning
- */
- @AfterReturning(
- value = "@annotation(MessageIntercept) && args(participantRegisterMessage,..)",
- returning = "isCommissioning")
- public void handleParticipantRegister(ParticipantRegister participantRegisterMessage, boolean isCommissioning) {
- if (isCommissioning) {
- executor.execute(() -> supervisionScanner.handleParticipantRegister(new ImmutablePair<>(
- participantRegisterMessage.getParticipantId(), participantRegisterMessage.getParticipantType())));
- }
- }
-
- @Before("@annotation(MessageIntercept) && args(participantUpdateAckMessage,..)")
- public void handleParticipantUpdateAck(ParticipantUpdateAck participantUpdateAckMessage) {
- executor.execute(() -> supervisionScanner.handleParticipantUpdateAck(new ImmutablePair<>(
- participantUpdateAckMessage.getParticipantId(), participantUpdateAckMessage.getParticipantType())));
- }
-
- @Override
- public void close() throws IOException {
- executor.shutdown();
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java
deleted file mode 100644
index 6af2788e6..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import lombok.AllArgsConstructor;
-import org.apache.commons.collections4.CollectionUtils;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElementAck;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopInfo;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantHealthStatus;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUtils;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopAck;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessage;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegister;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatus;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdateAck;
-import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopStateChangePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopUpdatePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantDeregisterAckPublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantRegisterAckPublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * This class handles supervision of control loop instances, so only one object of this type should be built at a time.
- *
- * <p/>
- * It is effectively a singleton that is started at system start.
- */
-@Component
-@AllArgsConstructor
-public class SupervisionHandler {
- private static final Logger LOGGER = LoggerFactory.getLogger(SupervisionHandler.class);
-
- private static final String CONTROL_LOOP_CANNOT_TRANSITION_FROM_STATE = "Control loop can't transition from state ";
- private static final String CONTROL_LOOP_IS_ALREADY_IN_STATE = "Control loop is already in state ";
- private static final String TO_STATE = " to state ";
- private static final String AND_TRANSITIONING_TO_STATE = " and transitioning to state ";
-
- private final ControlLoopProvider controlLoopProvider;
- private final ParticipantProvider participantProvider;
- private final MonitoringProvider monitoringProvider;
- private final ServiceTemplateProvider serviceTemplateProvider;
-
- // Publishers for participant communication
- private final ControlLoopUpdatePublisher controlLoopUpdatePublisher;
- private final ControlLoopStateChangePublisher controlLoopStateChangePublisher;
- private final ParticipantRegisterAckPublisher participantRegisterAckPublisher;
- private final ParticipantDeregisterAckPublisher participantDeregisterAckPublisher;
- private final ParticipantUpdatePublisher participantUpdatePublisher;
-
- /**
- * Supervision trigger called when a command is issued on control loops.
- *
- * <p/>
- * Causes supervision to start or continue supervision on the control loops in question.
- *
- * @param controlLoopIdentifierList the control loops for which the supervision command has been issued
- * @throws ControlLoopException on supervision triggering exceptions
- */
- public void triggerControlLoopSupervision(List<ToscaConceptIdentifier> controlLoopIdentifierList)
- throws ControlLoopException {
-
- LOGGER.debug("triggering control loop supervision on control loops {}", controlLoopIdentifierList);
-
- if (CollectionUtils.isEmpty(controlLoopIdentifierList)) {
- // This is just to force throwing of the exception in certain circumstances.
- exceptionOccured(Response.Status.NOT_ACCEPTABLE, "The list of control loops for supervision is empty");
- }
-
- for (ToscaConceptIdentifier controlLoopId : controlLoopIdentifierList) {
- try {
- var controlLoop = controlLoopProvider.getControlLoop(controlLoopId);
-
- superviseControlLoop(controlLoop);
-
- controlLoopProvider.saveControlLoop(controlLoop);
- } catch (PfModelException pfme) {
- throw new ControlLoopException(pfme.getErrorResponse().getResponseCode(), pfme.getMessage(), pfme);
- }
- }
- }
-
- /**
- * Handle a ParticipantStatus message from a participant.
- *
- * @param participantStatusMessage the ParticipantStatus message received from a participant
- */
- @MessageIntercept
- public void handleParticipantMessage(ParticipantStatus participantStatusMessage) {
- LOGGER.debug("Participant Status received {}", participantStatusMessage);
- try {
- superviseParticipant(participantStatusMessage);
- } catch (PfModelException | ControlLoopException svExc) {
- LOGGER.warn("error supervising participant {}", participantStatusMessage.getParticipantId(), svExc);
- return;
- }
-
- try {
- superviseControlLoops(participantStatusMessage);
- } catch (PfModelException | ControlLoopException svExc) {
- LOGGER.warn("error supervising participant {}", participantStatusMessage.getParticipantId(), svExc);
- }
- }
-
- /**
- * Handle a ParticipantRegister message from a participant.
- *
- * @param participantRegisterMessage the ParticipantRegister message received from a participant
- */
- @MessageIntercept
- public boolean handleParticipantMessage(ParticipantRegister participantRegisterMessage) {
- LOGGER.debug("Participant Register received {}", participantRegisterMessage);
- try {
- checkParticipant(participantRegisterMessage, ParticipantState.UNKNOWN, ParticipantHealthStatus.UNKNOWN);
- } catch (PfModelException | ControlLoopException svExc) {
- LOGGER.warn("error saving participant {}", participantRegisterMessage.getParticipantId(), svExc);
- }
-
- var isCommissioning = participantUpdatePublisher.sendCommissioning(null, null,
- participantRegisterMessage.getParticipantId(), participantRegisterMessage.getParticipantType());
-
- participantRegisterAckPublisher.send(participantRegisterMessage.getMessageId(),
- participantRegisterMessage.getParticipantId(), participantRegisterMessage.getParticipantType());
- return isCommissioning;
- }
-
- /**
- * Handle a ParticipantDeregister message from a participant.
- *
- * @param participantDeregisterMessage the ParticipantDeregister message received from a participant
- */
- @MessageIntercept
- public void handleParticipantMessage(ParticipantDeregister participantDeregisterMessage) {
- LOGGER.debug("Participant Deregister received {}", participantDeregisterMessage);
- try {
- var participantOpt =
- participantProvider.findParticipant(participantDeregisterMessage.getParticipantId().getName(),
- participantDeregisterMessage.getParticipantId().getVersion());
-
- if (participantOpt.isPresent()) {
- var participant = participantOpt.get();
- participant.setParticipantState(ParticipantState.TERMINATED);
- participant.setHealthStatus(ParticipantHealthStatus.OFF_LINE);
- participantProvider.saveParticipant(participant);
- }
- } catch (PfModelException pfme) {
- LOGGER.warn("Model exception occured with participant id {}",
- participantDeregisterMessage.getParticipantId());
- }
-
- participantDeregisterAckPublisher.send(participantDeregisterMessage.getMessageId());
- }
-
- /**
- * Handle a ParticipantUpdateAck message from a participant.
- *
- * @param participantUpdateAckMessage the ParticipantUpdateAck message received from a participant
- */
- @MessageIntercept
- public void handleParticipantMessage(ParticipantUpdateAck participantUpdateAckMessage) {
- LOGGER.debug("Participant Update Ack received {}", participantUpdateAckMessage);
- try {
- var participantOpt =
- participantProvider.findParticipant(participantUpdateAckMessage.getParticipantId().getName(),
- participantUpdateAckMessage.getParticipantId().getVersion());
-
- if (participantOpt.isPresent()) {
- var participant = participantOpt.get();
- participant.setParticipantState(participantUpdateAckMessage.getState());
- participantProvider.saveParticipant(participant);
- } else {
- LOGGER.warn("Participant not found in database {}", participantUpdateAckMessage.getParticipantId());
- }
- } catch (PfModelException pfme) {
- LOGGER.warn("Model exception occured with participant id {}",
- participantUpdateAckMessage.getParticipantId());
- }
- }
-
- /**
- * Send commissioning update message to dmaap.
- *
- * @param name the ToscaServiceTemplate name
- * @param version the ToscaServiceTemplate version
- */
- public void handleSendCommissionMessage(String name, String version) {
- LOGGER.debug("Participant update message with serviveTemplate {} {} being sent to all participants", name,
- version);
- participantUpdatePublisher.sendComissioningBroadcast(name, version);
- }
-
- /**
- * Send decommissioning update message to dmaap.
- *
- */
- public void handleSendDeCommissionMessage() {
- LOGGER.debug("Participant update message being sent");
- participantUpdatePublisher.sendDecomisioning();
- }
-
- /**
- * Handle a ControlLoop update acknowledge message from a participant.
- *
- * @param controlLoopAckMessage the ControlLoopAck message received from a participant
- */
- @MessageIntercept
- public void handleControlLoopUpdateAckMessage(ControlLoopAck controlLoopAckMessage) {
- LOGGER.debug("ControlLoop Update Ack message received {}", controlLoopAckMessage);
- setClElementStateInDb(controlLoopAckMessage);
- }
-
- /**
- * Handle a ControlLoop statechange acknowledge message from a participant.
- *
- * @param controlLoopAckMessage the ControlLoopAck message received from a participant
- */
- @MessageIntercept
- public void handleControlLoopStateChangeAckMessage(ControlLoopAck controlLoopAckMessage) {
- LOGGER.debug("ControlLoop StateChange Ack message received {}", controlLoopAckMessage);
- setClElementStateInDb(controlLoopAckMessage);
- }
-
- private void setClElementStateInDb(ControlLoopAck controlLoopAckMessage) {
- if (controlLoopAckMessage.getControlLoopResultMap() != null) {
- try {
- var controlLoop = controlLoopProvider.getControlLoop(controlLoopAckMessage.getControlLoopId());
- if (controlLoop != null) {
- var updated = updateState(controlLoop, controlLoopAckMessage.getControlLoopResultMap().entrySet());
- updated |= setPrimed(controlLoop);
- if (updated) {
- controlLoopProvider.saveControlLoop(controlLoop);
- }
- } else {
- LOGGER.warn("ControlLoop not found in database {}", controlLoopAckMessage.getControlLoopId());
- }
- } catch (PfModelException pfme) {
- LOGGER.warn("Model exception occured with ControlLoop Id {}", controlLoopAckMessage.getControlLoopId());
- }
- }
- }
-
- private boolean updateState(ControlLoop controlLoop,
- Set<Map.Entry<UUID, ControlLoopElementAck>> controlLoopResultSet) {
- var updated = false;
- for (var clElementAck : controlLoopResultSet) {
- var element = controlLoop.getElements().get(clElementAck.getKey());
- if (element != null) {
- element.setState(clElementAck.getValue().getState());
- updated = true;
- }
- }
- return updated;
- }
-
- private boolean setPrimed(ControlLoop controlLoop) {
- var clElements = controlLoop.getElements().values();
- if (clElements != null) {
- Boolean primedFlag = true;
- var checkOpt = controlLoop.getElements().values().stream()
- .filter(clElement -> (!clElement.getState().equals(ControlLoopState.PASSIVE)
- || !clElement.getState().equals(ControlLoopState.RUNNING)))
- .findAny();
- if (checkOpt.isEmpty()) {
- primedFlag = false;
- }
- controlLoop.setPrimed(primedFlag);
- return true;
- }
-
- return false;
- }
-
- /**
- * Supervise a control loop, performing whatever actions need to be performed on the control loop.
- *
- * @param controlLoop the control loop to supervises
- * @throws ControlLoopException on supervision errors
- */
- private void superviseControlLoop(ControlLoop controlLoop) throws ControlLoopException {
- switch (controlLoop.getOrderedState()) {
- case UNINITIALISED:
- superviseControlLoopUninitialization(controlLoop);
- break;
-
- case PASSIVE:
- superviseControlLoopPassivation(controlLoop);
- break;
-
- case RUNNING:
- superviseControlLoopActivation(controlLoop);
- break;
-
- default:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE,
- "A control loop cannot be commanded to go into state " + controlLoop.getOrderedState().name());
- }
- }
-
- /**
- * Supervise a control loop uninitialisation, performing whatever actions need to be performed on the control loop,
- * control loop ordered state is UNINITIALIZED.
- *
- * @param controlLoop the control loop to supervises
- * @throws ControlLoopException on supervision errors
- */
- private void superviseControlLoopUninitialization(ControlLoop controlLoop) throws ControlLoopException {
- switch (controlLoop.getState()) {
- case UNINITIALISED:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE,
- CONTROL_LOOP_IS_ALREADY_IN_STATE + controlLoop.getState().name());
- break;
-
- case UNINITIALISED2PASSIVE:
- case PASSIVE:
- controlLoop.setState(ControlLoopState.PASSIVE2UNINITIALISED);
- controlLoopStateChangePublisher.send(controlLoop, getFirstStartPhase(controlLoop));
- break;
-
- case PASSIVE2UNINITIALISED:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE, CONTROL_LOOP_IS_ALREADY_IN_STATE
- + controlLoop.getState().name() + AND_TRANSITIONING_TO_STATE + controlLoop.getOrderedState());
- break;
-
- default:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE, CONTROL_LOOP_CANNOT_TRANSITION_FROM_STATE
- + controlLoop.getState().name() + TO_STATE + controlLoop.getOrderedState());
- break;
- }
- }
-
- private void superviseControlLoopPassivation(ControlLoop controlLoop) throws ControlLoopException {
- switch (controlLoop.getState()) {
- case PASSIVE:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE,
- CONTROL_LOOP_IS_ALREADY_IN_STATE + controlLoop.getState().name());
- break;
- case UNINITIALISED:
- controlLoop.setState(ControlLoopState.UNINITIALISED2PASSIVE);
- controlLoopUpdatePublisher.send(controlLoop);
- break;
-
- case UNINITIALISED2PASSIVE:
- case RUNNING2PASSIVE:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE, CONTROL_LOOP_IS_ALREADY_IN_STATE
- + controlLoop.getState().name() + AND_TRANSITIONING_TO_STATE + controlLoop.getOrderedState());
- break;
-
- case RUNNING:
- controlLoop.setState(ControlLoopState.RUNNING2PASSIVE);
- controlLoopStateChangePublisher.send(controlLoop, getFirstStartPhase(controlLoop));
- break;
-
- default:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE, CONTROL_LOOP_CANNOT_TRANSITION_FROM_STATE
- + controlLoop.getState().name() + TO_STATE + controlLoop.getOrderedState());
- break;
- }
- }
-
- private void superviseControlLoopActivation(ControlLoop controlLoop) throws ControlLoopException {
- switch (controlLoop.getState()) {
- case RUNNING:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE,
- CONTROL_LOOP_IS_ALREADY_IN_STATE + controlLoop.getState().name());
- break;
-
- case PASSIVE2RUNNING:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE, CONTROL_LOOP_IS_ALREADY_IN_STATE
- + controlLoop.getState().name() + AND_TRANSITIONING_TO_STATE + controlLoop.getOrderedState());
- break;
-
- case PASSIVE:
- controlLoop.setState(ControlLoopState.PASSIVE2RUNNING);
- controlLoopStateChangePublisher.send(controlLoop, getFirstStartPhase(controlLoop));
- break;
-
- default:
- exceptionOccured(Response.Status.NOT_ACCEPTABLE, CONTROL_LOOP_CANNOT_TRANSITION_FROM_STATE
- + controlLoop.getState().name() + TO_STATE + controlLoop.getOrderedState());
- break;
- }
- }
-
- private int getFirstStartPhase(ControlLoop controlLoop) {
- ToscaServiceTemplate toscaServiceTemplate = null;
- try {
- toscaServiceTemplate = serviceTemplateProvider.getAllServiceTemplates().get(0);
- } catch (PfModelException e) {
- throw new PfModelRuntimeException(Status.BAD_REQUEST, "Canont load ToscaServiceTemplate from DB", e);
- }
- return ParticipantUtils.getFirstStartPhase(controlLoop, toscaServiceTemplate);
- }
-
- private void checkParticipant(ParticipantMessage participantMessage, ParticipantState participantState,
- ParticipantHealthStatus healthStatus) throws ControlLoopException, PfModelException {
- if (participantMessage.getParticipantId() == null) {
- exceptionOccured(Response.Status.NOT_FOUND, "Participant ID on PARTICIPANT_STATUS message is null");
- }
- var participantOpt = participantProvider.findParticipant(participantMessage.getParticipantId().getName(),
- participantMessage.getParticipantId().getVersion());
-
- if (participantOpt.isEmpty()) {
- var participant = new Participant();
- participant.setName(participantMessage.getParticipantId().getName());
- participant.setVersion(participantMessage.getParticipantId().getVersion());
- participant.setDefinition(participantMessage.getParticipantId());
- participant.setParticipantType(participantMessage.getParticipantType());
- participant.setParticipantState(participantState);
- participant.setHealthStatus(healthStatus);
-
- participantProvider.saveParticipant(participant);
- } else {
- var participant = participantOpt.get();
- participant.setParticipantState(participantState);
- participant.setHealthStatus(healthStatus);
-
- participantProvider.saveParticipant(participant);
- }
- }
-
- private void superviseParticipant(ParticipantStatus participantStatusMessage)
- throws PfModelException, ControlLoopException {
-
- checkParticipant(participantStatusMessage, participantStatusMessage.getState(),
- participantStatusMessage.getHealthStatus());
-
- monitoringProvider.createParticipantStatistics(List.of(participantStatusMessage.getParticipantStatistics()));
- }
-
- private void superviseControlLoops(ParticipantStatus participantStatusMessage)
- throws PfModelException, ControlLoopException {
- if (participantStatusMessage.getControlLoopInfoList() != null) {
- for (ControlLoopInfo clEntry : participantStatusMessage.getControlLoopInfoList()) {
- var dbControlLoop =
- controlLoopProvider.getControlLoop(new ToscaConceptIdentifier(clEntry.getControlLoopId()));
- if (dbControlLoop == null) {
- exceptionOccured(Response.Status.NOT_FOUND,
- "PARTICIPANT_STATUS control loop not found in database: " + clEntry.getControlLoopId());
- }
- dbControlLoop.setState(clEntry.getState());
- monitoringProvider.createClElementStatistics(
- clEntry.getControlLoopStatistics().getClElementStatisticsList().getClElementStatistics());
- }
- }
- }
-
- private void exceptionOccured(Response.Status status, String reason) throws ControlLoopException {
- throw new ControlLoopException(status, reason);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java
deleted file mode 100644
index 01e035b87..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.commons.lang3.tuple.Pair;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantHealthStatus;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUtils;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopStateChangePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopUpdatePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantStatusReqPublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * This class is used to scan the control loops in the database and check if they are in the correct state.
- */
-@Component
-public class SupervisionScanner {
- private static final Logger LOGGER = LoggerFactory.getLogger(SupervisionScanner.class);
-
- private final HandleCounter<ToscaConceptIdentifier> controlLoopCounter = new HandleCounter<>();
- private final HandleCounter<ToscaConceptIdentifier> participantStatusCounter = new HandleCounter<>();
- private final HandleCounter<Pair<ToscaConceptIdentifier, ToscaConceptIdentifier>> participantUpdateCounter =
- new HandleCounter<>();
-
- private final Map<ToscaConceptIdentifier, Integer> phaseMap = new HashMap<>();
-
- private final ControlLoopProvider controlLoopProvider;
- private final ServiceTemplateProvider serviceTemplateProvider;
- private final ControlLoopStateChangePublisher controlLoopStateChangePublisher;
- private final ControlLoopUpdatePublisher controlLoopUpdatePublisher;
- private final ParticipantProvider participantProvider;
- private final ParticipantStatusReqPublisher participantStatusReqPublisher;
- private final ParticipantUpdatePublisher participantUpdatePublisher;
-
- /**
- * Constructor for instantiating SupervisionScanner.
- *
- * @param controlLoopProvider the provider to use to read control loops from the database
- * @param serviceTemplateProvider the Policy Models Provider
- * @param controlLoopStateChangePublisher the ControlLoop StateChange Publisher
- * @param controlLoopUpdatePublisher the ControlLoopUpdate Publisher
- * @param participantProvider the Participant Provider
- * @param participantStatusReqPublisher the Participant StatusReq Publisher
- * @param participantUpdatePublisher the Participant Update Publisher
- * @param clRuntimeParameterGroup the parameters for the control loop runtime
- */
- public SupervisionScanner(final ControlLoopProvider controlLoopProvider,
- ServiceTemplateProvider serviceTemplateProvider,
- final ControlLoopStateChangePublisher controlLoopStateChangePublisher,
- ControlLoopUpdatePublisher controlLoopUpdatePublisher, ParticipantProvider participantProvider,
- ParticipantStatusReqPublisher participantStatusReqPublisher,
- ParticipantUpdatePublisher participantUpdatePublisher,
- final ClRuntimeParameterGroup clRuntimeParameterGroup) {
- this.controlLoopProvider = controlLoopProvider;
- this.serviceTemplateProvider = serviceTemplateProvider;
- this.controlLoopStateChangePublisher = controlLoopStateChangePublisher;
- this.controlLoopUpdatePublisher = controlLoopUpdatePublisher;
- this.participantProvider = participantProvider;
- this.participantStatusReqPublisher = participantStatusReqPublisher;
- this.participantUpdatePublisher = participantUpdatePublisher;
-
- controlLoopCounter.setMaxRetryCount(
- clRuntimeParameterGroup.getParticipantParameters().getUpdateParameters().getMaxRetryCount());
- controlLoopCounter.setMaxWaitMs(clRuntimeParameterGroup.getParticipantParameters().getMaxStatusWaitMs());
-
- participantUpdateCounter.setMaxRetryCount(
- clRuntimeParameterGroup.getParticipantParameters().getUpdateParameters().getMaxRetryCount());
- participantUpdateCounter
- .setMaxWaitMs(clRuntimeParameterGroup.getParticipantParameters().getUpdateParameters().getMaxWaitMs());
-
- participantStatusCounter.setMaxRetryCount(
- clRuntimeParameterGroup.getParticipantParameters().getUpdateParameters().getMaxRetryCount());
- participantStatusCounter.setMaxWaitMs(clRuntimeParameterGroup.getParticipantParameters().getMaxStatusWaitMs());
- }
-
- /**
- * Run Scanning.
- *
- * @param counterCheck if true activate counter and retry
- */
- public void run(boolean counterCheck) {
- LOGGER.debug("Scanning control loops in the database . . .");
-
- if (counterCheck) {
- try {
- for (var participant : participantProvider.getParticipants()) {
- scanParticipantStatus(participant);
- }
- } catch (PfModelException pfme) {
- LOGGER.warn("error reading participant from database", pfme);
- return;
- }
- }
-
- try {
- var list = serviceTemplateProvider.getAllServiceTemplates();
- if (list != null && !list.isEmpty()) {
- ToscaServiceTemplate toscaServiceTemplate = list.get(0);
-
- for (ControlLoop controlLoop : controlLoopProvider.getControlLoops()) {
- scanControlLoop(controlLoop, toscaServiceTemplate, counterCheck);
- }
- }
- } catch (PfModelException pfme) {
- LOGGER.warn("error reading control loops from database", pfme);
- }
-
- if (counterCheck) {
- scanParticipantUpdate();
- }
-
- LOGGER.debug("Control loop scan complete . . .");
- }
-
- private void scanParticipantUpdate() {
- LOGGER.debug("Scanning participants to update . . .");
-
- for (var id : participantUpdateCounter.keySet()) {
- if (participantUpdateCounter.isFault(id)) {
- LOGGER.debug("report Participant Update fault");
-
- } else if (participantUpdateCounter.getDuration(id) > participantUpdateCounter.getMaxWaitMs()) {
-
- if (participantUpdateCounter.count(id)) {
- LOGGER.debug("retry message ParticipantUpdate");
- participantUpdatePublisher.sendCommissioning(null, null, id.getLeft(), id.getRight());
- } else {
- LOGGER.debug("report Participant Update fault");
- participantUpdateCounter.setFault(id);
- }
- }
- }
-
- LOGGER.debug("Participants to update scan complete . . .");
- }
-
- private void scanParticipantStatus(Participant participant) throws PfModelException {
- ToscaConceptIdentifier id = participant.getKey().asIdentifier();
- if (participantStatusCounter.isFault(id)) {
- LOGGER.debug("report Participant fault");
- return;
- }
- if (participantStatusCounter.getDuration(id) > participantStatusCounter.getMaxWaitMs()) {
- if (participantStatusCounter.count(id)) {
- LOGGER.debug("retry message ParticipantStatusReq");
- participantStatusReqPublisher.send(id);
- participant.setHealthStatus(ParticipantHealthStatus.NOT_HEALTHY);
- } else {
- LOGGER.debug("report Participant fault");
- participantStatusCounter.setFault(id);
- participant.setHealthStatus(ParticipantHealthStatus.OFF_LINE);
- }
- participantProvider.saveParticipant(participant);
- }
- }
-
- /**
- * handle participant Status message.
- */
- public void handleParticipantStatus(ToscaConceptIdentifier id) {
- participantStatusCounter.clear(id);
- }
-
- public void handleParticipantRegister(Pair<ToscaConceptIdentifier, ToscaConceptIdentifier> id) {
- participantUpdateCounter.clear(id);
- }
-
- public void handleParticipantUpdateAck(Pair<ToscaConceptIdentifier, ToscaConceptIdentifier> id) {
- participantUpdateCounter.remove(id);
- }
-
- private void scanControlLoop(final ControlLoop controlLoop, ToscaServiceTemplate toscaServiceTemplate,
- boolean counterCheck) throws PfModelException {
- LOGGER.debug("scanning control loop {} . . .", controlLoop.getKey().asIdentifier());
-
- if (controlLoop.getState().equals(controlLoop.getOrderedState().asState())) {
- LOGGER.debug("control loop {} scanned, OK", controlLoop.getKey().asIdentifier());
-
- // Clear missed report counter on Control Loop
- clearFaultAndCounter(controlLoop);
- return;
- }
-
- var completed = true;
- var minSpNotCompleted = 1000; // min startPhase not completed
- var maxSpNotCompleted = 0; // max startPhase not completed
- var defaultMin = 1000; // min startPhase
- var defaultMax = 0; // max startPhase
- for (ControlLoopElement element : controlLoop.getElements().values()) {
- ToscaNodeTemplate toscaNodeTemplate = toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates()
- .get(element.getDefinition().getName());
- int startPhase = ParticipantUtils.findStartPhase(toscaNodeTemplate.getProperties());
- defaultMin = Math.min(defaultMin, startPhase);
- defaultMax = Math.max(defaultMax, startPhase);
- if (!element.getState().equals(element.getOrderedState().asState())) {
- completed = false;
- minSpNotCompleted = Math.min(minSpNotCompleted, startPhase);
- maxSpNotCompleted = Math.max(maxSpNotCompleted, startPhase);
- }
- }
-
- if (completed) {
- LOGGER.debug("control loop scan: transition from state {} to {} completed", controlLoop.getState(),
- controlLoop.getOrderedState());
-
- controlLoop.setState(controlLoop.getOrderedState().asState());
- controlLoopProvider.saveControlLoop(controlLoop);
-
- // Clear missed report counter on Control Loop
- clearFaultAndCounter(controlLoop);
- } else {
- LOGGER.debug("control loop scan: transition from state {} to {} not completed", controlLoop.getState(),
- controlLoop.getOrderedState());
-
- var nextSpNotCompleted = ControlLoopState.UNINITIALISED2PASSIVE.equals(controlLoop.getState())
- || ControlLoopState.PASSIVE2RUNNING.equals(controlLoop.getState()) ? minSpNotCompleted
- : maxSpNotCompleted;
-
- var firstStartPhase = ControlLoopState.UNINITIALISED2PASSIVE.equals(controlLoop.getState())
- || ControlLoopState.PASSIVE2RUNNING.equals(controlLoop.getState()) ? defaultMin : defaultMax;
-
- if (nextSpNotCompleted != phaseMap.getOrDefault(controlLoop.getKey().asIdentifier(), firstStartPhase)) {
- phaseMap.put(controlLoop.getKey().asIdentifier(), nextSpNotCompleted);
- sendControlLoopMsg(controlLoop, nextSpNotCompleted);
- } else if (counterCheck) {
- phaseMap.put(controlLoop.getKey().asIdentifier(), nextSpNotCompleted);
- handleCounter(controlLoop, nextSpNotCompleted);
- }
- }
- }
-
- private void clearFaultAndCounter(ControlLoop controlLoop) {
- controlLoopCounter.clear(controlLoop.getKey().asIdentifier());
- phaseMap.clear();
- }
-
- private void handleCounter(ControlLoop controlLoop, int startPhase) {
- ToscaConceptIdentifier id = controlLoop.getKey().asIdentifier();
- if (controlLoopCounter.isFault(id)) {
- LOGGER.debug("report ControlLoop fault");
- return;
- }
-
- if (controlLoopCounter.getDuration(id) > controlLoopCounter.getMaxWaitMs()) {
- if (controlLoopCounter.count(id)) {
- phaseMap.put(id, startPhase);
- sendControlLoopMsg(controlLoop, startPhase);
- } else {
- LOGGER.debug("report ControlLoop fault");
- controlLoopCounter.setFault(id);
- }
- }
- }
-
- private void sendControlLoopMsg(ControlLoop controlLoop, int startPhase) {
- if (ControlLoopState.UNINITIALISED2PASSIVE.equals(controlLoop.getState())) {
- LOGGER.debug("retry message ControlLoopUpdate");
- controlLoopUpdatePublisher.send(controlLoop, startPhase);
- } else {
- LOGGER.debug("retry message ControlLoopStateChange");
- controlLoopStateChangePublisher.send(controlLoop, startPhase);
- }
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantAckPublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantAckPublisher.java
deleted file mode 100644
index 4b4ca9915..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantAckPublisher.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.util.List;
-import javax.ws.rs.core.Response.Status;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantAckMessage;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Publisher;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.common.endpoints.event.comm.client.TopicSinkClient;
-
-public abstract class AbstractParticipantAckPublisher<E extends ParticipantAckMessage> implements Publisher {
-
- private TopicSinkClient topicSinkClient;
- private boolean active = false;
-
- /**
- * Method to send Participant message to participants on demand.
- *
- * @param participantMessage the Participant message
- */
- public void send(final E participantMessage) {
- if (!active) {
- throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
- }
- topicSinkClient.send(participantMessage);
- }
-
-
- @Override
- public void active(List<TopicSink> topicSinks) {
- if (topicSinks.size() != 1) {
- throw new IllegalArgumentException("Topic Sink must be one");
- }
- this.topicSinkClient = new TopicSinkClient(topicSinks.get(0));
- active = true;
- }
-
- @Override
- public void stop() {
- active = false;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantPublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantPublisher.java
deleted file mode 100644
index 3c87b05b4..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/AbstractParticipantPublisher.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.util.List;
-import javax.ws.rs.core.Response.Status;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessage;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Publisher;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.common.endpoints.event.comm.client.TopicSinkClient;
-
-public abstract class AbstractParticipantPublisher<E extends ParticipantMessage> implements Publisher {
-
- private TopicSinkClient topicSinkClient;
- private boolean active = false;
-
- /**
- * Method to send Participant message to participants on demand.
- *
- * @param participantMessage the Participant message
- */
- public void send(final E participantMessage) {
- if (!active) {
- throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "Not Active!");
- }
- topicSinkClient.send(participantMessage);
- }
-
-
- @Override
- public void active(List<TopicSink> topicSinks) {
- if (topicSinks.size() != 1) {
- throw new IllegalArgumentException("Topic Sink must be one");
- }
- this.topicSinkClient = new TopicSinkClient(topicSinks.get(0));
- active = true;
- }
-
- @Override
- public void stop() {
- active = false;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangeAckListener.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangeAckListener.java
deleted file mode 100644
index c40095bef..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangeAckListener.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopAck;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Listener;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.listeners.ScoListener;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * Listener for ControlLoopStateChangeAck messages sent by participants.
- */
-@Component
-public class ControlLoopStateChangeAckListener extends ScoListener<ControlLoopAck> implements Listener<ControlLoopAck> {
- private static final Logger LOGGER = LoggerFactory.getLogger(ControlLoopStateChangeAckListener.class);
-
- private final SupervisionHandler supervisionHandler;
-
- /**
- * Constructs the object.
- */
- public ControlLoopStateChangeAckListener(SupervisionHandler supervisionHandler) {
- super(ControlLoopAck.class);
- this.supervisionHandler = supervisionHandler;
- }
-
- @Override
- public void onTopicEvent(final CommInfrastructure infra, final String topic, final StandardCoderObject sco,
- final ControlLoopAck controlLoopStateChangeAckMessage) {
- LOGGER.debug("ControlLoopStateChangeAck received from participant - {}", controlLoopStateChangeAckMessage);
- supervisionHandler.handleControlLoopStateChangeAckMessage(controlLoopStateChangeAckMessage);
- }
-
- @Override
- public ScoListener<ControlLoopAck> getScoListener() {
- return this;
- }
-
- @Override
- public String getType() {
- return ParticipantMessageType.CONTROLLOOP_STATECHANGE_ACK.name();
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangePublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangePublisher.java
deleted file mode 100644
index 69d7b73d0..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopStateChangePublisher.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.util.UUID;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopStateChange;
-import org.springframework.stereotype.Component;
-
-/**
- * This class is used to send ControlLoopStateChangePublisher messages to participants on DMaaP.
- */
-@Component
-public class ControlLoopStateChangePublisher
- extends AbstractParticipantPublisher<ControlLoopStateChange> {
-
- /**
- * Send ControlLoopStateChange to Participant.
- *
- * @param controlLoop the ControlLoop
- * @param startPhase the startPhase
- */
- public void send(ControlLoop controlLoop, int startPhase) {
- var clsc = new ControlLoopStateChange();
- clsc.setControlLoopId(controlLoop.getKey().asIdentifier());
- clsc.setMessageId(UUID.randomUUID());
- clsc.setOrderedState(controlLoop.getOrderedState());
- clsc.setStartPhase(startPhase);
-
- super.send(clsc);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdateAckListener.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdateAckListener.java
deleted file mode 100644
index b8b5126ad..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdateAckListener.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopAck;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Listener;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.listeners.ScoListener;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * Listener for ControlLoopUpdateAck messages sent by participants.
- */
-@Component
-public class ControlLoopUpdateAckListener extends ScoListener<ControlLoopAck> implements Listener<ControlLoopAck> {
- private static final Logger LOGGER = LoggerFactory.getLogger(ControlLoopUpdateAckListener.class);
-
- private final SupervisionHandler supervisionHandler;
-
- /**
- * Constructs the object.
- */
- public ControlLoopUpdateAckListener(SupervisionHandler supervisionHandler) {
- super(ControlLoopAck.class);
- this.supervisionHandler = supervisionHandler;
- }
-
- @Override
- public void onTopicEvent(final CommInfrastructure infra, final String topic, final StandardCoderObject sco,
- final ControlLoopAck controlLoopUpdateAckMessage) {
- LOGGER.debug("ControlLoopUpdateAck message received from participant - {}", controlLoopUpdateAckMessage);
- supervisionHandler.handleControlLoopUpdateAckMessage(controlLoopUpdateAckMessage);
- }
-
- @Override
- public ScoListener<ControlLoopAck> getScoListener() {
- return this;
- }
-
- @Override
- public String getType() {
- return ParticipantMessageType.CONTROLLOOP_UPDATE_ACK.name();
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java
deleted file mode 100644
index 24f60eafc..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import lombok.AllArgsConstructor;
-import org.onap.policy.clamp.controlloop.common.utils.CommonUtils;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUpdates;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopUpdate;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * This class is used to send ControlLoopUpdate messages to participants on DMaaP.
- */
-@Component
-@AllArgsConstructor
-public class ControlLoopUpdatePublisher extends AbstractParticipantPublisher<ControlLoopUpdate> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ControlLoopUpdatePublisher.class);
- private final ServiceTemplateProvider serviceTemplateProvider;
-
- /**
- * Send ControlLoopUpdate to Participant.
- *
- * @param controlLoop the ControlLoop
- */
- public void send(ControlLoop controlLoop) {
- send(controlLoop, 0);
- }
-
- /**
- * Send ControlLoopUpdate to Participant.
- *
- * @param controlLoop the ControlLoop
- * @param startPhase the Start Phase
- */
- public void send(ControlLoop controlLoop, int startPhase) {
- var controlLoopUpdateMsg = new ControlLoopUpdate();
- controlLoopUpdateMsg.setStartPhase(startPhase);
- controlLoopUpdateMsg.setControlLoopId(controlLoop.getKey().asIdentifier());
- controlLoopUpdateMsg.setMessageId(UUID.randomUUID());
- controlLoopUpdateMsg.setTimestamp(Instant.now());
- ToscaServiceTemplate toscaServiceTemplate;
- try {
- toscaServiceTemplate = serviceTemplateProvider.getAllServiceTemplates().get(0);
- } catch (PfModelException pfme) {
- LOGGER.warn("Get of tosca service template failed, cannot send participantupdate", pfme);
- return;
- }
-
- List<ParticipantUpdates> participantUpdates = new ArrayList<>();
- for (ControlLoopElement element : controlLoop.getElements().values()) {
- CommonUtils.setServiceTemplatePolicyInfo(element, toscaServiceTemplate);
- CommonUtils.prepareParticipantUpdate(element, participantUpdates);
- }
- controlLoopUpdateMsg.setParticipantUpdatesList(participantUpdates);
-
- LOGGER.debug("ControlLoopUpdate message sent {}", controlLoopUpdateMsg);
- super.send(controlLoopUpdateMsg);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterAckPublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterAckPublisher.java
deleted file mode 100644
index e92b6ee1b..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterAckPublisher.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.util.UUID;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregisterAck;
-import org.springframework.stereotype.Component;
-
-/**
- * This class is used to send ParticipantDeregisterAck messages to participants on DMaaP.
- */
-@Component
-public class ParticipantDeregisterAckPublisher extends AbstractParticipantAckPublisher<ParticipantDeregisterAck> {
-
- /**
- * Sent ParticipantDeregisterAck to Participant.
- *
- * @param responseTo the original request id in the request.
- */
- public void send(UUID responseTo) {
- var message = new ParticipantDeregisterAck();
- message.setResponseTo(responseTo);
- message.setMessage("Participant Deregister Ack");
- message.setResult(true);
- super.send(message);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterListener.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterListener.java
deleted file mode 100644
index b8b209bac..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantDeregisterListener.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Listener;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.listeners.ScoListener;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * Listener for ParticipantDeregister messages sent by participants.
- */
-@Component
-public class ParticipantDeregisterListener extends ScoListener<ParticipantDeregister>
- implements Listener<ParticipantDeregister> {
- private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantDeregisterListener.class);
-
- private final SupervisionHandler supervisionHandler;
-
- /**
- * Constructs the object.
- */
- public ParticipantDeregisterListener(SupervisionHandler supervisionHandler) {
- super(ParticipantDeregister.class);
- this.supervisionHandler = supervisionHandler;
- }
-
- @Override
- public void onTopicEvent(final CommInfrastructure infra, final String topic, final StandardCoderObject sco,
- final ParticipantDeregister participantDeregisterMessage) {
- LOGGER.debug("ParticipantDeregister message received from participant - {}", participantDeregisterMessage);
- supervisionHandler.handleParticipantMessage(participantDeregisterMessage);
- }
-
- @Override
- public String getType() {
- return ParticipantMessageType.PARTICIPANT_DEREGISTER.name();
- }
-
- @Override
- public ScoListener<ParticipantDeregister> getScoListener() {
- return this;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterAckPublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterAckPublisher.java
deleted file mode 100644
index 8cbaec8b1..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterAckPublisher.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.util.UUID;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegisterAck;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.springframework.stereotype.Component;
-
-/**
- * This class is used to send ParticipantRegisterAck messages to participants on DMaaP.
- */
-@Component
-public class ParticipantRegisterAckPublisher extends AbstractParticipantAckPublisher<ParticipantRegisterAck> {
-
- /**
- * Send ParticipantRegisterAck to Participant.
- *
- * @param responseTo the original request id in the request.
- * @param participantId the participant Id
- * @param participantType the participant Type
- */
- public void send(UUID responseTo, ToscaConceptIdentifier participantId, ToscaConceptIdentifier participantType) {
- var message = new ParticipantRegisterAck();
- message.setParticipantId(participantId);
- message.setParticipantType(participantType);
- message.setResponseTo(responseTo);
- message.setMessage("Participant Register Ack");
- message.setResult(true);
- super.send(message);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterListener.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterListener.java
deleted file mode 100644
index fdf0bf3f7..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantRegisterListener.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegister;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Listener;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.listeners.ScoListener;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * Listener for ParticipantRegister messages sent by participants.
- */
-@Component
-public class ParticipantRegisterListener extends ScoListener<ParticipantRegister>
- implements Listener<ParticipantRegister> {
- private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantRegisterListener.class);
-
- private final SupervisionHandler supervisionHandler;
-
- /**
- * Constructs the object.
- */
- public ParticipantRegisterListener(SupervisionHandler supervisionHandler) {
- super(ParticipantRegister.class);
- this.supervisionHandler = supervisionHandler;
- }
-
- @Override
- public void onTopicEvent(final CommInfrastructure infra, final String topic, final StandardCoderObject sco,
- final ParticipantRegister participantRegisterMessage) {
- LOGGER.debug("ParticipantRegister message received from participant - {}", participantRegisterMessage);
- supervisionHandler.handleParticipantMessage(participantRegisterMessage);
- }
-
- @Override
- public String getType() {
- return ParticipantMessageType.PARTICIPANT_REGISTER.name();
- }
-
- @Override
- public ScoListener<ParticipantRegister> getScoListener() {
- return this;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusListener.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusListener.java
deleted file mode 100644
index 43a07e220..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusListener.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatus;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Listener;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.listeners.ScoListener;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * Listener for ParticipantStatus messages sent by participants.
- */
-@Component
-public class ParticipantStatusListener extends ScoListener<ParticipantStatus> implements Listener<ParticipantStatus> {
- private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantStatusListener.class);
-
- private final SupervisionHandler supervisionHandler;
-
- /**
- * Constructs the object.
- */
- public ParticipantStatusListener(SupervisionHandler supervisionHandler) {
- super(ParticipantStatus.class);
- this.supervisionHandler = supervisionHandler;
- }
-
- @Override
- public void onTopicEvent(final CommInfrastructure infra, final String topic, final StandardCoderObject sco,
- final ParticipantStatus participantStatusMessage) {
- LOGGER.debug("ParticipantStatus message received from participant - {}", participantStatusMessage);
- supervisionHandler.handleParticipantMessage(participantStatusMessage);
- }
-
- @Override
- public String getType() {
- return ParticipantMessageType.PARTICIPANT_STATUS.name();
- }
-
- @Override
- public ScoListener<ParticipantStatus> getScoListener() {
- return this;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusReqPublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusReqPublisher.java
deleted file mode 100644
index 69d598285..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantStatusReqPublisher.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.time.Instant;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatusReq;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-@Component
-public class ParticipantStatusReqPublisher extends AbstractParticipantPublisher<ParticipantStatusReq> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantStatusReqPublisher.class);
-
- /**
- * Send ParticipantStatusReq to Participant.
- *
- * @param participantId the participant Id
- */
- public void send(ToscaConceptIdentifier participantId) {
- ParticipantStatusReq message = new ParticipantStatusReq();
- message.setParticipantId(participantId);
- message.setTimestamp(Instant.now());
-
- LOGGER.debug("Participant StatusReq sent {}", message);
- super.send(message);
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdateAckListener.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdateAckListener.java
deleted file mode 100644
index fcfa80a9f..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdateAckListener.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdateAck;
-import org.onap.policy.clamp.controlloop.runtime.config.messaging.Listener;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.listeners.ScoListener;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * Listener for ParticipantUpdateAck messages sent by participants.
- */
-@Component
-public class ParticipantUpdateAckListener extends ScoListener<ParticipantUpdateAck>
- implements Listener<ParticipantUpdateAck> {
- private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantUpdateAckListener.class);
-
- private final SupervisionHandler supervisionHandler;
-
- /**
- * Constructs the object.
- */
- public ParticipantUpdateAckListener(SupervisionHandler supervisionHandler) {
- super(ParticipantUpdateAck.class);
- this.supervisionHandler = supervisionHandler;
- }
-
- @Override
- public void onTopicEvent(final CommInfrastructure infra, final String topic, final StandardCoderObject sco,
- final ParticipantUpdateAck participantUpdateAckMessage) {
- LOGGER.debug("ParticipantUpdateAck message received from participant - {}", participantUpdateAckMessage);
- supervisionHandler.handleParticipantMessage(participantUpdateAckMessage);
- }
-
- @Override
- public String getType() {
- return ParticipantMessageType.PARTICIPANT_UPDATE_ACK.name();
- }
-
- @Override
- public ScoListener<ParticipantUpdateAck> getScoListener() {
- return this;
- }
-}
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdatePublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdatePublisher.java
deleted file mode 100644
index c6788f12c..000000000
--- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ParticipantUpdatePublisher.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import lombok.AllArgsConstructor;
-import org.onap.policy.clamp.controlloop.common.utils.CommonUtils;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantDefinition;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUtils;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdate;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-/**
- * This class is used to send ParticipantUpdate messages to participants on DMaaP.
- */
-@Component
-@AllArgsConstructor
-public class ParticipantUpdatePublisher extends AbstractParticipantPublisher<ParticipantUpdate> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ParticipantUpdatePublisher.class);
-
- private final ServiceTemplateProvider serviceTemplateProvider;
-
- /**
- * Send ParticipantUpdate to all Participants.
- *
- * @param name the ToscaServiceTemplate name
- * @param version the ToscaServiceTemplate version
- */
- public void sendComissioningBroadcast(String name, String version) {
- sendCommissioning(name, version, null, null);
- }
-
- /**
- * Send ParticipantUpdate to Participant
- * if participantType and participantId are null then message is broadcast.
- *
- * @param name the ToscaServiceTemplate name
- * @param version the ToscaServiceTemplate version
- * @param participantType the ParticipantType
- * @param participantId the ParticipantId
- */
- public boolean sendCommissioning(String name, String version, ToscaConceptIdentifier participantType,
- ToscaConceptIdentifier participantId) {
- var message = new ParticipantUpdate();
- message.setParticipantType(participantType);
- message.setParticipantId(participantId);
- message.setTimestamp(Instant.now());
-
- ToscaServiceTemplate toscaServiceTemplate = null;
- Map<String, ToscaNodeType> commonPropertiesMap = null;
- try {
- var list = serviceTemplateProvider.getServiceTemplateList(name, version);
- if (!list.isEmpty()) {
- toscaServiceTemplate = list.get(0);
- commonPropertiesMap =
- serviceTemplateProvider.getCommonOrInstancePropertiesFromNodeTypes(true, toscaServiceTemplate);
- } else {
- LOGGER.warn("No tosca service template found, cannot send participantupdate {} {}", name, version);
- return false;
- }
- } catch (PfModelException pfme) {
- LOGGER.warn("Get of tosca service template failed, cannot send participantupdate", pfme);
- return false;
- }
-
- List<ParticipantDefinition> participantDefinitionUpdates = new ArrayList<>();
- for (var toscaInputEntry : toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates().entrySet()) {
- if (ParticipantUtils.checkIfNodeTemplateIsControlLoopElement(toscaInputEntry.getValue(),
- toscaServiceTemplate)) {
- CommonUtils.prepareParticipantDefinitionUpdate(
- ParticipantUtils.findParticipantType(toscaInputEntry.getValue().getProperties()),
- toscaInputEntry.getKey(), toscaInputEntry.getValue(),
- participantDefinitionUpdates, commonPropertiesMap);
- }
- }
-
- // Commission the controlloop but sending participantdefinitions to participants
- message.setParticipantDefinitionUpdates(participantDefinitionUpdates);
- LOGGER.debug("Participant Update sent {}", message);
- super.send(message);
- return true;
- }
-
- /**
- * Send ParticipantUpdate to Participant after that commissioning has been removed.
- */
- public void sendDecomisioning() {
- var message = new ParticipantUpdate();
- message.setTimestamp(Instant.now());
- // DeCommission the controlloop but deleting participantdefinitions on participants
- message.setParticipantDefinitionUpdates(null);
-
- LOGGER.debug("Participant Update sent {}", message);
- super.send(message);
- }
-}
diff --git a/runtime-controlloop/src/main/resources/application.yaml b/runtime-controlloop/src/main/resources/application.yaml
deleted file mode 100644
index 3a3ada563..000000000
--- a/runtime-controlloop/src/main/resources/application.yaml
+++ /dev/null
@@ -1,67 +0,0 @@
-spring:
- security:
- user:
- name: runtimeUser
- password: zb!XztG34
- http:
- converters:
- preferred-json-mapper: gson
- datasource:
- url: jdbc:mariadb://${mariadb.host:localhost}:${mariadb.port:3306}/controlloop
- driverClassName: org.mariadb.jdbc.Driver
- username: policy
- password: P01icY
- hikari:
- connectionTimeout: 30000
- idleTimeout: 600000
- maxLifetime: 1800000
- maximumPoolSize: 10
- jpa:
- hibernate:
- ddl-auto: update
- naming:
- physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
- implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
- properties:
- hibernate:
- dialect: org.hibernate.dialect.MariaDB103Dialect
- format_sql: true
-
-security:
- enable-csrf: false
-
-server:
- port: 6969
- servlet:
- context-path: /onap/controlloop
- error:
- path: /error
-
-
-runtime:
- participantParameters:
- heartBeatMs: 20000
- maxStatusWaitMs: 100000
- updateParameters:
- maxRetryCount: 4
- maxWaitMs: 20000
- topicParameterGroup:
- topicSources:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:localhost}
- topicCommInfrastructure: dmaap
- fetchTimeout: 15000
- topicSinks:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:localhost}
- topicCommInfrastructure: dmaap
-
-management:
- endpoints:
- web:
- exposure:
- include: health, metrics, prometheus
diff --git a/runtime-controlloop/src/main/resources/version.txt b/runtime-controlloop/src/main/resources/version.txt
deleted file mode 100644
index e11449e5b..000000000
--- a/runtime-controlloop/src/main/resources/version.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-ONAP Tosca defined control loop
-Version: ${project.version}
-Built (UTC): ${maven.build.timestamp}
-ONAP https://wiki.onap.org
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java
deleted file mode 100644
index 843985e7d..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.commissioning;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.PropertyNamingStrategies;
-import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
-import java.util.List;
-import java.util.Map;
-import org.junit.jupiter.api.Test;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaRelationshipType;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
-
-class CommissioningProviderTest {
- private static final String TOSCA_SERVICE_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml";
- private static final String COMMON_TOSCA_SERVICE_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/full-tosca-with-common-properties.yaml";
-
- private static final Coder CODER = new StandardCoder();
- private final ObjectMapper mapper = new ObjectMapper();
-
- /**
- * Test the fetching of control loop definitions (ToscaServiceTemplates).
- *
- * @throws Exception .
- */
- @Test
- void testGetControlLoopDefinitions() throws Exception {
- var clProvider = mock(ControlLoopProvider.class);
- var participantProvider = mock(ParticipantProvider.class);
- var serviceTemplateProvider = mock(ServiceTemplateProvider.class);
-
- CommissioningProvider provider =
- new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider);
-
- List<ToscaNodeTemplate> listOfTemplates = provider.getControlLoopDefinitions(null, null);
- assertThat(listOfTemplates).isEmpty();
-
- when(clProvider.getFilteredNodeTemplates(any()))
- .thenReturn(List.of(new ToscaNodeTemplate(), new ToscaNodeTemplate()));
- listOfTemplates = provider.getControlLoopDefinitions(null, null);
- assertThat(listOfTemplates).hasSize(2);
- }
-
- /**
- * Test the creation of control loop definitions (ToscaServiceTemplates).
- *
- * @throws Exception .
- */
- @Test
- void testCreateControlLoopDefinitions() throws Exception {
- var serviceTemplateProvider = mock(ServiceTemplateProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var participantProvider = mock(ParticipantProvider.class);
-
- CommissioningProvider provider =
- new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider);
-
- List<ToscaNodeTemplate> listOfTemplates = provider.getControlLoopDefinitions(null, null);
- assertThat(listOfTemplates).isEmpty();
-
- ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
- when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate);
-
- // Response should return the number of node templates present in the service template
- List<ToscaConceptIdentifier> affectedDefinitions =
- provider.createControlLoopDefinitions(serviceTemplate).getAffectedControlLoopDefinitions();
- assertThat(affectedDefinitions).hasSize(13);
-
- when(clProvider.getFilteredNodeTemplates(any()))
- .thenReturn(List.of(new ToscaNodeTemplate(), new ToscaNodeTemplate()));
-
- listOfTemplates = provider.getControlLoopDefinitions(null, null);
- assertThat(listOfTemplates).hasSize(2);
- }
-
- /**
- * Test the fetching of a full ToscaServiceTemplate object - as opposed to the reduced template that is being
- * tested in the testGetToscaServiceTemplateReduced() test.
- *
- */
- @Test
- void testGetToscaServiceTemplate() throws Exception {
- var serviceTemplateProvider = mock(ServiceTemplateProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var participantProvider = mock(ParticipantProvider.class);
-
- CommissioningProvider provider =
- new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider);
- ToscaServiceTemplate serviceTemplate =
- InstantiationUtils.getToscaServiceTemplate(COMMON_TOSCA_SERVICE_TEMPLATE_YAML);
- when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate);
-
- provider.createControlLoopDefinitions(serviceTemplate);
- verify(serviceTemplateProvider).createServiceTemplate(serviceTemplate);
-
- when(serviceTemplateProvider.getToscaServiceTemplate(eq(null), eq(null))).thenReturn(serviceTemplate);
-
- ToscaServiceTemplate returnedServiceTemplate = provider.getToscaServiceTemplate(null, null);
- assertThat(returnedServiceTemplate).isNotNull();
-
- Map<String, ToscaNodeTemplate> nodeTemplates =
- returnedServiceTemplate.getToscaTopologyTemplate().getNodeTemplates();
-
- assertThat(nodeTemplates).hasSize(8);
- }
-
- /**
- * Test the fetching of a reduced ToscaServiceTemplate with only some of the objects from the full template.
- * The reduced template does not contain: DataTypesAsMap or PolicyTypesAsMap.
- *
- */
- @Test
- void testGetToscaServiceTemplateReduced() throws Exception {
- var serviceTemplateProvider = mock(ServiceTemplateProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var participantProvider = mock(ParticipantProvider.class);
-
- CommissioningProvider provider =
- new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider);
- ToscaServiceTemplate serviceTemplate =
- InstantiationUtils.getToscaServiceTemplate(COMMON_TOSCA_SERVICE_TEMPLATE_YAML);
- when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate);
-
- provider.createControlLoopDefinitions(serviceTemplate);
-
- when(serviceTemplateProvider.getServiceTemplateList(any(), any())).thenReturn(List.of(serviceTemplate));
-
- String returnedServiceTemplate = provider.getToscaServiceTemplateReduced(null, null);
- assertThat(returnedServiceTemplate).isNotNull();
- ToscaServiceTemplate parsedServiceTemplate = CODER.decode(returnedServiceTemplate, ToscaServiceTemplate.class);
-
- assertThat(parsedServiceTemplate.getToscaTopologyTemplate().getNodeTemplates()).hasSize(8);
- }
-
- /**
- * Tests the different schemas being returned from the schema endpoint. As schemas of the different
- * sections of the Tosca Service Templates can be returned by the API, this test must cover all of the
- * different sections.
- *
- */
- @Test
- void testGetToscaServiceTemplateSchema() throws Exception {
- var serviceTemplateProvider = mock(ServiceTemplateProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var participantProvider = mock(ParticipantProvider.class);
-
- CommissioningProvider provider =
- new CommissioningProvider(serviceTemplateProvider, clProvider, null, participantProvider);
- ToscaServiceTemplate serviceTemplate =
- InstantiationUtils.getToscaServiceTemplate(COMMON_TOSCA_SERVICE_TEMPLATE_YAML);
- when(serviceTemplateProvider.createServiceTemplate(serviceTemplate)).thenReturn(serviceTemplate);
-
- provider.createControlLoopDefinitions(serviceTemplate);
-
- mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
-
- Map<String, Class<?>> sections = Map.of("all", ToscaServiceTemplate.class, "data_types", ToscaDataType.class,
- "capability_types", ToscaCapabilityType.class, "node_types", ToscaNodeType.class, "relationship_types",
- ToscaRelationshipType.class, "policy_types", ToscaPolicyType.class, "topology_template",
- ToscaTopologyTemplate.class, "node_templates", List.class);
-
- for (Map.Entry<String, Class<?>> entry : sections.entrySet()) {
- String returnedServiceTemplateSchema = provider.getToscaServiceTemplateSchema(entry.getKey());
- assertThat(returnedServiceTemplateSchema).isNotNull();
-
- var visitor = new SchemaFactoryWrapper();
-
- if (entry.getKey().equals("node_templates")) {
- mapper.acceptJsonFormatVisitor(
- mapper.getTypeFactory().constructCollectionType(List.class, ToscaNodeTemplate.class), visitor);
- } else {
- mapper.acceptJsonFormatVisitor(mapper.constructType(entry.getValue()), visitor);
- }
-
- var jsonSchema = visitor.finalSchema();
- String localServiceTemplateSchema = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema);
- assertThat(localServiceTemplateSchema).isEqualTo(returnedServiceTemplateSchema);
- }
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java
deleted file mode 100644
index e4a121439..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.commissioning.rest;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.List;
-import java.util.Map;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.Response;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.junit.jupiter.api.parallel.Execution;
-import org.junit.jupiter.api.parallel.ExecutionMode;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.messages.rest.commissioning.CommissioningResponse;
-import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils;
-import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-@ExtendWith(SpringExtension.class)
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@TestPropertySource(locations = {"classpath:application_test.properties"})
-@Execution(ExecutionMode.SAME_THREAD)
-class CommissioningControllerTest extends CommonRestController {
-
- private static final String TOSCA_SERVICE_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml";
- private static final String COMMON_TOSCA_SERVICE_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/full-tosca-with-common-properties.yaml";
-
- private static final String COMMISSIONING_ENDPOINT = "commission";
- private static ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate();
- private static ToscaServiceTemplate commonPropertiesServiceTemplate = new ToscaServiceTemplate();
-
- @Autowired
- private ServiceTemplateProvider serviceTemplateProvider;
-
- @LocalServerPort
- private int randomServerPort;
-
- /**
- * starts Main and inserts a commissioning template.
- *
- * @throws Exception if an error occurs
- */
- @BeforeAll
- public static void setUpBeforeClass() throws Exception {
-
- serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
- commonPropertiesServiceTemplate =
- InstantiationUtils.getToscaServiceTemplate(COMMON_TOSCA_SERVICE_TEMPLATE_YAML);
- }
-
- @BeforeEach
- public void setUpPort() {
- super.setHttpPrefix(randomServerPort);
- }
-
- @AfterEach
- public void cleanDatabase() throws Exception {
- deleteEntryInDB();
- }
-
- @Test
- void testSwagger() throws Exception {
- super.testSwagger(COMMISSIONING_ENDPOINT);
- }
-
- @Test
- void testUnauthorizedCreate() throws Exception {
- assertUnauthorizedPost(COMMISSIONING_ENDPOINT, Entity.json(serviceTemplate));
- }
-
- @Test
- void testUnauthorizedQuery() throws Exception {
- assertUnauthorizedGet(COMMISSIONING_ENDPOINT);
- }
-
- @Test
- void testUnauthorizedQueryElements() throws Exception {
- assertUnauthorizedGet(COMMISSIONING_ENDPOINT + "/elements");
- }
-
- @Test
- void testUnauthorizedDelete() throws Exception {
- assertUnauthorizedDelete(COMMISSIONING_ENDPOINT);
- }
-
- @Test
- void testUnauthorizedQueryToscaServiceTemplate() throws Exception {
- assertUnauthorizedGet(COMMISSIONING_ENDPOINT + "/toscaservicetemplate");
- }
-
- @Test
- void testUnauthorizedQueryToscaServiceTemplateSchema() throws Exception {
- assertUnauthorizedGet(COMMISSIONING_ENDPOINT + "/toscaServiceTemplateSchema");
- }
-
- @Test
- void testUnauthorizedQueryToscaServiceCommonOrInstanceProperties() throws Exception {
- assertUnauthorizedGet(COMMISSIONING_ENDPOINT + "/getCommonOrInstanceProperties");
- }
-
- @Test
- void testQueryToscaServiceTemplate() throws Exception {
- createFullEntryInDbWithCommonProps();
-
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "/toscaservicetemplate");
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- ToscaServiceTemplate template = rawresp.readEntity(ToscaServiceTemplate.class);
- assertNotNull(template);
- assertThat(template.getNodeTypes()).hasSize(8);
-
- }
-
- @Test
- void testQueryToscaServiceTemplateSchema() throws Exception {
- createFullEntryInDbWithCommonProps();
-
- Invocation.Builder invocationBuilder =
- super.sendRequest(COMMISSIONING_ENDPOINT + "/toscaServiceTemplateSchema");
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- String schema = rawresp.readEntity(String.class);
- assertNotNull(schema);
-
- }
-
- @Test
- void testQueryCommonOrInstanceProperties() throws Exception {
- createFullEntryInDbWithCommonProps();
-
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT
- + "/getCommonOrInstanceProperties" + "?common=true&name=ToscaServiceTemplateSimple&version=1.0.0");
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
-
- @SuppressWarnings("unchecked")
- Map<String, ToscaNodeTemplate> commonProperties = rawresp.readEntity(Map.class);
-
- assertNotNull(commonProperties);
- assertThat(commonProperties).hasSize(6);
-
- }
-
- @Test
- void testCreateBadRequest() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
- Response resp = invocationBuilder.post(Entity.json("NotToscaServiceTempalte"));
-
- assertThat(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).isEqualTo(resp.getStatus());
- CommissioningResponse commissioningResponse = resp.readEntity(CommissioningResponse.class);
- assertThat(commissioningResponse.getErrorDetails()).isNotNull();
- assertThat(commissioningResponse.getAffectedControlLoopDefinitions()).isNull();
- }
-
- @Test
- void testCreate() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- CommissioningResponse commissioningResponse = resp.readEntity(CommissioningResponse.class);
-
- assertNotNull(commissioningResponse);
- assertNull(commissioningResponse.getErrorDetails());
- // Response should return the number of node templates present in the service template
- assertThat(commissioningResponse.getAffectedControlLoopDefinitions()).hasSize(13);
- for (String nodeTemplateName : serviceTemplate.getToscaTopologyTemplate().getNodeTemplates().keySet()) {
- assertTrue(commissioningResponse.getAffectedControlLoopDefinitions().stream()
- .anyMatch(ac -> ac.getName().equals(nodeTemplateName)));
- }
-
- }
-
- @Test
- void testQuery_NoResultWithThisName() throws Exception {
- createEntryInDB();
-
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "?name=noResultWithThisName");
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- List<?> entityList = rawresp.readEntity(List.class);
- assertThat(entityList).isEmpty();
-
- }
-
- @Test
- void testQuery() throws Exception {
- createEntryInDB();
-
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- List<?> entityList = rawresp.readEntity(List.class);
- assertNotNull(entityList);
- assertThat(entityList).hasSize(2);
-
- }
-
- @Test
- void testQueryElementsBadRequest() throws Exception {
- createEntryInDB();
-
- // Call get elements with no info
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "/elements");
- Response resp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), resp.getStatus());
-
- }
-
- @Test
- void testQueryElements() throws Exception {
- createEntryInDB();
-
- Invocation.Builder invocationBuilder = super.sendRequest(
- COMMISSIONING_ENDPOINT + "/elements" + "?name=org.onap.domain.pmsh.PMSHControlLoopDefinition");
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- List<?> entityList = rawresp.readEntity(List.class);
- assertNotNull(entityList);
- assertThat(entityList).hasSize(4);
-
- }
-
- @Test
- void testDeleteBadRequest() throws Exception {
- createEntryInDB();
-
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
- // Call delete with no info
- Response resp = invocationBuilder.delete();
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
-
- }
-
- @Test
- void testDelete() throws Exception {
- var serviceTemplateCreated = createEntryInDB();
-
- Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "?name="
- + serviceTemplateCreated.getName() + "&version=" + serviceTemplateCreated.getVersion());
- // Call delete with no info
- Response resp = invocationBuilder.delete();
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- List<ToscaServiceTemplate> templatesInDB = serviceTemplateProvider.getAllServiceTemplates();
- assertThat(templatesInDB).isEmpty();
- }
-
- private synchronized ToscaServiceTemplate createEntryInDB() throws Exception {
- deleteEntryInDB();
- return serviceTemplateProvider.createServiceTemplate(serviceTemplate);
- }
-
- // Delete entries from the DB after relevant tests
- private synchronized void deleteEntryInDB() throws Exception {
- var list = serviceTemplateProvider.getAllServiceTemplates();
- if (!list.isEmpty()) {
- serviceTemplateProvider.deleteServiceTemplate(list.get(0).getName(), list.get(0).getVersion());
- }
- }
-
- private synchronized void createFullEntryInDbWithCommonProps() throws Exception {
- deleteEntryInDB();
- serviceTemplateProvider.createServiceTemplate(commonPropertiesServiceTemplate);
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivatorTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivatorTest.java
deleted file mode 100644
index 8dbc710dd..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivatorTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config.messaging;
-
-import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyList;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.List;
-import org.junit.jupiter.api.Test;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatus;
-import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantStatusListener;
-import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-
-/**
- * Class to perform unit test of {@link MessageDispatcherActivator}}.
- *
- */
-class MessageDispatcherActivatorTest {
-
- private static final Coder CODER = new StandardCoder();
-
- private static final String TOPIC_FIRST = "TOPIC1";
- private static final String TOPIC_SECOND = "TOPIC2";
-
- @Test
- void testStartAndStop() throws Exception {
- ClRuntimeParameterGroup parameterGroup = CommonTestData.geParameterGroup("dbtest");
-
- var publisherFirst = spy(mock(Publisher.class));
- var publisherSecond = spy(mock(Publisher.class));
- var publishers = List.of(publisherFirst, publisherSecond);
-
- var listenerFirst = spy(mock(ParticipantStatusListener.class));
- when(listenerFirst.getType()).thenReturn(TOPIC_FIRST);
- when(listenerFirst.getScoListener()).thenReturn(listenerFirst);
-
- var listenerSecond = spy(mock(ParticipantStatusListener.class));
- when(listenerSecond.getType()).thenReturn(TOPIC_SECOND);
- when(listenerSecond.getScoListener()).thenReturn(listenerSecond);
-
- List<Listener<ParticipantStatus>> listeners = List.of(listenerFirst, listenerSecond);
-
- try (var activator = new MessageDispatcherActivator(parameterGroup, publishers, listeners)) {
-
- assertFalse(activator.isAlive());
- activator.start();
- assertTrue(activator.isAlive());
-
- // repeat start - should throw an exception
- assertThatIllegalStateException().isThrownBy(() -> activator.start());
- assertTrue(activator.isAlive());
- verify(publisherFirst, times(1)).active(anyList());
- verify(publisherSecond, times(1)).active(anyList());
-
- StandardCoderObject sco = CODER.decode("{messageType:" + TOPIC_FIRST + "}", StandardCoderObject.class);
- activator.getMsgDispatcher().onTopicEvent(null, "msg", sco);
- verify(listenerFirst, times(1)).onTopicEvent(any(), any(), any());
-
- sco = CODER.decode("{messageType:" + TOPIC_SECOND + "}", StandardCoderObject.class);
- activator.getMsgDispatcher().onTopicEvent(null, "msg", sco);
- verify(listenerSecond, times(1)).onTopicEvent(any(), any(), any());
-
- activator.stop();
- assertFalse(activator.isAlive());
-
- // repeat stop - should throw an exception
- assertThatIllegalStateException().isThrownBy(() -> activator.stop());
- assertFalse(activator.isAlive());
- }
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java
deleted file mode 100644
index ba1cc0813..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.instantiation;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Optional;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
-import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningProvider;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-
-/**
- * Class to perform unit test of {@link ControlLoopInstantiationProvider}}.
- *
- */
-class ControlLoopInstantiationProviderTest {
- private static final String ID_NAME = "PMSH_Instance1";
- private static final String ID_VERSION = "1.2.3";
- private static final String CL_INSTANTIATION_CREATE_JSON = "src/test/resources/rest/controlloops/ControlLoops.json";
- private static final String CL_INSTANTIATION_UPDATE_JSON =
- "src/test/resources/rest/controlloops/ControlLoopsUpdate.json";
- private static final String CL_INSTANTIATION_CHANGE_STATE_JSON =
- "src/test/resources/rest/controlloops/PassiveCommand.json";
- private static final String CL_INSTANTIATION_DEFINITION_NAME_NOT_FOUND_JSON =
- "src/test/resources/rest/controlloops/ControlLoopElementsNotFound.json";
- private static final String CL_INSTANTIATION_CONTROLLOOP_DEFINITION_NOT_FOUND_JSON =
- "src/test/resources/rest/controlloops/ControlLoopsNotFound.json";
- private static final String TOSCA_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml";
- private static final String CONTROL_LOOP_NOT_FOUND = "Control Loop not found";
- private static final String DELETE_BAD_REQUEST = "Control Loop State is still %s";
- private static final String ORDERED_STATE_INVALID = "ordered state invalid or not specified on command";
- private static final String CONTROLLOOP_ELEMENT_NAME_NOT_FOUND =
- "\"ControlLoops\" INVALID, item has status INVALID\n"
- + " \"entry org.onap.domain.pmsh.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
- + " \"entry org.onap.domain.pmsh.DCAEMicroservice\" INVALID, Not FOUND\n"
- + " \"entry org.onap.domain.pmsh.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
- + " \"entry org.onap.domain.pmsh.DCAEMicroservice\" INVALID, Not FOUND\n";
-
- private static final String CONTROLLOOP_DEFINITION_NOT_FOUND = "\"ControlLoops\" INVALID, item has status INVALID\n"
- + " \"entry org.onap.domain.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
- + " item \"ControlLoop\" value \"org.onap.domain.PMSHControlLoopDefinition\" INVALID,"
- + " Commissioned control loop definition not FOUND\n"
- + " \"entry org.onap.domain.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
- + " item \"ControlLoop\" value \"org.onap.domain.PMSHControlLoopDefinition\" INVALID,"
- + " Commissioned control loop definition not FOUND\n";
-
- private static ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate();
-
- @BeforeAll
- public static void setUpBeforeClass() throws Exception {
- serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_TEMPLATE_YAML);
- }
-
- @Test
- void testIntanceResponses() throws Exception {
- var participantProvider = Mockito.mock(ParticipantProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var supervisionHandler = mock(SupervisionHandler.class);
- var commissioningProvider = mock(CommissioningProvider.class);
-
- when(commissioningProvider.getAllToscaServiceTemplate()).thenReturn(List.of(serviceTemplate));
- when(commissioningProvider.getToscaServiceTemplate(ID_NAME, ID_VERSION)).thenReturn(serviceTemplate);
-
- var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider,
- supervisionHandler, participantProvider);
- var instancePropertyList = instantiationProvider.createInstanceProperties(serviceTemplate);
- assertNull(instancePropertyList.getErrorDetails());
- var id = new ToscaConceptIdentifier(ID_NAME, ID_VERSION);
- assertEquals(id, instancePropertyList.getAffectedInstanceProperties().get(0));
-
- ControlLoops controlLoops =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Crud");
- var controlLoop = controlLoops.getControlLoopList().get(0);
- controlLoop.setName(ID_NAME);
- controlLoop.setVersion(ID_VERSION);
- when(clProvider.getControlLoops(ID_NAME, ID_VERSION)).thenReturn(List.of(controlLoop));
-
- var instanceOrderState = instantiationProvider.getInstantiationOrderState(ID_NAME, ID_VERSION);
- assertEquals(ControlLoopOrderedState.UNINITIALISED, instanceOrderState.getOrderedState());
- assertEquals(ID_NAME, instanceOrderState.getControlLoopIdentifierList().get(0).getName());
-
- when(clProvider.findControlLoop(ID_NAME, ID_VERSION)).thenReturn(Optional.of(controlLoop));
- when(clProvider.deleteControlLoop(ID_NAME, ID_VERSION)).thenReturn(controlLoop);
-
- var instanceResponse = instantiationProvider.deleteInstanceProperties(ID_NAME, ID_VERSION);
- assertEquals(ID_NAME, instanceResponse.getAffectedControlLoops().get(0).getName());
-
- }
-
- @Test
- void testInstantiationCrud() throws Exception {
- var participantProvider = Mockito.mock(ParticipantProvider.class);
- var participants = CommonTestData.createParticipants();
- when(participantProvider.getParticipants()).thenReturn(participants);
-
- var commissioningProvider = mock(CommissioningProvider.class);
- var toscaNodeTemplate1 = new ToscaNodeTemplate();
- toscaNodeTemplate1.setName("org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement");
- toscaNodeTemplate1.setVersion("1.2.3");
- when(commissioningProvider.getControlLoopDefinitions(anyString(), anyString()))
- .thenReturn(List.of(toscaNodeTemplate1));
-
- var toscaNodeTemplate2 = new ToscaNodeTemplate();
- toscaNodeTemplate2.setName("org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement");
- toscaNodeTemplate2.setVersion("1.2.3");
- var toscaNodeTemplate3 = new ToscaNodeTemplate();
- toscaNodeTemplate3.setName("org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement");
- toscaNodeTemplate3.setVersion("1.2.3");
- var toscaNodeTemplate4 = new ToscaNodeTemplate();
- toscaNodeTemplate4.setName("org.onap.domain.pmsh.PMSH_DCAEMicroservice");
- toscaNodeTemplate4.setVersion("1.2.3");
-
- when(commissioningProvider.getControlLoopElementDefinitions(toscaNodeTemplate1))
- .thenReturn(List.of(toscaNodeTemplate1, toscaNodeTemplate2, toscaNodeTemplate3, toscaNodeTemplate4));
-
- var supervisionHandler = mock(SupervisionHandler.class);
- var clProvider = mock(ControlLoopProvider.class);
- var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider,
- supervisionHandler, participantProvider);
- ControlLoops controlLoopsCreate =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Crud");
- InstantiationResponse instantiationResponse = instantiationProvider.createControlLoops(controlLoopsCreate);
- InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsCreate);
-
- verify(clProvider).saveControlLoops(controlLoopsCreate.getControlLoopList());
-
- for (var controlLoop : controlLoopsCreate.getControlLoopList()) {
- when(clProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion()))
- .thenReturn(List.of(controlLoop));
-
- ControlLoops controlLoopsGet =
- instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion());
- assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
- assertThat(controlLoop).isEqualTo(controlLoopsGet.getControlLoopList().get(0));
- }
-
- ControlLoops controlLoopsUpdate =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Crud");
-
- instantiationResponse = instantiationProvider.updateControlLoops(controlLoopsUpdate);
- InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsUpdate);
-
- verify(clProvider).saveControlLoops(controlLoopsUpdate.getControlLoopList());
-
- for (var controlLoop : controlLoopsUpdate.getControlLoopList()) {
- when(clProvider.findControlLoop(controlLoop.getKey().asIdentifier())).thenReturn(Optional.of(controlLoop));
- when(clProvider.findControlLoop(controlLoop.getName(), controlLoop.getVersion()))
- .thenReturn(Optional.of(controlLoop));
- when(clProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion())).thenReturn(controlLoop);
- }
-
- InstantiationCommand instantiationCommand =
- InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Crud");
- instantiationResponse = instantiationProvider.issueControlLoopCommand(instantiationCommand);
- InstantiationUtils.assertInstantiationResponse(instantiationResponse, instantiationCommand);
-
- verify(supervisionHandler).triggerControlLoopSupervision(instantiationCommand.getControlLoopIdentifierList());
-
- // in order to delete a controlLoop the state must be UNINITIALISED
- controlLoopsCreate.getControlLoopList().forEach(cl -> cl.setState(ControlLoopState.UNINITIALISED));
- instantiationProvider.updateControlLoops(controlLoopsCreate);
-
- for (ControlLoop controlLoop : controlLoopsCreate.getControlLoopList()) {
- instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion());
-
- verify(clProvider).deleteControlLoop(controlLoop.getName(), controlLoop.getVersion());
- }
- }
-
- @Test
- void testInstantiationDelete() throws Exception {
-
- ControlLoops controlLoops =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Delete");
-
- ControlLoop controlLoop0 = controlLoops.getControlLoopList().get(0);
- var participantProvider = Mockito.mock(ParticipantProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var supervisionHandler = mock(SupervisionHandler.class);
- var commissioningProvider = mock(CommissioningProvider.class);
-
- var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider,
- supervisionHandler, participantProvider);
-
- assertThatThrownBy(
- () -> instantiationProvider.deleteControlLoop(controlLoop0.getName(), controlLoop0.getVersion()))
- .hasMessageMatching(CONTROL_LOOP_NOT_FOUND);
-
- for (ControlLoopState state : ControlLoopState.values()) {
- if (!ControlLoopState.UNINITIALISED.equals(state)) {
- assertThatDeleteThrownBy(controlLoops, state);
- }
- }
- controlLoop0.setState(ControlLoopState.UNINITIALISED);
-
- for (ControlLoop controlLoop : controlLoops.getControlLoopList()) {
- when(clProvider.findControlLoop(controlLoop.getName(), controlLoop.getVersion()))
- .thenReturn(Optional.of(controlLoop));
- when(clProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion())).thenReturn(controlLoop);
-
- instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion());
- }
- }
-
- private void assertThatDeleteThrownBy(ControlLoops controlLoops, ControlLoopState state) throws Exception {
- ControlLoop controlLoop = controlLoops.getControlLoopList().get(0);
- controlLoop.setState(state);
- var participantProvider = Mockito.mock(ParticipantProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var supervisionHandler = mock(SupervisionHandler.class);
- var commissioningProvider = mock(CommissioningProvider.class);
-
- var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider,
- supervisionHandler, participantProvider);
-
- when(clProvider.findControlLoop(controlLoop.getName(), controlLoop.getVersion()))
- .thenReturn(Optional.of(controlLoop));
-
- assertThatThrownBy(
- () -> instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()))
- .hasMessageMatching(String.format(DELETE_BAD_REQUEST, state));
- }
-
- @Test
- void testCreateControlLoops_NoDuplicates() throws Exception {
- var commissioningProvider = mock(CommissioningProvider.class);
-
- var toscaNodeTemplate1 = new ToscaNodeTemplate();
- toscaNodeTemplate1.setName("org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement");
- toscaNodeTemplate1.setVersion("1.2.3");
- when(commissioningProvider.getControlLoopDefinitions(anyString(), anyString()))
- .thenReturn(List.of(toscaNodeTemplate1));
-
- var toscaNodeTemplate2 = new ToscaNodeTemplate();
- toscaNodeTemplate2.setName("org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement");
- toscaNodeTemplate2.setVersion("1.2.3");
- var toscaNodeTemplate3 = new ToscaNodeTemplate();
- toscaNodeTemplate3.setName("org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement");
- toscaNodeTemplate3.setVersion("1.2.3");
- var toscaNodeTemplate4 = new ToscaNodeTemplate();
- toscaNodeTemplate4.setName("org.onap.domain.pmsh.PMSH_DCAEMicroservice");
- toscaNodeTemplate4.setVersion("1.2.3");
-
- when(commissioningProvider.getControlLoopElementDefinitions(toscaNodeTemplate1))
- .thenReturn(List.of(toscaNodeTemplate1, toscaNodeTemplate2, toscaNodeTemplate3, toscaNodeTemplate4));
-
- ControlLoops controlLoopsCreate =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "NoDuplicates");
-
- var clProvider = mock(ControlLoopProvider.class);
- var participantProvider = Mockito.mock(ParticipantProvider.class);
- var supervisionHandler = mock(SupervisionHandler.class);
-
- var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider,
- supervisionHandler, participantProvider);
-
- InstantiationResponse instantiationResponse = instantiationProvider.createControlLoops(controlLoopsCreate);
- InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsCreate);
-
- when(clProvider.findControlLoop(controlLoopsCreate.getControlLoopList().get(0).getKey().asIdentifier()))
- .thenReturn(Optional.of(controlLoopsCreate.getControlLoopList().get(0)));
-
- assertThatThrownBy(() -> instantiationProvider.createControlLoops(controlLoopsCreate)).hasMessageMatching(
- controlLoopsCreate.getControlLoopList().get(0).getKey().asIdentifier() + " already defined");
- }
-
- @Test
- void testCreateControlLoops_CommissionedClElementNotFound() throws Exception {
- var toscaNodeTemplate1 = new ToscaNodeTemplate();
- toscaNodeTemplate1.setName("org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement");
- toscaNodeTemplate1.setVersion("1.2.3");
-
- var toscaNodeTemplate2 = new ToscaNodeTemplate();
- toscaNodeTemplate2.setName("org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement");
- toscaNodeTemplate2.setVersion("1.2.3");
- var toscaNodeTemplate3 = new ToscaNodeTemplate();
- toscaNodeTemplate3.setName("org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement");
- toscaNodeTemplate3.setVersion("1.2.3");
- var commissioningProvider = mock(CommissioningProvider.class);
- ControlLoops controlLoops = InstantiationUtils
- .getControlLoopsFromResource(CL_INSTANTIATION_DEFINITION_NAME_NOT_FOUND_JSON, "ClElementNotFound");
-
- when(commissioningProvider.getControlLoopDefinitions(
- controlLoops.getControlLoopList().get(0).getDefinition().getName(),
- controlLoops.getControlLoopList().get(0).getDefinition().getVersion()))
- .thenReturn(List.of(toscaNodeTemplate1));
-
- when(commissioningProvider.getControlLoopElementDefinitions(toscaNodeTemplate1))
- .thenReturn(List.of(toscaNodeTemplate1, toscaNodeTemplate2, toscaNodeTemplate3));
-
- var clProvider = mock(ControlLoopProvider.class);
- var participantProvider = mock(ParticipantProvider.class);
- var supervisionHandler = mock(SupervisionHandler.class);
- var provider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler,
- participantProvider);
-
- assertThatThrownBy(() -> provider.createControlLoops(controlLoops))
- .hasMessageMatching(CONTROLLOOP_ELEMENT_NAME_NOT_FOUND);
-
- assertThatThrownBy(() -> provider.updateControlLoops(controlLoops))
- .hasMessageMatching(CONTROLLOOP_ELEMENT_NAME_NOT_FOUND);
- }
-
- @Test
- void testCreateControlLoops_CommissionedClNotFound() throws Exception {
- ControlLoops controlLoops = InstantiationUtils
- .getControlLoopsFromResource(CL_INSTANTIATION_CONTROLLOOP_DEFINITION_NOT_FOUND_JSON, "ClNotFound");
-
- var participantProvider = Mockito.mock(ParticipantProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var supervisionHandler = mock(SupervisionHandler.class);
- var commissioningProvider = mock(CommissioningProvider.class);
- var provider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider, supervisionHandler,
- participantProvider);
-
- assertThatThrownBy(() -> provider.createControlLoops(controlLoops))
- .hasMessageMatching(CONTROLLOOP_DEFINITION_NOT_FOUND);
-
- assertThatThrownBy(() -> provider.updateControlLoops(controlLoops))
- .hasMessageMatching(CONTROLLOOP_DEFINITION_NOT_FOUND);
- }
-
- @Test
- void testIssueControlLoopCommand_OrderedStateInvalid() throws ControlLoopRuntimeException, IOException {
- var participantProvider = Mockito.mock(ParticipantProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- var supervisionHandler = mock(SupervisionHandler.class);
- var commissioningProvider = mock(CommissioningProvider.class);
- var instantiationProvider = new ControlLoopInstantiationProvider(clProvider, commissioningProvider,
- supervisionHandler, participantProvider);
- assertThatThrownBy(() -> instantiationProvider.issueControlLoopCommand(new InstantiationCommand()))
- .hasMessageMatching(ORDERED_STATE_INVALID);
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java
deleted file mode 100644
index 5aa68657c..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.instantiation;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.io.File;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.common.utils.coder.StandardYamlCoder;
-import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-
-/**
- * Utility methods supporting tests for Instantiation.
- */
-public class InstantiationUtils {
-
- private static final Coder CODER = new StandardCoder();
- private static final StandardYamlCoder YAML_TRANSLATOR = new StandardYamlCoder();
-
- /**
- * Gets the ControlLoops from Resource.
- *
- * @param path path of the resource
- * @param suffix suffix to add to all names in ControlLoops
- * @return the ControlLoops from Resource
- * @throws CoderException if an error occurs
- */
- public static ControlLoops getControlLoopsFromResource(final String path, final String suffix)
- throws CoderException {
- ControlLoops controlLoops = CODER.decode(new File(path), ControlLoops.class);
-
- // add suffix to all names
- controlLoops.getControlLoopList().forEach(controlLoop -> controlLoop.setName(controlLoop.getName() + suffix));
- return controlLoops;
- }
-
- /**
- * Gets InstantiationCommand from Resource.
- *
- * @param path path of the resource
- * @param suffix suffix to add to all names in ControlLoops
- * @return the InstantiationCommand
- * @throws CoderException if an error occurs
- */
- public static InstantiationCommand getInstantiationCommandFromResource(final String path, final String suffix)
- throws CoderException {
- InstantiationCommand instantiationCommand = CODER.decode(new File(path), InstantiationCommand.class);
-
- // add suffix to all names
- instantiationCommand.getControlLoopIdentifierList().forEach(cl -> cl.setName(cl.getName() + suffix));
- return instantiationCommand;
- }
-
- /**
- * Assert that Instantiation Response contains proper ControlLoops.
- *
- * @param response InstantiationResponse
- * @param controlLoops ControlLoops
- */
- public static void assertInstantiationResponse(InstantiationResponse response, ControlLoops controlLoops) {
- assertThat(response).isNotNull();
- assertThat(response.getErrorDetails()).isNull();
- assertThat(response.getAffectedControlLoops().size()).isEqualTo(controlLoops.getControlLoopList().size());
- for (ControlLoop controlLoop : controlLoops.getControlLoopList()) {
- assertTrue(response.getAffectedControlLoops().stream()
- .filter(ac -> ac.equals(controlLoop.getKey().asIdentifier())).findAny().isPresent());
- }
- }
-
- /**
- * Assert that Instantiation Response contains proper ControlLoops.
- *
- * @param response InstantiationResponse
- * @param command InstantiationCommand
- */
- public static void assertInstantiationResponse(InstantiationResponse response, InstantiationCommand command) {
- assertThat(response).isNotNull();
- assertEquals(response.getAffectedControlLoops().size(), command.getControlLoopIdentifierList().size());
- for (ToscaConceptIdentifier toscaConceptIdentifier : command.getControlLoopIdentifierList()) {
- assertTrue(response.getAffectedControlLoops().stream()
- .filter(ac -> ac.compareTo(toscaConceptIdentifier) == 0).findAny().isPresent());
- }
- }
-
- /**
- * Assert that Instantiation Response contains ControlLoop equals to controlLoop.
- *
- * @param response InstantiationResponse
- * @param controlLoop ControlLoop
- */
- public static void assertInstantiationResponse(InstantiationResponse response, ControlLoop controlLoop) {
- assertThat(response).isNotNull();
- assertThat(response.getErrorDetails()).isNull();
- assertEquals(1, response.getAffectedControlLoops().size());
- assertEquals(0, response.getAffectedControlLoops().get(0).compareTo(controlLoop.getKey().asIdentifier()));
- }
-
- /**
- * Get ToscaServiceTemplate from resource.
- *
- * @param path path of the resource
- */
- public static ToscaServiceTemplate getToscaServiceTemplate(String path) {
-
- try {
- return YAML_TRANSLATOR.decode(ResourceUtils.getResourceAsStream(path), ToscaServiceTemplate.class);
- } catch (CoderException e) {
- fail("Cannot read or decode " + path);
- return null;
- }
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java
deleted file mode 100644
index 9cc0195d9..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java
+++ /dev/null
@@ -1,527 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.instantiation.rest;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.Response;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.repository.ControlLoopRepository;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopOrderStateResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopPrimedResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstancePropertiesResponse;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
-import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
-import org.onap.policy.clamp.controlloop.runtime.instantiation.ControlLoopInstantiationProvider;
-import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils;
-import org.onap.policy.clamp.controlloop.runtime.main.rest.InstantiationController;
-import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
-import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-/**
- * Class to perform unit test of {@link InstantiationController}}.
- *
- */
-@ExtendWith(SpringExtension.class)
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@TestPropertySource(locations = {"classpath:application_test.properties"})
-class InstantiationControllerTest extends CommonRestController {
-
- private static final String ID_NAME = "PMSH_Instance1";
- private static final String ID_VERSION = "1.2.3";
-
- private static final String CL_INSTANTIATION_CREATE_JSON = "src/test/resources/rest/controlloops/ControlLoops.json";
-
- private static final String CL_INSTANTIATION_UPDATE_JSON =
- "src/test/resources/rest/controlloops/ControlLoopsUpdate.json";
-
- private static final String CL_INSTANTIATION_CHANGE_STATE_JSON =
- "src/test/resources/rest/controlloops/PassiveCommand.json";
-
- private static final String TOSCA_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml";
-
- private static final String INSTANTIATION_ENDPOINT = "instantiation";
- private static final String INSTANTIATION_COMMAND_ENDPOINT = "instantiation/command";
- private static final String PRIMING_ENDPOINT = "controlLoopPriming";
- private static final String INSTANTIATION_PROPERTIES = "instanceProperties";
- private static final String INSTANTIATION_STATE = "instantiationState";
-
- private static ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate();
-
- @Autowired
- private ControlLoopRepository controlLoopRepository;
-
- @Autowired
- private ServiceTemplateProvider serviceTemplateProvider;
-
- @Autowired
- private ControlLoopInstantiationProvider instantiationProvider;
-
- @Autowired
- private ParticipantProvider participantProvider;
-
- @LocalServerPort
- private int randomServerPort;
-
- @BeforeAll
- public static void setUpBeforeClass() throws Exception {
- serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_TEMPLATE_YAML);
- }
-
- @BeforeEach
- public void populateDb() throws Exception {
- createEntryInDB();
- }
-
- @BeforeEach
- public void setUpPort() {
- super.setHttpPrefix(randomServerPort);
- }
-
- @AfterEach
- public void cleanDatabase() throws Exception {
- deleteEntryInDB();
- }
-
- @Test
- void testSwagger() throws Exception {
- super.testSwagger(INSTANTIATION_ENDPOINT);
- }
-
- @Test
- void testCreate_Unauthorized() throws Exception {
- ControlLoops controlLoops =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Unauthorized");
-
- assertUnauthorizedPost(INSTANTIATION_ENDPOINT, Entity.json(controlLoops));
- }
-
- @Test
- void testQuery_Unauthorized() throws Exception {
- assertUnauthorizedGet(INSTANTIATION_ENDPOINT);
- }
-
- @Test
- void testUpdate_Unauthorized() throws Exception {
- ControlLoops controlLoops =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Unauthorized");
-
- assertUnauthorizedPut(INSTANTIATION_ENDPOINT, Entity.json(controlLoops));
- }
-
- @Test
- void testDelete_Unauthorized() throws Exception {
- assertUnauthorizedDelete(INSTANTIATION_ENDPOINT);
- }
-
- @Test
- void testCommand_Unauthorized() throws Exception {
- InstantiationCommand instantiationCommand = InstantiationUtils
- .getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Unauthorized");
-
- assertUnauthorizedPut(INSTANTIATION_COMMAND_ENDPOINT, Entity.json(instantiationCommand));
- }
-
- @Test
- void testCreate() throws Exception {
-
- ControlLoops controlLoopsFromRsc =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Create");
-
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT);
- Response resp = invocationBuilder.post(Entity.json(controlLoopsFromRsc));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- InstantiationUtils.assertInstantiationResponse(instResponse, controlLoopsFromRsc);
-
- for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
- ControlLoops controlLoopsFromDb = instantiationProvider
- .getControlLoops(controlLoopFromRsc.getKey().getName(), controlLoopFromRsc.getKey().getVersion());
-
- assertNotNull(controlLoopsFromDb);
- assertThat(controlLoopsFromDb.getControlLoopList()).hasSize(1);
- assertEquals(controlLoopFromRsc, controlLoopsFromDb.getControlLoopList().get(0));
- }
-
- invocationBuilder =
- super.sendRequest(PRIMING_ENDPOINT + "?name=" + "PMSHInstance0Create" + "&version=" + "1.0.1");
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- ControlLoopPrimedResponse primResponse = rawresp.readEntity(ControlLoopPrimedResponse.class);
- assertEquals(false, primResponse.getPrimedControlLoopsList().get(0).isPrimed());
- }
-
- @Test
- void testCreateBadRequest() throws Exception {
-
- ControlLoops controlLoopsFromRsc =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "CreateBadRequest");
-
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT);
- Response resp = invocationBuilder.post(Entity.json(controlLoopsFromRsc));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- // testing Bad Request: CL already defined
- resp = invocationBuilder.post(Entity.json(controlLoopsFromRsc));
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- assertNotNull(instResponse.getErrorDetails());
- assertNull(instResponse.getAffectedControlLoops());
- }
-
- @Test
- void testQuery_NoResultWithThisName() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name=noResultWithThisName");
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- ControlLoops resp = rawresp.readEntity(ControlLoops.class);
- assertThat(resp.getControlLoopList()).isEmpty();
- }
-
- @Test
- void testQuery() throws Exception {
-
- var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Query");
- instantiationProvider.createControlLoops(controlLoops);
-
- for (ControlLoop controlLoopFromRsc : controlLoops.getControlLoopList()) {
- Invocation.Builder invocationBuilder =
- super.sendRequest(INSTANTIATION_ENDPOINT + "?name=" + controlLoopFromRsc.getKey().getName());
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- ControlLoops controlLoopsQuery = rawresp.readEntity(ControlLoops.class);
- assertNotNull(controlLoopsQuery);
- assertThat(controlLoopsQuery.getControlLoopList()).hasSize(1);
- assertEquals(controlLoopFromRsc, controlLoopsQuery.getControlLoopList().get(0));
- }
- }
-
- @Test
- void testUpdate() throws Exception {
-
- ControlLoops controlLoopsCreate =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Update");
-
- var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Update");
- instantiationProvider.createControlLoops(controlLoopsCreate);
-
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT);
- Response resp = invocationBuilder.put(Entity.json(controlLoops));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- InstantiationUtils.assertInstantiationResponse(instResponse, controlLoops);
-
- for (ControlLoop controlLoopUpdate : controlLoops.getControlLoopList()) {
- ControlLoops controlLoopsFromDb = instantiationProvider
- .getControlLoops(controlLoopUpdate.getKey().getName(), controlLoopUpdate.getKey().getVersion());
-
- assertNotNull(controlLoopsFromDb);
- assertThat(controlLoopsFromDb.getControlLoopList()).hasSize(1);
- assertEquals(controlLoopUpdate, controlLoopsFromDb.getControlLoopList().get(0));
- }
- }
-
- @Test
- void testDelete_NoResultWithThisName() throws Exception {
- Invocation.Builder invocationBuilder =
- super.sendRequest(INSTANTIATION_ENDPOINT + "?name=noResultWithThisName&version=1.0.1");
- Response resp = invocationBuilder.delete();
- assertEquals(Response.Status.NOT_FOUND.getStatusCode(), resp.getStatus());
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- assertNotNull(instResponse.getErrorDetails());
- assertNull(instResponse.getAffectedControlLoops());
- }
-
- @Test
- void testDelete() throws Exception {
-
- ControlLoops controlLoopsFromRsc =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Delete");
-
- instantiationProvider.createControlLoops(controlLoopsFromRsc);
-
- for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name="
- + controlLoopFromRsc.getKey().getName() + "&version=" + controlLoopFromRsc.getKey().getVersion());
- Response resp = invocationBuilder.delete();
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- InstantiationUtils.assertInstantiationResponse(instResponse, controlLoopFromRsc);
-
- ControlLoops controlLoopsFromDb = instantiationProvider
- .getControlLoops(controlLoopFromRsc.getKey().getName(), controlLoopFromRsc.getKey().getVersion());
- assertThat(controlLoopsFromDb.getControlLoopList()).isEmpty();
- }
- }
-
- @Test
- void testDeleteBadRequest() throws Exception {
-
- ControlLoops controlLoopsFromRsc =
- InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "DelBadRequest");
-
- instantiationProvider.createControlLoops(controlLoopsFromRsc);
-
- for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name="
- + controlLoopFromRsc.getKey().getName());
- Response resp = invocationBuilder.delete();
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
- }
- }
-
- @Test
- void testCreateInstanceProperties() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- var instancePropertyList = resp.readEntity(InstancePropertiesResponse.class);
- assertNull(instancePropertyList.getErrorDetails());
- var id = new ToscaConceptIdentifier(ID_NAME, ID_VERSION);
- assertEquals(id, instancePropertyList.getAffectedInstanceProperties().get(0));
-
- invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT);
- resp = invocationBuilder.get();
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- var controlLoopsGet = resp.readEntity(ControlLoops.class);
- assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
- }
-
- @Test
- void testDeleteInstanceProperties() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES + "?name=" + ID_NAME + "&version=" + ID_VERSION);
- resp = invocationBuilder.delete();
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- var instanceResponse = resp.readEntity(InstantiationResponse.class);
- assertEquals(ID_NAME, instanceResponse.getAffectedControlLoops().get(0).getName());
- ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(ID_NAME, ID_VERSION);
- assertThat(controlLoopsGet.getControlLoopList()).isEmpty();
- }
-
- @Test
- void testDeleteInstancePropertiesBadRequest() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES + "?name=" + ID_NAME);
- resp = invocationBuilder.delete();
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
- }
-
- @Test
- void testDeleteInstancePropertiesPassiveMode() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Command");
- instantiationProvider.createControlLoops(controlLoops);
-
- var participants = CommonTestData.createParticipants();
- for (var participant : participants) {
- participantProvider.saveParticipant(participant);
- }
-
- InstantiationCommand command =
- InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Command");
-
- invocationBuilder = super.sendRequest(INSTANTIATION_COMMAND_ENDPOINT);
- resp = invocationBuilder.put(Entity.json(command));
- assertEquals(Response.Status.ACCEPTED.getStatusCode(), resp.getStatus());
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- InstantiationUtils.assertInstantiationResponse(instResponse, command);
-
- // check passive state on DB and delete properties
- for (ToscaConceptIdentifier toscaConceptIdentifier : command.getControlLoopIdentifierList()) {
- ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(toscaConceptIdentifier.getName(),
- toscaConceptIdentifier.getVersion());
- assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
- assertEquals(command.getOrderedState(), controlLoopsGet.getControlLoopList().get(0).getOrderedState());
-
- invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES + "?name="
- + toscaConceptIdentifier.getName() + "&version=" + toscaConceptIdentifier.getVersion());
- resp = invocationBuilder.delete();
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
- }
- }
-
- @Test
- void testCommand_NotFound1() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_COMMAND_ENDPOINT);
- Response resp = invocationBuilder.put(Entity.json(new InstantiationCommand()));
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
- }
-
- @Test
- void testCommand_NotFound2() throws Exception {
- InstantiationCommand command =
- InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Command");
- command.setOrderedState(null);
-
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_COMMAND_ENDPOINT);
- Response resp = invocationBuilder.put(Entity.json(command));
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
- }
-
- @Test
- void testCommand() throws Exception {
- var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Command");
- instantiationProvider.createControlLoops(controlLoops);
-
- var participants = CommonTestData.createParticipants();
- for (var participant : participants) {
- participantProvider.saveParticipant(participant);
- }
-
- InstantiationCommand command =
- InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Command");
-
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_COMMAND_ENDPOINT);
- Response resp = invocationBuilder.put(Entity.json(command));
- assertEquals(Response.Status.ACCEPTED.getStatusCode(), resp.getStatus());
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- InstantiationUtils.assertInstantiationResponse(instResponse, command);
-
- // check passive state on DB
- for (ToscaConceptIdentifier toscaConceptIdentifier : command.getControlLoopIdentifierList()) {
- ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(toscaConceptIdentifier.getName(),
- toscaConceptIdentifier.getVersion());
- assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
- assertEquals(command.getOrderedState(), controlLoopsGet.getControlLoopList().get(0).getOrderedState());
- }
- }
-
- @Test
- void testIntanceProperties() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- var instancePropertyList = resp.readEntity(InstancePropertiesResponse.class);
- assertNull(instancePropertyList.getErrorDetails());
- var id = new ToscaConceptIdentifier(ID_NAME, ID_VERSION);
- assertEquals(id, instancePropertyList.getAffectedInstanceProperties().get(0));
-
- invocationBuilder = super.sendRequest(INSTANTIATION_STATE + "?name=" + ID_NAME + "&version=" + ID_VERSION);
- resp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- var instanceOrderState = resp.readEntity(ControlLoopOrderStateResponse.class);
- assertEquals(ControlLoopOrderedState.UNINITIALISED, instanceOrderState.getOrderedState());
- assertEquals(ID_NAME, instanceOrderState.getControlLoopIdentifierList().get(0).getName());
- ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(ID_NAME, ID_VERSION);
- assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
-
- invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES + "?name=" + ID_NAME + "&version=" + ID_VERSION);
- resp = invocationBuilder.delete();
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
- var instanceResponse = resp.readEntity(InstantiationResponse.class);
- assertEquals(ID_NAME, instanceResponse.getAffectedControlLoops().get(0).getName());
- controlLoopsGet = instantiationProvider.getControlLoops(ID_NAME, ID_VERSION);
- assertThat(controlLoopsGet.getControlLoopList()).isEmpty();
- }
-
- @Test
- void testChangeOrderStateFromUninitializedPassiveMode() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON,
- "CommandPassive");
- instantiationProvider.createControlLoops(controlLoops);
-
- var participants = CommonTestData.createParticipants();
- for (var participant : participants) {
- participantProvider.saveParticipant(participant);
- }
-
- InstantiationCommand command =
- InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON,
- "CommandPassive");
-
- invocationBuilder = super.sendRequest(INSTANTIATION_COMMAND_ENDPOINT);
- resp = invocationBuilder.put(Entity.json(command));
- assertEquals(Response.Status.ACCEPTED.getStatusCode(), resp.getStatus());
- InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
- InstantiationUtils.assertInstantiationResponse(instResponse, command);
- }
-
- @Test
- void testChangeOrderStateWithoutRegisteredParticipants() throws Exception {
- Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_PROPERTIES);
- Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
- assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-
- var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON,
- "CommandPassive");
- instantiationProvider.createControlLoops(controlLoops);
-
- InstantiationCommand command =
- InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON,
- "CommandPassive");
-
- invocationBuilder = super.sendRequest(INSTANTIATION_COMMAND_ENDPOINT);
- resp = invocationBuilder.put(Entity.json(command));
- assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
- }
-
- private synchronized void deleteEntryInDB() throws Exception {
- controlLoopRepository.deleteAll();
- var list = serviceTemplateProvider.getAllServiceTemplates();
- if (!list.isEmpty()) {
- serviceTemplateProvider.deleteServiceTemplate(list.get(0).getName(), list.get(0).getVersion());
- }
- }
-
- private synchronized void createEntryInDB() throws Exception {
- deleteEntryInDB();
- serviceTemplateProvider.createServiceTemplate(serviceTemplate);
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/rest/ActuatorControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/rest/ActuatorControllerTest.java
deleted file mode 100644
index 433e914ae..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/rest/ActuatorControllerTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.rest;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.Response;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
-import org.springframework.boot.test.autoconfigure.actuate.metrics.AutoConfigureMetrics;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-@AutoConfigureMetrics
-@ExtendWith(SpringExtension.class)
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@TestPropertySource(locations = {"classpath:application_test.properties"})
-class ActuatorControllerTest extends CommonRestController {
-
- private static final String HEALTH_ENDPOINT = "health";
- private static final String METRICS_ENDPOINT = "metrics";
- private static final String PROMETHEUS_ENDPOINT = "prometheus";
-
- @LocalServerPort
- private int randomServerPort;
-
- @BeforeEach
- public void setUpPort() {
- super.setHttpPrefix(randomServerPort);
- }
-
- @Test
- void testGetHealth_Unauthorized() throws Exception {
- assertUnauthorizedActGet(HEALTH_ENDPOINT);
- }
-
- @Test
- void testGetMetrics_Unauthorized() throws Exception {
- assertUnauthorizedActGet(METRICS_ENDPOINT);
- }
-
- @Test
- void testGetPrometheus_Unauthorized() throws Exception {
- assertUnauthorizedActGet(PROMETHEUS_ENDPOINT);
- }
-
- @Test
- void testGetHealth() throws Exception {
- Invocation.Builder invocationBuilder = super.sendActRequest(HEALTH_ENDPOINT);
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- }
-
- @Test
- void testGetMetrics() throws Exception {
- Invocation.Builder invocationBuilder = super.sendActRequest(METRICS_ENDPOINT);
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- }
-
- @Test
- void testGePrometheus() throws Exception {
- Invocation.Builder invocationBuilder = super.sendActRequest(PROMETHEUS_ENDPOINT);
- Response rawresp = invocationBuilder.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java
deleted file mode 100644
index cbc4c7104..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.monitoring;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyMap;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.File;
-import java.time.Instant;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-import javax.ws.rs.core.Response;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatisticsList;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatisticsList;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ClElementStatisticsProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantStatisticsProvider;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-class TestMonitoringProvider {
-
- private static final String CL_PARTICIPANT_STATISTICS_JSON =
- "src/test/resources/rest/monitoring/TestParticipantStatistics.json";
- private static final String INVALID_PARTICIPANT_JSON_INPUT =
- "src/test/resources/rest/monitoring/TestParticipantStatistics_Invalid.json";
- private static final String CL_ELEMENT_STATISTICS_JSON =
- "src/test/resources/rest/monitoring/TestClElementStatistics.json";
- private static final String INVALID_CL_ELEMENT_JSON_INPUT =
- "src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json";
- private static final Coder CODER = new StandardCoder();
-
- private static final String STAT_LIST_IS_NULL = ".*StatisticsList is marked .*ull but is null";
- private static final String PARTICIPANT_STAT_LIST_IS_NULL =
- "participantStatisticsList is marked .*null but is null";
- private static final String NAME_IS_NULL = "name is marked .*null but is null";
- private static final String CL_LIST_IS_NULL = "clElementStatisticsList is marked .*null but is null";
- private static final String ID_VERSION1 = "1.001";
- private static final String ID_VERSION2 = "1.002";
- private static final String ID_NAME1 = "name1";
- private static final String ID_NAME2 = "name2";
- private static final String SORT_DESC = "DESC";
- private static final String ID_NAME3 = "testCLName";
- private static final String ID_INVALID_NAME = "invalidCLName";
- private static ParticipantStatisticsList inputParticipantStatistics;
- private static ParticipantStatisticsList invalidParticipantInput;
- private static ClElementStatisticsList inputClElementStatistics;
- private static ClElementStatisticsList invalidClElementInput;
-
- @BeforeAll
- public static void beforeSetupStatistics() throws CoderException {
- // Reading input json for statistics data
- inputParticipantStatistics =
- CODER.decode(new File(CL_PARTICIPANT_STATISTICS_JSON), ParticipantStatisticsList.class);
- invalidParticipantInput =
- CODER.decode(new File(INVALID_PARTICIPANT_JSON_INPUT), ParticipantStatisticsList.class);
- inputClElementStatistics = CODER.decode(new File(CL_ELEMENT_STATISTICS_JSON), ClElementStatisticsList.class);
- invalidClElementInput = CODER.decode(new File(INVALID_CL_ELEMENT_JSON_INPUT), ClElementStatisticsList.class);
- }
-
- @Test
- void testCreateParticipantStatistics() throws Exception {
- var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class);
- var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
- MonitoringProvider provider =
- new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider);
-
- when(participantStatisticsProvider.createParticipantStatistics(any()))
- .thenReturn(inputParticipantStatistics.getStatisticsList());
-
- when(participantStatisticsProvider.createParticipantStatistics(eq(null)))
- .thenThrow(new PfModelRuntimeException(Response.Status.BAD_REQUEST, PARTICIPANT_STAT_LIST_IS_NULL));
-
- // Creating statistics data in db with null input
-
- assertThatThrownBy(() -> {
- provider.createParticipantStatistics(null);
- }).hasMessageMatching(STAT_LIST_IS_NULL);
-
- assertThatThrownBy(() -> {
- provider.createParticipantStatistics(invalidParticipantInput.getStatisticsList());
- }).hasMessageMatching(PARTICIPANT_STAT_LIST_IS_NULL);
-
- // Creating statistics data from input json
- ParticipantStatisticsList createResponse =
- provider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
-
- assertThat(createResponse.getStatisticsList()).hasSize(3);
- assertEquals(createResponse.getStatisticsList().toString().replaceAll("\\s+", ""),
- inputParticipantStatistics.getStatisticsList().toString().replaceAll("\\s+", ""));
- }
-
- @Test
- void testGetParticipantStatistics() throws Exception {
- var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class);
- when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME1), any(), any(), any(), eq(null),
- eq(SORT_DESC), eq(0))).thenReturn(List.of(inputParticipantStatistics.getStatisticsList().get(0)));
-
- when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME1), any(),
- eq(Instant.parse("2021-01-11T12:00:00.000Z")), eq(Instant.parse("2021-01-11T16:00:00.000Z")), eq(null),
- eq(SORT_DESC), eq(0))).thenReturn(List.of());
-
- when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME2), any(), any(), any(), eq(null),
- eq(SORT_DESC), eq(1))).thenReturn(List.of(inputParticipantStatistics.getStatisticsList().get(2)));
-
- var clProvider = mock(ControlLoopProvider.class);
- var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class);
- MonitoringProvider provider =
- new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider);
- provider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
-
- assertThatThrownBy(() -> {
- provider.fetchFilteredParticipantStatistics(null, null, 0, null, null);
- }).hasMessageMatching(NAME_IS_NULL);
-
- // Fetch specific statistics record with name, version and record count
- ParticipantStatisticsList getResponse =
- provider.fetchFilteredParticipantStatistics(ID_NAME2, ID_VERSION1, 1, null, null);
- assertThat(getResponse.getStatisticsList()).hasSize(1);
- assertEquals(getResponse.getStatisticsList().get(0).toString().replaceAll("\\s+", ""),
- inputParticipantStatistics.getStatisticsList().get(2).toString().replaceAll("\\s+", ""));
-
- // Fetch statistics using timestamp
- getResponse = provider.fetchFilteredParticipantStatistics(ID_NAME1, ID_VERSION1, 0, null,
- Instant.parse("2021-01-10T15:00:00.000Z"));
- assertThat(getResponse.getStatisticsList()).hasSize(1);
-
- getResponse = provider.fetchFilteredParticipantStatistics(ID_NAME1, ID_VERSION1, 0,
- Instant.parse("2021-01-11T12:00:00.000Z"), Instant.parse("2021-01-11T16:00:00.000Z"));
-
- assertThat(getResponse.getStatisticsList()).isEmpty();
- }
-
- @Test
- void testCreateClElementStatistics() throws Exception {
- var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class);
- when(clElementStatisticsProvider.createClElementStatistics(any()))
- .thenReturn(inputClElementStatistics.getClElementStatistics());
-
- when(clElementStatisticsProvider.createClElementStatistics(eq(null)))
- .thenThrow(new PfModelRuntimeException(Response.Status.BAD_REQUEST, CL_LIST_IS_NULL));
-
- var clProvider = mock(ControlLoopProvider.class);
-
- var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class);
- MonitoringProvider provider =
- new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider);
- // Creating statistics data in db with null input
- assertThatThrownBy(() -> {
- provider.createClElementStatistics(null);
- }).hasMessageMatching(STAT_LIST_IS_NULL);
-
- assertThatThrownBy(() -> {
- provider.createClElementStatistics(invalidClElementInput.getClElementStatistics());
- }).hasMessageMatching(CL_LIST_IS_NULL);
-
- // Creating clElement statistics data from input json
- ClElementStatisticsList createResponse =
- provider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
-
- assertThat(createResponse.getClElementStatistics()).hasSize(4);
- assertEquals(createResponse.getClElementStatistics().toString().replaceAll("\\s+", ""),
- inputClElementStatistics.getClElementStatistics().toString().replaceAll("\\s+", ""));
- }
-
- @Test
- void testGetClElementStatistics() throws Exception {
- var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class);
- var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class);
- var clProvider = mock(ControlLoopProvider.class);
-
- when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), any(), any(), any(), anyMap(),
- eq(SORT_DESC), eq(0)))
- .thenReturn(List.of(inputClElementStatistics.getClElementStatistics().get(0),
- inputClElementStatistics.getClElementStatistics().get(1)));
-
- when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), any(), any(), any(), anyMap(),
- eq(SORT_DESC), eq(0)))
- .thenReturn(List.of(inputClElementStatistics.getClElementStatistics().get(0),
- inputClElementStatistics.getClElementStatistics().get(1)));
-
- MonitoringProvider provider =
- new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider);
- assertThatThrownBy(() -> {
- provider.fetchFilteredClElementStatistics(null, null, null, null, null, 0);
- }).hasMessageMatching(NAME_IS_NULL);
-
- provider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
-
- ClElementStatisticsList getResponse =
- provider.fetchFilteredClElementStatistics(ID_NAME1, null, null, null, null, 0);
-
- assertThat(getResponse.getClElementStatistics()).hasSize(2);
- assertEquals(getResponse.getClElementStatistics().get(0).toString().replaceAll("\\s+", ""),
- inputClElementStatistics.getClElementStatistics().get(0).toString().replaceAll("\\s+", ""));
-
- // Fetch specific statistics record with name, id and record count
- getResponse = provider.fetchFilteredClElementStatistics(ID_NAME1, ID_VERSION1,
- "709c62b3-8918-41b9-a747-d21eb79c6c20", null, null, 0);
- assertThat(getResponse.getClElementStatistics()).hasSize(2);
-
- // Fetch statistics using timestamp
- getResponse = provider.fetchFilteredClElementStatistics(ID_NAME1, ID_VERSION1, null,
- Instant.parse("2021-01-10T13:45:00.000Z"), null, 0);
- assertThat(getResponse.getClElementStatistics()).hasSize(2);
- }
-
- @Test
- void testGetParticipantStatsPerCL() throws Exception {
- var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class);
- var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class);
- var mockClProvider = Mockito.mock(ControlLoopProvider.class);
- var provider =
- new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, mockClProvider);
-
- provider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
-
- var controlLoop = new ControlLoop();
- var element = new ControlLoopElement();
- element.setParticipantId(new ToscaConceptIdentifier(ID_NAME1, ID_VERSION1));
- controlLoop.setElements(Map.of(UUID.randomUUID(), element));
- when(mockClProvider.findControlLoop(new ToscaConceptIdentifier(ID_NAME2, ID_VERSION1)))
- .thenReturn(Optional.of(controlLoop));
-
- when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME1), eq(ID_VERSION1), any(), any(),
- eq(null), eq(SORT_DESC), eq(0)))
- .thenReturn(List.of(inputParticipantStatistics.getStatisticsList().get(0),
- inputParticipantStatistics.getStatisticsList().get(1)));
-
- ParticipantStatisticsList getResponse = provider.fetchParticipantStatsPerControlLoop(ID_NAME2, ID_VERSION1);
- assertThat(getResponse.getStatisticsList()).hasSize(2);
- assertEquals(getResponse.getStatisticsList().get(0).toString().replaceAll("\\s+", ""),
- inputParticipantStatistics.getStatisticsList().get(0).toString().replaceAll("\\s+", ""));
- assertThat(provider.fetchParticipantStatsPerControlLoop(ID_INVALID_NAME, ID_VERSION2).getStatisticsList())
- .isEmpty();
- }
-
- @Test
- void testClElementStatsPerCL() throws Exception {
- // Setup a dummy Control loop data
- var mockClElement = new ControlLoopElement();
- mockClElement.setId(inputClElementStatistics.getClElementStatistics().get(0).getId());
- mockClElement.setParticipantId(new ToscaConceptIdentifier(
- inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getName(),
- inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getVersion()));
- var mockCL = new ControlLoop();
- mockCL.setElements(new LinkedHashMap<>());
- mockCL.getElements().put(mockClElement.getId(), mockClElement);
-
- var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class);
- var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class);
- var mockClProvider = Mockito.mock(ControlLoopProvider.class);
- var monitoringProvider =
- new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, mockClProvider);
-
- // Mock controlloop data to be returned for the given CL Id
- when(mockClProvider.findControlLoop(new ToscaConceptIdentifier(ID_NAME3, ID_VERSION1)))
- .thenReturn(Optional.of(mockCL));
-
- when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), eq(ID_VERSION1), any(), any(),
- anyMap(), eq(SORT_DESC), eq(0)))
- .thenReturn(List.of(inputClElementStatistics.getClElementStatistics().get(0),
- inputClElementStatistics.getClElementStatistics().get(1)));
-
- monitoringProvider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
-
- ClElementStatisticsList getResponse =
- monitoringProvider.fetchClElementStatsPerControlLoop(ID_NAME3, ID_VERSION1);
-
- assertThat(getResponse.getClElementStatistics()).hasSize(2);
- assertEquals(getResponse.getClElementStatistics().get(1).toString().replaceAll("\\s+", ""),
- inputClElementStatistics.getClElementStatistics().get(1).toString().replaceAll("\\s+", ""));
-
- assertThat(monitoringProvider.fetchClElementStatsPerControlLoop(ID_INVALID_NAME, ID_VERSION2)
- .getClElementStatistics()).isEmpty();
-
- Map<String, ToscaConceptIdentifier> clElementIds =
- monitoringProvider.getAllClElementsIdPerControlLoop(ID_NAME3, ID_VERSION1);
- assertThat(clElementIds)
- .containsKey(inputClElementStatistics.getClElementStatistics().get(0).getId().toString());
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java
deleted file mode 100644
index eaf824623..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.monitoring.rest;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import java.io.File;
-import java.time.Instant;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.Response;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatisticsList;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatisticsList;
-import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider;
-import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-@ExtendWith(SpringExtension.class)
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@TestPropertySource(locations = {"classpath:application_test.properties"})
-class MonitoringQueryControllerTest extends CommonRestController {
-
- private static final String CL_PARTICIPANT_STATISTICS_JSON =
- "src/test/resources/rest/monitoring/TestParticipantStatistics.json";
- private static final String CL_ELEMENT_STATISTICS_JSON =
- "src/test/resources/rest/monitoring/TestClElementStatistics.json";
-
- private static final Coder CODER = new StandardCoder();
-
- private static ParticipantStatisticsList inputParticipantStatistics;
- private static ClElementStatisticsList inputClElementStatistics;
-
- private static ParticipantStatisticsList participantStatisticsList;
- private static ClElementStatisticsList clElementStatisticsList;
-
- private static final String CLELEMENT_STATS_ENDPOINT = "monitoring/clelement";
- private static final String PARTICIPANT_STATS_ENDPOINT = "monitoring/participant";
- private static final String PARTICIPANT_STATS_PER_CL_ENDPOINT = "monitoring/participants/controlloop";
- private static final String CLELEMENT_STATS_PER_CL_ENDPOINT = "monitoring/clelements/controlloop";
-
- @Autowired
- private MonitoringProvider monitoringProvider;
-
- @LocalServerPort
- private int randomServerPort;
-
- /**
- * starts Main.
- *
- * @throws Exception if an error occurs
- */
- @BeforeAll
- public static void setUpBeforeAll() throws Exception {
-
- inputParticipantStatistics =
- CODER.decode(new File(CL_PARTICIPANT_STATISTICS_JSON), ParticipantStatisticsList.class);
- inputClElementStatistics = CODER.decode(new File(CL_ELEMENT_STATISTICS_JSON), ClElementStatisticsList.class);
- }
-
- @BeforeEach
- public void setUpBeforeEach() throws Exception {
- super.setHttpPrefix(randomServerPort);
-
- // Insert Participant statistics to DB
- participantStatisticsList =
- monitoringProvider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
- // Insert CL Element statistics to DB
- clElementStatisticsList =
- monitoringProvider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
- }
-
- @Test
- void testQuery_Unauthorized_for_ClElementStats() throws Exception {
- assertUnauthorizedGet(CLELEMENT_STATS_ENDPOINT);
- }
-
- @Test
- void testQuery_Unauthorized_for_ClParticipantStats() throws Exception {
- assertUnauthorizedGet(PARTICIPANT_STATS_ENDPOINT);
- }
-
- @Test
- void testQuery_Unauthorized_for_ParticipantStatsPerCl() throws Exception {
- assertUnauthorizedGet(PARTICIPANT_STATS_PER_CL_ENDPOINT);
- }
-
- @Test
- void testQuery_Unauthorized_for_ClElementStatsPerCl() throws Exception {
- assertUnauthorizedGet(CLELEMENT_STATS_PER_CL_ENDPOINT);
- }
-
- @Test
- void testSwagger_ClStats() throws Exception {
- super.testSwagger(CLELEMENT_STATS_ENDPOINT);
- super.testSwagger(PARTICIPANT_STATS_ENDPOINT);
- super.testSwagger(CLELEMENT_STATS_PER_CL_ENDPOINT);
- super.testSwagger(PARTICIPANT_STATS_PER_CL_ENDPOINT);
- }
-
- @Test
- void testClElementStatisticsEndpoint() throws Exception {
- // Filter statistics only based on participant Id and UUID
- Invocation.Builder invokeRequest1 = super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?name="
- + clElementStatisticsList.getClElementStatistics().get(0).getParticipantId().getName() + "&version="
- + clElementStatisticsList.getClElementStatistics().get(0).getParticipantId().getVersion() + "&id="
- + clElementStatisticsList.getClElementStatistics().get(0).getId().toString());
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
-
- ClElementStatisticsList result1 = response1.readEntity(ClElementStatisticsList.class);
-
- assertNotNull(result1);
- assertThat(result1.getClElementStatistics()).hasSize(2);
-
- var clElementStat0 = clElementStatisticsList.getClElementStatistics().get(0);
- for (var clElement : result1.getClElementStatistics()) {
- assertEquals(clElement.getParticipantId().asConceptKey(), clElementStat0.getParticipantId().asConceptKey());
- assertEquals(clElement.getId(), clElementStat0.getId());
- }
-
- // Filter statistics based on timestamp
- Invocation.Builder invokeRequest2 = super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?name="
- + clElementStatisticsList.getClElementStatistics().get(1).getParticipantId().getName() + "&version="
- + clElementStatisticsList.getClElementStatistics().get(1).getParticipantId().getVersion()
- + "&startTime=" + Instant.parse("2021-01-10T13:00:00.000Z") + "&endTime="
- + Instant.parse("2021-01-10T14:00:00.000Z"));
- Response response2 = invokeRequest2.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), response2.getStatus());
- ClElementStatisticsList result2 = response2.readEntity(ClElementStatisticsList.class);
-
- assertNotNull(result2);
- assertThat(result2.getClElementStatistics()).hasSize(1);
- assertEquals(result2.getClElementStatistics().get(0), clElementStat0);
- }
-
- @Test
- void testClElementStats_BadRequest() throws Exception {
- Invocation.Builder invokeRequest1 = super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?version=1.0.0");
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
- }
-
- @Test
- void testParticipantStatisticsEndpoint() throws Exception {
-
- // Filter statistics only based on participant Id
- Invocation.Builder invokeRequest1 = super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?name="
- + participantStatisticsList.getStatisticsList().get(0).getParticipantId().getName() + "&version="
- + participantStatisticsList.getStatisticsList().get(0).getParticipantId().getVersion());
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
- ParticipantStatisticsList result1 = response1.readEntity(ParticipantStatisticsList.class);
-
- assertNotNull(result1);
- assertThat(result1.getStatisticsList()).hasSize(2);
- assertThat(result1.getStatisticsList()).contains(participantStatisticsList.getStatisticsList().get(0));
-
- // Filter statistics based on timestamp
- Invocation.Builder invokeRequest2 = super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?name="
- + participantStatisticsList.getStatisticsList().get(1).getParticipantId().getName() + "&version="
- + participantStatisticsList.getStatisticsList().get(1).getParticipantId().getVersion() + "&startTime="
- + Instant.parse("2021-01-10T13:00:00.000Z") + "&endTime=" + Instant.parse("2021-01-10T14:00:00.000Z"));
- Response response2 = invokeRequest2.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), response2.getStatus());
- ParticipantStatisticsList result2 = response2.readEntity(ParticipantStatisticsList.class);
-
- assertNotNull(result2);
- assertThat(result2.getStatisticsList()).hasSize(1);
- assertEquals(result2.getStatisticsList().get(0), participantStatisticsList.getStatisticsList().get(0));
- }
-
- @Test
- void testParticipantStats_BadRequest() throws Exception {
- Invocation.Builder invokeRequest1 = super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?version=0.0");
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
- }
-
- @Test
- void testParticipantStatsPerClEndpoint() throws Exception {
- Invocation.Builder invokeRequest1 =
- super.sendRequest(PARTICIPANT_STATS_PER_CL_ENDPOINT + "?name=dummyName&version=1.001");
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
- ParticipantStatisticsList result1 = response1.readEntity(ParticipantStatisticsList.class);
- assertThat(result1.getStatisticsList()).isEmpty();
- }
-
- @Test
- void testParticipantStatsPerCl_BadRequest() throws Exception {
- Invocation.Builder invokeRequest1 = super.sendRequest(PARTICIPANT_STATS_PER_CL_ENDPOINT);
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
- }
-
- @Test
- void testClElementStatisticsPerClEndpoint() throws Exception {
- Invocation.Builder invokeRequest1 =
- super.sendRequest(CLELEMENT_STATS_PER_CL_ENDPOINT + "?name=dummyName&version=1.001");
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
- ClElementStatisticsList result1 = response1.readEntity(ClElementStatisticsList.class);
- assertThat(result1.getClElementStatistics()).isEmpty();
- }
-
- @Test
- void testClElementStatsPerCl_BadRequest() throws Exception {
- Invocation.Builder invokeRequest1 = super.sendRequest(CLELEMENT_STATS_PER_CL_ENDPOINT);
- Response response1 = invokeRequest1.buildGet().invoke();
- assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounterTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounterTest.java
deleted file mode 100644
index 51f3b4a32..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/HandleCounterTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.jupiter.api.Test;
-
-class HandleCounterTest {
-
- private static final int ID = 1;
-
- @Test
- void testCount() {
- var handleCounter = new HandleCounter<Integer>();
- handleCounter.setMaxRetryCount(2);
- assertThat(handleCounter.count(ID)).isTrue();
- assertThat(handleCounter.getCounter(ID)).isEqualTo(1);
- assertThat(handleCounter.count(ID)).isTrue();
- assertThat(handleCounter.getCounter(ID)).isEqualTo(2);
- assertThat(handleCounter.count(ID)).isFalse();
- assertThat(handleCounter.getCounter(ID)).isEqualTo(2);
-
- handleCounter.clear(ID);
- assertThat(handleCounter.count(ID)).isTrue();
- assertThat(handleCounter.getCounter(ID)).isEqualTo(1);
- }
-
- @Test
- void testFault() {
- var handleCounter = new HandleCounter<Integer>();
- handleCounter.setFault(ID);
- assertThat(handleCounter.isFault(ID)).isTrue();
- handleCounter.clear(ID);
- assertThat(handleCounter.isFault(ID)).isFalse();
- }
-
- @Test
- void testDuration() throws InterruptedException {
-
- var handleCounter = new HandleCounter<Integer>() {
- long epochMilli = 0;
-
- @Override
- protected long getEpochMilli() {
- return epochMilli;
- }
- };
- handleCounter.epochMilli = 100;
- var result = handleCounter.getDuration(ID);
- assertThat(result).isZero();
-
- handleCounter.epochMilli += 100;
- result = handleCounter.getDuration(ID);
- assertThat(result).isEqualTo(100);
-
- handleCounter.epochMilli += 100;
- result = handleCounter.getDuration(ID);
- assertThat(result).isEqualTo(200);
-
- handleCounter.epochMilli += 100;
- handleCounter.clear(ID);
- result = handleCounter.getDuration(ID);
- assertThat(result).isZero();
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspectTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspectTest.java
deleted file mode 100644
index f5ab9f28d..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionAspectTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-
-import org.junit.jupiter.api.Test;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatus;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-class SupervisionAspectTest {
-
- @Test
- void testSchedule() throws Exception {
- var supervisionScanner = spy(mock(SupervisionScanner.class));
- try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
- supervisionAspect.schedule();
- verify(supervisionScanner, timeout(500)).run(true);
- }
- }
-
- @Test
- void testDoCheck() throws Exception {
- var supervisionScanner = spy(mock(SupervisionScanner.class));
- try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
- supervisionAspect.doCheck();
- supervisionAspect.doCheck();
- verify(supervisionScanner, timeout(500).times(2)).run(false);
- }
- }
-
- @Test
- void testHandleParticipantStatus() throws Exception {
- var supervisionScanner = spy(mock(SupervisionScanner.class));
- var participantStatusMessage = new ParticipantStatus();
- var identifier = new ToscaConceptIdentifier("abc", "1.0.0");
- participantStatusMessage.setParticipantId(identifier);
-
- try (var supervisionAspect = new SupervisionAspect(supervisionScanner)) {
- supervisionAspect.handleParticipantStatus(participantStatusMessage);
- verify(supervisionScanner, timeout(500)).handleParticipantStatus(identifier);
- }
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java
deleted file mode 100644
index 21a826743..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyList;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantHealthStatus;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatistics;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopAck;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegister;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStatus;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdateAck;
-import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils;
-import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopStateChangePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopUpdatePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantDeregisterAckPublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantRegisterAckPublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-class SupervisionHandlerTest {
- private static final String TOSCA_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/tosca-for-smoke-testing.yaml";
- private static final String CL_INSTANTIATION_CREATE_JSON = "src/test/resources/rest/controlloops/ControlLoops.json";
- private static final ToscaConceptIdentifier identifier = new ToscaConceptIdentifier("PMSHInstance0Crud", "1.0.1");
- private static final ToscaConceptIdentifier participantId = new ToscaConceptIdentifier("ParticipantId", "1.0.0");
- private static final ToscaConceptIdentifier participantType =
- new ToscaConceptIdentifier("ParticipantType", "1.0.0");
-
- @Test
- void testTriggerControlLoopSupervisionEmpty() throws ControlLoopException, PfModelException, CoderException {
- var handler = createSupervisionHandler(mock(ControlLoopProvider.class), mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), mock(ControlLoopUpdatePublisher.class),
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.PASSIVE);
-
- assertThatThrownBy(() -> handler.triggerControlLoopSupervision(List.of()))
- .hasMessageMatching("The list of control loops for supervision is empty");
- }
-
- @Test
- void testTriggerControlLoopSupervision() throws ControlLoopException, PfModelException, CoderException {
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var handler = createSupervisionHandler(controlLoopProvider, mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), controlLoopUpdatePublisher,
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.PASSIVE);
-
- handler.triggerControlLoopSupervision(List.of(identifier));
-
- verify(controlLoopUpdatePublisher).send(any(ControlLoop.class));
- verify(controlLoopProvider).saveControlLoop(any(ControlLoop.class));
- }
-
- @Test
- void testTriggerControlLoopUninitialised() throws ControlLoopException, PfModelException, CoderException {
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var handler = createSupervisionHandler(controlLoopProvider, mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), controlLoopUpdatePublisher,
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.UNINITIALISED);
-
- assertThatThrownBy(() -> handler.triggerControlLoopSupervision(List.of(identifier)))
- .hasMessageMatching("Control loop is already in state UNINITIALISED");
- }
-
- @Test
- void testTriggerControlLoopRunning() throws ControlLoopException, PfModelException, CoderException {
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var handler = createSupervisionHandler(controlLoopProvider, mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), controlLoopUpdatePublisher,
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.RUNNING);
-
- assertThatThrownBy(() -> handler.triggerControlLoopSupervision(List.of(identifier)))
- .hasMessageMatching("Control loop can't transition from state UNINITIALISED to state RUNNING");
- }
-
- @Test
- void testHandleControlLoopStateChangeAckMessage() throws PfModelException, CoderException {
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var handler = createSupervisionHandler(controlLoopProvider, mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), mock(ControlLoopUpdatePublisher.class),
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.PASSIVE);
- var controlLoopAckMessage = new ControlLoopAck(ParticipantMessageType.CONTROLLOOP_STATECHANGE_ACK);
- controlLoopAckMessage.setControlLoopResultMap(Map.of());
- controlLoopAckMessage.setControlLoopId(identifier);
-
- handler.handleControlLoopStateChangeAckMessage(controlLoopAckMessage);
-
- verify(controlLoopProvider).saveControlLoop(any(ControlLoop.class));
- }
-
- @Test
- void testHandleControlLoopUpdateAckMessage() throws PfModelException, CoderException {
- var controlLoopAckMessage = new ControlLoopAck(ParticipantMessageType.CONTROLLOOP_UPDATE_ACK);
- controlLoopAckMessage.setParticipantId(participantId);
- controlLoopAckMessage.setParticipantType(participantType);
- controlLoopAckMessage.setControlLoopResultMap(Map.of());
- controlLoopAckMessage.setControlLoopId(identifier);
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var handler = createSupervisionHandler(controlLoopProvider, mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), mock(ControlLoopUpdatePublisher.class),
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.PASSIVE);
-
- handler.handleControlLoopUpdateAckMessage(controlLoopAckMessage);
-
- verify(controlLoopProvider).saveControlLoop(any(ControlLoop.class));
- }
-
- @Test
- void testHandleParticipantDeregister() throws PfModelException, CoderException {
- var participant = new Participant();
- participant.setName(participantId.getName());
- participant.setVersion(participantId.getVersion());
- participant.setParticipantType(participantType);
-
- var participantProvider = mock(ParticipantProvider.class);
- when(participantProvider.findParticipant(participantId.getName(), participantId.getVersion()))
- .thenReturn(Optional.of(participant));
-
- var participantDeregisterMessage = new ParticipantDeregister();
- participantDeregisterMessage.setMessageId(UUID.randomUUID());
- participantDeregisterMessage.setParticipantId(participantId);
- participantDeregisterMessage.setParticipantType(participantType);
- var participantDeregisterAckPublisher = mock(ParticipantDeregisterAckPublisher.class);
- var handler = createSupervisionHandler(mock(ControlLoopProvider.class), participantProvider,
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- participantDeregisterAckPublisher, mock(ControlLoopUpdatePublisher.class),
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.PASSIVE);
-
- handler.handleParticipantMessage(participantDeregisterMessage);
-
- verify(participantProvider).saveParticipant(any());
- verify(participantDeregisterAckPublisher).send(participantDeregisterMessage.getMessageId());
- }
-
- @Test
- void testHandleParticipantRegister() throws PfModelException, CoderException {
- var participant = new Participant();
- participant.setName(participantId.getName());
- participant.setVersion(participantId.getVersion());
- participant.setParticipantType(participantType);
-
- var participantRegisterMessage = new ParticipantRegister();
- participantRegisterMessage.setMessageId(UUID.randomUUID());
- participantRegisterMessage.setParticipantId(participantId);
- participantRegisterMessage.setParticipantType(participantType);
- var participantProvider = mock(ParticipantProvider.class);
- var participantRegisterAckPublisher = mock(ParticipantRegisterAckPublisher.class);
- var handler = createSupervisionHandler(mock(ControlLoopProvider.class), participantProvider,
- mock(MonitoringProvider.class), participantRegisterAckPublisher,
- mock(ParticipantDeregisterAckPublisher.class), mock(ControlLoopUpdatePublisher.class),
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.PASSIVE);
-
- handler.handleParticipantMessage(participantRegisterMessage);
-
- verify(participantProvider).saveParticipant(any());
- verify(participantRegisterAckPublisher).send(participantRegisterMessage.getMessageId(), participantId,
- participantType);
- }
-
- @Test
- void testParticipantUpdateAck() throws PfModelException, CoderException {
- var participant = new Participant();
- participant.setName(participantId.getName());
- participant.setVersion(participantId.getVersion());
- participant.setParticipantType(participantType);
-
- var participantProvider = mock(ParticipantProvider.class);
- when(participantProvider.findParticipant(participantId.getName(), participantId.getVersion()))
- .thenReturn(Optional.of(participant));
-
- var participantUpdateAckMessage = new ParticipantUpdateAck();
- participantUpdateAckMessage.setParticipantId(participantId);
- participantUpdateAckMessage.setParticipantType(participantType);
- participantUpdateAckMessage.setState(ParticipantState.PASSIVE);
- var handler = createSupervisionHandler(mock(ControlLoopProvider.class), participantProvider,
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), mock(ControlLoopUpdatePublisher.class),
- mock(ParticipantUpdatePublisher.class), ControlLoopOrderedState.PASSIVE);
-
- handler.handleParticipantMessage(participantUpdateAckMessage);
-
- verify(participantProvider).saveParticipant(any());
- }
-
- @Test
- void testHandleParticipantStatus() throws PfModelException, CoderException {
- var participantStatusMessage = new ParticipantStatus();
- participantStatusMessage.setParticipantId(participantId);
- participantStatusMessage.setParticipantType(participantType);
- participantStatusMessage.setState(ParticipantState.PASSIVE);
- participantStatusMessage.setHealthStatus(ParticipantHealthStatus.HEALTHY);
- participantStatusMessage.setParticipantStatistics(new ParticipantStatistics());
-
- var participantProvider = mock(ParticipantProvider.class);
- var monitoringProvider = mock(MonitoringProvider.class);
- var handler = createSupervisionHandler(mock(ControlLoopProvider.class), participantProvider, monitoringProvider,
- mock(ParticipantRegisterAckPublisher.class), mock(ParticipantDeregisterAckPublisher.class),
- mock(ControlLoopUpdatePublisher.class), mock(ParticipantUpdatePublisher.class),
- ControlLoopOrderedState.PASSIVE);
- handler.handleParticipantMessage(participantStatusMessage);
-
- verify(participantProvider).saveParticipant(any());
- verify(monitoringProvider).createParticipantStatistics(anyList());
- }
-
- @Test
- void testHandleSendCommissionMessage() throws PfModelException, CoderException {
- var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class);
- var handler = createSupervisionHandler(mock(ControlLoopProvider.class), mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), mock(ControlLoopUpdatePublisher.class),
- participantUpdatePublisher, ControlLoopOrderedState.PASSIVE);
- handler.handleSendCommissionMessage(participantId.getName(), participantId.getVersion());
-
- verify(participantUpdatePublisher).sendComissioningBroadcast(participantId.getName(),
- participantId.getVersion());
- }
-
- @Test
- void testHandleSendDeCommissionMessage() throws PfModelException, CoderException {
- var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class);
- var handler = createSupervisionHandler(mock(ControlLoopProvider.class), mock(ParticipantProvider.class),
- mock(MonitoringProvider.class), mock(ParticipantRegisterAckPublisher.class),
- mock(ParticipantDeregisterAckPublisher.class), mock(ControlLoopUpdatePublisher.class),
- participantUpdatePublisher, ControlLoopOrderedState.PASSIVE);
- handler.handleSendDeCommissionMessage();
-
- verify(participantUpdatePublisher).sendDecomisioning();
- }
-
- private SupervisionHandler createSupervisionHandler(ControlLoopProvider controlLoopProvider,
- ParticipantProvider participantProvider, MonitoringProvider monitoringProvider,
- ParticipantRegisterAckPublisher participantRegisterAckPublisher,
- ParticipantDeregisterAckPublisher participantDeregisterAckPublisher,
- ControlLoopUpdatePublisher controlLoopUpdatePublisher,
- ParticipantUpdatePublisher participantUpdatePublisher,
- ControlLoopOrderedState orderedState) throws PfModelException, CoderException {
- var controlLoopsCreate = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Crud");
-
- var controlLoop = controlLoopsCreate.getControlLoopList().get(0);
- controlLoop.setOrderedState(orderedState);
-
- when(controlLoopProvider.findControlLoop(identifier)).thenReturn(Optional.of(controlLoop));
- when(controlLoopProvider.getControlLoop(identifier)).thenReturn(controlLoop);
-
- var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class);
- when(serviceTemplateProvider.getServiceTemplateList(any(), any()))
- .thenReturn(List.of(InstantiationUtils.getToscaServiceTemplate(TOSCA_TEMPLATE_YAML)));
-
- var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class);
-
- return new SupervisionHandler(controlLoopProvider, participantProvider, monitoringProvider,
- serviceTemplateProvider, controlLoopUpdatePublisher, controlLoopStateChangePublisher,
- participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher);
-
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java
deleted file mode 100644
index b7a3fe005..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.List;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantHealthStatus;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopStateChangePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopUpdatePublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantStatusReqPublisher;
-import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher;
-import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-
-class SupervisionScannerTest {
-
- private static final String TOSCA_SERVICE_TEMPLATE_YAML =
- "src/test/resources/rest/servicetemplates/tosca-for-smoke-testing.yaml";
- private static final String CONTROLLOOP_JSON = "src/test/resources/rest/controlloops/ControlLoopsSmoke.json";
-
- private static ServiceTemplateProvider serviceTemplateProvider = mock(ServiceTemplateProvider.class);
-
- @BeforeAll
- public static void setUpBeforeAll() throws Exception {
- ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
- when(serviceTemplateProvider.getAllServiceTemplates()).thenReturn(List.of(serviceTemplate));
- }
-
- @Test
- void testScannerOrderedStateEqualsToState() throws PfModelException, CoderException {
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class);
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var participantProvider = mock(ParticipantProvider.class);
- var participantStatusReqPublisher = mock(ParticipantStatusReqPublisher.class);
- var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class);
- var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanner");
-
- var controlLoops =
- InstantiationUtils.getControlLoopsFromResource(CONTROLLOOP_JSON, "Crud").getControlLoopList();
- when(controlLoopProvider.getControlLoops()).thenReturn(controlLoops);
-
- var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider,
- controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider,
- participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup);
- supervisionScanner.run(false);
-
- verify(controlLoopProvider, times(0)).saveControlLoop(any(ControlLoop.class));
- }
-
- @Test
- void testScannerOrderedStateDifferentToState() throws PfModelException, CoderException {
- var controlLoops =
- InstantiationUtils.getControlLoopsFromResource(CONTROLLOOP_JSON, "Crud").getControlLoopList();
- controlLoops.get(0).setState(ControlLoopState.UNINITIALISED2PASSIVE);
- controlLoops.get(0).setOrderedState(ControlLoopOrderedState.UNINITIALISED);
- var controlLoopProvider = mock(ControlLoopProvider.class);
- when(controlLoopProvider.getControlLoops()).thenReturn(controlLoops);
-
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class);
- var participantProvider = mock(ParticipantProvider.class);
- var participantStatusReqPublisher = mock(ParticipantStatusReqPublisher.class);
- var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class);
- var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanner");
-
- var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider,
- controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider,
- participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup);
- supervisionScanner.run(false);
-
- verify(controlLoopProvider, times(1)).saveControlLoop(any(ControlLoop.class));
- }
-
- @Test
- void testScanner() throws PfModelException {
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var controlLoop = new ControlLoop();
- when(controlLoopProvider.getControlLoops()).thenReturn(List.of(controlLoop));
-
- var participantProvider = mock(ParticipantProvider.class);
- var participant = new Participant();
- participant.setName("Participant0");
- participant.setVersion("1.0.0");
- when(participantProvider.getParticipants(null, null)).thenReturn(List.of(participant));
-
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var participantStatusReqPublisher = mock(ParticipantStatusReqPublisher.class);
- var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class);
- var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class);
- var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanner");
-
- var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider,
- controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider,
- participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup);
-
- supervisionScanner.handleParticipantStatus(participant.getKey().asIdentifier());
- supervisionScanner.run(true);
- verify(controlLoopProvider, times(0)).saveControlLoop(any(ControlLoop.class));
- verify(participantStatusReqPublisher, times(0)).send(any(ToscaConceptIdentifier.class));
- }
-
- @Test
- void testSendControlLoopMsgUpdate() throws PfModelException, CoderException {
- var controlLoops =
- InstantiationUtils.getControlLoopsFromResource(CONTROLLOOP_JSON, "Crud").getControlLoopList();
- controlLoops.get(0).setState(ControlLoopState.UNINITIALISED2PASSIVE);
- controlLoops.get(0).setOrderedState(ControlLoopOrderedState.PASSIVE);
- for (var element : controlLoops.get(0).getElements().values()) {
- if ("org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement"
- .equals(element.getDefinition().getName())) {
- element.setOrderedState(ControlLoopOrderedState.PASSIVE);
- element.setState(ControlLoopState.UNINITIALISED);
- } else {
- element.setOrderedState(ControlLoopOrderedState.PASSIVE);
- element.setState(ControlLoopState.PASSIVE);
- }
- }
-
- var controlLoopProvider = mock(ControlLoopProvider.class);
- when(controlLoopProvider.getControlLoops()).thenReturn(controlLoops);
-
- var participantProvider = mock(ParticipantProvider.class);
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var participantStatusReqPublisher = mock(ParticipantStatusReqPublisher.class);
- var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class);
- var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class);
- var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanner");
-
- var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider,
- controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider,
- participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup);
-
- supervisionScanner.run(false);
-
- verify(controlLoopUpdatePublisher).send(any(ControlLoop.class), anyInt());
- }
-
- @Test
- void testScanParticipant() throws PfModelException {
- var controlLoopProvider = mock(ControlLoopProvider.class);
- var controlLoop = new ControlLoop();
- when(controlLoopProvider.getControlLoops()).thenReturn(List.of(controlLoop));
-
- var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanParticipant");
- clRuntimeParameterGroup.getParticipantParameters().getUpdateParameters().setMaxWaitMs(-1);
- clRuntimeParameterGroup.getParticipantParameters().setMaxStatusWaitMs(-1);
-
- var participant = new Participant();
- participant.setName("Participant0");
- participant.setVersion("1.0.0");
- participant.setHealthStatus(ParticipantHealthStatus.HEALTHY);
- participant.setParticipantState(ParticipantState.ACTIVE);
- participant.setDefinition(new ToscaConceptIdentifier("unknown", "0.0.0"));
- participant.setParticipantType(new ToscaConceptIdentifier("ParticipantType1", "1.0.0"));
- var participantProvider = mock(ParticipantProvider.class);
- when(participantProvider.getParticipants()).thenReturn(List.of(participant));
-
- var controlLoopUpdatePublisher = mock(ControlLoopUpdatePublisher.class);
- var participantStatusReqPublisher = mock(ParticipantStatusReqPublisher.class);
- var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class);
- var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class);
-
- var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider,
- controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider,
- participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup);
-
- supervisionScanner.handleParticipantStatus(participant.getKey().asIdentifier());
- supervisionScanner.run(true);
- verify(participantStatusReqPublisher).send(any(ToscaConceptIdentifier.class));
- verify(participantProvider).saveParticipant(any());
-
- supervisionScanner.run(true);
- verify(participantProvider, times(2)).saveParticipant(any());
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java
deleted file mode 100644
index a465aa254..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
-
-import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import java.time.Instant;
-import java.util.Collections;
-import java.util.List;
-import java.util.UUID;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ClElementStatisticsProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantStatisticsProvider;
-import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregisterAck;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegisterAck;
-import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantUpdateAck;
-import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider;
-import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
-import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-class SupervisionMessagesTest extends CommonRestController {
-
- private static final String NOT_ACTIVE = "Not Active!";
- private static final Object lockit = new Object();
- private static final CommInfrastructure INFRA = CommInfrastructure.NOOP;
- private static final String TOPIC = "my-topic";
- private static SupervisionHandler supervisionHandler;
-
- /**
- * setup Db Provider Parameters.
- *
- * @throws PfModelException if an error occurs
- */
- @BeforeAll
- public static void setupDbProviderParameters() throws PfModelException {
- var clProvider = mock(ControlLoopProvider.class);
- var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class);
- var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class);
- var monitoringProvider =
- new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider);
- var participantProvider = mock(ParticipantProvider.class);
- var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class);
- var controlLoopUpdatePublisher = Mockito.mock(ControlLoopUpdatePublisher.class);
- var controlLoopStateChangePublisher = Mockito.mock(ControlLoopStateChangePublisher.class);
- var participantRegisterAckPublisher = Mockito.mock(ParticipantRegisterAckPublisher.class);
- var participantDeregisterAckPublisher = Mockito.mock(ParticipantDeregisterAckPublisher.class);
- var participantUpdatePublisher = Mockito.mock(ParticipantUpdatePublisher.class);
- supervisionHandler = new SupervisionHandler(clProvider, participantProvider, monitoringProvider,
- serviceTemplateProvider, controlLoopUpdatePublisher, controlLoopStateChangePublisher,
- participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher);
- }
-
- @Test
- void testSendParticipantRegisterAck() throws Exception {
- final ParticipantRegisterAck participantRegisterAckMsg = new ParticipantRegisterAck();
- participantRegisterAckMsg.setMessage("ParticipantRegisterAck message");
- participantRegisterAckMsg.setResponseTo(UUID.randomUUID());
- participantRegisterAckMsg.setResult(true);
-
- synchronized (lockit) {
- ParticipantRegisterAckPublisher clRegisterAckPublisher = new ParticipantRegisterAckPublisher();
- clRegisterAckPublisher.active(List.of(Mockito.mock(TopicSink.class)));
- assertThatCode(() -> clRegisterAckPublisher.send(participantRegisterAckMsg)).doesNotThrowAnyException();
- }
- }
-
- @Test
- void testReceiveParticipantDeregister() throws Exception {
- final ParticipantDeregister participantDeregisterMsg = new ParticipantDeregister();
- participantDeregisterMsg.setParticipantId(getParticipantId());
- participantDeregisterMsg.setTimestamp(Instant.now());
- participantDeregisterMsg.setParticipantType(getParticipantType());
-
- synchronized (lockit) {
- ParticipantDeregisterListener participantDeregisterListener =
- new ParticipantDeregisterListener(supervisionHandler);
- assertThatCode(
- () -> participantDeregisterListener.onTopicEvent(INFRA, TOPIC, null, participantDeregisterMsg))
- .doesNotThrowAnyException();
- }
- }
-
- @Test
- void testSendParticipantDeregisterAck() throws Exception {
- final ParticipantDeregisterAck participantDeregisterAckMsg = new ParticipantDeregisterAck();
- participantDeregisterAckMsg.setMessage("ParticipantDeregisterAck message");
- participantDeregisterAckMsg.setResponseTo(UUID.randomUUID());
- participantDeregisterAckMsg.setResult(true);
-
- synchronized (lockit) {
- ParticipantDeregisterAckPublisher clDeregisterAckPublisher = new ParticipantDeregisterAckPublisher();
- clDeregisterAckPublisher.active(Collections.singletonList(Mockito.mock(TopicSink.class)));
- assertThatCode(() -> clDeregisterAckPublisher.send(participantDeregisterAckMsg)).doesNotThrowAnyException();
- }
- }
-
- @Test
- void testReceiveParticipantUpdateAckMessage() throws Exception {
- final ParticipantUpdateAck participantUpdateAckMsg = new ParticipantUpdateAck();
- participantUpdateAckMsg.setMessage("ParticipantUpdateAck message");
- participantUpdateAckMsg.setResponseTo(UUID.randomUUID());
- participantUpdateAckMsg.setResult(true);
- participantUpdateAckMsg.setParticipantId(getParticipantId());
- participantUpdateAckMsg.setParticipantType(getParticipantType());
-
- synchronized (lockit) {
- ParticipantUpdateAckListener participantUpdateAckListener =
- new ParticipantUpdateAckListener(supervisionHandler);
- assertThatCode(() -> participantUpdateAckListener.onTopicEvent(INFRA, TOPIC, null, participantUpdateAckMsg))
- .doesNotThrowAnyException();
- }
- }
-
- @Test
- void testSendControlLoopStateChangePublisherNotActive() {
- var publisher = new ControlLoopStateChangePublisher();
- assertThatThrownBy(() -> publisher.send(getControlLoop(), 0)).hasMessage(NOT_ACTIVE);
- }
-
- @Test
- void testSendControlLoopStateChangePublisher() {
- var publisher = new ControlLoopStateChangePublisher();
- var topicSink = mock(TopicSink.class);
- publisher.active(List.of(topicSink));
- publisher.send(getControlLoop(), 0);
- verify(topicSink).send(anyString());
- }
-
- @Test
- void testParticipantUpdatePublisherDecomisioning() {
- var publisher = new ParticipantUpdatePublisher(mock(ServiceTemplateProvider.class));
- var topicSink = mock(TopicSink.class);
- publisher.active(List.of(topicSink));
- publisher.sendDecomisioning();
- verify(topicSink).send(anyString());
- }
-
- @Test
- void testParticipantUpdatePublisherComissioning() {
- var publisher = new ParticipantUpdatePublisher(mock(ServiceTemplateProvider.class));
- var topicSink = mock(TopicSink.class);
- publisher.active(List.of(topicSink));
- publisher.sendComissioningBroadcast("NAME", "1.0.0");
- verify(topicSink, times(0)).send(anyString());
- }
-
- @Test
- void testParticipantStatusReqPublisher() {
- var publisher = new ParticipantStatusReqPublisher();
- var topicSink = mock(TopicSink.class);
- publisher.active(List.of(topicSink));
- publisher.send(getParticipantId());
- verify(topicSink).send(anyString());
- }
-
- @Test
- void testParticipantRegisterAckPublisher() {
- var publisher = new ParticipantRegisterAckPublisher();
- var topicSink = mock(TopicSink.class);
- publisher.active(List.of(topicSink));
- publisher.send(UUID.randomUUID(), getParticipantId(), getParticipantType());
- verify(topicSink).send(anyString());
- }
-
- @Test
- void testParticipantDeregisterAckPublisher() {
- var publisher = new ParticipantDeregisterAckPublisher();
- var topicSink = mock(TopicSink.class);
- publisher.active(List.of(topicSink));
- publisher.send(UUID.randomUUID());
- verify(topicSink).send(anyString());
- }
-
- private ControlLoop getControlLoop() {
- var controlLoop = new ControlLoop();
- controlLoop.setName("NAME");
- controlLoop.setVersion("0.0.1");
- controlLoop.setState(ControlLoopState.UNINITIALISED);
- return controlLoop;
- }
-
- private ToscaConceptIdentifier getParticipantId() {
- return new ToscaConceptIdentifier("org.onap.PM_Policy", "1.0.0");
- }
-
- private ToscaConceptIdentifier getParticipantType() {
- return new ToscaConceptIdentifier("org.onap.policy.controlloop.PolicyControlLoopParticipant", "2.3.1");
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/CommonTestData.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/CommonTestData.java
deleted file mode 100644
index 13d30e401..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/CommonTestData.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.util;
-
-import java.util.List;
-import javax.ws.rs.core.Response.Status;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant;
-import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.models.provider.PolicyModelsProviderFactory;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-/**
- * Class to hold/create all parameters for test cases.
- *
- */
-public class CommonTestData {
- private static final Coder CODER = new StandardCoder();
-
- /**
- * Gets the standard Control Loop parameters.
- *
- * @param dbName the database name
- * @return the standard Control Loop parameters
- * @throws ControlLoopRuntimeException on errors reading the control loop parameters
- */
- public static ClRuntimeParameterGroup geParameterGroup(final String dbName) {
- try {
- return CODER.convert(getParameterGroupAsString(dbName), ClRuntimeParameterGroup.class);
-
- } catch (CoderException e) {
- throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "cannot read Control Loop parameters", e);
- }
- }
-
- /**
- * Gets the standard Control Loop parameters, as a String.
- *
- * @param dbName the database name
- * @return the standard Control Loop parameters as string
- */
- public static String getParameterGroupAsString(final String dbName) {
- return ResourceUtils.getResourceAsString("src/test/resources/parameters/TestParameters.json")
- .replace("${dbName}", "jdbc:h2:mem:" + dbName);
- }
-
- /**
- * Create a new PolicyModelsProvider.
- *
- * @param databaseProviderParameters the database Provider Parameters
- * @return a new PolicyModelsProvider
- */
- public static PolicyModelsProvider getPolicyModelsProvider(
- PolicyModelsProviderParameters databaseProviderParameters) {
- try {
- return new PolicyModelsProviderFactory().createPolicyModelsProvider(databaseProviderParameters);
- } catch (PfModelException e) {
- throw new PfModelRuntimeException(e);
- }
- }
-
- /**
- * Create a List of Participants.
- *
- * @return a List of Participants
- */
- public static List<Participant> createParticipants() {
- var participant1 = createParticipant(
- new ToscaConceptIdentifier("org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant", "2.3.4"),
- new ToscaConceptIdentifier("org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "2.3.4"));
- var participant2 = createParticipant(
- new ToscaConceptIdentifier("org.onap.policy.controlloop.PolicyControlLoopParticipant", "2.3.1"),
- new ToscaConceptIdentifier("org.onap.policy.controlloop.PolicyControlLoopParticipant", "2.3.1"));
- var participant3 = createParticipant(
- new ToscaConceptIdentifier("org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant", "2.2.1"),
- new ToscaConceptIdentifier("org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant", "2.2.1"));
- return List.of(participant1, participant2, participant3);
- }
-
- /**
- * Create a new Participant.
- *
- * @param participantType the participant Type
- * @param participantId the participant id
- * @return a new Participant
- */
- public static Participant createParticipant(ToscaConceptIdentifier participantType,
- ToscaConceptIdentifier participantId) {
- var participant = new Participant();
- participant.setDefinition(participantId);
- participant.setParticipantType(participantType);
- participant.setName(participantId.getName());
- participant.setVersion(participantId.getVersion());
- return participant;
- }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java
deleted file mode 100644
index 70b0608d6..000000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.util.rest;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.glassfish.jersey.client.ClientProperties;
-import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
-import org.onap.policy.common.gson.GsonMessageBodyHandler;
-import org.onap.policy.common.utils.network.NetworkUtil;
-
-/**
- * Class to perform Rest unit tests.
- *
- */
-public class CommonRestController {
-
- public static final String SELF = NetworkUtil.getHostname();
- public static final String CONTEXT_PATH = "onap/controlloop";
- public static final String ENDPOINT_PREFIX = CONTEXT_PATH + "/v2/";
- public static final String ACTUATOR_ENDPOINT = CONTEXT_PATH + "/actuator/";
-
- private static String httpPrefix;
-
- /**
- * Verifies that an endpoint appears within the swagger response.
- *
- * @param endpoint the endpoint of interest
- * @throws Exception if an error occurs
- */
- protected void testSwagger(final String endpoint) throws Exception {
- final Invocation.Builder invocationBuilder = sendRequest("api-docs");
- final String resp = invocationBuilder.get(String.class);
-
- assertThat(resp).contains(endpoint);
- }
-
- /**
- * Sends a request to an endpoint.
- *
- * @param endpoint the target endpoint
- * @return a request builder
- * @throws Exception if an error occurs
- */
- protected Invocation.Builder sendRequest(final String endpoint) throws Exception {
- return sendFqeRequest(httpPrefix + ENDPOINT_PREFIX + endpoint, true);
- }
-
- /**
- * Sends a request to an actuator endpoint.
- *
- * @param endpoint the target endpoint
- * @return a request builder
- * @throws Exception if an error occurs
- */
- protected Invocation.Builder sendActRequest(final String endpoint) throws Exception {
- return sendFqeRequest(httpPrefix + ACTUATOR_ENDPOINT + endpoint, true);
- }
-
- /**
- * Sends a request to an Rest Api endpoint, without any authorization header.
- *
- * @param endpoint the target endpoint
- * @return a request builder
- * @throws Exception if an error occurs
- */
- protected Invocation.Builder sendNoAuthRequest(final String endpoint) throws Exception {
- return sendFqeRequest(httpPrefix + ENDPOINT_PREFIX + endpoint, false);
- }
-
- /**
- * Sends a request to an actuator endpoint, without any authorization header.
- *
- * @param endpoint the target endpoint
- * @return a request builder
- * @throws Exception if an error occurs
- */
- protected Invocation.Builder sendNoAuthActRequest(final String endpoint) throws Exception {
- return sendFqeRequest(httpPrefix + ACTUATOR_ENDPOINT + endpoint, false);
- }
-
- /**
- * Sends a request to a fully qualified endpoint.
- *
- * @param fullyQualifiedEndpoint the fully qualified target endpoint
- * @param includeAuth if authorization header should be included
- * @return a request builder
- * @throws Exception if an error occurs
- */
- protected Invocation.Builder sendFqeRequest(final String fullyQualifiedEndpoint, boolean includeAuth)
- throws Exception {
- final Client client = ClientBuilder.newBuilder().build();
-
- client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
- client.register(GsonMessageBodyHandler.class);
-
- if (includeAuth) {
- client.register(HttpAuthenticationFeature.basic("runtimeUser", "zb!XztG34"));
- }
-
- final WebTarget webTarget = client.target(fullyQualifiedEndpoint);
-
- return webTarget.request(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN);
- }
-
- /**
- * Assert that POST call is Unauthorized.
- *
- * @param endPoint the endpoint
- * @param entity the entity ofthe body
- * @throws Exception if an error occurs
- */
- protected void assertUnauthorizedPost(final String endPoint, final Entity<?> entity) throws Exception {
- Response rawresp = sendNoAuthRequest(endPoint).post(entity);
- assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
- }
-
- /**
- * Assert that PUT call is Unauthorized.
- *
- * @param endPoint the endpoint
- * @param entity the entity ofthe body
- * @throws Exception if an error occurs
- */
- protected void assertUnauthorizedPut(final String endPoint, final Entity<?> entity) throws Exception {
- Response rawresp = sendNoAuthRequest(endPoint).put(entity);
- assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
- }
-
- /**
- * Assert that GET call is Unauthorized.
- *
- * @param endPoint the endpoint
- * @throws Exception if an error occurs
- */
- protected void assertUnauthorizedGet(final String endPoint) throws Exception {
- Response rawresp = sendNoAuthRequest(endPoint).buildGet().invoke();
- assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
- }
-
- /**
- * Assert that GET call to actuator endpoint is Unauthorized.
- *
- * @param endPoint the endpoint
- * @throws Exception if an error occurs
- */
- protected void assertUnauthorizedActGet(final String endPoint) throws Exception {
- Response rawresp = sendNoAuthActRequest(endPoint).buildGet().invoke();
- assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
- }
-
- /**
- * Assert that DELETE call is Unauthorized.
- *
- * @param endPoint the endpoint
- * @throws Exception if an error occurs
- */
- protected void assertUnauthorizedDelete(final String endPoint) throws Exception {
- Response rawresp = sendNoAuthRequest(endPoint).delete();
- assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
- }
-
- /**
- * Set Up httpPrefix.
- *
- * @param port the port
- */
- protected void setHttpPrefix(int port) {
- httpPrefix = "http://" + SELF + ":" + port + "/";
- }
-
- protected String getHttpPrefix() {
- return httpPrefix;
- }
-}
diff --git a/runtime-controlloop/src/test/resources/application_test.properties b/runtime-controlloop/src/test/resources/application_test.properties
deleted file mode 100644
index 52c372d5e..000000000
--- a/runtime-controlloop/src/test/resources/application_test.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-spring.security.user.name=runtimeUser
-spring.security.user.password=zb!XztG34
-security.enable-csrf=false
-
-spring.datasource.url=jdbc:h2:mem:testdb
-spring.datasource.driverClassName=org.h2.Driver
-spring.datasource.username=policy
-spring.datasource.password=P01icY
-
-spring.datasource.hikari.connectionTimeout=30000
-spring.datasource.hikari.idleTimeout=600000
-spring.datasource.hikari.maxLifetime=1800000
-spring.datasource.hikari.maximumPoolSize=3
-
-spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-spring.jpa.hibernate.naming.implicit-strategy=org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
-spring.jpa.hibernate.ddl-auto=create
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.HSQLDialect
-spring.jpa.properties.hibernate.format_sql=true
-
-server.port=6969
-server.servlet.context-path=/onap/controlloop
-server.error.path=/error
-
-runtime.participantParameters.heartBeatMs=20000
-runtime.participantParameters.maxStatusWaitMs=100000
-runtime.participantParameters.updateParameters.maxRetryCount=3
-runtime.participantParameters.updateParameters.maxWaitMs=20000
-runtime.topicParameterGroup.topicSources[0].topic=POLICY-CLRUNTIME-PARTICIPANT
-runtime.topicParameterGroup.topicSources[0].servers[0]=localhost
-runtime.topicParameterGroup.topicSources[0].topicCommInfrastructure=dmaap
-runtime.topicParameterGroup.topicSources[0].fetchTimeout=15000
-runtime.topicParameterGroup.topicSinks[0].topic=POLICY-CLRUNTIME-PARTICIPANT
-runtime.topicParameterGroup.topicSinks[0].servers[0]=localhost
-runtime.topicParameterGroup.topicSinks[0].topicCommInfrastructure=dmaap
-
-management.endpoints.web.exposure.include=health,metrics,prometheus
diff --git a/runtime-controlloop/src/test/resources/parameters/TestParameters.json b/runtime-controlloop/src/test/resources/parameters/TestParameters.json
deleted file mode 100644
index 6d16f4853..000000000
--- a/runtime-controlloop/src/test/resources/parameters/TestParameters.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "ControlLoopRuntimeGroup",
- "supervisionScannerIntervalSec": 1000,
- "participantClUpdateIntervalSec": 1000,
- "participantClStateChangeIntervalSec": 1000,
- "participantParameters": {
- "heartBeatMs": 120000,
- "maxStatusWaitMs": 100000,
- "updateParameters": {
- "maxRetryCount": 1,
- "maxWaitMs": 30000
- }
- },
- "databaseProviderParameters": {
- "name": "PolicyProviderParameterGroup",
- "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
- "databaseDriver": "org.h2.Driver",
- "databaseUrl": "${dbName}",
- "databaseUser": "policy",
- "databasePassword": "P01icY",
- "persistenceUnit": "InstantiationTests"
- },
- "topicParameterGroup": {
- "topicSources": [
- {
- "topic": "POLICY-CLRUNTIME-PARTICIPANT",
- "servers": [
- "localhost"
- ],
- "topicCommInfrastructure": "dmaap",
- "fetchTimeout": 15000
- }
- ],
- "topicSinks": [
- {
- "topic": "POLICY-CLRUNTIME-PARTICIPANT",
- "servers": [
- "localhost"
- ],
- "topicCommInfrastructure": "dmaap"
- }
- ]
- }
-}
diff --git a/runtime-controlloop/src/test/resources/parameters/logback-test.xml b/runtime-controlloop/src/test/resources/parameters/logback-test.xml
deleted file mode 100644
index e00c36baa..000000000
--- a/runtime-controlloop/src/test/resources/parameters/logback-test.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2021 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.
-
- SPDX-License-Identifier: Apache-2.0
- ============LICENSE_END=========================================================
--->
-
-<configuration>
-
- <contextName>Apex</contextName>
- <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
- <property name="LOG_DIR" value="${java.io.tmpdir}/clamp_logging/" />
-
- <!-- USE FOR STD OUT ONLY -->
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <Pattern>%d %contextName [%t] %level %logger{36} - %msg%n</Pattern>
- </encoder>
- </appender>
-
- <root level="info">
- <appender-ref ref="STDOUT" />
- </root>
-
- <logger name="org.onap.policy.clamp.controlloop.runtime" level="trace" additivity="false">
- <appender-ref ref="STDOUT" />
- </logger>
-</configuration>
diff --git a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopElementsNotFound.json b/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopElementsNotFound.json
deleted file mode 100644
index faea7cd48..000000000
--- a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopElementsNotFound.json
+++ /dev/null
@@ -1,142 +0,0 @@
-{
- "controlLoopList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 0",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c20": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "definition": {
- "name": "org.onap.domain.pmsh.DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c21": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c22": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c23": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 0 control loop"
- }
- }
- },
- {
- "name": "PMSHInstance1",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 1",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c24": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c24",
- "definition": {
- "name": "org.onap.domain.pmsh.DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c25": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c25",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c26": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c26",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c27": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c27",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 1 control loop"
- }
- }
- }
- ]
-}
diff --git a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoops.json b/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoops.json
deleted file mode 100644
index 64443ff62..000000000
--- a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoops.json
+++ /dev/null
@@ -1,174 +0,0 @@
-{
- "controlLoopList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 0",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c20": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c21": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c22": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c23": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 0 control loop"
- }
- }
- },
- {
- "name": "PMSHInstance1",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 1",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c24": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c24",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c25": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c25",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c26": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c26",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c27": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c27",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 1 control loop"
- }
- }
- }
- ]
-}
diff --git a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsNotFound.json b/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsNotFound.json
deleted file mode 100644
index 9e9767472..000000000
--- a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsNotFound.json
+++ /dev/null
@@ -1,142 +0,0 @@
-{
- "controlLoopList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 0",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c20": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c21": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c22": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c23": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 0 control loop"
- }
- }
- },
- {
- "name": "PMSHInstance1",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 1",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c24": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c24",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c25": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c25",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c26": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c26",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c27": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c27",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 1 control loop"
- }
- }
- }
- ]
-}
diff --git a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsSmoke.json b/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsSmoke.json
deleted file mode 100644
index 47f379b84..000000000
--- a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsSmoke.json
+++ /dev/null
@@ -1,174 +0,0 @@
-{
- "controlLoopList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 0",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c20": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "definition": {
- "name": "org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c21": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c22": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c23": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
- "definition": {
- "name": "org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 0 control loop"
- }
- }
- },
- {
- "name": "PMSHInstance1",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 1",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c24": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c24",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c25": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c25",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c26": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c26",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c27": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c27",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 1 control loop"
- }
- }
- }
- ]
-}
diff --git a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsUpdate.json b/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsUpdate.json
deleted file mode 100644
index b09e46fe7..000000000
--- a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsUpdate.json
+++ /dev/null
@@ -1,174 +0,0 @@
-{
- "controlLoopList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 1",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c21": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c22": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c23": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c24": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c24",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 0 control loop"
- }
- }
- },
- {
- "name": "PMSHInstance1",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 1",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c25": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c25",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c26": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c26",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c27": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c27",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c28": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c28",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantId": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 1 control loop"
- }
- }
- }
- ]
-}
diff --git a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsVersionNotMatches.json b/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsVersionNotMatches.json
deleted file mode 100644
index 76131afc1..000000000
--- a/runtime-controlloop/src/test/resources/rest/controlloops/ControlLoopsVersionNotMatches.json
+++ /dev/null
@@ -1,142 +0,0 @@
-{
- "controlLoopList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 0",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c20": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.0.0"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c21": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c22": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c23": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 0 control loop"
- }
- }
- },
- {
- "name": "PMSHInstance1",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 1",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c24": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c24",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_DCAEMicroservice",
- "version": "1.0.0"
- },
- "participantType": {
- "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant",
- "version": "2.3.4"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "DCAE Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c25": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c25",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c26": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c26",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version": "2.3.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "Operational Policy Control Loop Element for the PMSH instance 1 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c27": {
- "id": "709c62b3-8918-41b9-a747-e21eb79c6c27",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement",
- "version": "1.2.3"
- },
- "participantType": {
- "name": "org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant",
- "version": "2.2.1"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "CDS Control Loop Element for the PMSH instance 1 control loop"
- }
- }
- }
- ]
-}
diff --git a/runtime-controlloop/src/test/resources/rest/controlloops/PassiveCommand.json b/runtime-controlloop/src/test/resources/rest/controlloops/PassiveCommand.json
deleted file mode 100644
index 9c87e43b6..000000000
--- a/runtime-controlloop/src/test/resources/rest/controlloops/PassiveCommand.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "orderedState": "PASSIVE",
- "controlLoopIdentifierList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1"
- },
- {
- "name": "PMSHInstance1",
- "version": "1.0.1"
- }
- ]
-}
diff --git a/runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics.json b/runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics.json
deleted file mode 100644
index 21a048ff0..000000000
--- a/runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "clElementStatistics":[
- {
- "participantId":{
- "name":"name1",
- "version":"1.001"
- },
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "timeStamp": "2021-01-10T13:45:00.000Z",
- "controlLoopState": "UNINITIALISED",
- "clElementUptime":250
- },
- {
- "participantId":{
- "name":"name1",
- "version":"1.001"
- },
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "timeStamp": "2021-01-10T15:45:00.000Z",
- "controlLoopState": "UNINITIALISED",
- "clElementUptime":450
- },
- {
- "participantId":{
- "name":"name2",
- "version":"1.001"
- },
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "timeStamp": "2021-01-10T14:25:00.000Z",
- "controlLoopState": "UNINITIALISED",
- "clElementUptime":330
- },
- {
- "participantId":{
- "name":"name2",
- "version":"1.001"
- },
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "timeStamp": "2021-01-10T16:35:00.000Z",
- "controlLoopState": "UNINITIALISED",
- "clElementUptime":650
- }
- ]
-} \ No newline at end of file
diff --git a/runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json b/runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json
deleted file mode 100644
index 2cf2619bf..000000000
--- a/runtime-controlloop/src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "clElementStatisticsList":[
- {
- "participantId":{
- "name":"name1",
- "version":"1.001"
- },
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
- "controlLoopState": "UNINITIALISED",
- "clElementUptime":250
- }
- ]
-} \ No newline at end of file
diff --git a/runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics.json b/runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics.json
deleted file mode 100644
index acd88e24b..000000000
--- a/runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "statisticsList":[
- {
- "participantId":{
- "name":"name1",
- "version":"1.001"
- },
- "timeStamp": "2021-01-10T13:45:00.000Z",
- "state": "PASSIVE",
- "healthStatus": "HEALTHY",
- "eventCount":250,
- "lastExecutionTime":100,
- "averageExecutionTime":90,
- "upTime":1000,
- "lastStart":3000
- },
- {
- "participantId":{
- "name":"name1",
- "version":"1.001"
- },
- "timeStamp": "2021-01-10T15:45:00.000Z",
- "state": "PASSIVE",
- "healthStatus": "HEALTHY",
- "eventCount":262,
- "lastExecutionTime":100,
- "averageExecutionTime":90,
- "upTime":2000,
- "lastStart":3000
- },
- {
- "participantId":{
- "name":"name2",
- "version":"1.001"
- },
- "timeStamp": "2021-01-27T14:25:00.000Z",
- "state": "PASSIVE",
- "healthStatus": "HEALTHY",
- "eventCount":245,
- "lastExecutionTime":1020,
- "averageExecutionTime":85,
- "upTime":1050,
- "lastStart":3100
- }
- ]
-} \ No newline at end of file
diff --git a/runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics_Invalid.json b/runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics_Invalid.json
deleted file mode 100644
index 7281822f0..000000000
--- a/runtime-controlloop/src/test/resources/rest/monitoring/TestParticipantStatistics_Invalid.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "participantStatisticsList":[
- {
- "participantId":{
- "name":"name3",
- "version":"1.001"
- },
- "state": "PASSIVE",
- "eventCount":250,
- "lastExecutionTime":100,
- "averageExecutionTime":90,
- "upTime":1000,
- "lastStart":3000
- }
- ]
-} \ No newline at end of file
diff --git a/runtime-controlloop/src/test/resources/rest/servicetemplates/PMSHMultipleCLTosca.yaml b/runtime-controlloop/src/test/resources/rest/servicetemplates/PMSHMultipleCLTosca.yaml
deleted file mode 100644
index 9acff1356..000000000
--- a/runtime-controlloop/src/test/resources/rest/servicetemplates/PMSHMultipleCLTosca.yaml
+++ /dev/null
@@ -1,232 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_3
-data_types:
- onap.datatypes.ToscaConceptIdentifier:
- derived_from: tosca.datatypes.Root
- properties:
- name:
- type: string
- required: true
- version:
- type: string
- required: true
-node_types:
- org.onap.policy.clamp.controlloop.Participant:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- org.onap.policy.clamp.controlloop.ControlLoopElement:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- participantType:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- startPhase:
- type: integer
- required: false
- constraints:
- - greater-or-equal: 0
- metadata:
- common: true
- description: A value indicating the start phase in which this control loop element will be started, the
- first start phase is zero. Control Loop Elements are started in their start_phase order and stopped
- in reverse start phase order. Control Loop Elements with the same start phase are started and
- stopped simultaneously
- org.onap.policy.clamp.controlloop.ControlLoop:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- elements:
- type: list
- required: true
- entry_schema:
- type: onap.datatypes.ToscaConceptIdentifier
- org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- dcae_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- org.onap.policy.clamp.controlloop.CDSControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- cds_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
-topology_template:
- node_templates:
- org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant:
- version: 2.3.4
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.policy.controlloop.PolicyControlLoopParticipant:
- version: 2.2.1
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant:
- version: 2.2.1
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.domain.pmsh.PMSH_DCAEMicroservice:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the DCAE microservice for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant
- version: 2.3.4
- dcae_blueprint_id:
- name: org.onap.dcae.blueprints.PMSHBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the monitoring policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the operational policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.operational.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoopElement
- type_version: 1.0.0
- description: Control loop element for CDS for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant
- version: 3.2.1
- cds_blueprint_id:
- name: org.onap.ccsdk.cds.PMSHCdsBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSHControlLoopDefinition:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoop
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSH_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement
- version: 1.2.3
- org.onap.domain.pmsh.PMSD_DCAEMicroservice:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the DCAE microservice for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant
- version: 2.3.4
- dcae_blueprint_id:
- name: org.onap.dcae.blueprints.PMSDBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSD_MonitoringPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the monitoring policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSD_OperationalPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the operational policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.operational.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSD_CDS_ControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoopElement
- type_version: 1.0.0
- description: Control loop element for CDS for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant
- version: 3.2.1
- cds_blueprint_id:
- name: org.onap.ccsdk.cds.PMSDCdsBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSDControlLoopDefinition:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoop
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSD_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSD_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSD_OperationalPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSD_CDS_ControlLoopElement
- version: 1.2.3
diff --git a/runtime-controlloop/src/test/resources/rest/servicetemplates/full-tosca-with-common-properties.yaml b/runtime-controlloop/src/test/resources/rest/servicetemplates/full-tosca-with-common-properties.yaml
deleted file mode 100644
index 4dd4f95ae..000000000
--- a/runtime-controlloop/src/test/resources/rest/servicetemplates/full-tosca-with-common-properties.yaml
+++ /dev/null
@@ -1,3546 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_1_0
-data_types:
- onap.datatypes.ToscaConceptIdentifier:
- derived_from: tosca.datatypes.Root
- properties:
- name:
- type: string
- required: true
- version:
- type: string
- required: true
- org.onap.datatypes.policy.clamp.controlloop.DCAEMicroserviceControlLoopElementConsulInfo:
- name: org.onap.datatypes.policy.clamp.controlloop.DCAEMicroserviceControlLoopElementConsulInfo
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- properties:
- consulUrl:
- name: consulUrl
- type: string
- typeVersion: 0.0.0
- description: Consul url for this entry
- required: true
- consul_body:
- name: consulBody
- type: string
- typeVersion: 0.0.0
- description: Body of Consul entry
- required: true
- onap.datatype.controlloop.Target:
- derived_from: tosca.datatypes.Root
- description: Definition for a entity in A&AI to perform a control loop operation on
- properties:
- targetType:
- type: string
- description: Category for the target type
- required: true
- constraints:
- - valid_values:
- - VNF
- - VM
- - VFMODULE
- - PNF
- entityIds:
- type: map
- description: |
- Map of values that identify the resource. If none are provided, it is assumed that the
- entity that generated the ONSET event will be the target.
- required: false
- metadata:
- clamp_possible_values: ClampExecution:CSAR_RESOURCES
- entry_schema:
- type: string
- onap.datatype.controlloop.Actor:
- derived_from: tosca.datatypes.Root
- description: An actor/operation/target definition
- properties:
- actor:
- type: string
- description: The actor performing the operation.
- required: true
- metadata:
- clamp_possible_values: Dictionary:DefaultActors,ClampExecution:CDS/actor
- operation:
- type: string
- description: The operation the actor is performing.
- metadata:
- clamp_possible_values: Dictionary:DefaultOperations,ClampExecution:CDS/operation
- required: true
- target:
- type: onap.datatype.controlloop.Target
- description: The resource the operation should be performed on.
- required: true
- payload:
- type: map
- description: Name/value pairs of payload information passed by Policy to the actor
- required: false
- metadata:
- clamp_possible_values: ClampExecution:CDS/payload
- entry_schema:
- type: string
- onap.datatype.controlloop.Operation:
- derived_from: tosca.datatypes.Root
- description: An operation supported by an actor
- properties:
- id:
- type: string
- description: Unique identifier for the operation
- required: true
- description:
- type: string
- description: A user-friendly description of the intent for the operation
- required: false
- operation:
- type: onap.datatype.controlloop.Actor
- description: The definition of the operation to be performed.
- required: true
- timeout:
- type: integer
- description: The amount of time for the actor to perform the operation.
- required: true
- retries:
- type: integer
- description: The number of retries the actor should attempt to perform the operation.
- required: true
- default: 0
- success:
- type: string
- description: Points to the operation to invoke on success. A value of "final_success" indicates and end to the operation.
- required: false
- default: final_success
- failure:
- type: string
- description: Points to the operation to invoke on Actor operation failure.
- required: false
- default: final_failure
- failure_timeout:
- type: string
- description: Points to the operation to invoke when the time out for the operation occurs.
- required: false
- default: final_failure_timeout
- failure_retries:
- type: string
- description: Points to the operation to invoke when the current operation has exceeded its max retries.
- required: false
- default: final_failure_retries
- failure_exception:
- type: string
- description: Points to the operation to invoke when the current operation causes an exception.
- required: false
- default: final_failure_exception
- failure_guard:
- type: string
- description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.
- required: false
- default: final_failure_guard
- onap.datatypes.monitoring.managedObjectDNsBasic:
- constraints: []
- properties:
- DN:
- name: DN
- type: string
- typeVersion: 0.0.0
- description: Managed object distinguished name
- required: true
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.managedObjectDNsBasic
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.managedObjectDNsBasics:
- constraints: []
- properties:
- managedObjectDNsBasic:
- name: managedObjectDNsBasic
- type: map
- typeVersion: 0.0.0
- description: Managed object distinguished name object
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.managedObjectDNsBasic
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.managedObjectDNsBasics
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementGroup:
- constraints: []
- properties:
- measurementTypes:
- name: measurementTypes
- type: list
- typeVersion: 0.0.0
- description: List of measurement types
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementTypes
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- managedObjectDNsBasic:
- name: managedObjectDNsBasic
- type: list
- typeVersion: 0.0.0
- description: List of managed object distinguished names
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.managedObjectDNsBasics
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementGroup
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementGroups:
- constraints: []
- properties:
- measurementGroup:
- name: measurementGroup
- type: map
- typeVersion: 0.0.0
- description: Measurement Group
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementGroup
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementGroups
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementType:
- constraints: []
- properties:
- measurementType:
- name: measurementType
- type: string
- typeVersion: 0.0.0
- description: Measurement type
- required: true
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementType
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementTypes:
- constraints: []
- properties:
- measurementType:
- name: measurementType
- type: map
- typeVersion: 0.0.0
- description: Measurement type object
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementType
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementTypes
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.nfFilter:
- constraints: []
- properties:
- modelNames:
- name: modelNames
- type: list
- typeVersion: 0.0.0
- description: List of model names
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- modelInvariantIDs:
- name: modelInvariantIDs
- type: list
- typeVersion: 0.0.0
- description: List of model invariant IDs
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- modelVersionIDs:
- name: modelVersionIDs
- type: list
- typeVersion: 0.0.0
- description: List of model version IDs
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- nfNames:
- name: nfNames
- type: list
- typeVersion: 0.0.0
- description: List of network functions
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.nfFilter
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.subscription:
- constraints: []
- properties:
- measurementGroups:
- name: measurementGroups
- type: list
- typeVersion: 0.0.0
- description: Measurement Groups
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementGroups
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- fileBasedGP:
- name: fileBasedGP
- type: integer
- typeVersion: 0.0.0
- description: File based granularity period
- required: true
- constraints: []
- metadata: {}
- fileLocation:
- name: fileLocation
- type: string
- typeVersion: 0.0.0
- description: ROP file location
- required: true
- constraints: []
- metadata: {}
- subscriptionName:
- name: subscriptionName
- type: string
- typeVersion: 0.0.0
- description: Name of the subscription
- required: true
- constraints: []
- metadata: {}
- administrativeState:
- name: administrativeState
- type: string
- typeVersion: 0.0.0
- description: State of the subscription
- required: true
- constraints:
- - valid_values:
- - LOCKED
- - UNLOCKED
- metadata: {}
- nfFilter:
- name: nfFilter
- type: map
- typeVersion: 0.0.0
- description: Network function filter
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.nfFilter
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.subscription
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
-policy_types:
- onap.policies.Monitoring:
- derived_from: tosca.policies.Root
- description: a base policy type for all policies that govern monitoring provisioning
- version: 1.0.0
- name: onap.policies.Monitoring
- onap.policies.Sirisha:
- derived_from: tosca.policies.Root
- description: a base policy type for all policies that govern monitoring provisioning
- version: 1.0.0
- name: onap.policies.Sirisha
- onap.policies.monitoring.dcae-pm-subscription-handler:
- properties:
- pmsh_policy:
- name: pmsh_policy
- type: onap.datatypes.monitoring.subscription
- typeVersion: 0.0.0
- description: PMSH Policy JSON
- required: false
- constraints: []
- metadata: {}
- name: onap.policies.monitoring.dcae-pm-subscription-handler
- version: 1.0.0
- derived_from: onap.policies.Monitoring
- metadata: {}
- onap.policies.controlloop.operational.Common:
- derived_from: tosca.policies.Root
- version: 1.0.0
- name: onap.policies.controlloop.operational.Common
- description: |
- Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant
- Policy Types. This does NOT support the legacy Policy YAML policy type.
- properties:
- id:
- type: string
- description: The unique control loop id.
- required: true
- timeout:
- type: integer
- description: |
- Overall timeout for executing all the operations. This timeout should equal or exceed the total
- timeout for each operation listed.
- required: true
- abatement:
- type: boolean
- description: Whether an abatement event message will be expected for the control loop from DCAE.
- required: true
- default: false
- trigger:
- type: string
- description: Initial operation to execute upon receiving an Onset event message for the Control Loop.
- required: true
- operations:
- type: list
- description: List of operations to be performed when Control Loop is triggered.
- required: true
- entry_schema:
- type: onap.datatype.controlloop.Operation
- onap.policies.controlloop.operational.common.Apex:
- derived_from: onap.policies.controlloop.operational.Common
- type_version: 1.0.0
- version: 1.0.0
- name: onap.policies.controlloop.operational.common.Apex
- description: Operational policies for Apex PDP
- properties:
- engineServiceParameters:
- type: string
- description: The engine parameters like name, instanceCount, policy implementation, parameters etc.
- required: true
- eventInputParameters:
- type: string
- description: The event input parameters.
- required: true
- eventOutputParameters:
- type: string
- description: The event output parameters.
- required: true
- javaProperties:
- type: string
- description: Name/value pairs of properties to be set for APEX if needed.
- required: false
-node_types:
- org.onap.policy.clamp.controlloop.Participant:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- org.onap.policy.clamp.controlloop.ControlLoopElement:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- required: false
- metadata:
- common: true
- description: Specifies the organization that provides the control loop element
- participantType:
- type: onap.datatypes.ToscaConceptIdentifier
- required: true
- metadata:
- common: true
- description: The identity of the participant type that hosts this type of Control Loop Element
- startPhase:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- metadata:
- common: true
- description: A value indicating the start phase in which this control loop element will be started, the
- first start phase is zero. Control Loop Elements are started in their start_phase order and stopped
- in reverse start phase order. Control Loop Elements with the same start phase are started and
- stopped simultaneously
- uninitializedToPassiveTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from uninitialized to passive
- passiveToRunningTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from passive to running
- runningToPassiveTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from running to passive
- passiveToUninitializedTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from passive to uninitialized
- org.onap.policy.clamp.controlloop.ControlLoop:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- required: false
- metadata:
- common: true
- description: Specifies the organization that provides the control loop element
- elements:
- type: list
- required: true
- metadata:
- common: true
- entry_schema:
- type: onap.datatypes.ToscaConceptIdentifier
- description: Specifies a list of control loop element definitions that make up this control loop definition
- org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- dcae_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- dcae_blueprint:
- type: onap.dcae.cloudify_blueprint
- requred: false
- consul_info:
- type: list
- required: false
- entry_schema:
- type: org.onap.datatypes.policy.clamp.controlloop.DCAEMicroserviceControlLoopElementConsulInfo
- org.onap.policy.clamp.controlloop.PolicyControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- policy_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- policy_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- policy_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- org.onap.policy.clamp.controlloop.CDSControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- cds_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
-topology_template:
- inputs:
- pmsh_monitoring_policy:
- type: onap.datatypes.ToscaConceptIdentifier
- description: The ID of the PMSH monitoring policy to use
- default:
- name: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- version: 1.0.0
- pmsh_operational_policy:
- type: onap.datatypes.ToscaConceptIdentifier
- description: The ID of the PMSH operational policy to use
- default:
- name: operational.apex.pmcontrol
- version: 1.0.0
- node_templates:
- org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant:
- version: 2.3.4
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.policy.controlloop.PolicyControlLoopParticipant:
- version: 2.3.1
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.domain.pmsh.PMSH_DCAEMicroservice:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the DCAE microservice for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant
- version: 2.3.4
- dcae_blueprint:
- tosca_definitions_version: cloudify_dsl_1_3
- imports:
- - https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml
- - plugin:k8splugin?version=3.7.0
- - plugin:pgaas?version=1.3.0
- - plugin:clamppolicyplugin?version=1.1.0
- inputs:
- tag_version:
- type: string
- description: Docker image to be used
- default: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pmsh:1.1.2
- replicas:
- type: integer
- description: Number of instances
- default: 1
- operational_policy_name:
- type: string
- default: operational.apex.pmcontrol
- control_loop_name:
- type: string
- default: pmsh-control-loop
- pmsh_publish_topic_name:
- type: string
- default: unauthenticated.DCAE_CL_OUTPUT
- policy_feedback_topic_name:
- type: string
- default: unauthenticated.PMSH_CL_INPUT
- aai_notification_topic_name:
- type: string
- default: AAI-EVENT
- publisher_client_role:
- type: string
- description: Client role to request secure access to topic
- default: org.onap.dcae.pmPublisher
- subscriber_client_role:
- type: string
- description: Client role to request secure access to topic
- default: org.onap.dcae.pmSubscriber
- dcae_location:
- type: string
- description: DCAE location for the subscriber, used to set up routing
- default: san-francisco
- cpu_limit:
- type: string
- default: 1000m
- cpu_request:
- type: string
- default: 1000m
- memory_limit:
- type: string
- default: 1024Mi
- memory_request:
- type: string
- default: 1024Mi
- pgaas_cluster_name:
- type: string
- default: dcae-pg-primary.onap
- enable_tls:
- type: boolean
- default: true
- protocol:
- type: string
- description: PMSH protocol. If enable_tls is false, set to http
- default: https
- policy_model_id:
- type: string
- default: onap.policies.monitoring.dcae-pm-subscription-handler
- policy_id:
- type: string
- default: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- node_templates:
- pgaasvm:
- type: dcae.nodes.pgaas.database
- properties:
- writerfqdn:
- get_input: pgaas_cluster_name
- name: pmsh
- pmsh:
- type: dcae.nodes.ContainerizedServiceComponentUsingDmaap
- interfaces:
- cloudify.interfaces.lifecycle:
- create:
- inputs:
- ports:
- - '8443:0'
- envs:
- PMSH_PG_URL:
- get_attribute:
- - pgaasvm
- - admin
- - host
- PMSH_PG_PASSWORD:
- get_attribute:
- - pgaasvm
- - admin
- - password
- PMSH_PG_USERNAME:
- get_attribute:
- - pgaasvm
- - admin
- - user
- PMSH_DB_NAME:
- get_attribute:
- - pgaasvm
- - admin
- - database
- relationships:
- - target: pmsh-policy
- type: cloudify.relationships.depends_on
- properties:
- service_component_type: dcae-pmsh
- service_component_name_override: dcae-pmsh
- application_config:
- enable_tls:
- get_input: enable_tls
- aaf_identity: dcae@dcae.onap.org
- aaf_password: demo123456!
- operational_policy_name:
- get_input: operational_policy_name
- control_loop_name:
- get_input: control_loop_name
- cert_path: /opt/app/pmsh/etc/certs/cert.pem
- key_path: /opt/app/pmsh/etc/certs/key.pem
- ca_cert_path: /opt/app/pmsh/etc/certs/cacert.pem
- streams_publishes:
- policy_pm_publisher:
- type: message_router
- dmaap_info:
- topic_url:
- concat:
- - http://message-router:3904/events/
- - get_input: pmsh_publish_topic_name
- streams_subscribes:
- policy_pm_subscriber:
- type: message_router
- dmaap_info:
- topic_url:
- concat:
- - http://message-router:3904/events/
- - get_input: policy_feedback_topic_name
- aai_subscriber:
- type: message_router
- dmaap_info:
- topic_url:
- concat:
- - http://message-router:3904/events/
- - get_input: aai_notification_topic_name
- resource_config:
- limits:
- cpu:
- get_input: cpu_limit
- memory:
- get_input: memory_limit
- requests:
- cpu:
- get_input: cpu_request
- memory:
- get_input: memory_request
- docker_config:
- healthcheck:
- endpoint: /healthcheck
- interval: 15s
- timeout: 1s
- type:
- get_input: protocol
- image:
- get_input: tag_version
- replicas:
- get_input: replicas
- log_info:
- log_directory: /var/log/ONAP/dcaegen2/services/pmsh
- tls_info:
- cert_directory: /opt/app/pmsh/etc/certs
- use_tls:
- get_input: enable_tls
- pmsh-policy:
- type: clamp.nodes.policy
- properties:
- policy_model_id:
- get_input: policy_model_id
- policy_id:
- get_input: policy_id
- consul_info:
- - consulUrl: http://consul:31321/v1/kv/dcae-pmsh:policy
- consulBody:
- subscription:
- subscriptionName: subscriptiona
- administrativeState: UNLOCKED
- fileBasedGP: 15
- fileLocation: /pm/pm.xml
- nfFilter:
- nfNames:
- - ^pnf1.*
- modelInvariantIDs:
- - 5845y423-g654-6fju-po78-8n53154532k6
- - 7129e420-d396-4efb-af02-6b83499b12f8
- modelVersionIDs:
- - e80a6ae3-cafd-4d24-850d-e14c084a5ca9
- measurementGroups:
- - measurementGroup:
- measurementTypes:
- - measurementType: countera
- - measurementType: counterb
- managedObjectDNsBasic:
- - DN: dna
- - DN: dnb
- - measurementGroup:
- measurementTypes:
- - measurementType: counterc
- - measurementType: counterd
- managedObjectDNsBasic:
- - DN: dnc
- - DN: dnd
- org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the monitoring policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.3.1
- policy_type_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- policy_id:
- get_input: pmsh_monitoring_policy
- org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the operational policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.3.1
- policy_type_id:
- name: onap.policies.operational.pm-subscription-handler
- version: 1.0.0
- policy_id:
- get_input: pmsh_operational_policy
- org.onap.domain.pmsh.DerivedPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSH_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement
- version: 1.2.3
- org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson Software Technologies
- elements:
- - name: org.onap.domain.pmsh.PMSH_DerivedTestMicroservice
- version: 1.2.3
- org.onap.domain.pmsh.PMSHControlLoopDefinition:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoop
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSH_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement
- version: 1.2.3
- policies:
- - MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test:
- type: onap.policies.monitoring.dcae-pm-subscription-handler
- type_version: 1.0.0
- name: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- version: 1.0.0
- metadata:
- policy-id: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- policy-version: 1.0.0
- properties:
- pmsh_policy:
- fileBasedGP: 15
- fileLocation: /pm/pm.xml
- subscriptionName: subscriptiona
- administrativeState: UNLOCKED
- nfFilter:
- onap.datatypes.monitoring.nfFilter:
- modelVersionIDs:
- - e80a6ae3-cafd-4d24-850d-e14c084a5ca9
- modelInvariantIDs:
- - 5845y423-g654-6fju-po78-8n53154532k6
- - 7129e420-d396-4efb-af02-6b83499b12f8
- modelNames: []
- nfNames:
- - '"^pnf1.*"'
- measurementGroups:
- - measurementGroup:
- onap.datatypes.monitoring.measurementGroup:
- measurementTypes:
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: countera
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: counterb
- managedObjectDNsBasic:
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dna
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dnb
- - measurementGroup:
- onap.datatypes.monitoring.measurementGroup:
- measurementTypes:
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: counterc
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: counterd
- managedObjectDNsBasic:
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dnc
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dnd
- - operational.apex.pmcontrol:
- type: onap.policies.controlloop.operational.common.Apex
- type_version: 1.0.0
- version: 1.0.0
- metadata:
- policy-id: operational.apex.pmcontrol
- policy-version: 1
- properties:
- engineServiceParameters:
- name: MyApexEngine
- version: 0.0.1
- id: 45
- instanceCount: 2
- deploymentPort: 12561
- policy_type_impl:
- apexPolicyModel:
- key:
- name: PMControlPolicy
- version: 0.0.1
- keyInformation:
- key:
- name: PMControlPolicy_KeyInfo
- version: 0.0.1
- keyInfoMap:
- entry:
- - key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- value:
- key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- UUID: 6e5fa19b-14df-37e3-a4ae-8c537e861a82
- description: Generated description for concept referred to by key "CDSActionIdentifiersType:0.0.1"
- - key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- UUID: 14b29e38-ac75-3273-aa4e-8583c0aa7dad
- description: Generated description for concept referred to by key "CDSCreateResponseEvent:0.0.1"
- - key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- UUID: 04573f8f-e772-30a5-b1d9-d7318d4a1e13
- description: Generated description for concept referred to by key "CDSCreateResponsePayloadType:0.0.1"
- - key:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- UUID: e126c965-fc09-3bfe-8f55-70f380a4a49c
- description: Generated description for concept referred to by key "CDSCreateResponsePolicy:0.0.1"
- - key:
- name: CDSCreateResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseTask
- version: 0.0.1
- UUID: 6165ee82-afd2-3aab-a517-f00b3f2461d2
- description: Generated description for concept referred to by key "CDSCreateResponseTask:0.0.1"
- - key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- UUID: 8350ac5e-c157-38b9-9614-a0f93a830e60
- description: Generated description for concept referred to by key "CDSCreateSubscriptionPayloadType:0.0.1"
- - key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- UUID: cfa325ba-226b-3a31-9183-ec43e2b6e9a2
- description: Generated description for concept referred to by key "CDSCreateSubscriptionRequestEvent:0.0.1"
- - key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- UUID: 8be9c0fa-7437-3841-aff2-b3cec6ae3bd8
- description: Generated description for concept referred to by key "CDSDeleteResponseEvent:0.0.1"
- - key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- UUID: 3fbfe0c9-152e-34d3-a504-09cd13c058d0
- description: Generated description for concept referred to by key "CDSDeleteResponsePayloadType:0.0.1"
- - key:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- UUID: a780251c-edd5-3132-b865-04313246b43c
- description: Generated description for concept referred to by key "CDSDeleteResponsePolicy:0.0.1"
- - key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- UUID: afce4555-3aa3-3521-a7d8-ee8cdf0d3efc
- description: Generated description for concept referred to by key "CDSDeleteResponseTask:0.0.1"
- - key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- UUID: 12658406-9147-3c9d-a38c-5ad5e30b092b
- description: Generated description for concept referred to by key "CDSDeleteSubscriptionPayloadType:0.0.1"
- - key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- UUID: 24380c95-9289-36e6-8cbf-0edefa15ccd9
- description: Generated description for concept referred to by key "CDSDeleteSubscriptionRequestEvent:0.0.1"
- - key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- UUID: 35590ac0-062c-39f1-8786-b4ff716e30b1
- description: Generated description for concept referred to by key "CDSRequestCommonHeaderType:0.0.1"
- - key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- UUID: dd7e1805-885a-350b-aaf9-ed541321ae3c
- description: Generated description for concept referred to by key "CDSResponseCommonHeaderType:0.0.1"
- - key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- UUID: 7986e21b-32f7-302e-9554-31f21b673493
- description: Generated description for concept referred to by key "CDSResponseStatusEvent:0.0.1"
- - key:
- name: CDSResponseStatusType
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusType
- version: 0.0.1
- UUID: 92b8a2cf-344e-3ce1-8cc0-2b7d3cb695fa
- description: Generated description for concept referred to by key "CDSResponseStatusType:0.0.1"
- - key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- UUID: 92162397-1a8e-3a3f-a469-d2af7700af4a
- description: Generated description for concept referred to by key "CreateSubscriptionPayloadEvent:0.0.1"
- - key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- UUID: bc0c69f0-52ed-38ea-b468-ae4a6fd1730d
- description: Generated description for concept referred to by key "CreateSubscriptionPayloadTask:0.0.1"
- - key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- UUID: 89cb75e9-f06c-30d3-b4ff-698d45f63869
- description: Generated description for concept referred to by key "CreateSubscriptionRequestTask:0.0.1"
- - key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- UUID: 994fa441-04ab-33bb-832d-1cd12ab5d074
- description: Generated description for concept referred to by key "DeleteSubscriptionPayloadEvent:0.0.1"
- - key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- UUID: 0f519117-5fea-3e4b-941f-8f778100465f
- description: Generated description for concept referred to by key "DeleteSubscriptionPayloadTask:0.0.1"
- - key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- UUID: acb772fe-d442-39e3-98f9-b1080caf4150
- description: Generated description for concept referred to by key "DeleteSubscriptionRequestTask:0.0.1"
- - key:
- name: MRResponseEvent
- version: 0.0.1
- value:
- key:
- name: MRResponseEvent
- version: 0.0.1
- UUID: 13c747a3-6bae-3bcf-9c80-b152e01dc194
- description: Generated description for concept referred to by key "MRResponseEvent:0.0.1"
- - key:
- name: PMControlPolicy
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy
- version: 0.0.1
- UUID: acf1e55c-7bc5-3bd5-975a-0ca54afcd8a4
- description: Generated description for concept referred to by key "PMControlPolicy:0.0.1"
- - key:
- name: PMControlPolicy_Albums
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Albums
- version: 0.0.1
- UUID: b38ad204-c2c8-32f4-9b5a-dda0aeb0145b
- description: Generated description for concept referred to by key "PMControlPolicy_Albums:0.0.1"
- - key:
- name: PMControlPolicy_Events
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Events
- version: 0.0.1
- UUID: be3871a0-c42a-3113-a066-82d192840eca
- description: Generated description for concept referred to by key "PMControlPolicy_Events:0.0.1"
- - key:
- name: PMControlPolicy_KeyInfo
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_KeyInfo
- version: 0.0.1
- UUID: ced37634-28a4-3178-b7f6-2980794927b0
- description: Generated description for concept referred to by key "PMControlPolicy_KeyInfo:0.0.1"
- - key:
- name: PMControlPolicy_Policies
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Policies
- version: 0.0.1
- UUID: be3d180d-ef9c-3a75-8e9c-84271a038bed
- description: Generated description for concept referred to by key "PMControlPolicy_Policies:0.0.1"
- - key:
- name: PMControlPolicy_Schemas
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Schemas
- version: 0.0.1
- UUID: e61973f1-189c-39e5-82f6-0d3afe298a20
- description: Generated description for concept referred to by key "PMControlPolicy_Schemas:0.0.1"
- - key:
- name: PMControlPolicy_Tasks
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Tasks
- version: 0.0.1
- UUID: 5658adb3-2962-30a3-a241-fae75bb8eb4a
- description: Generated description for concept referred to by key "PMControlPolicy_Tasks:0.0.1"
- - key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- UUID: c2bd6f0d-6854-317a-9be2-97c08338428c
- description: Generated description for concept referred to by key "PMSubscriptionAlbum:0.0.1"
- - key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- UUID: 992b7819-9f69-3aa0-bb0f-6e45ea15ce05
- description: Generated description for concept referred to by key "PMSubscriptionOutputEvent:0.0.1"
- - key:
- name: PMSubscriptionType
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionType
- version: 0.0.1
- UUID: 73c1c397-4fc3-357f-93b6-a8ad707fbaae
- description: Generated description for concept referred to by key "PMSubscriptionType:0.0.1"
- - key:
- name: ReceiveEventPolicy
- version: 0.0.1
- value:
- key:
- name: ReceiveEventPolicy
- version: 0.0.1
- UUID: 568b7345-9de1-36d3-b6a3-9b857e6809a1
- description: Generated description for concept referred to by key "ReceiveEventPolicy:0.0.1"
- - key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- value:
- key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- UUID: f596afc8-100c-35eb-92c8-352355ea457d
- description: Generated description for concept referred to by key "ReceiveSubscriptionTask:0.0.1"
- - key:
- name: SimpleIntType
- version: 0.0.1
- value:
- key:
- name: SimpleIntType
- version: 0.0.1
- UUID: 153791fd-ae0a-36a7-88a5-309a7936415d
- description: Generated description for concept referred to by key "SimpleIntType:0.0.1"
- - key:
- name: SimpleStringType
- version: 0.0.1
- value:
- key:
- name: SimpleStringType
- version: 0.0.1
- UUID: 8a4957cf-9493-3a76-8c22-a208e23259af
- description: Generated description for concept referred to by key "SimpleStringType:0.0.1"
- - key:
- name: SubscriptionStatusType
- version: 0.0.1
- value:
- key:
- name: SubscriptionStatusType
- version: 0.0.1
- UUID: 597643b1-9db1-31ce-85d0-e1c63c43b30b
- description: Generated description for concept referred to by key "SubscriptionStatusType:0.0.1"
- - key:
- name: SubscriptionType
- version: 0.0.1
- value:
- key:
- name: SubscriptionType
- version: 0.0.1
- UUID: 184547bb-7d64-3cb2-a273-d7185102c5ce
- description: Generated description for concept referred to by key "SubscriptionType:0.0.1"
- - key:
- name: UUIDType
- version: 0.0.1
- value:
- key:
- name: UUIDType
- version: 0.0.1
- UUID: 6a8cc68e-dfc8-3403-9c6d-071c886b319c
- description: Generated description for concept referred to by key "UUIDType:0.0.1"
- - key:
- name: pmsh-operational-policy
- version: 0.0.1
- value:
- key:
- name: pmsh-operational-policy
- version: 0.0.1
- UUID: fdf2c9ff-6422-3ea6-b6b6-49b12116265d
- description: Generated description for concept referred to by key "pmsh-operational-policy:0.0.1"
- policies:
- key:
- name: PMControlPolicy_Policies
- version: 0.0.1
- policyMap:
- entry:
- - key:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- value:
- policyKey:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- template: Freestyle
- state:
- entry:
- - key: CDSCreateResponseState
- value:
- stateKey:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CDSCreateResponseState
- trigger:
- name: CDSCreateResponseEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: ResponseOutput
- value:
- key:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSCreateResponseState
- localName: ResponseOutput
- outgoingEvent:
- name: CDSResponseStatusEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference: []
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: []
- defaultTask:
- name: CDSCreateResponseTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CDSCreateResponseTask
- version: 0.0.1
- value:
- key:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSCreateResponseState
- localName: CDSCreateResponsePolicy
- outputType: DIRECT
- output:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSCreateResponseState
- localName: ResponseOutput
- firstState: CDSCreateResponseState
- - key:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- value:
- policyKey:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- template: Freestyle
- state:
- entry:
- - key: CDSDeleteResponseState
- value:
- stateKey:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CDSDeleteResponseState
- trigger:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: ResponseOutput
- value:
- key:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSDeleteResponseState
- localName: ResponseOutput
- outgoingEvent:
- name: CDSResponseStatusEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference: []
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: []
- defaultTask:
- name: CDSDeleteResponseTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- value:
- key:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSDeleteResponseState
- localName: CDSDeleteResponsePolicy
- outputType: DIRECT
- output:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSDeleteResponseState
- localName: ResponseOutput
- firstState: CDSDeleteResponseState
- - key:
- name: ReceiveEventPolicy
- version: 0.0.1
- value:
- policyKey:
- name: ReceiveEventPolicy
- version: 0.0.1
- template: Freestyle
- state:
- entry:
- - key: CreateOrDeleteState
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateOrDeleteState
- trigger:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: CreateSubscriptionPayload
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: CreateSubscriptionPayload
- outgoingEvent:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- nextState:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateSubscription
- - key: DeleteSubscriptionPayload
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: DeleteSubscriptionPayload
- outgoingEvent:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- nextState:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: DeleteSubscription
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: TaskSelectionLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
- var changeType = pmSubscriptionInfo.get("changeType").toString()
-
- executor.logger.info("Change Type is " + changeType)
-
- if ("CREATE".equals(changeType)) {
- executor.logger.info("Choosing to create a subscription")
- executor.subject.getTaskKey("CreateSubscriptionPayloadTask").copyTo(executor.selectedTask);
- }
- else if ("DELETE".equals(changeType)) {
- executor.logger.info("Choosing to delete a subscription")
- executor.subject.getTaskKey("DeleteSubscriptionPayloadTask").copyTo(executor.selectedTask);
- }
-
- //var returnValue = executor.isTrue;
- true;
- stateFinalizerLogicMap:
- entry: []
- defaultTask:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: CreateSubscriptionPayload
- - key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: DeleteSubscriptionPayload
- - key: CreateSubscription
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateSubscription
- trigger:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: IssueCreateSubscriptionRequestOutput
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateSubscription
- localName: IssueCreateSubscriptionRequestOutput
- outgoingEvent:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: []
- defaultTask:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateSubscription
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateSubscription
- localName: IssueCreateSubscriptionRequestOutput
- - key: DeleteSubscription
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: DeleteSubscription
- trigger:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: IssueDeleteSubscriptionRequestOutput
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: DeleteSubscription
- localName: IssueDeleteSubscriptionRequestOutput
- outgoingEvent:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: []
- defaultTask:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: DeleteSubscription
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: DeleteSubscription
- localName: IssueDeleteSubscriptionRequestOutput
- - key: ReceiveSubscriptionState
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: ReceiveSubscriptionState
- trigger:
- name: pmsh-operational-policy
- version: 0.0.1
- stateOutputs:
- entry:
- - key: ReceivePMSubscriptionOutput
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: ReceiveSubscriptionState
- localName: ReceivePMSubscriptionOutput
- outgoingEvent:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- nextState:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateOrDeleteState
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: []
- defaultTask:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: ReceiveSubscriptionState
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: ReceiveSubscriptionState
- localName: ReceivePMSubscriptionOutput
- firstState: ReceiveSubscriptionState
- tasks:
- key:
- name: PMControlPolicy_Tasks
- version: 0.0.1
- taskMap:
- entry:
- - key:
- name: CDSCreateResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseTask
- version: 0.0.1
- inputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: SubscriptionStatusType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: []
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var commonHeader = executor.inFields.get("commonHeader")
- var response = executor.inFields.get("payload")
- var albumID = commonHeader.get("requestId")
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(albumID.toString());
- var responseStatus = executor.subject.getOutFieldSchemaHelper("status").createNewInstance();
-
- responseStatus.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- responseStatus.put("nfName", pmSubscriptionInfo.get("nfName"))
- responseStatus.put("changeType", pmSubscriptionInfo.get("changeType"))
-
- var status = response.get(pmSubscriptionInfo.get("changeType").toLowerCase() + "_DasH_subscription_DasH_response").get("odl_DasH_response").get("status")
-
- executor.logger.info("RESPONSE STATUS = " + status)
-
- if(status == "success") {
- responseStatus.put("message", "success")
- } else {
- responseStatus.put("message", "failed")
- }
-
- executor.outFields.put("status", responseStatus)
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- inputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: SubscriptionStatusType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: []
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var commonHeader = executor.inFields.get("commonHeader")
- var response = executor.inFields.get("payload")
- var albumID = commonHeader.get("requestId")
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(albumID.toString());
- var responseStatus = executor.subject.getOutFieldSchemaHelper("status").createNewInstance();
-
- responseStatus.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- responseStatus.put("nfName", pmSubscriptionInfo.get("nfName"))
- responseStatus.put("changeType", pmSubscriptionInfo.get("changeType"))
-
- var status = response.get(pmSubscriptionInfo.get("changeType").toLowerCase() + "_DasH_subscription_DasH_response").get("odl_DasH_response").get("status")
-
- executor.logger.info("RESPONSE STATUS = " + status)
-
- if(status == "success") {
- responseStatus.put("message", "success")
- } else {
- responseStatus.put("message", "failed")
- }
-
- executor.outFields.put("status", responseStatus)
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: []
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
-
- var payloadProperties = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance(changeType + "_DasH_subscription_DasH_properties_record");
-
- payloadProperties.put("nfName", pmSubscriptionInfo.get("nfName"))
- payloadProperties.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- payloadProperties.put("administrativeState", pmSubscriptionInfo.get("subscription").get("administrativeState"))
- payloadProperties.put("fileBasedGP", pmSubscriptionInfo.get("subscription").get("fileBasedGP").toString())
- payloadProperties.put("fileLocation", pmSubscriptionInfo.get("subscription").get("fileLocation"))
- payloadProperties.put("measurementGroups", pmSubscriptionInfo.get("subscription").get("measurementGroups"))
-
- var payloadEntry = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance("CDSRequestPayloadEntry");
- payloadEntry.put(changeType + "_DasH_subscription_DasH_properties", payloadProperties)
-
- var payload = executor.subject.getOutFieldSchemaHelper("payload").createNewInstance();
- payload.put(changeType + "_DasH_subscription_DasH_request", payloadEntry);
-
- executor.outFields.put("albumID", executor.inFields.get("albumID"))
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: []
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
- var blueprintName = pmSubscriptionInfo.get("blueprintName").toLowerCase()
- var blueprintVersion = pmSubscriptionInfo.get("blueprintVersion").toLowerCase()
- var payload = executor.inFields.get("payload")
- var actionName = changeType + "-subscription"
-
- var commonHeader = executor.subject.getOutFieldSchemaHelper("commonHeader").createNewInstance();
- commonHeader.put("originatorId", "sdnc");
- commonHeader.put("requestId", executor.inFields.get("albumID").toString());
- commonHeader.put("subRequestId", "sub-123456-1000");
-
- var actionIdentifiers = executor.subject.getOutFieldSchemaHelper("actionIdentifiers").createNewInstance();
- actionIdentifiers.put("actionName", actionName);
- actionIdentifiers.put("blueprintName", blueprintName);
- actionIdentifiers.put("blueprintVersion", blueprintVersion);
- actionIdentifiers.put("mode", "sync");
-
- executor.outFields.put("commonHeader", commonHeader);
- executor.outFields.put("actionIdentifiers", actionIdentifiers);
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: []
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
-
- var payloadProperties = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance(changeType + "_DasH_subscription_DasH_properties_record");
-
- payloadProperties.put("nfName", pmSubscriptionInfo.get("nfName"))
- payloadProperties.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- payloadProperties.put("administrativeState", pmSubscriptionInfo.get("subscription").get("administrativeState"))
- payloadProperties.put("fileBasedGP", pmSubscriptionInfo.get("subscription").get("fileBasedGP").toString())
- payloadProperties.put("fileLocation", pmSubscriptionInfo.get("subscription").get("fileLocation"))
- payloadProperties.put("measurementGroups", pmSubscriptionInfo.get("subscription").get("measurementGroups"))
-
- var payloadEntry = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance("CDSRequestPayloadEntry");
- payloadEntry.put(changeType + "_DasH_subscription_DasH_properties", payloadProperties)
-
- var payload = executor.subject.getOutFieldSchemaHelper("payload").createNewInstance();
- payload.put(changeType + "_DasH_subscription_DasH_request", payloadEntry);
-
- executor.outFields.put("albumID", executor.inFields.get("albumID"))
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: []
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
- var blueprintName = pmSubscriptionInfo.get("blueprintName").toLowerCase()
- var blueprintVersion = pmSubscriptionInfo.get("blueprintVersion").toLowerCase()
- var payload = executor.inFields.get("payload")
- var actionName = changeType + "-subscription"
-
- var commonHeader = executor.subject.getOutFieldSchemaHelper("commonHeader").createNewInstance();
- commonHeader.put("originatorId", "sdnc");
- commonHeader.put("requestId", executor.inFields.get("albumID").toString());
- commonHeader.put("subRequestId", "sub-123456-1000");
-
- var actionIdentifiers = executor.subject.getOutFieldSchemaHelper("actionIdentifiers").createNewInstance();
- actionIdentifiers.put("actionName", actionName);
- actionIdentifiers.put("blueprintName", blueprintName);
- actionIdentifiers.put("blueprintVersion", blueprintVersion);
- actionIdentifiers.put("mode", "sync");
-
- executor.outFields.put("commonHeader", commonHeader);
- executor.outFields.put("actionIdentifiers", actionIdentifiers);
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- value:
- key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- inputFields:
- entry:
- - key: blueprintName
- value:
- key: blueprintName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: blueprintVersion
- value:
- key: blueprintVersion
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: changeType
- value:
- key: changeType
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: closedLoopControlName
- value:
- key: closedLoopControlName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: nfName
- value:
- key: nfName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: policyName
- value:
- key: policyName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: subscription
- value:
- key: subscription
- fieldSchemaKey:
- name: SubscriptionType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: []
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
- var uuidType = java.util.UUID;
-
- executor.logger.info(executor.subject.id);
-
- //albumID will be used to fetch info from our album later
- var albumID = uuidType.randomUUID();
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").getSchemaHelper().createNewInstance();
- var returnValue = true;
-
- if(executor.inFields.get("policyName") != null) {
- executor.logger.info("nfName in receive sub event " + executor.inFields.get("nfName"));
-
- var changeType = executor.inFields.get("changeType")
- var nfName = executor.inFields.get("nfName")
- var policyName = executor.inFields.get("policyName")
- var closedLoopControlName = executor.inFields.get("closedLoopControlName")
- var subscription = executor.inFields.get("subscription")
- var blueprintName = executor.inFields.get("blueprintName")
- var blueprintVersion = executor.inFields.get("blueprintVersion")
-
- pmSubscriptionInfo.put("nfName", executor.inFields.get("nfName"));
- pmSubscriptionInfo.put("changeType", executor.inFields.get("changeType"))
- pmSubscriptionInfo.put("policyName", executor.inFields.get("policyName"))
- pmSubscriptionInfo.put("closedLoopControlName", executor.inFields.get("closedLoopControlName"))
- pmSubscriptionInfo.put("subscription", subscription)
- pmSubscriptionInfo.put("blueprintName", blueprintName)
- pmSubscriptionInfo.put("blueprintVersion", blueprintVersion)
-
-
- executor.getContextAlbum("PMSubscriptionAlbum").put(albumID.toString(), pmSubscriptionInfo);
-
- executor.outFields.put("albumID", albumID)
- } else {
- executor.message = "Received invalid event"
- returnValue = false;
- }
-
- returnValue;
- events:
- key:
- name: PMControlPolicy_Events
- version: 0.0.1
- eventMap:
- entry:
- - key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: CDS
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- - key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: CDS
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- - key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: DCAE
- parameter:
- entry:
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: SubscriptionStatusType
- version: 0.0.1
- optional: false
- - key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: MRResponseEvent
- version: 0.0.1
- value:
- key:
- name: MRResponseEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: DCAE
- target: APEX
- parameter:
- entry:
- - key: count
- value:
- key: count
- fieldSchemaKey:
- name: SimpleIntType
- version: 0.0.1
- optional: false
- - key: serverTimeMs
- value:
- key: serverTimeMs
- fieldSchemaKey:
- name: SimpleIntType
- version: 0.0.1
- optional: false
- - key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key:
- name: pmsh-operational-policy
- version: 0.0.1
- value:
- key:
- name: pmsh-operational-policy
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: DCAE
- target: APEX
- parameter:
- entry:
- - key: blueprintName
- value:
- key: blueprintName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: blueprintVersion
- value:
- key: blueprintVersion
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: changeType
- value:
- key: changeType
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: closedLoopControlName
- value:
- key: closedLoopControlName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: nfName
- value:
- key: nfName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: policyName
- value:
- key: policyName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: subscription
- value:
- key: subscription
- fieldSchemaKey:
- name: SubscriptionType
- version: 0.0.1
- optional: false
- albums:
- key:
- name: PMControlPolicy_Albums
- version: 0.0.1
- albums:
- entry:
- - key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- scope: policy
- isWritable: true
- itemSchema:
- name: PMSubscriptionType
- version: 0.0.1
- schemas:
- key:
- name: PMControlPolicy_Schemas
- version: 0.0.1
- schemas:
- entry:
- - key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- value:
- key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ActionIdentifiers_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "actionName",
- "type": "string"
- },
- {
- "name": "blueprintName",
- "type": "string"
- },
- {
- "name": "blueprintVersion",
- "type": "string"
- },
- {
- "name": "mode",
- "type": "string"
- }
- ]
- }
- - key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "name": "CreateResponsePayloadEntry",
- "type": "record",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "create_DasH_subscription_DasH_response",
- "type": {
- "name": "create_DasH_subscription_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "odl_DasH_response",
- "type": {
- "name": "odl_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "status",
- "type": "string"
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- - key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "map",
- "values": {
- "type": "record",
- "name": "CDSRequestPayloadEntry",
- "fields": [
- {
- "name": "create_DasH_subscription_DasH_properties",
- "type": {
- "name": "create_DasH_subscription_DasH_properties_record",
- "type": "record",
- "fields": [
- {
- "name": "nfName",
- "type": "string"
- },
- {
- "name": "subscriptionName",
- "type": "string"
- },
- {
- "name": "administrativeState",
- "type": "string"
- },
- {
- "name": "fileBasedGP",
- "type": "string"
- },
- {
- "name": "fileLocation",
- "type": "string"
- },
- {
- "name": "measurementGroups",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementGroups_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementGroup",
- "type": {
- "name": "measurementGroup",
- "type": "record",
- "fields": [
- {
- "name": "measurementTypes",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementTypes_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementType",
- "type": "string"
- }
- ]
- }
- }
- },
- {
- "name": "managedObjectDNsBasic",
- "type": {
- "type": "array",
- "items": {
- "name": "managedObjectDNsBasic_record",
- "type": "record",
- "fields": [
- {
- "name": "DN",
- "type": "string"
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- - key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "name": "DeleteResponsePayloadEntry",
- "type": "record",
- "namespace": "com.acme.avro",
- "fields": [
- {
- "name": "delete_DasH_subscription_DasH_response",
- "type": {
- "name": "delete_DasH_subscription_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "odl_DasH_response",
- "type": {
- "name": "odl_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "status",
- "type": "string"
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- - key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "map",
- "values": {
- "type": "record",
- "name": "CDSRequestPayloadEntry",
- "fields": [
- {
- "name": "delete_DasH_subscription_DasH_properties",
- "type": {
- "name": "delete_DasH_subscription_DasH_properties_record",
- "type": "record",
- "fields": [
- {
- "name": "nfName",
- "type": "string"
- },
- {
- "name": "subscriptionName",
- "type": "string"
- },
- {
- "name": "administrativeState",
- "type": "string"
- },
- {
- "name": "fileBasedGP",
- "type": "string"
- },
- {
- "name": "fileLocation",
- "type": "string"
- },
- {
- "name": "measurementGroups",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementGroups_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementGroup",
- "type": {
- "name": "measurementGroup",
- "type": "record",
- "fields": [
- {
- "name": "measurementTypes",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementTypes_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementType",
- "type": "string"
- }
- ]
- }
- }
- },
- {
- "name": "managedObjectDNsBasic",
- "type": {
- "type": "array",
- "items": {
- "name": "managedObjectDNsBasic_record",
- "type": "record",
- "fields": [
- {
- "name": "DN",
- "type": "string"
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- - key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "RequestCommonHeader_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "originatorId",
- "type": "string"
- },
- {
- "name": "requestId",
- "type": "string"
- },
- {
- "name": "subRequestId",
- "type": "string"
- }
- ]
- }
- - key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ResponseCommonHeader_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "originatorId",
- "type": "string"
- },
- {
- "name": "requestId",
- "type": "string"
- },
- {
- "name": "subRequestId",
- "type": "string"
- },
- {
- "name": "timestamp",
- "type": "string"
- },
- {
- "name": "flags",
- "type": ["null", "string"]
- }
- ]
- }
- - key:
- name: CDSResponseStatusType
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ResponseStatus_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "code",
- "type": "int"
- },
- {
- "name": "eventType",
- "type": "string"
- },
- {
- "name": "timestamp",
- "type": "string"
- },
- {
- "name": "message",
- "type": "string"
- }
- ]
- }
- - key:
- name: PMSubscriptionType
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: "{\n\t\"name\": \"PMSubscription\",\n\t\"type\": \"record\",\n\t\"namespace\": \"\
- org.onap.policy.apex.onap.pmcontrol\",\n\t\"fields\": [\n {\n \"name\": \"nfName\"\
- ,\n \"type\": \"string\"\n },\n\t {\n\t\t\t\"name\": \"changeType\",\n\t\t\t\"\
- type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"closedLoopControlName\",\n\t\t\t\"type\": \"\
- string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"policyName\",\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\
- {\n\t\t \"name\": \"blueprintName\",\n\t\t \"type\": \"string\"\n\t\t},\n\t\t{\n\t\t \"name\"\
- : \"blueprintVersion\",\n\t\t \"type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"subscription\"\
- ,\n\t\t\t\"type\": {\n\t\t\t\t\"name\": \"subscription\",\n\t\t\t\t\"type\": \"record\",\n\t\t\t\t\
- \"fields\": [{\n\t\t\t\t\t\t\"name\": \"subscriptionName\",\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\
- \t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"administrativeState\",\n\t\t\t\t\t\t\"type\": \"string\"\
- \n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"fileBasedGP\",\n\t\t\t\t\t\t\"type\": \"int\"\
- \n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"fileLocation\",\n\t\t\t\t\t\t\"type\": \"string\"\
- \n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"measurementGroups\",\n\t\t\t\t\t\t\"type\": {\n\
- \t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\"name\": \"Measurement_Groups_Type\"\
- ,\n\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\"name\"\
- : \"measurementGroup\",\n\t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\t\t\t\t\t\t\"name\": \"Measurement_Group_Type\"\
- ,\n\t\t\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\
- \t\t\t\t\"name\": \"measurementTypes\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\t\t\t\t\t\t\
- \t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\
- name\": \"Measurement_Types_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\
- \t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"measurementType\",\n\t\
- \t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\
- \t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\
- \t\t\t\t\t\t\t\t\"name\": \"managedObjectDNsBasic\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\
- \t\t\t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\t\
- \t\t\t\t\t\"name\": \"Managed_Object_Dns_Basic_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"record\"\
- ,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"DN\",\n\t\
- \t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\
- \t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\
- \t\t\t\t}\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\
- \t}\n\t]\n}"
- - key:
- name: SimpleIntType
- version: 0.0.1
- value:
- key:
- name: SimpleIntType
- version: 0.0.1
- schemaFlavour: Java
- schemaDefinition: java.lang.Integer
- - key:
- name: SimpleStringType
- version: 0.0.1
- value:
- key:
- name: SimpleStringType
- version: 0.0.1
- schemaFlavour: Java
- schemaDefinition: java.lang.String
- - key:
- name: SubscriptionStatusType
- version: 0.0.1
- value:
- key:
- name: SubscriptionStatusType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ActivateSubscriptionStatus_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "subscriptionName",
- "type": "string"
- },
- {
- "name": "nfName",
- "type": "string"
- },
- {
- "name": "changeType",
- "type": "string"
- },
- {
- "name": "message",
- "type": "string"
- }
- ]
- }
- - key:
- name: SubscriptionType
- version: 0.0.1
- value:
- key:
- name: SubscriptionType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: "{\n\t\"name\": \"subscription\",\n\t\"type\": \"record\",\n\t\"fields\": [{\n\t\t\
- \t\"name\": \"subscriptionName\",\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"administrativeState\"\
- ,\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"fileBasedGP\",\n\t\t\t\"type\": \"\
- int\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"fileLocation\",\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\
- {\n\t\t\t\"name\": \"measurementGroups\",\n\t\t\t\"type\": {\n\t\t\t\t\"type\": \"array\",\n\t\t\t\
- \t\"items\": {\n\t\t\t\t\t\"name\": \"Measurement_Groups_Type\",\n\t\t\t\t\t\"type\": \"record\",\n\
- \t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\"name\": \"measurementGroup\",\n\t\t\t\t\t\t\"type\": {\n\t\
- \t\t\t\t\t\t\"name\": \"Measurement_Group_Type\",\n\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\
- \t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\"name\": \"measurementTypes\",\n\t\t\t\t\t\t\t\t\t\"type\"\
- : {\n\t\t\t\t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\t\
- \t\t\"name\": \"Measurement_Types_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\
- \t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"measurementType\",\n\t\t\t\t\t\t\t\
- \t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\
- }\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"managedObjectDNsBasic\",\n\
- \t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\"items\"\
- : {\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Managed_Object_Dns_Basic_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"\
- type\": \"record\",\n\t\t\t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"DN\"\
- ,\n\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\t\t}\n\
- \t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\
- \t\t}\n\t\t}\n\t]\n}"
- - key:
- name: UUIDType
- version: 0.0.1
- value:
- key:
- name: UUIDType
- version: 0.0.1
- schemaFlavour: Java
- schemaDefinition: java.util.UUID
- engineParameters:
- executorParameters:
- JAVASCRIPT:
- parameterClassName: org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters
- contextParameters:
- parameterClassName: org.onap.policy.apex.context.parameters.ContextParameters
- schemaParameters:
- Avro:
- parameterClassName: org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters
- Java:
- parameterClassName: org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters
- jsonAdapters:
- Instant:
- adaptedClass: java.time.Instant
- adaptorClass: org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter
- eventInputParameters:
- DCAEConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTCLIENT
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters
- parameters:
- consumerPollTime: '50'
- url: https://message-router:3905/events/unauthenticated.DCAE_CL_OUTPUT/cg1/sg1
- eventProtocolParameters:
- eventProtocol: JSON
- parameters:
- nameAlias: policyName
- eventName: pmsh-operational-policy
- eventNameFilter: pmsh-operational-policy
- CDSRequestConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- parameters:
- url: http://10.10.10.184:30254/api/v1/execution-service/process
- httpMethod: POST
- restRequestTimeout: 2000
- httpHeaders:
- - - Authorization
- - Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
- eventProtocolParameters:
- eventProtocol: JSON
- eventName: CDSCreateResponseEvent
- eventNameFilter: CDSCreateResponseEvent
- requestorMode: true
- requestorPeer: CDSRequestProducer
- requestorTimeout: 500
- CDSDeleteRequestConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- parameters:
- url: http://10.10.10.184:30254/api/v1/execution-service/process
- httpMethod: POST
- restRequestTimeout: 2000
- httpHeaders:
- - - Authorization
- - Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
- eventProtocolParameters:
- eventProtocol: JSON
- eventName: CDSDeleteResponseEvent
- eventNameFilter: CDSDeleteResponseEvent
- requestorMode: true
- requestorPeer: CDSDeleteRequestProducer
- requestorTimeout: 500
- CDSReplyConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- parameters:
- url: https://message-router:3905/events/unauthenticated.PMSH_CL_INPUT
- httpMethod: POST
- restRequestTimeout: 2000
- eventProtocolParameters:
- eventProtocol: JSON
- eventName: MRResponseEvent
- eventNameFilter: MRResponseEvent
- requestorMode: true
- requestorPeer: CDSReplyProducer
- requestorTimeout: 500
- eventOutputParameters:
- logOutputter:
- carrierTechnologyParameters:
- carrierTechnology: FILE
- parameters:
- fileName: /tmp/outputevents.log
- eventProtocolParameters:
- eventProtocol: JSON
- StdOutOutputter:
- carrierTechnologyParameters:
- carrierTechnology: FILE
- parameters:
- standardIo: true
- eventProtocolParameters:
- eventProtocol: JSON
- CDSRequestProducer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- eventProtocolParameters:
- eventProtocol: JSON
- eventNameFilter: CDSCreateSubscriptionRequestEvent
- requestorMode: true
- requestorPeer: CDSRequestConsumer
- requestorTimeout: 500
- CDSDeleteRequestProducer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- eventProtocolParameters:
- eventProtocol: JSON
- eventNameFilter: CDSDeleteSubscriptionRequestEvent
- requestorMode: true
- requestorPeer: CDSDeleteRequestConsumer
- requestorTimeout: 500
- CDSReplyProducer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- eventProtocolParameters:
- eventProtocol: JSON
- eventNameFilter: CDSResponseStatusEvent
- requestorMode: true
- requestorPeer: CDSReplyConsumer
- requestorTimeout: 500
diff --git a/runtime-controlloop/src/test/resources/rest/servicetemplates/pm_control_loop_tosca.yaml b/runtime-controlloop/src/test/resources/rest/servicetemplates/pm_control_loop_tosca.yaml
deleted file mode 100644
index 01f825fc9..000000000
--- a/runtime-controlloop/src/test/resources/rest/servicetemplates/pm_control_loop_tosca.yaml
+++ /dev/null
@@ -1,452 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_3
-capability_types:
- org.onap.EventProducer:
- properties:
- carrier_protocol_type:
- type: string
- required: true
- constraints:
- - valid_values:
- - DMAAP_message_router
- - SOMETHING_ELSE
- - REST
- data_format:
- type: string
- required: true
- constraints:
- - valid_values:
- - JSON
- - YAML
- - JMS
- event_format:
- type: string
- required: true
- event_format_version:
- type: string
- required: false
- config_keys:
- type: list
- required: false
- entry_schema:
- type: string
- constraints:
- - valid_values:
- - all valid values should be added here
- - if not specified, events of any config key may be generated
- - 'examples for config_key: ves-measurement, ves-syslog, tca_handle_out,
- etc.'
- version: 0.0.1
- derived_from: tosca.capabilities.Root
- org.onap.EventConsumer:
- properties:
- responding_capability:
- type: string
- required: false
- carrier_protocol_type:
- type: string
- required: true
- constraints:
- - valid_values:
- - DMAAP_message_router
- - SOMETHING_ELSE
- - REST
- data_format:
- type: string
- required: true
- constraints:
- - valid_values:
- - JSON
- - YAML
- - JMS
- - all valid values should be added here
- event_format:
- type: string
- description: 'examples for event_format: Ves_specification, LinkUp, VnfConfigured,
- etc.'
- required: true
- event_format_version:
- type: string
- description: 'examples for event_format_version: 5.28.4, 7.30.1, etc.'
- required: false
- config_keys:
- type: list
- required: false
- entry_schema:
- type: string
- constraints:
- - valid_values:
- - all valid values should be added here
- - if not specified, events of any config key may be generated
- - 'examples for config_key: ves-measurement, ves-syslog, tca_handle_out,
- etc.'
- version: 0.0.1
- derived_from: tosca.capabilities.Root
-node_types:
- org.onap.DynamicConfig:
- properties:
- application_name:
- type: string
- description: Value used to tie the config to an application ? should we be
- using a relationship here instead?
- required: true
- application_version:
- type: string
- required: true
- application_provider:
- type: string
- required: false
- data_types:
- type: object
- required: false
- schema:
- type: object
- required: false
- version: 0.0.1
- derived_from: tosca.nodes.Root
- org.onap.APP:
- properties:
- application_name:
- type: string
- description: Human readable name for the application Product
- required: false
- provider:
- type: string
- description: Provider of the application and of the descriptor
- required: true
- application_version:
- type: string
- description: Software version of the application
- required: true
- blueprint_id:
- type: string
- description: A reference to the app blueprint
- required: false
- monitoring_policy:
- type: string
- description: A reference to the monitoring policy
- required: false
- requirements:
- - receive:
- capability: org.onap.EventProducer
- relationship: org.onap.PropagateEvent
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- - send:
- capability: org.onap.EventConsumer
- relationship: org.onap.PropagateEvent
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- version: 0.0.1
- derived_from: tosca.nodes.Root
- org.onap.EventRelay:
- properties:
- event_format:
- type: string
- description: 'examples for event_format: Ves_specification, etc.'
- required: true
- event_format_version:
- type: string
- description: 'examples for event_format_version: 5.28.4, 7.30.1, etc.'
- required: true
- config_keys:
- type: list
- required: false
- entry_schema:
- type: string
- constraints:
- - valid_values:
- - all valid values should be added here
- - if not specified, events of any config key is relayed
- - 'examples for config_key: ves-measurement, ves-syslog, tca_handle_out,
- etc.'
- supported_carrier_protocols:
- type: map
- description: 'A map describing supported carrier protocols and translations.
- The tuples define what protocol combinations are supported on the producer
- and consumer side: e.g. { REST: REST, DMAAP: REST, DMAAP: DMAAP}'
- required: true
- key_schema:
- type: string
- constraints:
- - valid_values:
- - DMAAP_message_router
- - SOMETHING_ELSE
- - REST
- - all valid values should be added here
- entry_schema:
- type: string
- constraints:
- - valid_values:
- - DMAAP_message_router
- - SOMETHING_ELSE
- - REST
- - all valid values should be added here
- supported_data_formats:
- type: map
- description: 'Is a map describing supported data formats and translation.
- The tuples define what protocol combinations are supported on the producer
- and consumer side: e.g. { JSON: JSON, JMS: JSON, YAML:YAML }'
- required: true
- key_schema:
- type: string
- constraints:
- - valid_values:
- - JSON
- - JMS
- - YAML
- - etc
- - all valid values should be added here
- entry_schema:
- type: string
- constraints:
- - valid_values:
- - JSON
- - JMS
- - YAML
- - etc
- - all valid values should be added here
- requirements:
- - receive:
- capability: org.onap.EventProducer
- relationship: org.onap.PropagateEvent
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- - send:
- capability: org.onap.EventConsumer
- relationship: org.onap.PropagateEvent
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- version: 0.0.1
- derived_from: tosca.nodes.Root
-relationship_types:
- org.onap.PropagateEvent:
- properties:
- config_keys:
- type: list
- description: The relationship type used on requirements to org.onap.EventProducer
- and org.onap.EventConsumer capabilities. Filters events by specific config_keys
- to be transferred by this relationship. That is, any event with a specific
- config_key found in the list is transferred. If list is not defined or is
- empty, events with all config_keys are transferred.
- required: false
- entry_schema:
- type: string
- version: 0.0.1
- derived_from: tosca.relationships.Root
-topology_template:
- inputs:
- pm_subscription_topic:
- type: string
- pm_subscription_response_topic:
- type: string
- pm_subscription_handler_blueprint_id:
- type: string
- pm_subscription_operational_policy_id:
- type: string
- pm_subscription_cds_blueprint_id:
- type: string
- enable_tls:
- type: string
- node_templates:
- org.onap.PM_Subscription_Handler:
- type: org.onap.APP
- properties:
- application_name: PM Subscription Handler
- provider: Ericsson
- application_version: 1.0.0
- artifact_id:
- get_input: pm_subscription_handler_blueprint_id
- description: Is this a reference to the DCAE Cloudify Blueprint that is
- already stored(or will be stored before CL configuration & instatiation)
- in DCAE Inventory?
- artifact_config:
- enable_tls:
- get_input: enable_tls
- pmsh_publish_topic_name:
- get_input: pm_subscription_topic
- capabilities:
- pm-subscription-event-publisher:
- properties:
- carrier_protocol_type: DMAAP_message_router
- data_format: JSON
- event_format: pm-subscription-event-format
- event_format_version: 1.0.0
- attributes:
- type: org.onap.EventProducer
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- pm-subscription-event-receiver:
- properties:
- carrier_protocol_type: DMAAP_message_router
- data_format: JSON
- event_format: pm-subscription-event-response-format
- event_format_version: 1.0.0
- relationships:
- - type: tosca.relationships.DependsOn
- - description: any ideas on a better realtionship ? or is it better to
- just use the root realtionship ?
- - target: org.onap.PM_Monitoring_Policy
- attributes:
- type: org.onap.EventConsumer
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- version: 0.0.0
- org.onap.PM_Monitoring_Policy:
- type: org.onap.DynamicConfig
- properties:
- application_name: PM Subscription Handler
- application_version: 1.0.0
- provider: Ericsson
- data_types:
- measurementType:
- type: string
- DN:
- type: string
- nfFilter:
- properties:
- nfNames:
- type: list
- entry_schema: string
- modelInvariantIDs:
- type: list
- entry_schema:
- type: string
- modelVersionIDs:
- type: list
- entry_schema:
- type: string
- measurementGroup:
- properties:
- masurementTypes:
- type: list
- entry_schema:
- type: measurementType
- managedObjectDNsBasic:
- type: list
- entry_schema:
- type: DN
- schema:
- subscription:
- subscriptionName:
- type: string
- required: true
- administrativeState:
- type: string
- required: true
- filebasedGP:
- type: integer
- required: true
- fileLocation:
- type: string
- required: true
- nfFilter:
- type: nfFilter
- measurementGroups:
- type: list
- entry_schema:
- type: measurementGroup
- version: 0.0.0
- description: Should I be showing a dependency between PM Subscription Handler
- and the PM Monitoring Policy
- org.onap.PM_Policy:
- type: org.onap.APP
- properties:
- application_name: PM Subscription Operational Policy
- provider: Ericsson
- application_version: 1.0.0
- artifact_id:
- get_input: pm_subscription_operational_policy_id
- artifact_config: NOT_DEFINED
- requirements:
- - receive_0:
- capability: pm-subscription-event-publisher
- node: org.onap.PM_Subscription_Handler
- relationship: NOT_DEFINED
- properties:
- config_keys:
- - topic_name:
- get_input: pm_subscription_topic
- version: 0.0.0
- - send_0:
- capability: cds-rest-receive
- node: org.onap.CDS
- version: 0.0.0
- - receive_1:
- capability: cds-rest-response
- node: org.onap.CDS
- version: 0.0.0
- - send_1:
- capability: pm-subscription-event-receiver
- node: org.onap.PM_Subscription_Handler
- relationship: NOT_DEFINED
- properties:
- config_keys:
- - topic_name:
- get_input: pm_subscription_response_topic
- version: 0.0.0
- capabilities:
- pm-subscription-response-event-publisher:
- properties:
- type: org.onap.EventProducer
- carrier_protocol_type: DMAAP_message_router
- data_format: JSON
- event_format: pm-subscription-event-response-format
- event_format_version: 1.0.0
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- version: 0.0.0
- org.onap.PM_CDS_Blueprint:
- type: org.onap.APP
- properties:
- application_name: PM Subscription CDS Blueprint
- provider: Ericsson
- application_version: 1.0.0
- artifact_id:
- get_input: pm_subscription_cds_blueprint_id
- capabilities:
- cds-rest-receive:
- properties:
- type: org.onap.EventConsumer
- protocol_type: REST
- data_format: JSON
- event_format: cds_action_format
- event_format_version: 1.0.0
- responding_capability: cds-rest-response
- occurrences:
- - 0.0
- - UNBOUNDED
- version: 0.0.0
- cds-rest-response:
- properties:
- type: org.onap.EventProducer
- protocol_type: REST
- data_format: JSON
- event_format: cds_action_response_format
- event_format_version: 1.0.0
- occurrences:
- - 0.0
- version: 0.0.0
- version: 0.0.0
- org.onap.controlloop0:
- type: org.onap.APP
- properties:
- application_name: Test Control Loop
- provider: Ericsson
- application_version: 1.0.0
- status: NOT_DEPLOYED
- version: 0.0.0
-version: 0.0.0
diff --git a/runtime-controlloop/src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml b/runtime-controlloop/src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml
deleted file mode 100644
index 9c440b42b..000000000
--- a/runtime-controlloop/src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml
+++ /dev/null
@@ -1,238 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_3
-data_types:
- onap.datatypes.ToscaConceptIdentifier:
- derived_from: tosca.datatypes.Root
- properties:
- name:
- type: string
- required: true
- version:
- type: string
- required: true
-node_types:
- org.onap.policy.clamp.controlloop.Participant:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- org.onap.policy.clamp.controlloop.ControlLoopElement:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- participantType:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- startPhase:
- type: integer
- required: false
- constraints:
- - greater-or-equal: 0
- metadata:
- common: true
- description: A value indicating the start phase in which this control loop element will be started, the
- first start phase is zero. Control Loop Elements are started in their start_phase order and stopped
- in reverse start phase order. Control Loop Elements with the same start phase are started and
- stopped simultaneously
- org.onap.policy.clamp.controlloop.ControlLoop:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- elements:
- type: list
- required: true
- entry_schema:
- type: onap.datatypes.ToscaConceptIdentifier
- org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- dcae_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- org.onap.policy.clamp.controlloop.CDSControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- cds_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
-topology_template:
- node_templates:
- org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant:
- version: 2.3.4
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.policy.controlloop.PolicyControlLoopParticipant:
- version: 2.2.1
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant:
- version: 2.2.1
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.domain.pmsh.PMSH_DCAEMicroservice:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the DCAE microservice for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant
- version: 2.3.4
- dcae_blueprint_id:
- name: org.onap.dcae.blueprints.PMSHBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the monitoring policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the operational policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.operational.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoopElement
- type_version: 1.0.0
- description: Control loop element for CDS for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant
- version: 3.2.1
- cds_blueprint_id:
- name: org.onap.ccsdk.cds.PMSHCdsBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSHControlLoopDefinition:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoop
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSH_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_CDS_ControlLoopElement
- version: 1.2.3
- org.onap.domain.pmsh.PMSD_DCAEMicroservice:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the DCAE microservice for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant
- version: 2.3.4
- dcae_blueprint_id:
- name: org.onap.dcae.blueprints.PMSDBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSD_MonitoringPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the monitoring policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- policy_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSD_OperationalPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyTypeControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the operational policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.2.1
- policy_type_id:
- name: onap.policies.operational.pm-subscription-handler
- version: 1.0.0
- policy_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- org.onap.domain.pmsh.PMSD_CDS_ControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoopElement
- type_version: 1.0.0
- description: Control loop element for CDS for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.ccsdk.cds.controlloop.CdsControlLoopParticipant
- version: 3.2.1
- cds_blueprint_id:
- name: org.onap.ccsdk.cds.PMSDCdsBlueprint
- version: 1.0.0
- org.onap.domain.pmsh.PMSDControlLoopDefinition:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoop
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSD_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSD_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSD_OperationalPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSD_CDS_ControlLoopElement
- version: 1.2.3
diff --git a/runtime-controlloop/src/test/resources/rest/servicetemplates/tosca-for-smoke-testing.yaml b/runtime-controlloop/src/test/resources/rest/servicetemplates/tosca-for-smoke-testing.yaml
deleted file mode 100644
index 9d1b7be64..000000000
--- a/runtime-controlloop/src/test/resources/rest/servicetemplates/tosca-for-smoke-testing.yaml
+++ /dev/null
@@ -1,3488 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_3
-data_types:
- onap.datatypes.ToscaConceptIdentifier:
- derived_from: tosca.datatypes.Root
- properties:
- name:
- type: string
- required: true
- version:
- type: string
- required: true
- onap.datatype.controlloop.Target:
- derived_from: tosca.datatypes.Root
- description: Definition for a entity in A&AI to perform a control loop operation on
- properties:
- targetType:
- type: string
- description: Category for the target type
- required: true
- constraints:
- - valid_values:
- - VNF
- - VM
- - VFMODULE
- - PNF
- entityIds:
- type: map
- description: |
- Map of values that identify the resource. If none are provided, it is assumed that the
- entity that generated the ONSET event will be the target.
- required: false
- metadata:
- clamp_possible_values: ClampExecution:CSAR_RESOURCES
- entry_schema:
- type: string
- onap.datatype.controlloop.Actor:
- derived_from: tosca.datatypes.Root
- description: An actor/operation/target definition
- properties:
- actor:
- type: string
- description: The actor performing the operation.
- required: true
- metadata:
- clamp_possible_values: Dictionary:DefaultActors,ClampExecution:CDS/actor
- operation:
- type: string
- description: The operation the actor is performing.
- metadata:
- clamp_possible_values: Dictionary:DefaultOperations,ClampExecution:CDS/operation
- required: true
- target:
- type: onap.datatype.controlloop.Target
- description: The resource the operation should be performed on.
- required: true
- payload:
- type: map
- description: Name/value pairs of payload information passed by Policy to the actor
- required: false
- metadata:
- clamp_possible_values: ClampExecution:CDS/payload
- entry_schema:
- type: string
- onap.datatype.controlloop.Operation:
- derived_from: tosca.datatypes.Root
- description: An operation supported by an actor
- properties:
- id:
- type: string
- description: Unique identifier for the operation
- required: true
- description:
- type: string
- description: A user-friendly description of the intent for the operation
- required: false
- operation:
- type: onap.datatype.controlloop.Actor
- description: The definition of the operation to be performed.
- required: true
- timeout:
- type: integer
- description: The amount of time for the actor to perform the operation.
- required: true
- retries:
- type: integer
- description: The number of retries the actor should attempt to perform the operation.
- required: true
- default: 0
- success:
- type: string
- description: Points to the operation to invoke on success. A value of "final_success" indicates and end to the operation.
- required: false
- default: final_success
- failure:
- type: string
- description: Points to the operation to invoke on Actor operation failure.
- required: false
- default: final_failure
- failure_timeout:
- type: string
- description: Points to the operation to invoke when the time out for the operation occurs.
- required: false
- default: final_failure_timeout
- failure_retries:
- type: string
- description: Points to the operation to invoke when the current operation has exceeded its max retries.
- required: false
- default: final_failure_retries
- failure_exception:
- type: string
- description: Points to the operation to invoke when the current operation causes an exception.
- required: false
- default: final_failure_exception
- failure_guard:
- type: string
- description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.
- required: false
- default: final_failure_guard
- onap.datatypes.monitoring.managedObjectDNsBasic:
- constraints: []
- properties:
- DN:
- name: DN
- type: string
- typeVersion: 0.0.0
- description: Managed object distinguished name
- required: true
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.managedObjectDNsBasic
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.managedObjectDNsBasics:
- constraints: []
- properties:
- managedObjectDNsBasic:
- name: managedObjectDNsBasic
- type: map
- typeVersion: 0.0.0
- description: Managed object distinguished name object
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.managedObjectDNsBasic
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.managedObjectDNsBasics
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementGroup:
- constraints: []
- properties:
- measurementTypes:
- name: measurementTypes
- type: list
- typeVersion: 0.0.0
- description: List of measurement types
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementTypes
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- managedObjectDNsBasic:
- name: managedObjectDNsBasic
- type: list
- typeVersion: 0.0.0
- description: List of managed object distinguished names
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.managedObjectDNsBasics
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementGroup
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementGroups:
- constraints: []
- properties:
- measurementGroup:
- name: measurementGroup
- type: map
- typeVersion: 0.0.0
- description: Measurement Group
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementGroup
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementGroups
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementType:
- constraints: []
- properties:
- measurementType:
- name: measurementType
- type: string
- typeVersion: 0.0.0
- description: Measurement type
- required: true
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementType
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementTypes:
- constraints: []
- properties:
- measurementType:
- name: measurementType
- type: map
- typeVersion: 0.0.0
- description: Measurement type object
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementType
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementTypes
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.nfFilter:
- constraints: []
- properties:
- modelNames:
- name: modelNames
- type: list
- typeVersion: 0.0.0
- description: List of model names
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- modelInvariantIDs:
- name: modelInvariantIDs
- type: list
- typeVersion: 0.0.0
- description: List of model invariant IDs
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- modelVersionIDs:
- name: modelVersionIDs
- type: list
- typeVersion: 0.0.0
- description: List of model version IDs
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- nfNames:
- name: nfNames
- type: list
- typeVersion: 0.0.0
- description: List of network functions
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.nfFilter
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.subscription:
- constraints: []
- properties:
- measurementGroups:
- name: measurementGroups
- type: list
- typeVersion: 0.0.0
- description: Measurement Groups
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementGroups
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- fileBasedGP:
- name: fileBasedGP
- type: integer
- typeVersion: 0.0.0
- description: File based granularity period
- required: true
- constraints: []
- metadata: {}
- fileLocation:
- name: fileLocation
- type: string
- typeVersion: 0.0.0
- description: ROP file location
- required: true
- constraints: []
- metadata: {}
- subscriptionName:
- name: subscriptionName
- type: string
- typeVersion: 0.0.0
- description: Name of the subscription
- required: true
- constraints: []
- metadata: {}
- administrativeState:
- name: administrativeState
- type: string
- typeVersion: 0.0.0
- description: State of the subscription
- required: true
- constraints:
- - valid_values:
- - LOCKED
- - UNLOCKED
- metadata: {}
- nfFilter:
- name: nfFilter
- type: map
- typeVersion: 0.0.0
- description: Network function filter
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.nfFilter
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.subscription
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.RestRequest:
- version: 1.0.0
- derived_from: tosca.datatypes.Root
- properties:
- restRequestId:
- type: onap.datatypes.ToscaConceptIdentifier
- typeVersion: 1.0.0
- required: true
- description: The name and version of a REST request to be sent to a REST endpoint
- httpMethod:
- type: string
- required: true
- constraints:
- - valid_values: [POST, PUT, GET, DELETE]
- description: The REST method to use
- path:
- type: string
- required: true
- description: The path of the REST request relative to the base URL
- body:
- type: string
- required: false
- description: The body of the REST request for PUT and POST requests
- expectedResponse:
- type: integer
- required: true
- constraints: []
- description: THe expected HTTP status code for the REST request
- org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.ConfigurationEntity:
- version: 1.0.0
- derived_from: tosca.datatypes.Root
- properties:
- configurationEntityId:
- type: onap.datatypes.ToscaConceptIdentifier
- typeVersion: 1.0.0
- required: true
- description: The name and version of a Configuration Entity to be handled by the HTTP Control Loop Element
- restSequence:
- type: list
- entry_schema:
- type: org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.RestRequest
- typeVersion: 1.0.0
- description: A sequence of REST commands to send to the REST endpoint
-policy_types:
- onap.policies.Monitoring:
- derived_from: tosca.policies.Root
- description: a base policy type for all policies that govern monitoring provisioning
- version: 1.0.0
- name: onap.policies.Monitoring
- onap.policies.Sirisha:
- derived_from: tosca.policies.Root
- description: a base policy type for all policies that govern monitoring provisioning
- version: 1.0.0
- name: onap.policies.Sirisha
- onap.policies.monitoring.dcae-pm-subscription-handler:
- properties:
- pmsh_policy:
- name: pmsh_policy
- type: onap.datatypes.monitoring.subscription
- typeVersion: 0.0.0
- description: PMSH Policy JSON
- required: false
- constraints: []
- metadata: {}
- name: onap.policies.monitoring.dcae-pm-subscription-handler
- version: 1.0.0
- derived_from: onap.policies.Monitoring
- metadata: {}
- onap.policies.controlloop.operational.Common:
- derived_from: tosca.policies.Root
- version: 1.0.0
- name: onap.policies.controlloop.operational.Common
- description: |
- Operational Policy for Control Loop execution. Originated in Frankfurt to support TOSCA Compliant
- Policy Types. This does NOT support the legacy Policy YAML policy type.
- properties:
- id:
- type: string
- description: The unique control loop id.
- required: true
- timeout:
- type: integer
- description: |
- Overall timeout for executing all the operations. This timeout should equal or exceed the total
- timeout for each operation listed.
- required: true
- abatement:
- type: boolean
- description: Whether an abatement event message will be expected for the control loop from DCAE.
- required: true
- default: false
- trigger:
- type: string
- description: Initial operation to execute upon receiving an Onset event message for the Control Loop.
- required: true
- operations:
- type: list
- description: List of operations to be performed when Control Loop is triggered.
- required: true
- entry_schema:
- type: onap.datatype.controlloop.Operation
- onap.policies.controlloop.operational.common.Apex:
- derived_from: onap.policies.controlloop.operational.Common
- type_version: 1.0.0
- version: 1.0.0
- name: onap.policies.controlloop.operational.common.Apex
- description: Operational policies for Apex PDP
- properties:
- engineServiceParameters:
- type: string
- description: The engine parameters like name, instanceCount, policy implementation, parameters etc.
- required: true
- eventInputParameters:
- type: string
- description: The event input parameters.
- required: true
- eventOutputParameters:
- type: string
- description: The event output parameters.
- required: true
- javaProperties:
- type: string
- description: Name/value pairs of properties to be set for APEX if needed.
- required: false
-node_types:
- org.onap.policy.clamp.controlloop.Participant:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- org.onap.policy.clamp.controlloop.ControlLoopElement:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- required: false
- metadata:
- common: true
- description: Specifies the organization that provides the control loop element
- participant_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- metadata:
- common: true
- participantType:
- type: onap.datatypes.ToscaConceptIdentifier
- required: true
- metadata:
- common: true
- description: The identity of the participant type that hosts this type of Control Loop Element
- startPhase:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- metadata:
- common: true
- description: A value indicating the start phase in which this control loop element will be started, the
- first start phase is zero. Control Loop Elements are started in their start_phase order and stopped
- in reverse start phase order. Control Loop Elements with the same start phase are started and
- stopped simultaneously
- uninitializedToPassiveTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from uninitialized to passive
- passiveToRunningTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from passive to running
- runningToPassiveTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from running to passive
- passiveToUninitializedTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from passive to uninitialized
- org.onap.policy.clamp.controlloop.ControlLoop:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- required: false
- metadata:
- common: true
- description: Specifies the organization that provides the control loop element
- elements:
- type: list
- required: true
- metadata:
- common: true
- entry_schema:
- type: onap.datatypes.ToscaConceptIdentifier
- description: Specifies a list of control loop element definitions that make up this control loop definition
- org.onap.policy.clamp.controlloop.PolicyControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- policy_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- org.onap.policy.clamp.controlloop.CDSControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- cds_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- chart:
- type: string
- required: true
- configs:
- type: list
- required: false
- requirements:
- type: string
- requred: false
- templates:
- type: list
- required: false
- entry_schema:
- values:
- type: string
- requred: true
- org.onap.policy.clamp.controlloop.HttpControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- baseUrl:
- type: string
- required: true
- description: The base URL to be prepended to each path, identifies the host for the REST endpoints.
- httpHeaders:
- type: map
- required: false
- entry_schema:
- type: string
- description: HTTP headers to send on REST requests
- configurationEntities:
- type: map
- required: true
- entry_schema:
- type: org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.ConfigurationEntity
- typeVersion: 1.0.0
- description: The connfiguration entities the Control Loop Element is managing and their associated REST requests
-
-topology_template:
- inputs:
- pmsh_monitoring_policy:
- type: onap.datatypes.ToscaConceptIdentifier
- description: The ID of the PMSH monitoring policy to use
- default:
- name: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- version: 1.0.0
- pmsh_operational_policy:
- type: onap.datatypes.ToscaConceptIdentifier
- description: The ID of the PMSH operational policy to use
- default:
- name: operational.apex.pmcontrol
- version: 1.0.0
- node_templates:
- org.onap.policy.controlloop.PolicyControlLoopParticipant:
- version: 2.3.1
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the monitoring policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participant_id:
- name: org.onap.PM_Policy
- version: 1.0.0
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.3.1
- policy_type_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- policy_id:
- get_input: pmsh_monitoring_policy
- org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the operational policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participant_id:
- name: org.onap.PM_Policy
- version: 1.0.0
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.3.1
- policy_type_id:
- name: onap.policies.operational.pm-subscription-handler
- version: 1.0.0
- policy_id:
- get_input: pmsh_operational_policy
- org.onap.k8s.controlloop.K8SControlLoopParticipant:
- version: 2.3.4
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for K8S
- properties:
- provider: ONAP
- org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement:
- # Chart from new repository
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the K8S microservice for PMSH
- properties:
- provider: ONAP
- participant_id:
- name: K8sParticipant0
- version: 1.0.0
- participantType:
- name: org.onap.k8s.controlloop.K8SControlLoopParticipant
- version: 2.3.4
- chart:
- chartId:
- name: dcae-pmsh
- version: 8.0.0
- namespace: onap
- releaseName: pmshms
- repository:
- repoName: chartmuseum
- protocol: http
- address: 10.152.183.120
- port: 80
- userName: onapinitializer
- password: demo123456!
- overrideParams:
- global.masterPassword: test
-
- org.onap.domain.database.Local_K8SMicroserviceControlLoopElement:
- # Chart installation without passing repository info
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the K8S microservice for local chart
- properties:
- provider: ONAP
- participant_id:
- name: K8sParticipant0
- version: 1.0.0
- participantType:
- name: org.onap.k8s.controlloop.K8SControlLoopParticipant
- version: 2.3.4
- chart:
- chartId:
- name: nginx-ingress
- version: 0.9.1
- releaseName: nginxms
- namespace: test
- org.onap.controlloop.HttpControlLoopParticipant:
- version: 2.3.4
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for Http requests
- properties:
- provider: ONAP
- org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement:
- # Consul http config for PMSH.
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.HttpControlLoopElement
- type_version: 1.0.1
- description: Control loop element for the http requests of PMSH microservice
- properties:
- provider: ONAP
- participant_id:
- name: HttpParticipant0
- version: 1.0.0
- participantType:
- name: org.onap.k8s.controlloop.HttpControlLoopParticipant
- version: 2.3.4
- uninitializedToPassiveTimeout: 180
- startPhase: 1
- baseUrl: http://10.152.183.51:8500
- httpHeaders:
- Content-Type: application/json
- configurationEntities:
- - configurationEntityId:
- name: entity1
- version: 1.0.1
- restSequence:
- - restRequestId:
- name: request1
- version: 1.0.1
- httpMethod: PUT
- path: v1/kv/dcae-pmsh2
- body: '{
- "control_loop_name":"pmsh-control-loop",
- "operational_policy_name":"pmsh-operational-policy",
- "aaf_password":"demo123456!",
- "aaf_identity":"dcae@dcae.onap.org",
- "cert_path":"/opt/app/pmsh/etc/certs/cert.pem",
- "key_path":"/opt/app/pmsh/etc/certs/key.pem",
- "ca_cert_path":"/opt/app/pmsh/etc/certs/cacert.pem",
- "enable_tls":"true",
- "pmsh_policy":{
- "subscription":{
- "subscriptionName":"ExtraPM-All-gNB-R2B",
- "administrativeState":"UNLOCKED",
- "fileBasedGP":15,
- "fileLocation":"\/pm\/pm.xml",
- "nfFilter":{
- "nfNames":[
- "^pnf.*",
- "^vnf.*"
- ],
- "modelInvariantIDs":[
- ],
- "modelVersionIDs":[
- ],
- "modelNames":[
- ]
- },
- "measurementGroups":[
- {
- "measurementGroup":{
- "measurementTypes":[
- {
- "measurementType":"countera"
- },
- {
- "measurementType":"counterb"
- }
- ],
- "managedObjectDNsBasic":[
- {
- "DN":"dna"
- },
- {
- "DN":"dnb"
- }
- ]
- }
- },
- {
- "measurementGroup":{
- "measurementTypes":[
- {
- "measurementType":"counterc"
- },
- {
- "measurementType":"counterd"
- }
- ],
- "managedObjectDNsBasic":[
- {
- "DN":"dnc"
- },
- {
- "DN":"dnd"
- }
- ]
- }
- }
- ]
- }
- },
- "streams_subscribes":{
- "aai_subscriber":{
- "type":"message_router",
- "dmaap_info":{
- "topic_url":"https://10.152.183.151:3905/events/AAI_EVENT",
- "client_role":"org.onap.dcae.aaiSub",
- "location":"san-francisco",
- "client_id":"1575976809466"
- }
- },
- "policy_pm_subscriber":{
- "type":"message_router",
- "dmaap_info":{
- "topic_url":"https://10.152.183.151:3905/events/org.onap.dmaap.mr.PM_SUBSCRIPTIONS",
- "client_role":"org.onap.dcae.pmSubscriber",
- "location":"san-francisco",
- "client_id":"1575876809456"
- }
- }
- },
- "streams_publishes":{
- "policy_pm_publisher":{
- "type":"message_router",
- "dmaap_info":{
- "topic_url":"https://10.152.183.151:3905/events/org.onap.dmaap.mr.PM_SUBSCRIPTIONS",
- "client_role":"org.onap.dcae.pmPublisher",
- "location":"san-francisco",
- "client_id":"1475976809466"
- }
- },
- "other_publisher":{
- "type":"message_router",
- "dmaap_info":{
- "topic_url":"https://10.152.183.151:3905/events/org.onap.dmaap.mr.SOME_OTHER_TOPIC",
- "client_role":"org.onap.dcae.pmControlPub",
- "location":"san-francisco",
- "client_id":"1875976809466"
- }
- }
- }
- }'
- expectedResponse: 200
- org.onap.domain.sample.GenericK8s_ControlLoopDefinition:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoop
- type_version: 1.0.0
- description: Control loop for Hello World
- properties:
- provider: ONAP
- elements:
- - name: org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.database.Local_K8SMicroserviceControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.database.Http_PMSHMicroserviceControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement
- version: 1.2.3
- policies:
- - operational.apex.pmcontrol:
- type: onap.policies.controlloop.operational.common.Apex
- type_version: 1.0.0
- version: 1.0.0
- metadata:
- policy-id: operational.apex.pmcontrol
- policy-version: 1
- properties:
- engineServiceParameters:
- name: MyApexEngine
- version: 0.0.1
- id: 45
- instanceCount: 2
- deploymentPort: 12561
- policy_type_impl:
- apexPolicyModel:
- key:
- name: PMControlPolicy
- version: 0.0.1
- keyInformation:
- key:
- name: PMControlPolicy_KeyInfo
- version: 0.0.1
- keyInfoMap:
- entry:
- - key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- value:
- key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- UUID: 6e5fa19b-14df-37e3-a4ae-8c537e861a82
- description: Generated description for concept referred to by key "CDSActionIdentifiersType:0.0.1"
- - key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- UUID: 14b29e38-ac75-3273-aa4e-8583c0aa7dad
- description: Generated description for concept referred to by key "CDSCreateResponseEvent:0.0.1"
- - key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- UUID: 04573f8f-e772-30a5-b1d9-d7318d4a1e13
- description: Generated description for concept referred to by key "CDSCreateResponsePayloadType:0.0.1"
- - key:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- UUID: e126c965-fc09-3bfe-8f55-70f380a4a49c
- description: Generated description for concept referred to by key "CDSCreateResponsePolicy:0.0.1"
- - key:
- name: CDSCreateResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseTask
- version: 0.0.1
- UUID: 6165ee82-afd2-3aab-a517-f00b3f2461d2
- description: Generated description for concept referred to by key "CDSCreateResponseTask:0.0.1"
- - key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- UUID: 8350ac5e-c157-38b9-9614-a0f93a830e60
- description: Generated description for concept referred to by key "CDSCreateSubscriptionPayloadType:0.0.1"
- - key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- UUID: cfa325ba-226b-3a31-9183-ec43e2b6e9a2
- description: Generated description for concept referred to by key "CDSCreateSubscriptionRequestEvent:0.0.1"
- - key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- UUID: 8be9c0fa-7437-3841-aff2-b3cec6ae3bd8
- description: Generated description for concept referred to by key "CDSDeleteResponseEvent:0.0.1"
- - key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- UUID: 3fbfe0c9-152e-34d3-a504-09cd13c058d0
- description: Generated description for concept referred to by key "CDSDeleteResponsePayloadType:0.0.1"
- - key:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- UUID: a780251c-edd5-3132-b865-04313246b43c
- description: Generated description for concept referred to by key "CDSDeleteResponsePolicy:0.0.1"
- - key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- UUID: afce4555-3aa3-3521-a7d8-ee8cdf0d3efc
- description: Generated description for concept referred to by key "CDSDeleteResponseTask:0.0.1"
- - key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- UUID: 12658406-9147-3c9d-a38c-5ad5e30b092b
- description: Generated description for concept referred to by key "CDSDeleteSubscriptionPayloadType:0.0.1"
- - key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- UUID: 24380c95-9289-36e6-8cbf-0edefa15ccd9
- description: Generated description for concept referred to by key "CDSDeleteSubscriptionRequestEvent:0.0.1"
- - key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- UUID: 35590ac0-062c-39f1-8786-b4ff716e30b1
- description: Generated description for concept referred to by key "CDSRequestCommonHeaderType:0.0.1"
- - key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- UUID: dd7e1805-885a-350b-aaf9-ed541321ae3c
- description: Generated description for concept referred to by key "CDSResponseCommonHeaderType:0.0.1"
- - key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- UUID: 7986e21b-32f7-302e-9554-31f21b673493
- description: Generated description for concept referred to by key "CDSResponseStatusEvent:0.0.1"
- - key:
- name: CDSResponseStatusType
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusType
- version: 0.0.1
- UUID: 92b8a2cf-344e-3ce1-8cc0-2b7d3cb695fa
- description: Generated description for concept referred to by key "CDSResponseStatusType:0.0.1"
- - key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- UUID: 92162397-1a8e-3a3f-a469-d2af7700af4a
- description: Generated description for concept referred to by key "CreateSubscriptionPayloadEvent:0.0.1"
- - key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- UUID: bc0c69f0-52ed-38ea-b468-ae4a6fd1730d
- description: Generated description for concept referred to by key "CreateSubscriptionPayloadTask:0.0.1"
- - key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- UUID: 89cb75e9-f06c-30d3-b4ff-698d45f63869
- description: Generated description for concept referred to by key "CreateSubscriptionRequestTask:0.0.1"
- - key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- UUID: 994fa441-04ab-33bb-832d-1cd12ab5d074
- description: Generated description for concept referred to by key "DeleteSubscriptionPayloadEvent:0.0.1"
- - key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- UUID: 0f519117-5fea-3e4b-941f-8f778100465f
- description: Generated description for concept referred to by key "DeleteSubscriptionPayloadTask:0.0.1"
- - key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- UUID: acb772fe-d442-39e3-98f9-b1080caf4150
- description: Generated description for concept referred to by key "DeleteSubscriptionRequestTask:0.0.1"
- - key:
- name: MRResponseEvent
- version: 0.0.1
- value:
- key:
- name: MRResponseEvent
- version: 0.0.1
- UUID: 13c747a3-6bae-3bcf-9c80-b152e01dc194
- description: Generated description for concept referred to by key "MRResponseEvent:0.0.1"
- - key:
- name: PMControlPolicy
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy
- version: 0.0.1
- UUID: acf1e55c-7bc5-3bd5-975a-0ca54afcd8a4
- description: Generated description for concept referred to by key "PMControlPolicy:0.0.1"
- - key:
- name: PMControlPolicy_Albums
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Albums
- version: 0.0.1
- UUID: b38ad204-c2c8-32f4-9b5a-dda0aeb0145b
- description: Generated description for concept referred to by key "PMControlPolicy_Albums:0.0.1"
- - key:
- name: PMControlPolicy_Events
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Events
- version: 0.0.1
- UUID: be3871a0-c42a-3113-a066-82d192840eca
- description: Generated description for concept referred to by key "PMControlPolicy_Events:0.0.1"
- - key:
- name: PMControlPolicy_KeyInfo
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_KeyInfo
- version: 0.0.1
- UUID: ced37634-28a4-3178-b7f6-2980794927b0
- description: Generated description for concept referred to by key "PMControlPolicy_KeyInfo:0.0.1"
- - key:
- name: PMControlPolicy_Policies
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Policies
- version: 0.0.1
- UUID: be3d180d-ef9c-3a75-8e9c-84271a038bed
- description: Generated description for concept referred to by key "PMControlPolicy_Policies:0.0.1"
- - key:
- name: PMControlPolicy_Schemas
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Schemas
- version: 0.0.1
- UUID: e61973f1-189c-39e5-82f6-0d3afe298a20
- description: Generated description for concept referred to by key "PMControlPolicy_Schemas:0.0.1"
- - key:
- name: PMControlPolicy_Tasks
- version: 0.0.1
- value:
- key:
- name: PMControlPolicy_Tasks
- version: 0.0.1
- UUID: 5658adb3-2962-30a3-a241-fae75bb8eb4a
- description: Generated description for concept referred to by key "PMControlPolicy_Tasks:0.0.1"
- - key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- UUID: c2bd6f0d-6854-317a-9be2-97c08338428c
- description: Generated description for concept referred to by key "PMSubscriptionAlbum:0.0.1"
- - key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- UUID: 992b7819-9f69-3aa0-bb0f-6e45ea15ce05
- description: Generated description for concept referred to by key "PMSubscriptionOutputEvent:0.0.1"
- - key:
- name: PMSubscriptionType
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionType
- version: 0.0.1
- UUID: 73c1c397-4fc3-357f-93b6-a8ad707fbaae
- description: Generated description for concept referred to by key "PMSubscriptionType:0.0.1"
- - key:
- name: ReceiveEventPolicy
- version: 0.0.1
- value:
- key:
- name: ReceiveEventPolicy
- version: 0.0.1
- UUID: 568b7345-9de1-36d3-b6a3-9b857e6809a1
- description: Generated description for concept referred to by key "ReceiveEventPolicy:0.0.1"
- - key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- value:
- key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- UUID: f596afc8-100c-35eb-92c8-352355ea457d
- description: Generated description for concept referred to by key "ReceiveSubscriptionTask:0.0.1"
- - key:
- name: SimpleIntType
- version: 0.0.1
- value:
- key:
- name: SimpleIntType
- version: 0.0.1
- UUID: 153791fd-ae0a-36a7-88a5-309a7936415d
- description: Generated description for concept referred to by key "SimpleIntType:0.0.1"
- - key:
- name: SimpleStringType
- version: 0.0.1
- value:
- key:
- name: SimpleStringType
- version: 0.0.1
- UUID: 8a4957cf-9493-3a76-8c22-a208e23259af
- description: Generated description for concept referred to by key "SimpleStringType:0.0.1"
- - key:
- name: SubscriptionStatusType
- version: 0.0.1
- value:
- key:
- name: SubscriptionStatusType
- version: 0.0.1
- UUID: 597643b1-9db1-31ce-85d0-e1c63c43b30b
- description: Generated description for concept referred to by key "SubscriptionStatusType:0.0.1"
- - key:
- name: SubscriptionType
- version: 0.0.1
- value:
- key:
- name: SubscriptionType
- version: 0.0.1
- UUID: 184547bb-7d64-3cb2-a273-d7185102c5ce
- description: Generated description for concept referred to by key "SubscriptionType:0.0.1"
- - key:
- name: UUIDType
- version: 0.0.1
- value:
- key:
- name: UUIDType
- version: 0.0.1
- UUID: 6a8cc68e-dfc8-3403-9c6d-071c886b319c
- description: Generated description for concept referred to by key "UUIDType:0.0.1"
- - key:
- name: pmsh-operational-policy
- version: 0.0.1
- value:
- key:
- name: pmsh-operational-policy
- version: 0.0.1
- UUID: fdf2c9ff-6422-3ea6-b6b6-49b12116265d
- description: Generated description for concept referred to by key "pmsh-operational-policy:0.0.1"
- policies:
- key:
- name: PMControlPolicy_Policies
- version: 0.0.1
- policyMap:
- entry:
- - key:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- value:
- policyKey:
- name: CDSCreateResponsePolicy
- version: 0.0.1
- template: Freestyle
- state:
- entry:
- - key: CDSCreateResponseState
- value:
- stateKey:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CDSCreateResponseState
- trigger:
- name: CDSCreateResponseEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: ResponseOutput
- value:
- key:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSCreateResponseState
- localName: ResponseOutput
- outgoingEvent:
- name: CDSResponseStatusEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference: [ ]
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: [ ]
- defaultTask:
- name: CDSCreateResponseTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CDSCreateResponseTask
- version: 0.0.1
- value:
- key:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSCreateResponseState
- localName: CDSCreateResponsePolicy
- outputType: DIRECT
- output:
- parentKeyName: CDSCreateResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSCreateResponseState
- localName: ResponseOutput
- firstState: CDSCreateResponseState
- - key:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- value:
- policyKey:
- name: CDSDeleteResponsePolicy
- version: 0.0.1
- template: Freestyle
- state:
- entry:
- - key: CDSDeleteResponseState
- value:
- stateKey:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CDSDeleteResponseState
- trigger:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: ResponseOutput
- value:
- key:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSDeleteResponseState
- localName: ResponseOutput
- outgoingEvent:
- name: CDSResponseStatusEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference: [ ]
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: [ ]
- defaultTask:
- name: CDSDeleteResponseTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- value:
- key:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSDeleteResponseState
- localName: CDSDeleteResponsePolicy
- outputType: DIRECT
- output:
- parentKeyName: CDSDeleteResponsePolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CDSDeleteResponseState
- localName: ResponseOutput
- firstState: CDSDeleteResponseState
- - key:
- name: ReceiveEventPolicy
- version: 0.0.1
- value:
- policyKey:
- name: ReceiveEventPolicy
- version: 0.0.1
- template: Freestyle
- state:
- entry:
- - key: CreateOrDeleteState
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateOrDeleteState
- trigger:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: CreateSubscriptionPayload
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: CreateSubscriptionPayload
- outgoingEvent:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- nextState:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateSubscription
- - key: DeleteSubscriptionPayload
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: DeleteSubscriptionPayload
- outgoingEvent:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- nextState:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: DeleteSubscription
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: TaskSelectionLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
- var changeType = pmSubscriptionInfo.get("changeType").toString()
-
- executor.logger.info("Change Type is " + changeType)
-
- if ("CREATE".equals(changeType)) {
- executor.logger.info("Choosing to create a subscription")
- executor.subject.getTaskKey("CreateSubscriptionPayloadTask").copyTo(executor.selectedTask);
- }
- else if ("DELETE".equals(changeType)) {
- executor.logger.info("Choosing to delete a subscription")
- executor.subject.getTaskKey("DeleteSubscriptionPayloadTask").copyTo(executor.selectedTask);
- }
-
- //var returnValue = executor.isTrue;
- true;
- stateFinalizerLogicMap:
- entry: [ ]
- defaultTask:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: CreateSubscriptionPayload
- - key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateOrDeleteState
- localName: DeleteSubscriptionPayload
- - key: CreateSubscription
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateSubscription
- trigger:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: IssueCreateSubscriptionRequestOutput
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateSubscription
- localName: IssueCreateSubscriptionRequestOutput
- outgoingEvent:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: [ ]
- defaultTask:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateSubscription
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: CreateSubscription
- localName: IssueCreateSubscriptionRequestOutput
- - key: DeleteSubscription
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: DeleteSubscription
- trigger:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- stateOutputs:
- entry:
- - key: IssueDeleteSubscriptionRequestOutput
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: DeleteSubscription
- localName: IssueDeleteSubscriptionRequestOutput
- outgoingEvent:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- nextState:
- parentKeyName: 'NULL'
- parentKeyVersion: 0.0.0
- parentLocalName: 'NULL'
- localName: 'NULL'
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: [ ]
- defaultTask:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: DeleteSubscription
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: DeleteSubscription
- localName: IssueDeleteSubscriptionRequestOutput
- - key: ReceiveSubscriptionState
- value:
- stateKey:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: ReceiveSubscriptionState
- trigger:
- name: pmsh-operational-policy
- version: 0.0.1
- stateOutputs:
- entry:
- - key: ReceivePMSubscriptionOutput
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: ReceiveSubscriptionState
- localName: ReceivePMSubscriptionOutput
- outgoingEvent:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- nextState:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: 'NULL'
- localName: CreateOrDeleteState
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskSelectionLogic:
- key: 'NULL'
- logicFlavour: UNDEFINED
- logic: ''
- stateFinalizerLogicMap:
- entry: [ ]
- defaultTask:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- taskReferences:
- entry:
- - key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- value:
- key:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: ReceiveSubscriptionState
- localName: ReceiveEventPolicy
- outputType: DIRECT
- output:
- parentKeyName: ReceiveEventPolicy
- parentKeyVersion: 0.0.1
- parentLocalName: ReceiveSubscriptionState
- localName: ReceivePMSubscriptionOutput
- firstState: ReceiveSubscriptionState
- tasks:
- key:
- name: PMControlPolicy_Tasks
- version: 0.0.1
- taskMap:
- entry:
- - key:
- name: CDSCreateResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseTask
- version: 0.0.1
- inputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: SubscriptionStatusType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: [ ]
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var commonHeader = executor.inFields.get("commonHeader")
- var response = executor.inFields.get("payload")
- var albumID = commonHeader.get("requestId")
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(albumID.toString());
- var responseStatus = executor.subject.getOutFieldSchemaHelper("status").createNewInstance();
-
- responseStatus.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- responseStatus.put("nfName", pmSubscriptionInfo.get("nfName"))
- responseStatus.put("changeType", pmSubscriptionInfo.get("changeType"))
-
- var status = response.get(pmSubscriptionInfo.get("changeType").toLowerCase() + "_DasH_subscription_DasH_response").get("odl_DasH_response").get("status")
-
- executor.logger.info("RESPONSE STATUS = " + status)
-
- if(status == "success") {
- responseStatus.put("message", "success")
- } else {
- responseStatus.put("message", "failed")
- }
-
- executor.outFields.put("status", responseStatus)
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseTask
- version: 0.0.1
- inputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: SubscriptionStatusType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: [ ]
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var commonHeader = executor.inFields.get("commonHeader")
- var response = executor.inFields.get("payload")
- var albumID = commonHeader.get("requestId")
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(albumID.toString());
- var responseStatus = executor.subject.getOutFieldSchemaHelper("status").createNewInstance();
-
- responseStatus.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- responseStatus.put("nfName", pmSubscriptionInfo.get("nfName"))
- responseStatus.put("changeType", pmSubscriptionInfo.get("changeType"))
-
- var status = response.get(pmSubscriptionInfo.get("changeType").toLowerCase() + "_DasH_subscription_DasH_response").get("odl_DasH_response").get("status")
-
- executor.logger.info("RESPONSE STATUS = " + status)
-
- if(status == "success") {
- responseStatus.put("message", "success")
- } else {
- responseStatus.put("message", "failed")
- }
-
- executor.outFields.put("status", responseStatus)
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: [ ]
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
-
- var payloadProperties = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance(changeType + "_DasH_subscription_DasH_properties_record");
-
- payloadProperties.put("nfName", pmSubscriptionInfo.get("nfName"))
- payloadProperties.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- payloadProperties.put("administrativeState", pmSubscriptionInfo.get("subscription").get("administrativeState"))
- payloadProperties.put("fileBasedGP", pmSubscriptionInfo.get("subscription").get("fileBasedGP").toString())
- payloadProperties.put("fileLocation", pmSubscriptionInfo.get("subscription").get("fileLocation"))
- payloadProperties.put("measurementGroups", pmSubscriptionInfo.get("subscription").get("measurementGroups"))
-
- var payloadEntry = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance("CDSRequestPayloadEntry");
- payloadEntry.put(changeType + "_DasH_subscription_DasH_properties", payloadProperties)
-
- var payload = executor.subject.getOutFieldSchemaHelper("payload").createNewInstance();
- payload.put(changeType + "_DasH_subscription_DasH_request", payloadEntry);
-
- executor.outFields.put("albumID", executor.inFields.get("albumID"))
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionRequestTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: [ ]
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
- var blueprintName = pmSubscriptionInfo.get("blueprintName").toLowerCase()
- var blueprintVersion = pmSubscriptionInfo.get("blueprintVersion").toLowerCase()
- var payload = executor.inFields.get("payload")
- var actionName = changeType + "-subscription"
-
- var commonHeader = executor.subject.getOutFieldSchemaHelper("commonHeader").createNewInstance();
- commonHeader.put("originatorId", "sdnc");
- commonHeader.put("requestId", executor.inFields.get("albumID").toString());
- commonHeader.put("subRequestId", "sub-123456-1000");
-
- var actionIdentifiers = executor.subject.getOutFieldSchemaHelper("actionIdentifiers").createNewInstance();
- actionIdentifiers.put("actionName", actionName);
- actionIdentifiers.put("blueprintName", blueprintName);
- actionIdentifiers.put("blueprintVersion", blueprintVersion);
- actionIdentifiers.put("mode", "sync");
-
- executor.outFields.put("commonHeader", commonHeader);
- executor.outFields.put("actionIdentifiers", actionIdentifiers);
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: [ ]
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
-
- var payloadProperties = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance(changeType + "_DasH_subscription_DasH_properties_record");
-
- payloadProperties.put("nfName", pmSubscriptionInfo.get("nfName"))
- payloadProperties.put("subscriptionName", pmSubscriptionInfo.get("subscription").get("subscriptionName"))
- payloadProperties.put("administrativeState", pmSubscriptionInfo.get("subscription").get("administrativeState"))
- payloadProperties.put("fileBasedGP", pmSubscriptionInfo.get("subscription").get("fileBasedGP").toString())
- payloadProperties.put("fileLocation", pmSubscriptionInfo.get("subscription").get("fileLocation"))
- payloadProperties.put("measurementGroups", pmSubscriptionInfo.get("subscription").get("measurementGroups"))
-
- var payloadEntry = executor.subject.getOutFieldSchemaHelper("payload").createNewSubInstance("CDSRequestPayloadEntry");
- payloadEntry.put(changeType + "_DasH_subscription_DasH_properties", payloadProperties)
-
- var payload = executor.subject.getOutFieldSchemaHelper("payload").createNewInstance();
- payload.put(changeType + "_DasH_subscription_DasH_request", payloadEntry);
-
- executor.outFields.put("albumID", executor.inFields.get("albumID"))
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionRequestTask
- version: 0.0.1
- inputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: [ ]
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
- executor.logger.info(executor.subject.id);
-
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").get(executor.inFields.get("albumID").toString())
-
- var changeType = pmSubscriptionInfo.get("changeType").toLowerCase()
- var blueprintName = pmSubscriptionInfo.get("blueprintName").toLowerCase()
- var blueprintVersion = pmSubscriptionInfo.get("blueprintVersion").toLowerCase()
- var payload = executor.inFields.get("payload")
- var actionName = changeType + "-subscription"
-
- var commonHeader = executor.subject.getOutFieldSchemaHelper("commonHeader").createNewInstance();
- commonHeader.put("originatorId", "sdnc");
- commonHeader.put("requestId", executor.inFields.get("albumID").toString());
- commonHeader.put("subRequestId", "sub-123456-1000");
-
- var actionIdentifiers = executor.subject.getOutFieldSchemaHelper("actionIdentifiers").createNewInstance();
- actionIdentifiers.put("actionName", actionName);
- actionIdentifiers.put("blueprintName", blueprintName);
- actionIdentifiers.put("blueprintVersion", blueprintVersion);
- actionIdentifiers.put("mode", "sync");
-
- executor.outFields.put("commonHeader", commonHeader);
- executor.outFields.put("actionIdentifiers", actionIdentifiers);
- executor.outFields.put("payload", payload);
-
- //var returnValue = executor.isTrue;
- true;
- - key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- value:
- key:
- name: ReceiveSubscriptionTask
- version: 0.0.1
- inputFields:
- entry:
- - key: blueprintName
- value:
- key: blueprintName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: blueprintVersion
- value:
- key: blueprintVersion
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: changeType
- value:
- key: changeType
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: closedLoopControlName
- value:
- key: closedLoopControlName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: nfName
- value:
- key: nfName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: policyName
- value:
- key: policyName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: subscription
- value:
- key: subscription
- fieldSchemaKey:
- name: SubscriptionType
- version: 0.0.1
- optional: false
- outputFields:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- taskParameters:
- entry: [ ]
- contextAlbumReference:
- - name: PMSubscriptionAlbum
- version: 0.0.1
- taskLogic:
- key: TaskLogic
- logicFlavour: JAVASCRIPT
- logic: |-
- /*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix. All rights reserved.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
- var uuidType = java.util.UUID;
-
- executor.logger.info(executor.subject.id);
-
- //albumID will be used to fetch info from our album later
- var albumID = uuidType.randomUUID();
- var pmSubscriptionInfo = executor.getContextAlbum("PMSubscriptionAlbum").getSchemaHelper().createNewInstance();
- var returnValue = true;
-
- if(executor.inFields.get("policyName") != null) {
- executor.logger.info("nfName in receive sub event " + executor.inFields.get("nfName"));
-
- var changeType = executor.inFields.get("changeType")
- var nfName = executor.inFields.get("nfName")
- var policyName = executor.inFields.get("policyName")
- var closedLoopControlName = executor.inFields.get("closedLoopControlName")
- var subscription = executor.inFields.get("subscription")
- var blueprintName = executor.inFields.get("blueprintName")
- var blueprintVersion = executor.inFields.get("blueprintVersion")
-
- pmSubscriptionInfo.put("nfName", executor.inFields.get("nfName"));
- pmSubscriptionInfo.put("changeType", executor.inFields.get("changeType"))
- pmSubscriptionInfo.put("policyName", executor.inFields.get("policyName"))
- pmSubscriptionInfo.put("closedLoopControlName", executor.inFields.get("closedLoopControlName"))
- pmSubscriptionInfo.put("subscription", subscription)
- pmSubscriptionInfo.put("blueprintName", blueprintName)
- pmSubscriptionInfo.put("blueprintVersion", blueprintVersion)
-
-
- executor.getContextAlbum("PMSubscriptionAlbum").put(albumID.toString(), pmSubscriptionInfo);
-
- executor.outFields.put("albumID", albumID)
- } else {
- executor.message = "Received invalid event"
- returnValue = false;
- }
-
- returnValue;
- events:
- key:
- name: PMControlPolicy_Events
- version: 0.0.1
- eventMap:
- entry:
- - key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponseEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: CDS
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- - key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionRequestEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponseEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: CDS
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- optional: false
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: CDSResponseStatusType
- version: 0.0.1
- optional: false
- - key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionRequestEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: actionIdentifiers
- value:
- key: actionIdentifiers
- fieldSchemaKey:
- name: CDSActionIdentifiersType
- version: 0.0.1
- optional: false
- - key: commonHeader
- value:
- key: commonHeader
- fieldSchemaKey:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: DCAE
- parameter:
- entry:
- - key: status
- value:
- key: status
- fieldSchemaKey:
- name: SubscriptionStatusType
- version: 0.0.1
- optional: false
- - key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: CreateSubscriptionPayloadEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- value:
- key:
- name: DeleteSubscriptionPayloadEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key: payload
- value:
- key: payload
- fieldSchemaKey:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- optional: false
- - key:
- name: MRResponseEvent
- version: 0.0.1
- value:
- key:
- name: MRResponseEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: DCAE
- target: APEX
- parameter:
- entry:
- - key: count
- value:
- key: count
- fieldSchemaKey:
- name: SimpleIntType
- version: 0.0.1
- optional: false
- - key: serverTimeMs
- value:
- key: serverTimeMs
- fieldSchemaKey:
- name: SimpleIntType
- version: 0.0.1
- optional: false
- - key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionOutputEvent
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: APEX
- target: APEX
- parameter:
- entry:
- - key: albumID
- value:
- key: albumID
- fieldSchemaKey:
- name: UUIDType
- version: 0.0.1
- optional: false
- - key:
- name: pmsh-operational-policy
- version: 0.0.1
- value:
- key:
- name: pmsh-operational-policy
- version: 0.0.1
- nameSpace: org.onap.policy.apex.onap.pmcontrol
- source: DCAE
- target: APEX
- parameter:
- entry:
- - key: blueprintName
- value:
- key: blueprintName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: blueprintVersion
- value:
- key: blueprintVersion
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: changeType
- value:
- key: changeType
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: closedLoopControlName
- value:
- key: closedLoopControlName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: nfName
- value:
- key: nfName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: policyName
- value:
- key: policyName
- fieldSchemaKey:
- name: SimpleStringType
- version: 0.0.1
- optional: false
- - key: subscription
- value:
- key: subscription
- fieldSchemaKey:
- name: SubscriptionType
- version: 0.0.1
- optional: false
- albums:
- key:
- name: PMControlPolicy_Albums
- version: 0.0.1
- albums:
- entry:
- - key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionAlbum
- version: 0.0.1
- scope: policy
- isWritable: true
- itemSchema:
- name: PMSubscriptionType
- version: 0.0.1
- schemas:
- key:
- name: PMControlPolicy_Schemas
- version: 0.0.1
- schemas:
- entry:
- - key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- value:
- key:
- name: CDSActionIdentifiersType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ActionIdentifiers_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "actionName",
- "type": "string"
- },
- {
- "name": "blueprintName",
- "type": "string"
- },
- {
- "name": "blueprintVersion",
- "type": "string"
- },
- {
- "name": "mode",
- "type": "string"
- }
- ]
- }
- - key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateResponsePayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "name": "CreateResponsePayloadEntry",
- "type": "record",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "create_DasH_subscription_DasH_response",
- "type": {
- "name": "create_DasH_subscription_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "odl_DasH_response",
- "type": {
- "name": "odl_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "status",
- "type": "string"
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- - key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSCreateSubscriptionPayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "map",
- "values": {
- "type": "record",
- "name": "CDSRequestPayloadEntry",
- "fields": [
- {
- "name": "create_DasH_subscription_DasH_properties",
- "type": {
- "name": "create_DasH_subscription_DasH_properties_record",
- "type": "record",
- "fields": [
- {
- "name": "nfName",
- "type": "string"
- },
- {
- "name": "subscriptionName",
- "type": "string"
- },
- {
- "name": "administrativeState",
- "type": "string"
- },
- {
- "name": "fileBasedGP",
- "type": "string"
- },
- {
- "name": "fileLocation",
- "type": "string"
- },
- {
- "name": "measurementGroups",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementGroups_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementGroup",
- "type": {
- "name": "measurementGroup",
- "type": "record",
- "fields": [
- {
- "name": "measurementTypes",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementTypes_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementType",
- "type": "string"
- }
- ]
- }
- }
- },
- {
- "name": "managedObjectDNsBasic",
- "type": {
- "type": "array",
- "items": {
- "name": "managedObjectDNsBasic_record",
- "type": "record",
- "fields": [
- {
- "name": "DN",
- "type": "string"
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- - key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteResponsePayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "name": "DeleteResponsePayloadEntry",
- "type": "record",
- "namespace": "com.acme.avro",
- "fields": [
- {
- "name": "delete_DasH_subscription_DasH_response",
- "type": {
- "name": "delete_DasH_subscription_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "odl_DasH_response",
- "type": {
- "name": "odl_DasH_response",
- "type": "record",
- "fields": [
- {
- "name": "status",
- "type": "string"
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- - key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- value:
- key:
- name: CDSDeleteSubscriptionPayloadType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "map",
- "values": {
- "type": "record",
- "name": "CDSRequestPayloadEntry",
- "fields": [
- {
- "name": "delete_DasH_subscription_DasH_properties",
- "type": {
- "name": "delete_DasH_subscription_DasH_properties_record",
- "type": "record",
- "fields": [
- {
- "name": "nfName",
- "type": "string"
- },
- {
- "name": "subscriptionName",
- "type": "string"
- },
- {
- "name": "administrativeState",
- "type": "string"
- },
- {
- "name": "fileBasedGP",
- "type": "string"
- },
- {
- "name": "fileLocation",
- "type": "string"
- },
- {
- "name": "measurementGroups",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementGroups_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementGroup",
- "type": {
- "name": "measurementGroup",
- "type": "record",
- "fields": [
- {
- "name": "measurementTypes",
- "type": {
- "type": "array",
- "items": {
- "name": "measurementTypes_record",
- "type": "record",
- "fields": [
- {
- "name": "measurementType",
- "type": "string"
- }
- ]
- }
- }
- },
- {
- "name": "managedObjectDNsBasic",
- "type": {
- "type": "array",
- "items": {
- "name": "managedObjectDNsBasic_record",
- "type": "record",
- "fields": [
- {
- "name": "DN",
- "type": "string"
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- }
- - key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSRequestCommonHeaderType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "RequestCommonHeader_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "originatorId",
- "type": "string"
- },
- {
- "name": "requestId",
- "type": "string"
- },
- {
- "name": "subRequestId",
- "type": "string"
- }
- ]
- }
- - key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- value:
- key:
- name: CDSResponseCommonHeaderType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ResponseCommonHeader_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "originatorId",
- "type": "string"
- },
- {
- "name": "requestId",
- "type": "string"
- },
- {
- "name": "subRequestId",
- "type": "string"
- },
- {
- "name": "timestamp",
- "type": "string"
- },
- {
- "name": "flags",
- "type": ["null", "string"]
- }
- ]
- }
- - key:
- name: CDSResponseStatusType
- version: 0.0.1
- value:
- key:
- name: CDSResponseStatusType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ResponseStatus_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "code",
- "type": "int"
- },
- {
- "name": "eventType",
- "type": "string"
- },
- {
- "name": "timestamp",
- "type": "string"
- },
- {
- "name": "message",
- "type": "string"
- }
- ]
- }
- - key:
- name: PMSubscriptionType
- version: 0.0.1
- value:
- key:
- name: PMSubscriptionType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: "{\n\t\"name\": \"PMSubscription\",\n\t\"type\": \"record\",\n\t\"namespace\": \"\
- org.onap.policy.apex.onap.pmcontrol\",\n\t\"fields\": [\n {\n \"name\": \"nfName\"\
- ,\n \"type\": \"string\"\n },\n\t {\n\t\t\t\"name\": \"changeType\",\n\t\t\t\"\
- type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"closedLoopControlName\",\n\t\t\t\"type\": \"\
- string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"policyName\",\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\
- {\n\t\t \"name\": \"blueprintName\",\n\t\t \"type\": \"string\"\n\t\t},\n\t\t{\n\t\t \"name\"\
- : \"blueprintVersion\",\n\t\t \"type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"subscription\"\
- ,\n\t\t\t\"type\": {\n\t\t\t\t\"name\": \"subscription\",\n\t\t\t\t\"type\": \"record\",\n\t\t\t\t\
- \"fields\": [{\n\t\t\t\t\t\t\"name\": \"subscriptionName\",\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\
- \t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"administrativeState\",\n\t\t\t\t\t\t\"type\": \"string\"\
- \n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"fileBasedGP\",\n\t\t\t\t\t\t\"type\": \"int\"\
- \n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"fileLocation\",\n\t\t\t\t\t\t\"type\": \"string\"\
- \n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"name\": \"measurementGroups\",\n\t\t\t\t\t\t\"type\": {\n\
- \t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\"name\": \"Measurement_Groups_Type\"\
- ,\n\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\"name\"\
- : \"measurementGroup\",\n\t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\t\t\t\t\t\t\"name\": \"Measurement_Group_Type\"\
- ,\n\t\t\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\
- \t\t\t\t\"name\": \"measurementTypes\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\t\t\t\t\t\t\
- \t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\
- name\": \"Measurement_Types_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\
- \t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"measurementType\",\n\t\
- \t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\
- \t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\
- \t\t\t\t\t\t\t\t\"name\": \"managedObjectDNsBasic\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\
- \t\t\t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\t\
- \t\t\t\t\t\"name\": \"Managed_Object_Dns_Basic_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"record\"\
- ,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"DN\",\n\t\
- \t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\
- \t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\
- \t\t\t\t}\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\
- \t}\n\t]\n}"
- - key:
- name: SimpleIntType
- version: 0.0.1
- value:
- key:
- name: SimpleIntType
- version: 0.0.1
- schemaFlavour: Java
- schemaDefinition: java.lang.Integer
- - key:
- name: SimpleStringType
- version: 0.0.1
- value:
- key:
- name: SimpleStringType
- version: 0.0.1
- schemaFlavour: Java
- schemaDefinition: java.lang.String
- - key:
- name: SubscriptionStatusType
- version: 0.0.1
- value:
- key:
- name: SubscriptionStatusType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: |-
- {
- "type": "record",
- "name": "ActivateSubscriptionStatus_Type",
- "namespace": "org.onap.policy.apex.onap.helloworld",
- "fields": [
- {
- "name": "subscriptionName",
- "type": "string"
- },
- {
- "name": "nfName",
- "type": "string"
- },
- {
- "name": "changeType",
- "type": "string"
- },
- {
- "name": "message",
- "type": "string"
- }
- ]
- }
- - key:
- name: SubscriptionType
- version: 0.0.1
- value:
- key:
- name: SubscriptionType
- version: 0.0.1
- schemaFlavour: Avro
- schemaDefinition: "{\n\t\"name\": \"subscription\",\n\t\"type\": \"record\",\n\t\"fields\": [{\n\t\t\
- \t\"name\": \"subscriptionName\",\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"administrativeState\"\
- ,\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"fileBasedGP\",\n\t\t\t\"type\": \"\
- int\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"fileLocation\",\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\
- {\n\t\t\t\"name\": \"measurementGroups\",\n\t\t\t\"type\": {\n\t\t\t\t\"type\": \"array\",\n\t\t\t\
- \t\"items\": {\n\t\t\t\t\t\"name\": \"Measurement_Groups_Type\",\n\t\t\t\t\t\"type\": \"record\",\n\
- \t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\"name\": \"measurementGroup\",\n\t\t\t\t\t\t\"type\": {\n\t\
- \t\t\t\t\t\t\"name\": \"Measurement_Group_Type\",\n\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\
- \t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\"name\": \"measurementTypes\",\n\t\t\t\t\t\t\t\t\t\"type\"\
- : {\n\t\t\t\t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\"items\": {\n\t\t\t\t\t\t\t\t\t\
- \t\t\"name\": \"Measurement_Types_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"type\": \"record\",\n\t\t\t\t\t\
- \t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"measurementType\",\n\t\t\t\t\t\t\t\
- \t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\
- }\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"managedObjectDNsBasic\",\n\
- \t\t\t\t\t\t\t\t\t\"type\": {\n\t\t\t\t\t\t\t\t\t\t\"type\": \"array\",\n\t\t\t\t\t\t\t\t\t\t\"items\"\
- : {\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Managed_Object_Dns_Basic_Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"\
- type\": \"record\",\n\t\t\t\t\t\t\t\t\t\t\t\"fields\": [{\n\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"DN\"\
- ,\n\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\t\t\t\t}\n\
- \t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\
- \t\t}\n\t\t}\n\t]\n}"
- - key:
- name: UUIDType
- version: 0.0.1
- value:
- key:
- name: UUIDType
- version: 0.0.1
- schemaFlavour: Java
- schemaDefinition: java.util.UUID
- engineParameters:
- executorParameters:
- JAVASCRIPT:
- parameterClassName: org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters
- contextParameters:
- parameterClassName: org.onap.policy.apex.context.parameters.ContextParameters
- schemaParameters:
- Avro:
- parameterClassName: org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters
- Java:
- parameterClassName: org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters
- jsonAdapters:
- Instant:
- adaptedClass: java.time.Instant
- adaptorClass: org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter
- eventInputParameters:
- DCAEConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTCLIENT
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters
- parameters:
- consumerPollTime: '50'
- url: https://message-router:3905/events/unauthenticated.DCAE_CL_OUTPUT/cg1/sg1
- eventProtocolParameters:
- eventProtocol: JSON
- parameters:
- nameAlias: policyName
- eventName: pmsh-operational-policy
- eventNameFilter: pmsh-operational-policy
- CDSRequestConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- parameters:
- url: http://10.10.10.184:30254/api/v1/execution-service/process
- httpMethod: POST
- restRequestTimeout: 2000
- httpHeaders:
- - - Authorization
- - Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
- eventProtocolParameters:
- eventProtocol: JSON
- eventName: CDSCreateResponseEvent
- eventNameFilter: CDSCreateResponseEvent
- requestorMode: true
- requestorPeer: CDSRequestProducer
- requestorTimeout: 500
- CDSDeleteRequestConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- parameters:
- url: http://10.10.10.184:30254/api/v1/execution-service/process
- httpMethod: POST
- restRequestTimeout: 2000
- httpHeaders:
- - - Authorization
- - Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
- eventProtocolParameters:
- eventProtocol: JSON
- eventName: CDSDeleteResponseEvent
- eventNameFilter: CDSDeleteResponseEvent
- requestorMode: true
- requestorPeer: CDSDeleteRequestProducer
- requestorTimeout: 500
- CDSReplyConsumer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- parameters:
- url: https://message-router:3905/events/unauthenticated.PMSH_CL_INPUT
- httpMethod: POST
- restRequestTimeout: 2000
- eventProtocolParameters:
- eventProtocol: JSON
- eventName: MRResponseEvent
- eventNameFilter: MRResponseEvent
- requestorMode: true
- requestorPeer: CDSReplyProducer
- requestorTimeout: 500
- eventOutputParameters:
- logOutputter:
- carrierTechnologyParameters:
- carrierTechnology: FILE
- parameters:
- fileName: /tmp/outputevents.log
- eventProtocolParameters:
- eventProtocol: JSON
- StdOutOutputter:
- carrierTechnologyParameters:
- carrierTechnology: FILE
- parameters:
- standardIo: true
- eventProtocolParameters:
- eventProtocol: JSON
- CDSRequestProducer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- eventProtocolParameters:
- eventProtocol: JSON
- eventNameFilter: CDSCreateSubscriptionRequestEvent
- requestorMode: true
- requestorPeer: CDSRequestConsumer
- requestorTimeout: 500
- CDSDeleteRequestProducer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- eventProtocolParameters:
- eventProtocol: JSON
- eventNameFilter: CDSDeleteSubscriptionRequestEvent
- requestorMode: true
- requestorPeer: CDSDeleteRequestConsumer
- requestorTimeout: 500
- CDSReplyProducer:
- carrierTechnologyParameters:
- carrierTechnology: RESTREQUESTOR
- parameterClassName: org.onap.policy.apex.plugins.event.carrier.restrequestor.RestRequestorCarrierTechnologyParameters
- eventProtocolParameters:
- eventProtocol: JSON
- eventNameFilter: CDSResponseStatusEvent
- requestorMode: true
- requestorPeer: CDSReplyConsumer
- requestorTimeout: 500
diff --git a/runtime-controlloop/src/test/resources/testscripts/listenOnTopic.sh b/runtime-controlloop/src/test/resources/testscripts/listenOnTopic.sh
deleted file mode 100755
index 5e661777b..000000000
--- a/runtime-controlloop/src/test/resources/testscripts/listenOnTopic.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#! /bin/bash
-# ============LICENSE_START=======================================================
-# Copyright (C) 2021 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.
-#
-# SPDX-License-Identifier: Apache-2.0
-# ============LICENSE_END=========================================================
-
-if [ $# -ne 1 ]
-then
- echo invalid parameters $*, specify a single parameter as the topic to listen on
- exit 1
-fi
-
-while true
-do
- curl "http://localhost:3904/events/$1/TEST/1?timeout=60000"
- echo ""
-done
-