diff options
9 files changed, 1437 insertions, 935 deletions
diff --git a/packages/policy-clamp-tarball/src/main/resources/etc/AcRuntimeParameters.yaml b/packages/policy-clamp-tarball/src/main/resources/etc/AcRuntimeParameters.yaml index b8723aea6..e8c34256d 100644 --- a/packages/policy-clamp-tarball/src/main/resources/etc/AcRuntimeParameters.yaml +++ b/packages/policy-clamp-tarball/src/main/resources/etc/AcRuntimeParameters.yaml @@ -7,8 +7,8 @@ spring: converters: preferred-json-mapper: gson datasource: - url: jdbc:mariadb://${mariadb.host:mariadb}:${mariadb.port:3306}/clampacm - driverClassName: org.mariadb.jdbc.Driver + url: jdbc:postgresql://${postgresql.host:postgres}:${postgresql.port:5432}/clampacm + driverClassName: org.postgresql.jdbc.Driver username: policy_user password: policy_user hikari: @@ -24,7 +24,6 @@ spring: implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy properties: hibernate: - dialect: org.hibernate.dialect.MariaDB103Dialect format_sql: true security: diff --git a/participant/participant-impl/participant-impl-simulator/src/main/resources/config/application.yaml b/participant/participant-impl/participant-impl-simulator/src/main/resources/config/application.yaml index 3f4d79472..d87219bd6 100644 --- a/participant/participant-impl/participant-impl-simulator/src/main/resources/config/application.yaml +++ b/participant/participant-impl/participant-impl-simulator/src/main/resources/config/application.yaml @@ -20,6 +20,12 @@ participant: reportingTimeIntervalMs: 120000 description: Participant Description participantId: 101c62b3-8918-41b9-a747-d21eb79c6c90 + topicValidation: true + clampAdminTopics: + servers: + - ${topicServer:kafka:9092} + topicCommInfrastructure: NOOP + fetchTimeout: 15000 clampAutomationCompositionTopics: topicSources: - topic: ${participant.intermediaryParameters.topics.operationTopic} diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/BrokerStarter.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/BrokerStarter.java new file mode 100644 index 000000000..1c862e925 --- /dev/null +++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/BrokerStarter.java @@ -0,0 +1,140 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2025 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.acm.participant.intermediary.handler; + +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; +import org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantParameters; +import org.onap.policy.common.message.bus.event.Topic; +import org.onap.policy.common.message.bus.healthcheck.TopicHealthCheck; +import org.onap.policy.common.message.bus.healthcheck.TopicHealthCheckFactory; +import org.onap.policy.common.parameters.topic.TopicParameters; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 BrokerStarter<T> { + private static final Logger LOGGER = LoggerFactory.getLogger(BrokerStarter.class); + private final IntermediaryActivator activator; + private final ParticipantHandler participantHandler; + private final TopicHealthCheck topicHealthCheck; + + private final ParticipantParameters parameters; + private final List<Publisher> publishers; + private final List<Listener<T>> listeners; + + /** + * Constructor. + * + * @param parameters ParticipantParameters + * @param activator IntermediaryActivator + * @param participantHandler participantHandler + */ + public BrokerStarter(ParticipantParameters parameters, + List<Publisher> publishers, List<Listener<T>> listeners, IntermediaryActivator activator, + ParticipantHandler participantHandler) { + this.parameters = parameters; + this.listeners = listeners; + this.publishers = publishers; + this.activator = activator; + this.participantHandler = participantHandler; + var topic = parameters.getIntermediaryParameters().getClampAdminTopics(); + if (topic == null) { + topic = new TopicParameters(); + topic.setTopicCommInfrastructure(Topic.CommInfrastructure.NOOP.name()); + } + this.topicHealthCheck = createTopicHealthCheck(topic); + } + + protected TopicHealthCheck createTopicHealthCheck(TopicParameters topic) { + return new TopicHealthCheckFactory().getTopicHealthCheck(topic); + } + + /** + * Handle ContextRefreshEvent. + * + * @param ctxRefreshedEvent ContextRefreshedEvent + */ + @EventListener + public void handleContextRefreshEvent(ContextRefreshedEvent ctxRefreshedEvent) { + if (!activator.isAlive()) { + runTopicHealthCheck(); + start(); + } + } + + private void runTopicHealthCheck() { + var fetchTimeout = getFetchTimeout(); + while (!topicHealthCheck.healthCheck(getTopics())) { + LOGGER.debug(" Broker not up yet!"); + try { + Thread.sleep(fetchTimeout); + } catch (InterruptedException e) { + LOGGER.error(e.getMessage()); + Thread.currentThread().interrupt(); + } + } + } + + private List<String> getTopics() { + var opTopic = parameters.getIntermediaryParameters().getTopics().getOperationTopic(); + var syncTopic = parameters.getIntermediaryParameters().getTopics().getSyncTopic(); + return Boolean.TRUE.equals(parameters.getIntermediaryParameters().getTopicValidation()) + ? List.of(opTopic, syncTopic) : List.<String>of(); + } + + private int getFetchTimeout() { + int fetchTimeout = parameters.getIntermediaryParameters().getClampAdminTopics() == null + ? 0 : parameters.getIntermediaryParameters().getClampAdminTopics().getFetchTimeout(); + return Math.max(fetchTimeout, 5000); + } + + private void start() { + activator.config(parameters, publishers, listeners); + activator.start(); + var task = new TimerTask() { + @Override + public void run() { + new Thread(participantHandler::sendParticipantRegister).start(); + } + }; + new Timer().schedule(task, 5000); + } + + + /** + * Handle ContextClosedEvent. + * + * @param ctxClosedEvent ContextClosedEvent + */ + @EventListener + public void handleContextClosedEvent(ContextClosedEvent ctxClosedEvent) { + if (activator.isAlive()) { + participantHandler.sendParticipantDeregister(); + activator.stop(); + } + } +} diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivator.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivator.java index 388603099..cb8df0a31 100644 --- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivator.java +++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivator.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021,2024 Nordix Foundation. + * Copyright (C) 2021,2024-2025 Nordix Foundation. * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,9 +23,8 @@ package org.onap.policy.clamp.acm.participant.intermediary.handler; import java.io.Closeable; import java.io.IOException; +import java.util.ArrayList; import java.util.List; -import java.util.Timer; -import java.util.TimerTask; import lombok.Getter; import org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantParameters; import org.onap.policy.clamp.acm.participant.intermediary.parameters.Topics; @@ -34,9 +33,6 @@ import org.onap.policy.common.message.bus.event.TopicEndpointManager; import org.onap.policy.common.message.bus.event.TopicSink; import org.onap.policy.common.message.bus.event.TopicSource; 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; /** @@ -48,10 +44,8 @@ public class IntermediaryActivator extends ServiceManagerContainer implements Cl private static final String[] MSG_TYPE_NAMES = {"messageType"}; // Topics from which the participant receives and to which the participant sends messages - private final List<TopicSink> topicSinks; - private final List<TopicSource> topicSources; - - private final ParticipantHandler participantHandler; + private final List<TopicSink> topicSinks = new ArrayList<>(); + private final List<TopicSource> topicSources = new ArrayList<>(); @Getter private final MessageTypeDispatcher msgDispatcher; @@ -60,26 +54,29 @@ public class IntermediaryActivator extends ServiceManagerContainer implements Cl private final MessageTypeDispatcher syncMsgDispatcher; /** + * Constructor. + */ + public IntermediaryActivator() { + msgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES); + syncMsgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES); + } + + /** * Instantiate the activator for participant. * * @param parameters the ParticipantParameters - * @param participantHandler the ParticipantHandler * @param publishers list of Publishers * @param listeners list of Listeners */ - public <T> IntermediaryActivator(final ParticipantParameters parameters, ParticipantHandler participantHandler, - List<Publisher> publishers, List<Listener<T>> listeners) { - this.participantHandler = participantHandler; + public <T> void config(ParticipantParameters parameters, + List<Publisher> publishers, List<Listener<T>> listeners) { - topicSinks = TopicEndpointManager.getManager().addTopicSinks( - parameters.getIntermediaryParameters().getClampAutomationCompositionTopics().getTopicSinks()); + topicSinks.addAll(TopicEndpointManager.getManager().addTopicSinks( + parameters.getIntermediaryParameters().getClampAutomationCompositionTopics().getTopicSinks())); - topicSources = TopicEndpointManager.getManager().addTopicSources( - parameters.getIntermediaryParameters().getClampAutomationCompositionTopics().getTopicSources()); + topicSources.addAll(TopicEndpointManager.getManager().addTopicSources( + parameters.getIntermediaryParameters().getClampAutomationCompositionTopics().getTopicSources())); - msgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES); - - syncMsgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES); // @formatter:off addAction("Topic endpoint management", @@ -109,42 +106,6 @@ public class IntermediaryActivator extends ServiceManagerContainer implements Cl } /** - * Handle ContextRefreshEvent. - * - * @param ctxRefreshedEvent ContextRefreshedEvent - */ - @EventListener - public void handleContextRefreshEvent(ContextRefreshedEvent ctxRefreshedEvent) { - if (!isAlive()) { - start(); - var task = new TimerTask() { - @Override - public void run() { - new Thread(participantHandler::sendParticipantRegister).start(); - } - }; - new Timer().schedule(task, 5000); - } - } - - /** - * Handle ContextClosedEvent. - * - * @param ctxClosedEvent ContextClosedEvent - */ - @EventListener - public void handleContextClosedEvent(ContextClosedEvent ctxClosedEvent) { - if (isAlive()) { - sendParticipantDeregister(); - stop(); - } - } - - private void sendParticipantDeregister() { - participantHandler.sendParticipantDeregister(); - } - - /** * Registers the dispatcher with the topic source(s). */ private void registerMsgDispatcher(Topics topics) { diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/parameters/ParticipantIntermediaryParameters.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/parameters/ParticipantIntermediaryParameters.java index dad9c8ae7..d94dc5d39 100644 --- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/parameters/ParticipantIntermediaryParameters.java +++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/parameters/ParticipantIntermediaryParameters.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021-2024 Nordix Foundation. + * Copyright (C) 2021-2024-2025 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,7 @@ import lombok.Getter; import lombok.Setter; import org.onap.policy.clamp.models.acm.concepts.ParticipantSupportedElementType; import org.onap.policy.common.parameters.topic.TopicParameterGroup; +import org.onap.policy.common.parameters.topic.TopicParameters; import org.onap.policy.common.parameters.validation.ParameterGroupConstraint; /** @@ -64,4 +65,7 @@ public class ParticipantIntermediaryParameters { @Valid private Topics topics = new Topics(); + private Boolean topicValidation = false; + + private TopicParameters clampAdminTopics; } diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/BrokerStarterTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/BrokerStarterTest.java new file mode 100644 index 000000000..093ae9e90 --- /dev/null +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/BrokerStarterTest.java @@ -0,0 +1,113 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2025 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.acm.participant.intermediary.handler; + +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.Test; +import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantStatusReqListener; +import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData; +import org.onap.policy.common.message.bus.event.Topic; +import org.onap.policy.common.message.bus.healthcheck.TopicHealthCheck; +import org.onap.policy.common.parameters.topic.TopicParameters; +import org.springframework.context.event.ContextClosedEvent; +import org.springframework.context.event.ContextRefreshedEvent; + +class BrokerStarterTest { + + @Test + void testWithClampAdminTopicsNull() { + var parameters = CommonTestData.getParticipantParameters(); + parameters.getIntermediaryParameters().setClampAdminTopics(null); + var publishers = List.of(mock(Publisher.class)); + var listeners = List.of(mock(ParticipantStatusReqListener.class)); + var activator = mock(IntermediaryActivator.class); + var participantHandler = mock(ParticipantHandler.class); + var brokerStarter = new BrokerStarter(parameters, publishers, listeners, activator, participantHandler); + when(activator.isAlive()).thenReturn(false); + + brokerStarter.handleContextRefreshEvent(mock(ContextRefreshedEvent.class)); + verify(activator).start(); + + brokerStarter.handleContextClosedEvent(mock(ContextClosedEvent.class)); + verify(participantHandler, times(0)).sendParticipantDeregister(); + verify(activator, times(0)).stop(); + } + + @Test + void testAlreadyAlive() { + var parameters = CommonTestData.getParticipantParameters(); + var topic = new TopicParameters(); + topic.setTopicCommInfrastructure(Topic.CommInfrastructure.NOOP.name()); + parameters.getIntermediaryParameters().setClampAdminTopics(topic); + var publishers = List.of(mock(Publisher.class)); + var listeners = List.of(mock(ParticipantStatusReqListener.class)); + var activator = mock(IntermediaryActivator.class); + var participantHandler = mock(ParticipantHandler.class); + var brokerStarter = new BrokerStarter(parameters, publishers, listeners, activator, participantHandler); + + when(activator.isAlive()).thenReturn(true); + brokerStarter.handleContextRefreshEvent(mock(ContextRefreshedEvent.class)); + verify(activator, times(0)).start(); + + brokerStarter.handleContextClosedEvent(mock(ContextClosedEvent.class)); + verify(activator).stop(); + verify(participantHandler).sendParticipantDeregister(); + } + + private static class DummyTopicHealthCheck implements TopicHealthCheck { + + int count = 0; + + // first call is false, next will be true + @Override + public boolean healthCheck(List<String> list) { + return (count++) > 0; + } + } + + @Test + void testWithClampAdminTopics() { + var parameters = CommonTestData.getParticipantParameters(); + var topic = new TopicParameters(); + topic.setTopicCommInfrastructure(Topic.CommInfrastructure.NOOP.name()); + parameters.getIntermediaryParameters().setClampAdminTopics(topic); + var publishers = List.of(mock(Publisher.class)); + var listeners = List.of(mock(ParticipantStatusReqListener.class)); + var activator = mock(IntermediaryActivator.class); + var participantHandler = mock(ParticipantHandler.class); + var topicHealthCheck = new DummyTopicHealthCheck(); + var brokerStarter = new BrokerStarter(parameters, publishers, listeners, activator, participantHandler) { + @Override + protected TopicHealthCheck createTopicHealthCheck(TopicParameters topic) { + return topicHealthCheck; + } + }; + + when(activator.isAlive()).thenReturn(false); + brokerStarter.handleContextRefreshEvent(mock(ContextRefreshedEvent.class)); + verify(activator).start(); + } +} diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivatorTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivatorTest.java index 89bafa196..016f46c49 100644 --- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivatorTest.java +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/IntermediaryActivatorTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021-2024 Nordix Foundation. + * Copyright (C) 2021-2024-2025 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,6 @@ package org.onap.policy.clamp.acm.participant.intermediary.handler; import static org.assertj.core.api.Assertions.assertThatIllegalStateException; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; @@ -39,8 +38,6 @@ import org.onap.policy.clamp.models.acm.messages.kafka.participant.ParticipantSt import org.onap.policy.common.utils.coder.Coder; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.coder.StandardCoderObject; -import org.springframework.context.event.ContextClosedEvent; -import org.springframework.context.event.ContextRefreshedEvent; class IntermediaryActivatorTest { private static final Coder CODER = new StandardCoder(); @@ -68,8 +65,8 @@ class IntermediaryActivatorTest { List<Listener<ParticipantStatusReq>> listeners = List.of(listenerFirst, listenerSecond); - var handler = mock(ParticipantHandler.class); - try (var activator = new IntermediaryActivator(parameters, handler, publishers, listeners)) { + try (var activator = new IntermediaryActivator()) { + activator.config(parameters, publishers, listeners); assertFalse(activator.isAlive()); activator.start(); @@ -95,9 +92,6 @@ class IntermediaryActivatorTest { // repeat stop - should throw an exception assertThatIllegalStateException().isThrownBy(activator::stop); assertFalse(activator.isAlive()); - - assertDoesNotThrow(() -> activator.handleContextRefreshEvent(mock(ContextRefreshedEvent.class))); - assertDoesNotThrow(() -> activator.handleContextClosedEvent(mock(ContextClosedEvent.class))); } } } diff --git a/runtime-acm/src/main/resources/application.yaml b/runtime-acm/src/main/resources/application.yaml index bca01ace8..1bc529a74 100644 --- a/runtime-acm/src/main/resources/application.yaml +++ b/runtime-acm/src/main/resources/application.yaml @@ -9,8 +9,8 @@ spring: converters: preferred-json-mapper: gson datasource: - url: jdbc:mariadb://${mariadb.host:localhost}:${mariadb.port:3306}/clampacm - driverClassName: org.mariadb.jdbc.Driver + url: jdbc:postgresql://${postgresql.host:localhost}:${postgresql.port:5432}/clampacm + driverClassName: org.postgresql.Driver username: policy password: P01icY hikari: diff --git a/testsuites/stability/src/main/resources/testplans/stability.jmx b/testsuites/stability/src/main/resources/testplans/stability.jmx index dc0d5c05e..4d29711b2 100644 --- a/testsuites/stability/src/main/resources/testplans/stability.jmx +++ b/testsuites/stability/src/main/resources/testplans/stability.jmx @@ -53,7 +53,7 @@ <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> </AuthManager> <hashTree/> - <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager"> <collectionProp name="HeaderManager.headers"> <elementProp name="" elementType="Header"> <stringProp name="Header.name">Content-Type</stringProp> @@ -66,7 +66,7 @@ </collectionProp> </HeaderManager> <hashTree/> - <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true"> + <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group"> <intProp name="ThreadGroup.num_threads">1</intProp> <intProp name="ThreadGroup.ramp_time">1</intProp> <longProp name="ThreadGroup.duration">260000</longProp> @@ -78,7 +78,7 @@ </elementProp> </SetupThreadGroup> <hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Commission AutomationComposition definition" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Commission AutomationComposition definition"> <intProp name="HTTPSampler.concurrentPool">6</intProp> <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> @@ -391,47 +391,6 @@ }
 }
 },
 - "policy_types": {
 - "onap.policies.Native": {
 - "derived_from": "tosca.policies.Root",
 - "description": "a base policy type for all native PDP policies",
 - "version": "1.0.0",
 - "name": "onap.policies.Native"
 - },
 - "onap.policies.native.Apex": {
 - "derived_from": "onap.policies.Native",
 - "description": "a policy type for native apex policies",
 - "version": "1.0.0",
 - "name": "onap.policies.native.Apex",
 - "properties": {
 - "engine_service": {
 - "type": "onap.datatypes.native.apex.EngineService",
 - "description": "APEX Engine Service Parameters"
 - },
 - "inputs": {
 - "type": "map",
 - "description": "Inputs for handling events coming into the APEX engine",
 - "entry_schema": {
 - "type": "onap.datatypes.native.apex.EventHandler"
 - }
 - },
 - "outputs": {
 - "type": "map",
 - "description": "Outputs for handling events going out of the APEX engine",
 - "entry_schema": {
 - "type": "onap.datatypes.native.apex.EventHandler"
 - }
 - },
 - "environment": {
 - "type": "list",
 - "description": "Envioronmental parameters for the APEX engine",
 - "entry_schema": {
 - "type": "onap.datatypes.native.apex.Environment"
 - }
 - }
 - }
 - }
 - },
 "node_types": {
 "org.onap.policy.clamp.acm.Participant": {
 "version": "1.0.1",
 @@ -622,16 +581,6 @@ }
 },
 "topology_template": {
 - "inputs": {
 - "acm_element_policy": {
 - "type": "onap.datatypes.ToscaConceptIdentifier",
 - "description": "The ID of the operational policy to use",
 - "default": {
 - "name": "onap.policies.native.apex.ac.element",
 - "version": "1.0.0"
 - }
 - }
 - },
 "node_templates": {
 "org.onap.policy.clamp.acm.PolicyParticipant": {
 "version": "2.3.1",
 @@ -778,796 +727,7 @@ ]
 }
 }
 - },
 - "policies": [
 - {
 - "onap.policies.native.apex.ac.element": {
 - "type": "onap.policies.native.Apex",
 - "type_version": "1.0.0",
 - "properties": {
 - "engineServiceParameters": {
 - "name": "MyApexEngine",
 - "version": "0.0.1",
 - "id": 45,
 - "instanceCount": 2,
 - "deploymentPort": 12561,
 - "engineParameters": {
 - "executorParameters": {
 - "JAVASCRIPT": {
 - "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
 - }
 - },
 - "contextParameters": {
 - "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters",
 - "schemaParameters": {
 - "Json": {
 - "parameterClassName": "org.onap.policy.apex.plugins.context.schema.json.JsonSchemaHelperParameters"
 - }
 - }
 - }
 - },
 - "policy_type_impl": {
 - "policies": {
 - "key": {
 - "name": "APEXacElementPolicy_Policies",
 - "version": "0.0.1"
 - },
 - "policyMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "ReceiveEventPolicy",
 - "version": "0.0.1"
 - },
 - "value": {
 - "policyKey": {
 - "name": "ReceiveEventPolicy",
 - "version": "0.0.1"
 - },
 - "template": "Freestyle",
 - "state": {
 - "entry": [
 - {
 - "key": "DecideForwardingState",
 - "value": {
 - "stateKey": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DecideForwardingState"
 - },
 - "trigger": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "stateOutputs": {
 - "entry": [
 - {
 - "key": "CreateForwardPayload",
 - "value": {
 - "key": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "DecideForwardingState",
 - "localName": "CreateForwardPayload"
 - },
 - "outgoingEvent": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "outgoingEventReference": [
 - {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - }
 - ],
 - "nextState": {
 - "parentKeyName": "NULL",
 - "parentKeyVersion": "0.0.0",
 - "parentLocalName": "NULL",
 - "localName": "NULL"
 - }
 - }
 - }
 - ]
 - },
 - "contextAlbumReference": [],
 - "taskSelectionLogic": {
 - "key": {
 - "parentKeyName": "NULL",
 - "parentKeyVersion": "0.0.0",
 - "parentLocalName": "NULL",
 - "localName": "NULL"
 - },
 - "logicFlavour": "UNDEFINED",
 - "logic": ""
 - },
 - "stateFinalizerLogicMap": {
 - "entry": []
 - },
 - "defaultTask": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "taskReferences": {
 - "entry": [
 - {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "DecideForwardingState",
 - "localName": "ReceiveEventPolicy"
 - },
 - "outputType": "DIRECT",
 - "output": {
 - "parentKeyName": "ReceiveEventPolicy",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "DecideForwardingState",
 - "localName": "CreateForwardPayload"
 - }
 - }
 - }
 - ]
 - }
 - }
 - }
 - ]
 - },
 - "firstState": "DecideForwardingState"
 - }
 - }
 - ]
 - }
 - },
 - "tasks": {
 - "key": {
 - "name": "APEXacElementPolicy_Tasks",
 - "version": "0.0.1"
 - },
 - "taskMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "inputEvent": {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "Dmaap",
 - "target": "APEX",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "AcElementEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": "ENTRY"
 - },
 - "outputEvents": {
 - "entry": [
 - {
 - "key": "DmaapResponseStatusEvent",
 - "value": {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "APEX",
 - "target": "Dmaap",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseStatusEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "DmaapResponseStatusEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseStatusEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": ""
 - }
 - }
 - ]
 - },
 - "taskParameters": {
 - "entry": []
 - },
 - "contextAlbumReference": [
 - {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - }
 - ],
 - "taskLogic": {
 - "key": {
 - "parentKeyName": "ForwardPayloadTask",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "TaskLogic"
 - },
 - "logicFlavour": "JAVASCRIPT",
 - "logic": "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2022 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar msgResponse = executor.inFields.get('DmaapResponseEvent');\nexecutor.logger.info('Task in progress with mesages: ' + msgResponse);\n\nvar elementId = msgResponse.get('elementId').get('name');\n\nif (msgResponse.get('messageType') == 'STATUS' &&\n (elementId == 'onap.policy.clamp.ac.startertobridge'\n || elementId == 'onap.policy.clamp.ac.bridgetosink')) {\n\n var receiverId = '';\n if (elementId == 'onap.policy.clamp.ac.startertobridge') {\n receiverId = 'onap.policy.clamp.ac.bridge';\n } else {\n receiverId = 'onap.policy.clamp.ac.sink';\n }\n\n var elementIdResponse = new java.util.HashMap();\n elementIdResponse.put('name', receiverId);\n elementIdResponse.put('version', msgResponse.get('elementId').get('version'));\n\n var dmaapResponse = new java.util.HashMap();\n dmaapResponse.put('elementId', elementIdResponse);\n\n var message = msgResponse.get('message') + ' trace added from policy';\n dmaapResponse.put('message', message);\n dmaapResponse.put('messageType', 'STATUS');\n dmaapResponse.put('messageId', msgResponse.get('messageId'));\n dmaapResponse.put('timestamp', msgResponse.get('timestamp'));\n\n executor.logger.info('Sending forwarding Event to Ac element: ' + dmaapResponse);\n\n executor.outFields.put('DmaapResponseStatusEvent', dmaapResponse);\n}\n\ntrue;"
 - }
 - }
 - }
 - ]
 - }
 - },
 - "events": {
 - "key": {
 - "name": "APEXacElementPolicy_Events",
 - "version": "0.0.1"
 - },
 - "eventMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "Dmaap",
 - "target": "APEX",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "AcElementEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": "ENTRY"
 - }
 - },
 - {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "APEX",
 - "target": "Dmaap",
 - "parameter": {
 - "entry": [
 - {
 - "key": "DmaapResponseStatusEvent",
 - "value": {
 - "key": {
 - "parentKeyName": "DmaapResponseStatusEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "DmaapResponseStatusEvent"
 - },
 - "fieldSchemaKey": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": ""
 - }
 - },
 - {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "nameSpace": "org.onap.policy.apex.ac.element",
 - "source": "APEX",
 - "target": "file",
 - "parameter": {
 - "entry": [
 - {
 - "key": "final_status",
 - "value": {
 - "key": {
 - "parentKeyName": "LogEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "final_status"
 - },
 - "fieldSchemaKey": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - },
 - {
 - "key": "message",
 - "value": {
 - "key": {
 - "parentKeyName": "LogEvent",
 - "parentKeyVersion": "0.0.1",
 - "parentLocalName": "NULL",
 - "localName": "message"
 - },
 - "fieldSchemaKey": {
 - "name": "SimpleStringType",
 - "version": "0.0.1"
 - },
 - "optional": false
 - }
 - }
 - ]
 - },
 - "toscaPolicyState": ""
 - }
 - }
 - ]
 - }
 - },
 - "albums": {
 - "key": {
 - "name": "APEXacElementPolicy_Albums",
 - "version": "0.0.1"
 - },
 - "albums": {
 - "entry": [
 - {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "scope": "policy",
 - "isWritable": true,
 - "itemSchema": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - }
 - }
 - }
 - ]
 - }
 - },
 - "schemas": {
 - "key": {
 - "name": "APEXacElementPolicy_Schemas",
 - "version": "0.0.1"
 - },
 - "schemas": {
 - "entry": [
 - {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "schemaFlavour": "Json",
 - "schemaDefinition": "{\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"elementId\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"version\"\n ]\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"messageType\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"elementId\",\n \"message\",\n \"messageType\"\n ]\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": "UUIDType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "UUIDType",
 - "version": "0.0.1"
 - },
 - "schemaFlavour": "Java",
 - "schemaDefinition": "java.util.UUID"
 - }
 - }
 - ]
 - }
 - },
 - "key": {
 - "name": "APEXacElementPolicy",
 - "version": "0.0.1"
 - },
 - "keyInformation": {
 - "key": {
 - "name": "APEXacElementPolicy_KeyInfo",
 - "version": "0.0.1"
 - },
 - "keyInfoMap": {
 - "entry": [
 - {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACElementAlbum",
 - "version": "0.0.1"
 - },
 - "UUID": "7cddfab8-6d3f-3f7f-8ac3-e2eb5979c900",
 - "description": "Generated description for concept referred to by key \"ACElementAlbum:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ACEventType",
 - "version": "0.0.1"
 - },
 - "UUID": "dab78794-b666-3929-a75b-70d634b04fe5",
 - "description": "Generated description for concept referred to by key \"ACEventType:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy",
 - "version": "0.0.1"
 - },
 - "UUID": "da478611-7d77-3c46-b4be-be968769ba4e",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Albums",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Albums",
 - "version": "0.0.1"
 - },
 - "UUID": "fa8dc15e-8c8d-3de3-a0f8-585b76511175",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Albums:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Events",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Events",
 - "version": "0.0.1"
 - },
 - "UUID": "8508cd65-8dd2-342d-a5c6-1570810dbe2b",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Events:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_KeyInfo",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_KeyInfo",
 - "version": "0.0.1"
 - },
 - "UUID": "09e6927d-c5ac-3779-919f-9333994eed22",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_KeyInfo:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Policies",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Policies",
 - "version": "0.0.1"
 - },
 - "UUID": "cade3c9a-1600-3642-a6f4-315612187f46",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Policies:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Schemas",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Schemas",
 - "version": "0.0.1"
 - },
 - "UUID": "5bb4a8e9-35fa-37db-9a49-48ef036a7ba9",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Schemas:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "APEXacElementPolicy_Tasks",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "APEXacElementPolicy_Tasks",
 - "version": "0.0.1"
 - },
 - "UUID": "2527eeec-0d1f-3094-ad3f-212622b12836",
 - "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Tasks:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "AcElementEvent",
 - "version": "0.0.1"
 - },
 - "UUID": "32c013e2-2740-3986-a626-cbdf665b63e9",
 - "description": "Generated description for concept referred to by key \"AcElementEvent:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "DmaapResponseStatusEvent",
 - "version": "0.0.1"
 - },
 - "UUID": "2715cb6c-2778-3461-8b69-871e79f95935",
 - "description": "Generated description for concept referred to by key \"DmaapResponseStatusEvent:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "ForwardPayloadTask",
 - "version": "0.0.1"
 - },
 - "UUID": "51defa03-1ecf-3314-bf34-2a652bce57fa",
 - "description": "Generated description for concept referred to by key \"ForwardPayloadTask:0.0.1\""
 - }
 - },
 - {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "value": {
 - "key": {
 - "name": "LogEvent",
 - "version": "0.0.1"
 - },
 - "UUID": "c540f048-96af-35e3-a36e-e9c29377cba7",
 - "description": "Generated description for concept referred to by key \"LogEvent: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": "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": "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\""
 - }
 - }
 - ]
 - }
 - }
 - }
 - },
 - "eventInputParameters": {
 - "DmaapConsumer": {
 - "carrierTechnologyParameters": {
 - "carrierTechnology": "RESTCLIENT",
 - "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
 - "parameters": {
 - "url": "http://message-router:3904/events/AC_ELEMENT_MSG/APEX/1?timeout=30000"
 - }
 - },
 - "eventProtocolParameters": {
 - "eventProtocol": "JSON",
 - "parameters": {
 - "pojoField": "DmaapResponseEvent"
 - }
 - },
 - "eventName": "AcElementEvent",
 - "eventNameFilter": "AcElementEvent"
 - }
 - },
 - "eventOutputParameters": {
 - "logOutputter": {
 - "carrierTechnologyParameters": {
 - "carrierTechnology": "FILE",
 - "parameters": {
 - "fileName": "outputevents.log"
 - }
 - },
 - "eventProtocolParameters": {
 - "eventProtocol": "JSON"
 - }
 - },
 - "DmaapReplyProducer": {
 - "carrierTechnologyParameters": {
 - "carrierTechnology": "RESTCLIENT",
 - "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
 - "parameters": {
 - "url": "http://message-router:3904/events/POLICY_UPDATE_MSG"
 - }
 - },
 - "eventProtocolParameters": {
 - "eventProtocol": "JSON",
 - "parameters": {
 - "pojoField": "DmaapResponseStatusEvent"
 - }
 - },
 - "eventNameFilter": "(LogEvent|DmaapResponseStatusEvent)"
 - }
 - }
 - },
 - "name": "onap.policies.native.apex.ac.element",
 - "version": "1.0.0"
 - }
 - }
 - ]
 + }
 }
 }</stringProp> <stringProp name="Argument.metadata">=</stringProp> @@ -1702,7 +862,7 @@ <hashTree/> </hashTree> </hashTree> - <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Instantiate acm" enabled="true"> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Instantiate acm"> <intProp name="HTTPSampler.concurrentPool">6</intProp> <stringProp name="HTTPSampler.domain">${RUNTIME_HOST}</stringProp> <stringProp name="HTTPSampler.port">${RUNTIME_PORT}</stringProp> @@ -1717,29 +877,1154 @@ <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.value">{
 - "name": "DemoInstance0",
 - "version": "1.0.1",
 - "compositionId": "${compositionId}",
 - "description": "Demo automation composition instance 0",
 - "elements": {
 - "709c62b3-8918-41b9-a747-d21eb79c6c20": {
 - "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
 - "definition": {
 - "name": "onap.policy.clamp.ac.element.Policy_AutomationCompositionElement",
 - "version": "1.2.3"
 - },
 - "description": "Policy Automation Composition Element for the Demo",
 + "name": "DemoInstance0",
 + "version": "1.0.1",
 + "compositionId": "${compositionId}",
 + "description": "Demo automation composition instance 0",
 + "elements": {
 + "709c62b3-8918-41b9-a747-d21eb79c6c20": {
 + "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
 + "definition": {
 + "name": "onap.policy.clamp.ac.element.Policy_AutomationCompositionElement",
 + "version": "1.2.3"
 + },
 + "description": "Policy Automation Composition Element for the Demo",
 + "properties": {
 + "tosca_definitions_version": "tosca_simple_yaml_1_3",
 + "name": "NULL",
 + "version": "0.0.0",
 + "data_types": {
 + "onap.datatypes.ToscaConceptIdentifier": {
 + "derived_from": "tosca.datatypes.Root",
 "properties": {
 - "policy_type_id": {
 - "name": "onap.policies.native.Apex",
 - "version": "1.0.0"
 + "name": {
 + "type": "string",
 + "required": true
 + },
 + "version": {
 + "type": "string",
 + "required": true
 + }
 + }
 + },
 + "onap.datatypes.native.apex.EngineService": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "name": {
 + "type": "string",
 + "description": "Specifies the engine name",
 + "required": false,
 + "default": "ApexEngineService"
 + },
 + "version": {
 + "type": "string",
 + "description": "Specifies the engine version in double dotted format",
 + "required": false,
 + "default": "1.0.0"
 + },
 + "id": {
 + "type": "integer",
 + "description": "Specifies the engine id",
 + "required": true
 + },
 + "instance_count": {
 + "type": "integer",
 + "description": "Specifies the number of engine threads that should be run",
 + "required": true
 + },
 + "deployment_port": {
 + "type": "integer",
 + "description": "Specifies the port to connect to for engine administration",
 + "required": false,
 + "default": 1
 + },
 + "policy_model_file_name": {
 + "type": "string",
 + "description": "The name of the file from which to read the APEX policy model",
 + "required": false
 + },
 + "policy_type_impl": {
 + "type": "string",
 + "description": "The policy type implementation from which to read the APEX policy model",
 + "required": false
 + },
 + "periodic_event_period": {
 + "type": "string",
 + "description": "The time interval in milliseconds for the periodic scanning event, 0 means don't scan",
 + "required": false
 + },
 + "engine": {
 + "type": "onap.datatypes.native.apex.engineservice.Engine",
 + "description": "The parameters for all engines in the APEX engine service",
 + "required": true
 + }
 + }
 + },
 + "onap.datatypes.native.apex.EventHandler": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "name": {
 + "type": "string",
 + "description": "Specifies the event handler name, if not specified this is set to the key name",
 + "required": false
 + },
 + "carrier_technology": {
 + "type": "onap.datatypes.native.apex.CarrierTechnology",
 + "description": "Specifies the carrier technology of the event handler (such as REST/Web Socket/Kafka)",
 + "required": true
 + },
 + "event_protocol": {
 + "type": "onap.datatypes.native.apex.EventProtocol",
 + "description": "Specifies the event protocol of events for the event handler (such as Yaml/JSON/XML/POJO)",
 + "required": true
 + },
 + "event_name": {
 + "type": "string",
 + "description": "Specifies the event name for events on this event handler, if not specified, the event name is read from or written to the event being received or sent",
 + "required": false
 + },
 + "event_name_filter": {
 + "type": "string",
 + "description": "Specifies a filter as a regular expression, events that do not match the filter are dropped, the default is to let all events through",
 + "required": false
 + },
 + "synchronous_mode": {
 + "type": "boolean",
 + "description": "Specifies the event handler is syncronous (receive event and send response)",
 + "required": false,
 + "default": false
 + },
 + "synchronous_peer": {
 + "type": "string",
 + "description": "The peer event handler (output for input or input for output) of this event handler in synchronous mode, this parameter is mandatory if the event handler is in synchronous mode",
 + "required": false
 + },
 + "synchronous_timeout": {
 + "type": "integer",
 + "description": "The timeout in milliseconds for responses to be issued by APEX torequests, this parameter is mandatory if the event handler is in synchronous mode",
 + "required": false
 + },
 + "requestor_mode": {
 + "type": "boolean",
 + "description": "Specifies the event handler is in requestor mode (send event and wait for response mode)",
 + "required": false,
 + "default": false
 + },
 + "requestor_peer": {
 + "type": "string",
 + "description": "The peer event handler (output for input or input for output) of this event handler in requestor mode, this parameter is mandatory if the event handler is in requestor mode",
 + "required": false
 + },
 + "requestor_timeout": {
 + "type": "integer",
 + "description": "The timeout in milliseconds for wait for responses to requests, this parameter is mandatory if the event handler is in requestor mode",
 + "required": false
 + }
 + }
 + },
 + "onap.datatypes.native.apex.CarrierTechnology": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "label": {
 + "type": "string",
 + "description": "The label (name) of the carrier technology (such as REST, Kafka, WebSocket)",
 + "required": true
 + },
 + "plugin_parameter_class_name": {
 + "type": "string",
 + "description": "The class name of the class that overrides default handling of event input or output for this carrier technology, defaults to the supplied input or output class",
 + "required": false
 + }
 + }
 + },
 + "onap.datatypes.native.apex.EventProtocol": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "label": {
 + "type": "string",
 + "description": "The label (name) of the event protocol (such as Yaml, JSON, XML, or POJO)",
 + "required": true
 + },
 + "event_protocol_plugin_class": {
 + "type": "string",
 + "description": "The class name of the class that overrides default handling of the event protocol for this carrier technology, defaults to the supplied event protocol class",
 + "required": false
 + }
 + }
 + },
 + "onap.datatypes.native.apex.Environment": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "name": {
 + "type": "string",
 + "description": "The name of the environment variable",
 + "required": true
 + },
 + "value": {
 + "type": "string",
 + "description": "The value of the environment variable",
 + "required": true
 + }
 + }
 + },
 + "onap.datatypes.native.apex.engineservice.Engine": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "context": {
 + "type": "onap.datatypes.native.apex.engineservice.engine.Context",
 + "description": "The properties for handling context in APEX engines, defaults to using Java maps for context",
 + "required": false
 + },
 + "executors": {
 + "type": "map",
 + "description": "The plugins for policy executors used in engines such as javascript, MVEL, Jython",
 + "required": true,
 + "entry_schema": {
 + "description": "The plugin class path for this policy executor",
 + "type": "string"
 + }
 + }
 + }
 + },
 + "onap.datatypes.native.apex.engineservice.engine.Context": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "distributor": {
 + "type": "onap.datatypes.native.apex.Plugin",
 + "description": "The plugin to be used for distributing context between APEX PDPs at runtime",
 + "required": false
 + },
 + "schemas": {
 + "type": "map",
 + "description": "The plugins for context schemas available in APEX PDPs such as Java and Avro",
 + "required": false,
 + "entry_schema": {
 + "type": "onap.datatypes.native.apex.Plugin"
 + }
 + },
 + "locking": {
 + "type": "onap.datatypes.native.apex.Plugin",
 + "description": "The plugin to be used for locking context in and between APEX PDPs at runtime",
 + "required": false
 + },
 + "persistence": {
 + "type": "onap.datatypes.native.apex.Plugin",
 + "description": "The plugin to be used for persisting context for APEX PDPs at runtime",
 + "required": false
 + }
 + }
 + },
 + "onap.datatypes.native.apex.Plugin": {
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "name": {
 + "type": "string",
 + "description": "The name of the executor such as Javascript, Jython or MVEL",
 + "required": true
 + },
 + "plugin_class_name": {
 + "type": "string",
 + "description": "The class path of the plugin class for this executor"
 + }
 + }
 + },
 + "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest": {
 + "version": "1.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "restRequestId": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "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.acm.httpAutomationCompositionElement.ConfigurationEntity": {
 + "version": "1.0.0",
 + "derived_from": "tosca.datatypes.Root",
 + "properties": {
 + "configurationEntityId": {
 + "type": "onap.datatypes.ToscaConceptIdentifier",
 + "required": true,
 + "description": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element"
 + },
 + "restSequence": {
 + "type": "list",
 + "entry_schema": {
 + "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest",
 + "type_version": "1.0.0"
 },
 - "policy_id": {
 - "get_input": "acm_element_policy"
 + "description": "A sequence of REST commands to send to the REST endpoint"
 + }
 + }
 + }
 + },
 + "policy_types": {
 + "onap.policies.Native": {
 + "derived_from": "tosca.policies.Root",
 + "description": "a base policy type for all native PDP policies",
 + "version": "1.0.0",
 + "name": "onap.policies.Native"
 + },
 + "onap.policies.native.Apex": {
 + "derived_from": "onap.policies.Native",
 + "description": "a policy type for native apex policies",
 + "version": "1.0.0",
 + "name": "onap.policies.native.Apex",
 + "properties": {
 + "engine_service": {
 + "type": "onap.datatypes.native.apex.EngineService",
 + "description": "APEX Engine Service Parameters"
 + },
 + "inputs": {
 + "type": "map",
 + "description": "Inputs for handling events coming into the APEX engine",
 + "entry_schema": {
 + "type": "onap.datatypes.native.apex.EventHandler"
 + }
 + },
 + "outputs": {
 + "type": "map",
 + "description": "Outputs for handling events going out of the APEX engine",
 + "entry_schema": {
 + "type": "onap.datatypes.native.apex.EventHandler"
 }
 + },
 + "environment": {
 + "type": "list",
 + "description": "Envioronmental parameters for the APEX engine",
 + "entry_schema": {
 + "type": "onap.datatypes.native.apex.Environment"
 + }
 + }
 + }
 + }
 + },
 + "topology_template": {
 + "policies": [
 + {
 + "onap.policies.native.apex.ac.element": {
 + "type": "onap.policies.native.Apex",
 + "type_version": "1.0.0",
 + "properties": {
 + "engineServiceParameters": {
 + "name": "MyApexEngine",
 + "version": "0.0.1",
 + "id": 45,
 + "instanceCount": 2,
 + "deploymentPort": 12561,
 + "engineParameters": {
 + "executorParameters": {
 + "JAVASCRIPT": {
 + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters"
 + }
 + },
 + "contextParameters": {
 + "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters",
 + "schemaParameters": {
 + "Json": {
 + "parameterClassName": "org.onap.policy.apex.plugins.context.schema.json.JsonSchemaHelperParameters"
 + }
 + }
 + }
 + },
 + "policy_type_impl": {
 + "policies": {
 + "key": {
 + "name": "APEXacElementPolicy_Policies",
 + "version": "0.0.1"
 + },
 + "policyMap": {
 + "entry": [
 + {
 + "key": {
 + "name": "ReceiveEventPolicy",
 + "version": "0.0.1"
 + },
 + "value": {
 + "policyKey": {
 + "name": "ReceiveEventPolicy",
 + "version": "0.0.1"
 + },
 + "template": "Freestyle",
 + "state": {
 + "entry": [
 + {
 + "key": "DecideForwardingState",
 + "value": {
 + "stateKey": {
 + "parentKeyName": "ReceiveEventPolicy",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "DecideForwardingState"
 + },
 + "trigger": {
 + "name": "AcElementEvent",
 + "version": "0.0.1"
 + },
 + "stateOutputs": {
 + "entry": [
 + {
 + "key": "CreateForwardPayload",
 + "value": {
 + "key": {
 + "parentKeyName": "ReceiveEventPolicy",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "DecideForwardingState",
 + "localName": "CreateForwardPayload"
 + },
 + "outgoingEvent": {
 + "name": "DmaapResponseStatusEvent",
 + "version": "0.0.1"
 + },
 + "outgoingEventReference": [
 + {
 + "name": "DmaapResponseStatusEvent",
 + "version": "0.0.1"
 + }
 + ],
 + "nextState": {
 + "parentKeyName": "NULL",
 + "parentKeyVersion": "0.0.0",
 + "parentLocalName": "NULL",
 + "localName": "NULL"
 + }
 + }
 + }
 + ]
 + },
 + "contextAlbumReference": [],
 + "taskSelectionLogic": {
 + "key": {
 + "parentKeyName": "NULL",
 + "parentKeyVersion": "0.0.0",
 + "parentLocalName": "NULL",
 + "localName": "NULL"
 + },
 + "logicFlavour": "UNDEFINED",
 + "logic": ""
 + },
 + "stateFinalizerLogicMap": {
 + "entry": []
 + },
 + "defaultTask": {
 + "name": "ForwardPayloadTask",
 + "version": "0.0.1"
 + },
 + "taskReferences": {
 + "entry": [
 + {
 + "key": {
 + "name": "ForwardPayloadTask",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "parentKeyName": "ReceiveEventPolicy",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "DecideForwardingState",
 + "localName": "ReceiveEventPolicy"
 + },
 + "outputType": "DIRECT",
 + "output": {
 + "parentKeyName": "ReceiveEventPolicy",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "DecideForwardingState",
 + "localName": "CreateForwardPayload"
 + }
 + }
 + }
 + ]
 + }
 + }
 + }
 + ]
 + },
 + "firstState": "DecideForwardingState"
 + }
 + }
 + ]
 + }
 + },
 + "tasks": {
 + "key": {
 + "name": "APEXacElementPolicy_Tasks",
 + "version": "0.0.1"
 + },
 + "taskMap": {
 + "entry": [
 + {
 + "key": {
 + "name": "ForwardPayloadTask",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "ForwardPayloadTask",
 + "version": "0.0.1"
 + },
 + "inputEvent": {
 + "key": {
 + "name": "AcElementEvent",
 + "version": "0.0.1"
 + },
 + "nameSpace": "org.onap.policy.apex.ac.element",
 + "source": "Dmaap",
 + "target": "APEX",
 + "parameter": {
 + "entry": [
 + {
 + "key": "DmaapResponseEvent",
 + "value": {
 + "key": {
 + "parentKeyName": "AcElementEvent",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "DmaapResponseEvent"
 + },
 + "fieldSchemaKey": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "optional": false
 + }
 + }
 + ]
 + },
 + "toscaPolicyState": "ENTRY"
 + },
 + "outputEvents": {
 + "entry": [
 + {
 + "key": "DmaapResponseStatusEvent",
 + "value": {
 + "key": {
 + "name": "DmaapResponseStatusEvent",
 + "version": "0.0.1"
 + },
 + "nameSpace": "org.onap.policy.apex.ac.element",
 + "source": "APEX",
 + "target": "Dmaap",
 + "parameter": {
 + "entry": [
 + {
 + "key": "DmaapResponseStatusEvent",
 + "value": {
 + "key": {
 + "parentKeyName": "DmaapResponseStatusEvent",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "DmaapResponseStatusEvent"
 + },
 + "fieldSchemaKey": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "optional": false
 + }
 + }
 + ]
 + },
 + "toscaPolicyState": ""
 + }
 + }
 + ]
 + },
 + "taskParameters": {
 + "entry": []
 + },
 + "contextAlbumReference": [
 + {
 + "name": "ACElementAlbum",
 + "version": "0.0.1"
 + }
 + ],
 + "taskLogic": {
 + "key": {
 + "parentKeyName": "ForwardPayloadTask",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "TaskLogic"
 + },
 + "logicFlavour": "JAVASCRIPT",
 + "logic": "/*\n * ============LICENSE_START=======================================================\n * Copyright (C) 2022 Nordix. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * ============LICENSE_END=========================================================\n */\n\nexecutor.logger.info(executor.subject.id);\nexecutor.logger.info(executor.inFields);\n\nvar msgResponse = executor.inFields.get('DmaapResponseEvent');\nexecutor.logger.info('Task in progress with mesages: ' + msgResponse);\n\nvar elementId = msgResponse.get('elementId').get('name');\n\nif (msgResponse.get('messageType') == 'STATUS' &&\n (elementId == 'onap.policy.clamp.ac.startertobridge'\n || elementId == 'onap.policy.clamp.ac.bridgetosink')) {\n\n var receiverId = '';\n if (elementId == 'onap.policy.clamp.ac.startertobridge') {\n receiverId = 'onap.policy.clamp.ac.bridge';\n } else {\n receiverId = 'onap.policy.clamp.ac.sink';\n }\n\n var elementIdResponse = new java.util.HashMap();\n elementIdResponse.put('name', receiverId);\n elementIdResponse.put('version', msgResponse.get('elementId').get('version'));\n\n var dmaapResponse = new java.util.HashMap();\n dmaapResponse.put('elementId', elementIdResponse);\n\n var message = msgResponse.get('message') + ' trace added from policy';\n dmaapResponse.put('message', message);\n dmaapResponse.put('messageType', 'STATUS');\n dmaapResponse.put('messageId', msgResponse.get('messageId'));\n dmaapResponse.put('timestamp', msgResponse.get('timestamp'));\n\n executor.logger.info('Sending forwarding Event to Ac element: ' + dmaapResponse);\n\n executor.outFields.put('DmaapResponseStatusEvent', dmaapResponse);\n}\n\ntrue;"
 + }
 + }
 + }
 + ]
 + }
 + },
 + "events": {
 + "key": {
 + "name": "APEXacElementPolicy_Events",
 + "version": "0.0.1"
 + },
 + "eventMap": {
 + "entry": [
 + {
 + "key": {
 + "name": "AcElementEvent",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "AcElementEvent",
 + "version": "0.0.1"
 + },
 + "nameSpace": "org.onap.policy.apex.ac.element",
 + "source": "Dmaap",
 + "target": "APEX",
 + "parameter": {
 + "entry": [
 + {
 + "key": "DmaapResponseEvent",
 + "value": {
 + "key": {
 + "parentKeyName": "AcElementEvent",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "DmaapResponseEvent"
 + },
 + "fieldSchemaKey": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "optional": false
 + }
 + }
 + ]
 + },
 + "toscaPolicyState": "ENTRY"
 + }
 + },
 + {
 + "key": {
 + "name": "DmaapResponseStatusEvent",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "DmaapResponseStatusEvent",
 + "version": "0.0.1"
 + },
 + "nameSpace": "org.onap.policy.apex.ac.element",
 + "source": "APEX",
 + "target": "Dmaap",
 + "parameter": {
 + "entry": [
 + {
 + "key": "DmaapResponseStatusEvent",
 + "value": {
 + "key": {
 + "parentKeyName": "DmaapResponseStatusEvent",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "DmaapResponseStatusEvent"
 + },
 + "fieldSchemaKey": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "optional": false
 + }
 + }
 + ]
 + },
 + "toscaPolicyState": ""
 + }
 + },
 + {
 + "key": {
 + "name": "LogEvent",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "LogEvent",
 + "version": "0.0.1"
 + },
 + "nameSpace": "org.onap.policy.apex.ac.element",
 + "source": "APEX",
 + "target": "file",
 + "parameter": {
 + "entry": [
 + {
 + "key": "final_status",
 + "value": {
 + "key": {
 + "parentKeyName": "LogEvent",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "final_status"
 + },
 + "fieldSchemaKey": {
 + "name": "SimpleStringType",
 + "version": "0.0.1"
 + },
 + "optional": false
 + }
 + },
 + {
 + "key": "message",
 + "value": {
 + "key": {
 + "parentKeyName": "LogEvent",
 + "parentKeyVersion": "0.0.1",
 + "parentLocalName": "NULL",
 + "localName": "message"
 + },
 + "fieldSchemaKey": {
 + "name": "SimpleStringType",
 + "version": "0.0.1"
 + },
 + "optional": false
 + }
 + }
 + ]
 + },
 + "toscaPolicyState": ""
 + }
 + }
 + ]
 + }
 + },
 + "albums": {
 + "key": {
 + "name": "APEXacElementPolicy_Albums",
 + "version": "0.0.1"
 + },
 + "albums": {
 + "entry": [
 + {
 + "key": {
 + "name": "ACElementAlbum",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "ACElementAlbum",
 + "version": "0.0.1"
 + },
 + "scope": "policy",
 + "isWritable": true,
 + "itemSchema": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + }
 + }
 + }
 + ]
 + }
 + },
 + "schemas": {
 + "key": {
 + "name": "APEXacElementPolicy_Schemas",
 + "version": "0.0.1"
 + },
 + "schemas": {
 + "entry": [
 + {
 + "key": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "schemaFlavour": "Json",
 + "schemaDefinition": "{\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"elementId\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"version\"\n ]\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"messageType\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"elementId\",\n \"message\",\n \"messageType\"\n ]\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": "UUIDType",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "UUIDType",
 + "version": "0.0.1"
 + },
 + "schemaFlavour": "Java",
 + "schemaDefinition": "java.util.UUID"
 + }
 + }
 + ]
 + }
 + },
 + "key": {
 + "name": "APEXacElementPolicy",
 + "version": "0.0.1"
 + },
 + "keyInformation": {
 + "key": {
 + "name": "APEXacElementPolicy_KeyInfo",
 + "version": "0.0.1"
 + },
 + "keyInfoMap": {
 + "entry": [
 + {
 + "key": {
 + "name": "ACElementAlbum",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "ACElementAlbum",
 + "version": "0.0.1"
 + },
 + "UUID": "7cddfab8-6d3f-3f7f-8ac3-e2eb5979c900",
 + "description": "Generated description for concept referred to by key \"ACElementAlbum:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "ACEventType",
 + "version": "0.0.1"
 + },
 + "UUID": "dab78794-b666-3929-a75b-70d634b04fe5",
 + "description": "Generated description for concept referred to by key \"ACEventType:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "APEXacElementPolicy",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "APEXacElementPolicy",
 + "version": "0.0.1"
 + },
 + "UUID": "da478611-7d77-3c46-b4be-be968769ba4e",
 + "description": "Generated description for concept referred to by key \"APEXacElementPolicy:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "APEXacElementPolicy_Albums",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "APEXacElementPolicy_Albums",
 + "version": "0.0.1"
 + },
 + "UUID": "fa8dc15e-8c8d-3de3-a0f8-585b76511175",
 + "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Albums:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "APEXacElementPolicy_Events",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "APEXacElementPolicy_Events",
 + "version": "0.0.1"
 + },
 + "UUID": "8508cd65-8dd2-342d-a5c6-1570810dbe2b",
 + "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Events:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "APEXacElementPolicy_KeyInfo",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "APEXacElementPolicy_KeyInfo",
 + "version": "0.0.1"
 + },
 + "UUID": "09e6927d-c5ac-3779-919f-9333994eed22",
 + "description": "Generated description for concept referred to by key \"APEXacElementPolicy_KeyInfo:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "APEXacElementPolicy_Policies",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "APEXacElementPolicy_Policies",
 + "version": "0.0.1"
 + },
 + "UUID": "cade3c9a-1600-3642-a6f4-315612187f46",
 + "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Policies:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "APEXacElementPolicy_Schemas",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "APEXacElementPolicy_Schemas",
 + "version": "0.0.1"
 + },
 + "UUID": "5bb4a8e9-35fa-37db-9a49-48ef036a7ba9",
 + "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Schemas:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "APEXacElementPolicy_Tasks",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "APEXacElementPolicy_Tasks",
 + "version": "0.0.1"
 + },
 + "UUID": "2527eeec-0d1f-3094-ad3f-212622b12836",
 + "description": "Generated description for concept referred to by key \"APEXacElementPolicy_Tasks:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "AcElementEvent",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "AcElementEvent",
 + "version": "0.0.1"
 + },
 + "UUID": "32c013e2-2740-3986-a626-cbdf665b63e9",
 + "description": "Generated description for concept referred to by key \"AcElementEvent:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "DmaapResponseStatusEvent",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "DmaapResponseStatusEvent",
 + "version": "0.0.1"
 + },
 + "UUID": "2715cb6c-2778-3461-8b69-871e79f95935",
 + "description": "Generated description for concept referred to by key \"DmaapResponseStatusEvent:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "ForwardPayloadTask",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "ForwardPayloadTask",
 + "version": "0.0.1"
 + },
 + "UUID": "51defa03-1ecf-3314-bf34-2a652bce57fa",
 + "description": "Generated description for concept referred to by key \"ForwardPayloadTask:0.0.1\""
 + }
 + },
 + {
 + "key": {
 + "name": "LogEvent",
 + "version": "0.0.1"
 + },
 + "value": {
 + "key": {
 + "name": "LogEvent",
 + "version": "0.0.1"
 + },
 + "UUID": "c540f048-96af-35e3-a36e-e9c29377cba7",
 + "description": "Generated description for concept referred to by key \"LogEvent: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": "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": "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\""
 + }
 + }
 + ]
 + }
 + }
 + }
 + },
 + "eventInputParameters": {
 + "DmaapConsumer": {
 + "carrierTechnologyParameters": {
 + "carrierTechnology": "RESTCLIENT",
 + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
 + "parameters": {
 + "url": "http://message-router:3904/events/AC_ELEMENT_MSG/APEX/1?timeout=30000"
 + }
 + },
 + "eventProtocolParameters": {
 + "eventProtocol": "JSON",
 + "parameters": {
 + "pojoField": "DmaapResponseEvent"
 + }
 + },
 + "eventName": "AcElementEvent",
 + "eventNameFilter": "AcElementEvent"
 + }
 + },
 + "eventOutputParameters": {
 + "logOutputter": {
 + "carrierTechnologyParameters": {
 + "carrierTechnology": "FILE",
 + "parameters": {
 + "fileName": "outputevents.log"
 + }
 + },
 + "eventProtocolParameters": {
 + "eventProtocol": "JSON"
 + }
 + },
 + "DmaapReplyProducer": {
 + "carrierTechnologyParameters": {
 + "carrierTechnology": "RESTCLIENT",
 + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",
 + "parameters": {
 + "url": "http://message-router:3904/events/POLICY_UPDATE_MSG"
 + }
 + },
 + "eventProtocolParameters": {
 + "eventProtocol": "JSON",
 + "parameters": {
 + "pojoField": "DmaapResponseStatusEvent"
 + }
 + },
 + "eventNameFilter": "(LogEvent|DmaapResponseStatusEvent)"
 + }
 + }
 + },
 + "name": "onap.policies.native.apex.ac.element",
 + "version": "1.0.0"
 + }
 }
 + ]
 }
 + }
 }
 + }
 }</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> @@ -1773,7 +2058,7 @@ <hashTree/> </hashTree> </hashTree> - <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="AutomationComposition Test Flow"> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="AutomationComposition Test Flow" enabled="true"> <intProp name="ThreadGroup.num_threads">1</intProp> <intProp name="ThreadGroup.ramp_time">1</intProp> <longProp name="ThreadGroup.duration">7200</longProp> |