diff options
Diffstat (limited to 'participant/participant-impl/participant-impl-dcae')
34 files changed, 7457 insertions, 0 deletions
diff --git a/participant/participant-impl/participant-impl-dcae/pom.xml b/participant/participant-impl/participant-impl-dcae/pom.xml index 6186ced61..308084255 100644 --- a/participant/participant-impl/participant-impl-dcae/pom.xml +++ b/participant/participant-impl/participant-impl-dcae/pom.xml @@ -31,4 +31,23 @@ <artifactId>policy-clamp-participant-impl-dcae</artifactId> <name>${project.artifactId}</name> <description>DCAE participant, that allows DCAE to partake in control loops</description> + + <properties> + <mockserver.version>5.11.2</mockserver.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.mock-server</groupId> + <artifactId>mockserver-netty</artifactId> + <version>${mockserver.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mock-server</groupId> + <artifactId>mockserver-client-java</artifactId> + <version>${mockserver.version}</version> + <scope>test</scope> + </dependency> + </dependencies> </project> diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/AbstractHttpClient.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/AbstractHttpClient.java new file mode 100644 index 000000000..b2d0b61d0 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/AbstractHttpClient.java @@ -0,0 +1,154 @@ +/*- + * ============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.participant.dcae.httpclient; + +import java.io.Closeable; +import java.io.IOException; +import javax.ws.rs.core.Response.Status; +import org.apache.http.HttpEntity; +import org.apache.http.HttpHost; +import org.apache.http.HttpRequest; +import org.apache.http.ParseException; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.AuthCache; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.impl.auth.BasicScheme; +import org.apache.http.impl.client.BasicAuthCache; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.http.util.EntityUtils; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; +import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop; +import org.onap.policy.common.endpoints.parameters.RestServerParameters; +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.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public abstract class AbstractHttpClient implements Closeable { + + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractHttpClient.class); + private final HttpClientContext localContext; + private final CloseableHttpClient httpclient; + private final HttpHost target; + public static final Coder CODER = new StandardCoder(); + + /** + * Constructor. + */ + protected AbstractHttpClient(RestServerParameters restServerParameters) { + try { + final String scheme = restServerParameters.isHttps() ? "https" : "http"; + target = new HttpHost(restServerParameters.getHost(), restServerParameters.getPort(), scheme); + + CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(new AuthScope(target.getHostName(), target.getPort()), + new UsernamePasswordCredentials(restServerParameters.getUserName(), + restServerParameters.getPassword())); + + AuthCache authCache = new BasicAuthCache(); + BasicScheme basicAuth = new BasicScheme(); + authCache.put(target, basicAuth); + localContext = HttpClientContext.create(); + localContext.setAuthCache(authCache); + + HttpClientBuilder builder = HttpClients.custom().setDefaultCredentialsProvider(credsProvider); + if (restServerParameters.isHttps()) { + final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(new SSLContextBuilder() + .loadTrustMaterial(null, new TrustSelfSignedStrategy()).setProtocol("TLSv1.2").build(), + new NoopHostnameVerifier()); + builder.setSSLSocketFactory(sslsf); + } + httpclient = builder.build(); + + } catch (final Exception e) { + throw new ControlLoopRuntimeException(Status.INTERNAL_SERVER_ERROR, + restServerParameters.getName() + " Client failed to start", e); + } + } + + CloseableHttpResponse execute(HttpRequest request) throws IOException { + return httpclient.execute(target, request, localContext); + } + + protected boolean executePut(String path, int statusCode) { + try (CloseableHttpResponse response = execute(new HttpPut(path))) { + return response.getStatusLine().getStatusCode() == statusCode; + } catch (Exception e) { + return false; + } + } + + protected Loop executePost(String path, int statusCode) { + try (CloseableHttpResponse response = execute(new HttpPost(path))) { + if (response.getStatusLine().getStatusCode() != statusCode) { + return null; + } + return entityToMap(response.getEntity()); + } catch (Exception e) { + return null; + } + } + + protected Loop executeGet(String path, int statusCode) { + try (CloseableHttpResponse response = execute(new HttpGet(path))) { + if (response.getStatusLine().getStatusCode() != statusCode) { + return null; + } + return entityToMap(response.getEntity()); + } catch (Exception e) { + return null; + } + } + + private Loop entityToMap(HttpEntity httpEntity) { + if (httpEntity == null) { + return new Loop(); + } + try { + return CODER.convert(EntityUtils.toString(httpEntity), Loop.class); + } catch (ParseException | IOException e) { + LOGGER.error("error reading Entity", e); + return new Loop(); + } catch (CoderException e) { + LOGGER.error("cannot convert to Loop Object", e); + return new Loop(); + } + } + + @Override + public void close() throws IOException { + httpclient.close(); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClient.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClient.java new file mode 100644 index 000000000..eb805054d --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClient.java @@ -0,0 +1,140 @@ +/*- + * ============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.participant.dcae.httpclient; + +import org.apache.http.HttpStatus; +import org.onap.policy.clamp.controlloop.participant.dcae.model.ExternalComponent; +import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop; +import org.onap.policy.common.endpoints.parameters.RestServerParameters; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ClampHttpClient extends AbstractHttpClient { + + private static final Logger LOGGER = LoggerFactory.getLogger(ClampHttpClient.class); + + private static final String STATUS = "/restservices/clds/v2/loop/getstatus/"; + private static final String CREATE = "/restservices/clds/v2/loop/create/%s?templateName=%s"; + private static final String UPDATE = "/restservices/clds/v2/loop/updateMicroservicePolicy/"; + private static final String DEPLOY = "/restservices/clds/v2/loop/deploy/"; + private static final String STOP = "/restservices/clds/v2/loop/stop/"; + private static final String DELETE = "/restservices/clds/v2/loop/delete/"; + private static final String UNDEPLOY = "/restservices/clds/v2/loop/undeploy/"; + public static final String STATUS_NOT_FOUND = "STATUS_NOT_FOUND"; + public static final String POLICY_NOT_FOUND = "POLICY_NOT_FOUND"; + + /** + * Constructor. + */ + public ClampHttpClient(RestServerParameters restServerParameters) { + super(restServerParameters); + } + + /** + * Create. + * + * @param loopName the loopName + * @param templateName the templateName + * @return the Loop object or null if error occurred + */ + public Loop create(String loopName, String templateName) { + return executePost(String.format(CREATE, loopName, templateName), HttpStatus.SC_OK); + } + + /** + * Update. + * + * @param loopName the loopName + * @param jsonEntity the Json entity + * @return true + */ + public boolean update(String loopName, String jsonEntity) { + return executePost(UPDATE + loopName, HttpStatus.SC_OK) != null; + } + + /** + * Deploy. + * + * @param loopName the loopName + * @return true + */ + public boolean deploy(String loopName) { // DCAE + return executePut(DEPLOY + loopName, HttpStatus.SC_ACCEPTED); + } + + /** + * Get Status. + * + * @param loopName the loopName + * @return the Loop object or null if error occurred + */ + public Loop getstatus(String loopName) { + return executeGet(STATUS + loopName, HttpStatus.SC_OK); + } + + /** + * Undeploy. + * + * @param loopName the loopName + * @return true + */ + public boolean undeploy(String loopName) { + return executePut(UNDEPLOY + loopName, HttpStatus.SC_ACCEPTED); + } + + /** + * Stop. + * + * @param loopName the loopName + * @return true + */ + public boolean stop(String loopName) { + return executePut(STOP + loopName, HttpStatus.SC_OK); + } + + /** + * Delete. + * + * @param loopName the loopName + * @return true + */ + public boolean delete(String loopName) { + return executePut(DELETE + loopName, HttpStatus.SC_OK); + } + + /** + * return status from Loop object. + * + * @param loop Loop + * @return status + */ + public static String getStatusCode(Loop loop) { + if (loop == null || loop.getComponents() == null || loop.getComponents().isEmpty()) { + return STATUS_NOT_FOUND; + } + ExternalComponent externalComponent = loop.getComponents().get("DCAE"); + if (externalComponent == null || externalComponent.getComponentState() == null) { + return STATUS_NOT_FOUND; + } + + return externalComponent.getComponentState().getStateName(); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClient.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClient.java new file mode 100644 index 000000000..cd84a2feb --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ConsulDcaeHttpClient.java @@ -0,0 +1,46 @@ +/*- + * ============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.participant.dcae.httpclient; + +import org.apache.http.HttpStatus; +import org.onap.policy.common.endpoints.parameters.RestServerParameters; + +public class ConsulDcaeHttpClient extends AbstractHttpClient { + + private static final String DEPLOY = "/v1/kv/dcae-pmsh:policy"; + + /** + * constructor. + */ + public ConsulDcaeHttpClient(RestServerParameters restServerParameters) { + super(restServerParameters); + } + + /** + * call consult. + * + * @param jsonEntity the Entity + * @return true + */ + public boolean deploy(String jsonEntity) { + return executePut(DEPLOY + jsonEntity, HttpStatus.SC_ACCEPTED); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/ControlLoopElementHandler.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/ControlLoopElementHandler.java new file mode 100644 index 000000000..96677f320 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/ControlLoopElementHandler.java @@ -0,0 +1,197 @@ +/*- + * ============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.participant.dcae.main.handler; + +import java.io.Closeable; +import java.io.IOException; +import java.time.Instant; +import java.util.UUID; +import java.util.concurrent.TimeUnit; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatistics; +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.participant.dcae.httpclient.ClampHttpClient; +import org.onap.policy.clamp.controlloop.participant.dcae.httpclient.ConsulDcaeHttpClient; +import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop; +import org.onap.policy.clamp.controlloop.participant.intermediary.api.ControlLoopElementListener; +import org.onap.policy.common.endpoints.parameters.RestServerParameters; +import org.onap.policy.models.base.PfModelException; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * This class handles implementation of controlLoopElement updates. + */ +public class ControlLoopElementHandler implements ControlLoopElementListener, Closeable { + + private static final Logger LOGGER = LoggerFactory.getLogger(ControlLoopElementHandler.class); + private final ClampHttpClient clampClient; + private final ConsulDcaeHttpClient consulClient; + + private static final String LOOP = "pmsh_loop"; + private static final String TEMPLATE = "LOOP_TEMPLATE_k8s_pmsh"; + + private static final String BLUEPRINT_DEPLOYED = "BLUEPRINT_DEPLOYED"; + private static final String MICROSERVICE_INSTALLED_SUCCESSFULLY = "MICROSERVICE_INSTALLED_SUCCESSFULLY"; + private static final int CHECK_COUNT = 10; + + private static final String BODY_CONSUL = + "{ \"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\" } ] } } ] } }"; + + /** + * Constructor. + */ + public ControlLoopElementHandler(RestServerParameters clampParameters, RestServerParameters consulParameters) { + clampClient = new ClampHttpClient(clampParameters); + consulClient = new ConsulDcaeHttpClient(consulParameters); + } + + /** + * Callback method to handle a control loop element state change. + * + * @param controlLoopElementId the ID of the control loop element + * @param currentState the current state of the control loop element + * @param newState the state to which the control loop element is changing to + */ + @Override + public void controlLoopElementStateChange(UUID controlLoopElementId, ControlLoopState currentState, + ControlLoopOrderedState newState) { + switch (newState) { + case UNINITIALISED: + Loop loop = clampClient.getstatus(LOOP); + if (loop != null) { + clampClient.undeploy(LOOP); + DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi() + .updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.UNINITIALISED); + } + break; + case PASSIVE: + DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi() + .updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.PASSIVE); + break; + case RUNNING: + DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi() + .updateControlLoopElementState(controlLoopElementId, newState, ControlLoopState.RUNNING); + break; + default: + LOGGER.debug("Unknown orderedstate {}", newState); + break; + } + } + + private Loop getStatus() throws PfModelException { + Loop loop = clampClient.getstatus(LOOP); + if (loop == null) { + loop = clampClient.create(LOOP, TEMPLATE); + } + if (loop == null) { + throw new PfModelException(null, ""); + } + return loop; + } + + private void deploy() throws PfModelException { + if (!consulClient.deploy(BODY_CONSUL)) { + throw new PfModelException(null, "deploy to consul failed"); + } + if (!clampClient.deploy(LOOP)) { + throw new PfModelException(null, "deploy failed"); + } + } + + /** + * Callback method to handle an update on a control loop element. + * + * @param element the information on the control loop element + * @param controlLoopDefinition toscaServiceTemplate + * @throws PfModelException in case of an exception + */ + @Override + public void controlLoopElementUpdate(ControlLoopElement element, ToscaServiceTemplate controlLoopDefinition) + throws PfModelException { + try { + Loop loop = getStatus(); + + if (BLUEPRINT_DEPLOYED.equals(ClampHttpClient.getStatusCode(loop))) { + deploy(); + boolean deployedFlag = false; + for (int i = 0; i < CHECK_COUNT; i++) { + //sleep 10 seconds + TimeUnit.SECONDS.sleep(CHECK_COUNT); + loop = getStatus(); + String status = ClampHttpClient.getStatusCode(loop); + if (MICROSERVICE_INSTALLED_SUCCESSFULLY.equals(status)) { + DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi() + .updateControlLoopElementState(element.getId(), element.getOrderedState(), + ControlLoopState.PASSIVE); + deployedFlag = true; + break; + } + } + if (!deployedFlag) { + LOGGER.warn("DCAE is not deployed properly, ClElement state will be UNINITIALISED2PASSIVE"); + DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi() + .updateControlLoopElementState(element.getId(), element.getOrderedState(), + ControlLoopState.UNINITIALISED2PASSIVE); + } + } + } catch (PfModelException e) { + throw e; + } catch (Exception e) { + throw new PfModelException(null, e.getMessage(), e); + } + } + + /** + * Handle controlLoopElement statistics. + * + * @param controlLoopElementId controlloop element id + */ + @Override + public void handleStatistics(UUID controlLoopElementId) { + ControlLoopElement clElement = DcaeHandler.getInstance().getDcaeProvider() + .getIntermediaryApi().getControlLoopElement(controlLoopElementId); + if (clElement != null) { + ClElementStatistics clElementStatistics = new ClElementStatistics(); + clElementStatistics.setControlLoopState(clElement.getState()); + clElementStatistics.setTimeStamp(Instant.now()); + DcaeHandler.getInstance().getDcaeProvider().getIntermediaryApi() + .updateControlLoopElementStatistics(controlLoopElementId, clElementStatistics); + } + } + + @Override + public void close() throws IOException { + clampClient.close(); + consulClient.close(); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeHandler.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeHandler.java new file mode 100644 index 000000000..1963e38b1 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeHandler.java @@ -0,0 +1,82 @@ +/*- + * ============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.participant.dcae.main.handler; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import javax.ws.rs.core.Response; +import lombok.Getter; +import org.onap.policy.clamp.controlloop.common.handler.ControlLoopHandler; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.common.endpoints.event.comm.TopicSink; +import org.onap.policy.common.endpoints.listeners.MessageTypeDispatcher; +import org.onap.policy.common.utils.services.Registry; +import org.onap.policy.models.base.PfModelRuntimeException; + +/** + * This class handles dcae of participants and control loop elements. + * + * </p> + * It is effectively a singleton that is started at system start. + */ +public class DcaeHandler extends ControlLoopHandler { + + private final ParticipantDcaeParameters parameters; + @Getter + private DcaeProvider dcaeProvider; + + /** + * Create a handler. + * + * @param parameters the parameters for access to the database + */ + public DcaeHandler(ParticipantDcaeParameters parameters) { + super(parameters.getDatabaseProviderParameters()); + this.parameters = parameters; + } + + public static DcaeHandler getInstance() { + return Registry.get(DcaeHandler.class.getName()); + } + + @Override + public Set<Class<?>> getProviderClasses() { + return Collections.emptySet(); + } + + @Override + public void startProviders() { + dcaeProvider = new DcaeProvider(parameters); + } + + @Override + public void stopProviders() { + try { + dcaeProvider.close(); + } catch (IOException e) { + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, e.getMessage()); + } finally { + dcaeProvider = null; + } + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeProvider.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeProvider.java new file mode 100644 index 000000000..afaf1c754 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/handler/DcaeProvider.java @@ -0,0 +1,133 @@ +/*- + * ============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.participant.dcae.main.handler; + +import java.io.Closeable; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import lombok.Getter; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement; +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.messages.rest.TypedSimpleResponse; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryApi; +import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryFactory; + +/** + * This provider class dcae of participants and control loop elements. + */ +public class DcaeProvider implements Closeable { + @Getter + private final ParticipantIntermediaryApi intermediaryApi; + + private final ControlLoopElementHandler clElementHandler; + + /** + * Create a participant dcae provider. + * + * @throws ControlLoopRuntimeException on errors creating the provider + */ + public DcaeProvider(ParticipantDcaeParameters parameters) throws ControlLoopRuntimeException { + intermediaryApi = new ParticipantIntermediaryFactory().createApiImplementation(); + intermediaryApi.init(parameters.getIntermediaryParameters()); + clElementHandler = new ControlLoopElementHandler(parameters.getClampClientParameters(), + parameters.getConsulClientParameters()); + intermediaryApi.registerControlLoopElementListener(clElementHandler); + } + + @Override + public void close() throws IOException { + intermediaryApi.close(); + clElementHandler.close(); + } + + /** + * Get the control loops. + * + * @param name the controlLoop, null to get all + * @param version the controlLoop, null to get all + * @return the control loops + * @throws ControlLoopException on errors getting the control loops + */ + public ControlLoops getControlLoops(String name, String version) throws ControlLoopException { + return intermediaryApi.getControlLoops(name, version); + } + + /** + * Get the dcae control loop elements. + * + * @param name the controlLoopElement, null to get all + * @param version the controlLoopElement, null to get all + * @return the control loop elements + * @throws ControlLoopException on errors getting the control loop elements + */ + public Map<UUID, ControlLoopElement> getControlLoopElements(String name, String version) + throws ControlLoopException { + return intermediaryApi.getControlLoopElements(name, version); + } + + /** + * Update the given control loop element in the dcae. + * + * @param element the control loop element to update + * @return response simple response returned + * @throws ControlLoopException on errors updating the control loop element + */ + public TypedSimpleResponse<ControlLoopElement> updateControlLoopElement(ControlLoopElement element) + throws ControlLoopException { + TypedSimpleResponse<ControlLoopElement> response = new TypedSimpleResponse<>(); + response.setResponse(intermediaryApi.updateControlLoopElementState(element.getId(), + element.getOrderedState(), element.getState())); + return response; + } + + /** + * Get the current dcae participants. + * + * @param name the participant, null to get all + * @param version the participant, null to get all + * @return the list of participants + * @throws ControlLoopException on errors getting the participants + */ + public List<Participant> getParticipants(String name, String version) throws ControlLoopException { + return intermediaryApi.getParticipants(name, version); + } + + /** + * Update a dcae participant. + * + * @param participant the participant to update + * @return TypedSimpleResponse simple response + * @throws ControlLoopException on errors updating the participant + */ + + public TypedSimpleResponse<Participant> updateParticipant(Participant participant) throws ControlLoopException { + TypedSimpleResponse<Participant> response = new TypedSimpleResponse<>(); + response.setResponse( + intermediaryApi.updateParticipantState(participant.getDefinition(), participant.getParticipantState())); + return response; + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameterHandler.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameterHandler.java new file mode 100644 index 000000000..8d9bef98c --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameterHandler.java @@ -0,0 +1,78 @@ +/*- + * ============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.participant.dcae.main.parameters; + +import java.io.File; +import javax.ws.rs.core.Response; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException; +import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeCommandLineArguments; +import org.onap.policy.common.parameters.ValidationResult; +import org.onap.policy.common.utils.coder.Coder; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; + +/** + * This class handles reading, parsing and validating of control loop runtime parameters from JSON files. + */ +public class ParticipantDcaeParameterHandler { + + private static final Coder CODER = new StandardCoder(); + + /** + * Read the parameters from the parameter file. + * + * @param arguments the arguments passed to dcae + * @return the parameters read from the configuration file + * @throws ControlLoopException on parameter exceptions + */ + public ParticipantDcaeParameters getParameters(final ParticipantDcaeCommandLineArguments arguments) + throws ControlLoopException { + ParticipantDcaeParameters parameters = null; + + // Read the parameters + try { + // Read the parameters from JSON + File file = new File(arguments.getFullConfigurationFilePath()); + parameters = CODER.decode(file, ParticipantDcaeParameters.class); + } catch (final CoderException e) { + final String errorMessage = "error reading parameters from \"" + arguments.getConfigurationFilePath() + + "\"\n" + "(" + e.getClass().getSimpleName() + ")"; + throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, errorMessage, e); + } + + // The JSON processing returns null if there is an empty file + if (parameters == null) { + final String errorMessage = "no parameters found in \"" + arguments.getConfigurationFilePath() + "\""; + throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, errorMessage); + } + + // validate the parameters + final ValidationResult validationResult = parameters.validate(); + if (!validationResult.isValid()) { + String returnMessage = + "validation error(s) on parameters from \"" + arguments.getConfigurationFilePath() + "\"\n"; + returnMessage += validationResult.getResult(); + throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, returnMessage); + } + + return parameters; + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameters.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameters.java new file mode 100644 index 000000000..beb273086 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/ParticipantDcaeParameters.java @@ -0,0 +1,93 @@ +/*- + * ============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.participant.dcae.main.parameters; + +import javax.validation.constraints.NotBlank; +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; +import org.onap.policy.clamp.controlloop.participant.intermediary.parameters.ParticipantIntermediaryParameters; +import org.onap.policy.common.endpoints.parameters.RestServerParameters; +import org.onap.policy.common.parameters.BeanValidationResult; +import org.onap.policy.common.parameters.ParameterGroupImpl; +import org.onap.policy.common.parameters.ValidationStatus; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; +import org.onap.policy.models.provider.PolicyModelsProviderParameters; + +/** + * Class to hold all parameters needed for the participant dcae. + * + */ +@NotNull +@NotBlank +@Getter +public class ParticipantDcaeParameters extends ParameterGroupImpl { + @Valid + private RestServerParameters clampClientParameters; + + @Valid + private RestServerParameters consulClientParameters; + + private ParticipantIntermediaryParameters intermediaryParameters; + private PolicyModelsProviderParameters databaseProviderParameters; + + /** + * Create the participant dcae parameter group. + * + * @param name the parameter group name + */ + public ParticipantDcaeParameters(final String name) { + super(name); + } + + /** + * {@inheritDoc}. + */ + @Override + public BeanValidationResult validate() { + BeanValidationResult result = super.validate(); + if (result.isValid()) { + result.addResult(checkMissingMandatoryParams(clampClientParameters)); + result.addResult(checkMissingMandatoryParams(consulClientParameters)); + } + return result; + } + + private BeanValidationResult checkMissingMandatoryParams(RestServerParameters clientParameters) { + BeanValidationResult result = new BeanValidationResult(clientParameters.getName(), clientParameters); + if (StringUtils.isBlank(clientParameters.getHost())) { + result.addResult("Host", clientParameters.getHost(), ValidationStatus.INVALID, "is blank"); + } + if (StringUtils.isBlank(clientParameters.getName())) { + result.addResult("Name", clientParameters.getName(), ValidationStatus.INVALID, "is blank"); + } + if (StringUtils.isBlank(clientParameters.getPassword())) { + result.addResult("Password", clientParameters.getPassword(), ValidationStatus.INVALID, "is blank"); + } + if (StringUtils.isBlank(clientParameters.getUserName())) { + result.addResult("UserName", clientParameters.getUserName(), ValidationStatus.INVALID, "is blank"); + } + if (clientParameters.getPort() <= 0 || clientParameters.getPort() >= 65535) { + result.addResult("Port", clientParameters.getPort(), ValidationStatus.INVALID, "is not valid"); + } + return result; + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/Main.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/Main.java new file mode 100644 index 000000000..2b47a2c13 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/Main.java @@ -0,0 +1,151 @@ +/*- + * ============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.participant.dcae.main.startstop; + +import java.util.Arrays; +import javax.ws.rs.core.Response; +import lombok.Getter; +import org.onap.policy.clamp.controlloop.common.ControlLoopConstants; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameterHandler; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.common.utils.resources.MessageConstants; +import org.onap.policy.common.utils.services.Registry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * This class initiates ONAP Policy Framework Control Loop participant component. + */ +public class Main { + + private static final Logger LOGGER = LoggerFactory.getLogger(Main.class); + + private ParticipantDcaeActivator activator; + + @Getter + private ParticipantDcaeParameters parameterGroup; + + /** + * Instantiates the control loop participant service. + * + * @param args the command line arguments + */ + public Main(final String[] args) { + final String argumentString = Arrays.toString(args); + LOGGER.info("Starting the control loop participant service with arguments - {}", argumentString); + + // Check the arguments + final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments(); + try { + // The arguments return a string if there is a message to print and we should exit + final String argumentMessage = arguments.parse(args); + if (argumentMessage != null) { + LOGGER.info(argumentMessage); + return; + } + // Validate that the arguments are sane + arguments.validate(); + + // Read the parameters + parameterGroup = new ParticipantDcaeParameterHandler().getParameters(arguments); + + // Now, create the activator for the service + activator = new ParticipantDcaeActivator(parameterGroup); + Registry.register(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR, activator); + + // Start the activator + activator.start(); + } catch (Exception exp) { + if (null != activator) { + Registry.unregister(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR); + } + throw new ControlLoopRuntimeException(Response.Status.BAD_REQUEST, + String.format(MessageConstants.START_FAILURE_MSG, MessageConstants.POLICY_CLAMP), exp); + } + + // Add a shutdown hook to shut everything down in an orderly manner + Runtime.getRuntime().addShutdownHook(new ClRuntimeShutdownHookClass()); + String successMsg = String.format(MessageConstants.START_SUCCESS_MSG, MessageConstants.POLICY_CLAMP); + LOGGER.info(successMsg); + } + + /** + * Check if main is running. + */ + public boolean isRunning() { + return activator != null && activator.isAlive(); + } + + /** + * Shut down Execution. + * + * @throws ControlLoopException on shutdown errors + */ + public void shutdown() throws ControlLoopException { + // clear the parameterGroup variable + parameterGroup = null; + + // clear the cl participant activator + if (activator != null) { + activator.stop(); + } + } + + /** + * The Class ClRuntimeShutdownHookClass terminates the control loop participant service + * when its run method is called. + */ + private class ClRuntimeShutdownHookClass extends Thread { + /* + * (non-Javadoc) + * + * @see java.lang.Runnable#run() + */ + @Override + public void run() { + if (!activator.isAlive()) { + return; + } + + try { + // Shutdown the control loop participant service and wait for everything to stop + activator.stop(); + } catch (final RuntimeException e) { + LOGGER.warn("error occured during shut down of the control loop participant service", e); + } + } + } + + /** + * The main method. + * + * @param args the arguments + */ + public static void main(final String[] args) { // NOSONAR + /* + * NOTE: arguments are validated by the constructor, thus sonar is disabled. + */ + + new Main(args); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeActivator.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeActivator.java new file mode 100644 index 000000000..d485895cf --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeActivator.java @@ -0,0 +1,58 @@ +/*- + * ============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.participant.dcae.main.startstop; + +import java.util.concurrent.atomic.AtomicReference; +import lombok.Getter; +import org.onap.policy.clamp.controlloop.participant.dcae.main.handler.DcaeHandler; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.common.utils.services.ServiceManagerContainer; + +/** + * This class activates the control loop runtime component as a complete service together with all its controllers, + * listeners & handlers. + */ +public class ParticipantDcaeActivator extends ServiceManagerContainer { + @Getter + private final ParticipantDcaeParameters parameters; + + /** + * Instantiate the activator for the dcae as a complete service. + * + * @param parameters the parameters for the control loop runtime service + */ + public ParticipantDcaeActivator(final ParticipantDcaeParameters parameters) { + this.parameters = parameters; + + final AtomicReference<DcaeHandler> dcaeHandler = new AtomicReference<>(); + + // @formatter:off + addAction("Dcae Handler", + () -> dcaeHandler.set(new DcaeHandler(parameters)), + () -> dcaeHandler.get().close()); + + addAction("Dcae Providers", + () -> dcaeHandler.get().startProviders(), + () -> dcaeHandler.get().stopProviders()); + + // @formatter:on + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeCommandLineArguments.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeCommandLineArguments.java new file mode 100644 index 000000000..0bf382ab1 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/ParticipantDcaeCommandLineArguments.java @@ -0,0 +1,151 @@ +/*- + * ============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.participant.dcae.main.startstop; + +import java.io.File; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.net.URL; +import java.util.Arrays; +import javax.ws.rs.core.Response; +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.apache.commons.lang3.StringUtils; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; +import org.onap.policy.clamp.controlloop.common.startstop.CommonCommandLineArguments; +import org.onap.policy.common.utils.resources.ResourceUtils; + +/** + * This class reads and handles command line parameters for the control loop runtime service. + * + */ +public class ParticipantDcaeCommandLineArguments { + private static final String FILE_MESSAGE_PREAMBLE = " file \""; + private static final int HELP_LINE_LENGTH = 120; + + private final Options options; + private final CommonCommandLineArguments commonCommandLineArguments; + + @Getter() + @Setter() + private String configurationFilePath = null; + + /** + * Construct the options for the dcae participant. + */ + public ParticipantDcaeCommandLineArguments() { + options = new Options(); + commonCommandLineArguments = new CommonCommandLineArguments(options); + } + + /** + * Construct the options for the CLI editor and parse in the given arguments. + * + * @param args The command line arguments + */ + public ParticipantDcaeCommandLineArguments(final String[] args) { + // Set up the options with the default constructor + this(); + + // Parse the arguments + try { + parse(args); + } catch (final ControlLoopException e) { + throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE, + "parse error on dcae participant parameters", e); + } + } + + /** + * Parse the command line options. + * + * @param args The command line arguments + * @return a string with a message for help and version, or null if there is no message + * @throws ControlLoopException on command argument errors + */ + public String parse(final String[] args) throws ControlLoopException { + // Clear all our arguments + setConfigurationFilePath(null); + CommandLine commandLine = null; + try { + commandLine = new DefaultParser().parse(options, args); + } catch (final ParseException e) { + throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, + "invalid command line arguments specified : " + e.getMessage()); + } + + // Arguments left over after Commons CLI does its stuff + final String[] remainingArgs = commandLine.getArgs(); + + if (remainingArgs.length > 0) { + throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, + "too many command line arguments specified : " + Arrays.toString(args)); + } + + if (commandLine.hasOption('h')) { + return commonCommandLineArguments.help(Main.class.getName(), options); + } + + if (commandLine.hasOption('v')) { + return commonCommandLineArguments.version(); + } + + if (commandLine.hasOption('c')) { + setConfigurationFilePath(commandLine.getOptionValue('c')); + } + + return null; + } + + /** + * Validate the command line options. + * + * @throws ControlLoopException on command argument validation errors + */ + public void validate() throws ControlLoopException { + commonCommandLineArguments.validate(configurationFilePath); + } + + /** + * Gets the full expanded configuration file path. + * + * @return the configuration file path + */ + public String getFullConfigurationFilePath() { + return ResourceUtils.getFilePath4Resource(getConfigurationFilePath()); + } + + /** + * Check set configuration file path. + * + * @return true, if check set configuration file path + */ + public boolean checkSetConfigurationFilePath() { + return !StringUtils.isEmpty(configurationFilePath); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/ExternalComponent.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/ExternalComponent.java new file mode 100644 index 000000000..01a514f43 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/ExternalComponent.java @@ -0,0 +1,35 @@ +/*- + * ============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.participant.dcae.model; + +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ExternalComponent implements Serializable { + + private static final long serialVersionUID = -10; + + private ExternalComponentState componentState; + +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/ExternalComponentState.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/ExternalComponentState.java new file mode 100644 index 000000000..da7360a9b --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/ExternalComponentState.java @@ -0,0 +1,34 @@ +/*- + * ============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.participant.dcae.model; + +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ExternalComponentState implements Serializable { + + private static final long serialVersionUID = -10; + + private String stateName; +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/Loop.java b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/Loop.java new file mode 100644 index 000000000..d84270500 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/java/org/onap/policy/clamp/controlloop/participant/dcae/model/Loop.java @@ -0,0 +1,36 @@ +/*- + * ============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.participant.dcae.model; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Loop implements Serializable { + + private static final long serialVersionUID = -10; + + private Map<String, ExternalComponent> components = new HashMap<>(); +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/resources/config/DCAEParticipantConfig.json b/participant/participant-impl/participant-impl-dcae/src/main/resources/config/DCAEParticipantConfig.json new file mode 100644 index 000000000..863c135d5 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/resources/config/DCAEParticipantConfig.json @@ -0,0 +1,71 @@ +{ + "name": "ControlLoopParticipantDcae", + "clampClientParameters": { + "name": "Clamp", + "host": "0.0.0.0", + "port": 8443, + "userName": "admin", + "password": "password", + "https": true, + "aaf": false + }, + "consulClientParameters": { + "name": "Consul", + "host": "consul", + "port": 31321, + "userName": "admin", + "password": "password", + "https": false, + "aaf": false + }, + "intermediaryParameters": { + "name": "Participant parameters", + "reportingTimeInterval": 120000, + "description": "Participant Description", + "participantId": { + "name": "DCAEParticipant0", + "version": "1.0.0" + }, + "participantType": { + "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant", + "version": "2.3.4" + }, + "clampControlLoopTopics": { + "topicSources": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap", + "fetchTimeout": 15000 + } + ], + "topicSinks": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + }, + { + "topic": "POLICY-NOTIFICATION", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + } + ] + } + }, + "databaseProviderParameters": { + "name": "PolicyProviderParameterGroup", + "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl", + "databaseDriver": "org.h2.Driver", + "databaseUrl": "jdbc:h2:mem:testdb", + "databaseUser": "policy", + "databasePassword": "P01icY", + "persistenceUnit": "ToscaConceptTest" + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/main/resources/version.txt b/participant/participant-impl/participant-impl-dcae/src/main/resources/version.txt new file mode 100644 index 000000000..dbd67585f --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/main/resources/version.txt @@ -0,0 +1,4 @@ +ONAP Tosca defined control loop Participant +Version: ${project.version} +Built (UTC): ${maven.build.timestamp} +ONAP https://wiki.onap.org diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClientTest.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClientTest.java new file mode 100644 index 000000000..040b33f5e --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/httpclient/ClampHttpClientTest.java @@ -0,0 +1,128 @@ +/*- + * ============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.participant.dcae.httpclient; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; +import static org.junit.Assert.assertTrue; +import static org.mockserver.model.HttpRequest.request; +import static org.mockserver.model.HttpResponse.response; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mockserver.integration.ClientAndServer; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.clamp.controlloop.participant.dcae.model.Loop; +import org.onap.policy.common.utils.coder.Coder; +import org.onap.policy.common.utils.coder.StandardCoder; + +/** + * Class to perform unit test of {@link ClampHttpClient}. + * + */ +public class ClampHttpClientTest { + + private static final String LOOP = "pmsh_loop"; + private static final String BLUEPRINT_DEPLOYED = "BLUEPRINT_DEPLOYED"; + + private static ClientAndServer mockServer; + private static ParticipantDcaeParameters parameters; + public static final Coder CODER = new StandardCoder(); + + /** + * Set up. + */ + @BeforeClass + public static void setUp() { + CommonTestData commonTestData = new CommonTestData(); + + parameters = commonTestData.toObject( + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME), + ParticipantDcaeParameters.class); + + mockServer = ClientAndServer.startClientAndServer(parameters.getClampClientParameters().getPort()); + + mockServer.when(request().withMethod("GET").withPath("/restservices/clds/v2/loop/getstatus/" + LOOP)) + .respond(response().withBody(CommonTestData.createJsonStatus(BLUEPRINT_DEPLOYED)).withStatusCode(200)); + + mockServer.when(request().withMethod("PUT").withPath("/restservices/clds/v2/loop/deploy/" + LOOP)) + .respond(response().withStatusCode(202)); + + mockServer.when(request().withMethod("PUT").withPath("/restservices/clds/v2/loop/undeploy/" + LOOP)) + .respond(response().withStatusCode(202)); + } + + @AfterClass + public static void stopServer() { + mockServer.stop(); + mockServer = null; + } + + @Test + public void test_getstatus() throws Exception { + try (ClampHttpClient client = new ClampHttpClient(parameters.getClampClientParameters())) { + + Loop status = client.getstatus(LOOP); + + String json = CommonTestData.createJsonStatus(BLUEPRINT_DEPLOYED); + Loop loop = CODER.convert(json, Loop.class); + + assertThat(ClampHttpClient.getStatusCode(status)).isEqualTo(ClampHttpClient.getStatusCode(loop)); + + } catch (Exception e) { + fail(e.getMessage()); + } + } + + @Test + public void test_deploy() throws Exception { + try (ClampHttpClient client = new ClampHttpClient(parameters.getClampClientParameters())) { + + assertTrue(client.deploy(LOOP)); + + } catch (Exception e) { + fail(e.getMessage()); + } + } + + @Test + public void test_undeploy() throws Exception { + try (ClampHttpClient client = new ClampHttpClient(parameters.getClampClientParameters())) { + + assertTrue(client.undeploy(LOOP)); + + } catch (Exception e) { + fail(e.getMessage()); + } + } + + @Test + public void test_getStatusCodeNull() { + assertThat(ClampHttpClient.getStatusCode(null)).isEqualTo(ClampHttpClient.STATUS_NOT_FOUND); + } + + @Test + public void test_getStatusEmptyMap() { + assertThat(ClampHttpClient.getStatusCode(new Loop())).isEqualTo(ClampHttpClient.STATUS_NOT_FOUND); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/CommonTestData.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/CommonTestData.java new file mode 100644 index 000000000..bcfaf8bb9 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/CommonTestData.java @@ -0,0 +1,294 @@ +/*- + * ============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.participant.dcae.main.parameters; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import javax.ws.rs.core.Response; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; +import org.onap.policy.common.endpoints.parameters.TopicParameters; +import org.onap.policy.common.parameters.ParameterGroup; +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.tosca.authorative.concepts.ToscaConceptIdentifier; + +/** + * Class to hold/create all parameters for test cases. + */ +public class CommonTestData { + public static final String PARTICIPANT_GROUP_NAME = "ControlLoopParticipantGroup"; + public static final String DESCRIPTION = "Participant description"; + public static final long TIME_INTERVAL = 2000; + public static final List<TopicParameters> TOPIC_PARAMS = Arrays.asList(getTopicParams()); + private static final String REST_CLIENT_PASSWORD = "password"; + private static final String REST_CLIENT_USER = "admin"; + private static final int REST_CLAMP_PORT = 8443; + private static final int REST_CONSUL_PORT = 31321; + private static final String REST_CLAMP_HOST = "localhost"; + private static final String REST_CONSUL_HOST = "consul"; + private static final boolean REST_CLAMP_HTTPS = false; + private static final boolean REST_CONSUL_HTTPS = false; + private static final boolean REST_CLIENT_AAF = false; + + public static final Coder coder = new StandardCoder(); + + /** + * Converts the contents of a map to a parameter class. + * + * @param source property map + * @param clazz class of object to be created from the map + * @return a new object represented by the map + */ + public <T extends ParameterGroup> T toObject(final Map<String, Object> source, final Class<T> clazz) { + try { + return coder.convert(source, clazz); + + } catch (final CoderException e) { + throw new RuntimeException("cannot create " + clazz.getName() + " from map", e); + } + } + + /** + * Returns a property map for a ApexStarterParameterGroup map for test cases. + * + * @param name name of the parameters + * + * @return a property map suitable for constructing an object + */ + public Map<String, Object> getParticipantParameterGroupMap(final String name) { + final Map<String, Object> map = new TreeMap<>(); + + map.put("name", name); + map.put("clampClientParameters", getClampClientParametersMap(false)); + map.put("consulClientParameters", getConsulClientParametersMap(false)); + map.put("intermediaryParameters", getIntermediaryParametersMap(false)); + map.put("databaseProviderParameters", getDatabaseProviderParametersMap(false)); + return map; + } + + /** + * Returns a property map for a RestServerParameters map for test cases. + * + * @param isEmpty boolean value to represent that object created should be empty or not + * @return a property map suitable for constructing an object + */ + public Map<String, Object> getClampClientParametersMap(final boolean isEmpty) { + final Map<String, Object> map = new TreeMap<>(); + map.put("https", REST_CLAMP_HTTPS); + map.put("aaf", REST_CLIENT_AAF); + + if (!isEmpty) { + map.put("host", REST_CLAMP_HOST); + map.put("port", REST_CLAMP_PORT); + map.put("userName", REST_CLIENT_USER); + map.put("password", REST_CLIENT_PASSWORD); + } + + return map; + } + + /** + * Returns a property map for a RestServerParameters map for test cases. + * + * @param isEmpty boolean value to represent that object created should be empty or not + * @return a property map suitable for constructing an object + */ + public Map<String, Object> getConsulClientParametersMap(final boolean isEmpty) { + final Map<String, Object> map = new TreeMap<>(); + map.put("https", REST_CONSUL_HTTPS); + map.put("aaf", REST_CLIENT_AAF); + + if (!isEmpty) { + map.put("host", REST_CONSUL_HOST); + map.put("port", REST_CONSUL_PORT); + map.put("userName", REST_CLIENT_USER); + map.put("password", REST_CLIENT_PASSWORD); + } + + return map; + } + + /** + * Returns a property map for a databaseProviderParameters map for test cases. + * + * @param isEmpty boolean value to represent that object created should be empty or not + * @return a property map suitable for constructing an object + */ + public Map<String, Object> getDatabaseProviderParametersMap(final boolean isEmpty) { + final Map<String, Object> map = new TreeMap<>(); + if (!isEmpty) { + map.put("name", "PolicyProviderParameterGroup"); + map.put("implementation", "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl"); + map.put("databaseDriver", "org.h2.Driver"); + map.put("databaseUrl", "jdbc:h2:mem:testdb"); + map.put("databaseUser", "policy"); + map.put("databasePassword", "P01icY"); + map.put("persistenceUnit", "ToscaConceptTest"); + } + + return map; + } + + /** + * Returns a property map for a intermediaryParameters map for test cases. + * + * @param isEmpty boolean value to represent that object created should be empty or not + * @return a property map suitable for constructing an object + */ + public Map<String, Object> getIntermediaryParametersMap(final boolean isEmpty) { + final Map<String, Object> map = new TreeMap<>(); + if (!isEmpty) { + map.put("name", "Participant parameters"); + map.put("reportingTimeInterval", TIME_INTERVAL); + map.put("description", DESCRIPTION); + map.put("participantId", getParticipantId()); + map.put("participantType", getParticipantId()); + map.put("clampControlLoopTopics", getTopicParametersMap(false)); + } + + return map; + } + + /** + * Returns a property map for a TopicParameters map for test cases. + * + * @param isEmpty boolean value to represent that object created should be empty or not + * @return a property map suitable for constructing an object + */ + public Map<String, Object> getTopicParametersMap(final boolean isEmpty) { + final Map<String, Object> map = new TreeMap<>(); + if (!isEmpty) { + map.put("topicSources", TOPIC_PARAMS); + map.put("topicSinks", TOPIC_PARAMS); + } + return map; + } + + /** + * Returns topic parameters for test cases. + * + * @return topic parameters + */ + public static TopicParameters getTopicParams() { + final TopicParameters topicParams = new TopicParameters(); + topicParams.setTopic("POLICY-CLRUNTIME-PARTICIPANT"); + topicParams.setTopicCommInfrastructure("dmaap"); + topicParams.setServers(Arrays.asList("localhost")); + return topicParams; + } + + /** + * Returns participantId for test cases. + * + * @return participant Id + */ + public static ToscaConceptIdentifier getParticipantId() { + final ToscaConceptIdentifier participantId = new ToscaConceptIdentifier(); + participantId.setName("CDSParticipant0"); + participantId.setVersion("1.0.0"); + return participantId; + } + + /** + * Gets the standard participant parameters. + * + * @param port port to be inserted into the parameters + * @return the standard participant parameters + */ + public ParticipantDcaeParameters getParticipantParameterGroup(int port) { + try { + return coder.decode(getParticipantParameterGroupAsString(port), ParticipantDcaeParameters.class); + + } catch (CoderException e) { + throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE, "cannot read participant parameters", + e); + } + } + + /** + * Gets the standard participant parameters, as a String. + * + * @param port port to be inserted into the parameters + * @return the standard participant parameters + */ + public static String getParticipantParameterGroupAsString(int port) { + + try { + File file = new File(getParamFile()); + String json = new String(Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); + + json = json.replace("${port}", String.valueOf(port)); + json = json.replace("${dbName}", "jdbc:h2:mem:testdb"); + + return json; + + } catch (IOException e) { + throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE, "cannot read participant parameters", + e); + + } + } + + /** + * Gets the full path to the parameter file, which may vary depending on whether or + * not this is an end-to-end test. + * + * @return the parameter file name + */ + private static String getParamFile() { + return "src/test/resources/parameters/TestParametersStd.json"; + } + + /** + * Nulls out a field within a JSON string. + * + * @param json JSON string + * @param field field to be nulled out + * @return a new JSON string with the field nulled out + */ + public String nullifyField(String json, String field) { + return json.replace(field + "\"", field + "\":null, \"" + field + "Xxx\""); + } + + /** + * create Json response from getstatus call. + * + * @param status the status of Partecipant + * @return the JSON + */ + public static String createJsonStatus(String status) { + try { + File file = new File("src/test/resources/rest/status.json"); + String json = new String(Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); + return json.replace("${status}", status); + + } catch (IOException e) { + throw new ControlLoopRuntimeException(Response.Status.NOT_ACCEPTABLE, "cannot read json file", e); + } + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameterHandler.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameterHandler.java new file mode 100644 index 000000000..058a3dae4 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameterHandler.java @@ -0,0 +1,102 @@ +/*- + * ============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.participant.dcae.main.parameters; + +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.assertTrue; + +import java.io.FileNotFoundException; +import org.junit.Test; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameterHandler; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeCommandLineArguments; +import org.onap.policy.common.utils.coder.CoderException; + +/** + * Class to perform unit test of {@link ParticipantParameterHandler}. + * + */ +public class TestParticipantDcaeParameterHandler { + + @Test + public void testParameterHandlerNoParameterFile() throws ControlLoopException { + final String[] emptyArgumentString = { "-c", "src/test/resources/parameters/NoParametersFile.json" }; + + final ParticipantDcaeCommandLineArguments emptyArguments = new ParticipantDcaeCommandLineArguments(); + emptyArguments.parse(emptyArgumentString); + + assertThatThrownBy(() -> new ParticipantDcaeParameterHandler().getParameters(emptyArguments)) + .hasCauseInstanceOf(CoderException.class) + .hasRootCauseInstanceOf(FileNotFoundException.class); + } + + @Test + public void testParameterHandlerInvalidParameters() throws ControlLoopException { + final String[] invalidArgumentString = { "-c", "src/test/resources/parameters/InvalidParameters.json" }; + + final ParticipantDcaeCommandLineArguments invalidArguments = + new ParticipantDcaeCommandLineArguments(); + invalidArguments.parse(invalidArgumentString); + + assertThatThrownBy(() -> new ParticipantDcaeParameterHandler().getParameters(invalidArguments)) + .hasMessageStartingWith("error reading parameters from") + .hasCauseInstanceOf(CoderException.class); + } + + @Test + public void testParticipantParameterGroup() throws ControlLoopException { + final String[] participantConfigParameters = { "-c", "src/test/resources/parameters/TestParameters.json" }; + + final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments(); + arguments.parse(participantConfigParameters); + + final ParticipantDcaeParameters parGroup = new ParticipantDcaeParameterHandler() + .getParameters(arguments); + assertTrue(arguments.checkSetConfigurationFilePath()); + assertEquals(CommonTestData.PARTICIPANT_GROUP_NAME, parGroup.getName()); + } + + @Test + public void testParticipantVersion() throws ControlLoopException { + final String[] participantConfigParameters = { "-v" }; + final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments(); + assertThat(arguments.parse(participantConfigParameters)).startsWith( + "ONAP Tosca defined control loop Participant"); + } + + @Test + public void testParticipantHelp() throws ControlLoopException { + final String[] participantConfigParameters = { "-h" }; + final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments(); + assertThat(arguments.parse(participantConfigParameters)).startsWith("usage:"); + } + + @Test + public void testParticipantInvalidOption() throws ControlLoopException { + final String[] participantConfigParameters = { "-d" }; + final ParticipantDcaeCommandLineArguments arguments = new ParticipantDcaeCommandLineArguments(); + assertThatThrownBy(() -> arguments.parse(participantConfigParameters)) + .hasMessageStartingWith("invalid command line arguments specified"); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameters.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameters.java new file mode 100644 index 000000000..edb429322 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/parameters/TestParticipantDcaeParameters.java @@ -0,0 +1,90 @@ +/*- + * ============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.participant.dcae.main.parameters; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.util.Map; +import org.junit.Test; +import org.onap.policy.clamp.controlloop.participant.intermediary.parameters.ParticipantIntermediaryParameters; +import org.onap.policy.common.endpoints.parameters.TopicParameterGroup; +import org.onap.policy.common.parameters.ValidationResult; + +/** + * Class to perform unit test of {@link ParticipantParameterGroup}. + * + */ +public class TestParticipantDcaeParameters { + CommonTestData commonTestData = new CommonTestData(); + + @Test + public void testParticipantParameterGroup_Named() { + final ParticipantDcaeParameters participantParameters = new ParticipantDcaeParameters("my-name"); + assertEquals("my-name", participantParameters.getName()); + } + + @Test + public void testParticipantParameterGroup() { + final ParticipantDcaeParameters participantParameters = commonTestData.toObject( + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME), + ParticipantDcaeParameters.class); + final ParticipantIntermediaryParameters participantIntermediaryParameters = participantParameters + .getIntermediaryParameters(); + final TopicParameterGroup topicParameterGroup = participantParameters.getIntermediaryParameters() + .getClampControlLoopTopics(); + final ValidationResult validationResult = participantParameters.validate(); + assertTrue(validationResult.isValid()); + assertEquals(CommonTestData.PARTICIPANT_GROUP_NAME, participantParameters.getName()); + assertEquals(CommonTestData.TIME_INTERVAL, participantIntermediaryParameters.getReportingTimeInterval()); + assertEquals(CommonTestData.DESCRIPTION, participantIntermediaryParameters.getDescription()); + assertEquals(CommonTestData.TOPIC_PARAMS, topicParameterGroup.getTopicSinks()); + assertEquals(CommonTestData.TOPIC_PARAMS, topicParameterGroup.getTopicSources()); + } + + @Test + public void testParticipantParameterGroup_EmptyParticipantIntermediaryParameters() { + final Map<String, Object> map = + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME); + map.replace("intermediaryParameters", commonTestData.getIntermediaryParametersMap(true)); + final ParticipantDcaeParameters participantParameters = + commonTestData.toObject(map, ParticipantDcaeParameters.class); + final ValidationResult validationResult = participantParameters.validate(); + assertNull(validationResult.getResult()); + } + + @Test + public void testParticipantParameterGroup_EmptyTopicParameters() { + final Map<String, Object> map = + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME); + final Map<String, Object> intermediaryParametersMap = commonTestData.getIntermediaryParametersMap(false); + intermediaryParametersMap.put("clampControlLoopTopics", commonTestData.getTopicParametersMap(true)); + map.replace("intermediaryParameters", intermediaryParametersMap); + + final ParticipantDcaeParameters participantParameters = + commonTestData.toObject(map, ParticipantDcaeParameters.class); + final ValidationResult validationResult = participantParameters.validate(); + assertNull(validationResult.getResult()); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/rest/TestListenerUtils.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/rest/TestListenerUtils.java new file mode 100644 index 000000000..c3cc8b755 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/rest/TestListenerUtils.java @@ -0,0 +1,255 @@ +/*- + * ============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.participant.dcae.main.rest; + +import java.io.File; +import java.time.Instant; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.UUID; +import lombok.Getter; +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.ParticipantState; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopStateChange; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopUpdate; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantHealthCheck; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStateChange; +import org.onap.policy.clamp.controlloop.participant.dcae.main.handler.DcaeProvider; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.clamp.controlloop.participant.intermediary.handler.ParticipantHandler; +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.YamlJsonTranslator; +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.ToscaNodeTemplate; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; + +public class TestListenerUtils { + + private static final YamlJsonTranslator yamlTranslator = new YamlJsonTranslator(); + private static final Coder CODER = new StandardCoder(); + private static final String TOSCA_TEMPLATE_YAML = "examples/controlloop/PMSubscriptionHandling.yaml"; + static CommonTestData commonTestData = new CommonTestData(); + + @Getter + private static ParticipantHandler participantHandler; + + /** + * Method to initialize participantHandler. + */ + public static void initParticipantHandler() { + + final ParticipantDcaeParameters parameters = commonTestData.toObject( + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME), + ParticipantDcaeParameters.class); + + DcaeProvider dcaeProvider = new DcaeProvider(parameters); + + participantHandler = dcaeProvider.getIntermediaryApi().getParticipantHandler(); + } + + /** + * Method to create a controlLoop from a yaml file. + * + * @return ControlLoop controlloop + */ + public static ControlLoop createControlLoop() { + ControlLoop controlLoop = new ControlLoop(); + Map<UUID, ControlLoopElement> elements = new LinkedHashMap<>(); + ToscaServiceTemplate toscaServiceTemplate = testControlLoopRead(); + Map<String, ToscaNodeTemplate> nodeTemplatesMap = + toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates(); + for (Map.Entry<String, ToscaNodeTemplate> toscaInputEntry : nodeTemplatesMap.entrySet()) { + ControlLoopElement clElement = new ControlLoopElement(); + clElement.setId(UUID.randomUUID()); + + ToscaConceptIdentifier clElementParticipantId = new ToscaConceptIdentifier(); + clElementParticipantId.setName(toscaInputEntry.getKey()); + clElementParticipantId.setVersion(toscaInputEntry.getValue().getVersion()); + clElement.setParticipantId(clElementParticipantId); + + clElement.setDefinition(clElementParticipantId); + clElement.setState(ControlLoopState.UNINITIALISED); + clElement.setDescription(toscaInputEntry.getValue().getDescription()); + clElement.setOrderedState(ControlLoopOrderedState.UNINITIALISED); + elements.put(clElement.getId(), clElement); + } + controlLoop.setElements(elements); + controlLoop.setName("PMSHInstance0"); + controlLoop.setVersion("1.0.0"); + + ToscaConceptIdentifier definition = new ToscaConceptIdentifier(); + definition.setName("PMSHInstance0"); + definition.setVersion("1.0.0"); + controlLoop.setDefinition(definition); + + return controlLoop; + } + + /** + * Method to create ParticipantStateChange message from the arguments passed. + * + * @param participantState participant State + * + * @return ParticipantStateChange message + */ + public static ParticipantStateChange createParticipantStateChangeMsg(final ParticipantState participantState) { + final ParticipantStateChange participantStateChangeMsg = new ParticipantStateChange(); + ToscaConceptIdentifier participantId = new ToscaConceptIdentifier(); + participantId.setName("CDSParticipant0"); + participantId.setVersion("1.0.0"); + + participantStateChangeMsg.setParticipantId(participantId); + participantStateChangeMsg.setTimestamp(Instant.now()); + participantStateChangeMsg.setState(participantState); + + return participantStateChangeMsg; + } + + /** + * Method to create ControlLoopStateChange message from the arguments passed. + * + * @param controlLoopOrderedState controlLoopOrderedState + * + * @return ParticipantControlLoopStateChange message + */ + public static ParticipantControlLoopStateChange createControlLoopStateChangeMsg( + final ControlLoopOrderedState controlLoopOrderedState) { + final ParticipantControlLoopStateChange participantClStateChangeMsg = new ParticipantControlLoopStateChange(); + + ToscaConceptIdentifier controlLoopId = new ToscaConceptIdentifier(); + controlLoopId.setName("PMSHInstance0"); + controlLoopId.setVersion("1.0.0"); + + ToscaConceptIdentifier participantId = new ToscaConceptIdentifier(); + participantId.setName("CDSParticipant0"); + participantId.setVersion("1.0.0"); + + participantClStateChangeMsg.setControlLoopId(controlLoopId); + participantClStateChangeMsg.setParticipantId(participantId); + participantClStateChangeMsg.setTimestamp(Instant.now()); + participantClStateChangeMsg.setOrderedState(controlLoopOrderedState); + + return participantClStateChangeMsg; + } + + /** + * Method to create ControlLoopUpdateMsg. + * + * @return ParticipantControlLoopUpdate message + */ + public static ParticipantControlLoopUpdate createControlLoopUpdateMsg() { + final ParticipantControlLoopUpdate clUpdateMsg = new ParticipantControlLoopUpdate(); + ToscaConceptIdentifier controlLoopId = new ToscaConceptIdentifier(); + controlLoopId.setName("PMSHInstance0"); + controlLoopId.setVersion("1.0.0"); + + ToscaConceptIdentifier participantId = new ToscaConceptIdentifier(); + participantId.setName("CDSParticipant0"); + participantId.setVersion("1.0.0"); + + clUpdateMsg.setControlLoopId(controlLoopId); + clUpdateMsg.setParticipantId(participantId); + + ControlLoop controlLoop = new ControlLoop(); + Map<UUID, ControlLoopElement> elements = new LinkedHashMap<>(); + ToscaServiceTemplate toscaServiceTemplate = testControlLoopRead(); + Map<String, ToscaNodeTemplate> nodeTemplatesMap = + toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates(); + for (Map.Entry<String, ToscaNodeTemplate> toscaInputEntry : nodeTemplatesMap.entrySet()) { + ControlLoopElement clElement = new ControlLoopElement(); + clElement.setId(UUID.randomUUID()); + + ToscaConceptIdentifier clElementParticipantId = new ToscaConceptIdentifier(); + clElementParticipantId.setName(toscaInputEntry.getKey()); + clElementParticipantId.setVersion(toscaInputEntry.getValue().getVersion()); + clElement.setParticipantId(clElementParticipantId); + + clElement.setDefinition(clElementParticipantId); + clElement.setState(ControlLoopState.UNINITIALISED); + clElement.setDescription(toscaInputEntry.getValue().getDescription()); + clElement.setOrderedState(ControlLoopOrderedState.UNINITIALISED); + elements.put(clElement.getId(), clElement); + } + controlLoop.setElements(elements); + controlLoop.setName("PMSHInstance0"); + controlLoop.setVersion("1.0.0"); + controlLoop.setDefinition(controlLoopId); + clUpdateMsg.setControlLoop(controlLoop); + clUpdateMsg.setControlLoopDefinition(toscaServiceTemplate); + + return clUpdateMsg; + } + + /** + * Method to create ParticipantHealthCheck message. + * + * @return ParticipantHealthCheck message + */ + public static ParticipantHealthCheck createParticipantHealthCheckMsg() { + ToscaConceptIdentifier participantId = new ToscaConceptIdentifier(); + participantId.setName("CDSParticipant0"); + participantId.setVersion("1.0.0"); + + ToscaConceptIdentifier controlLoopId = new ToscaConceptIdentifier(); + controlLoopId.setName("PMSHInstance0"); + controlLoopId.setVersion("1.0.0"); + + final ParticipantHealthCheck participantHealthCheckMsg = new ParticipantHealthCheck(); + participantHealthCheckMsg.setParticipantId(participantId); + participantHealthCheckMsg.setControlLoopId(controlLoopId); + participantHealthCheckMsg.setTimestamp(Instant.now()); + participantHealthCheckMsg.setState(ParticipantState.PASSIVE); + + return participantHealthCheckMsg; + } + + /** + * Method to create ParticipantControlLoopUpdate using the arguments passed. + * + * @param jsonFilePath the path of the controlloop content + * + * @return ParticipantControlLoopUpdate message + * @throws CoderException exception while reading the file to object + */ + public static ParticipantControlLoopUpdate createParticipantClUpdateMsgFromJson(String jsonFilePath) + throws CoderException { + ParticipantControlLoopUpdate participantControlLoopUpdateMsg = + CODER.decode(new File(jsonFilePath), ParticipantControlLoopUpdate.class); + return participantControlLoopUpdateMsg; + } + + private static ToscaServiceTemplate testControlLoopRead() { + return testControlLoopYamlSerialization(TOSCA_TEMPLATE_YAML); + } + + private static ToscaServiceTemplate testControlLoopYamlSerialization(String controlLoopFilePath) { + String controlLoopString = ResourceUtils.getResourceAsString(controlLoopFilePath); + ToscaServiceTemplate serviceTemplate = yamlTranslator.fromYaml(controlLoopString, ToscaServiceTemplate.class); + return serviceTemplate; + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestMain.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestMain.java new file mode 100644 index 000000000..f779f3a57 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestMain.java @@ -0,0 +1,151 @@ +/*- + * ============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.participant.dcae.main.startstop; + +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.clamp.controlloop.common.ControlLoopConstants; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; +import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.Main; +import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeActivator; +import org.onap.policy.common.utils.resources.MessageConstants; +import org.onap.policy.common.utils.services.Registry; + +/** + * Class to perform unit test of {@link Main}}. + */ +public class TestMain { + + /** + * Set up. + */ + @BeforeClass + public static void setUp() { + Registry.newRegistry(); + } + + /** + * Shuts "main" down. + * + * @throws Exception if an error occurs + */ + @AfterClass + public static void tearDown() throws Exception { + // shut down activator + final ParticipantDcaeActivator activator = + Registry.getOrDefault(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR, + ParticipantDcaeActivator.class, null); + if (activator != null && activator.isAlive()) { + activator.shutdown(); + } + } + + @Test + public void testMain_Help() { + final String[] configParameters = {"-h"}; + Main main = new Main(configParameters); + assertFalse(main.isRunning()); + } + + @Test + public void testMain_Version() { + final String[] configParameters = {"-v"}; + Main main = new Main(configParameters); + assertFalse(main.isRunning()); + } + + @Test + public void testMain_Valid() { + final String[] configParameters = {"-c", "src/test/resources/parameters/TestParameters.json"}; + Main main = new Main(configParameters); + assertTrue(main.isRunning()); + + // ensure items were added to the registry + assertNotNull(Registry.get(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR, ParticipantDcaeActivator.class)); + + assertThatCode(() -> main.shutdown()).doesNotThrowAnyException(); + + assertFalse(main.isRunning()); + } + + @Test + public void testMain_NoParameter() { + assertThatConfigParameterThrownException(new String[] {}); + } + + @Test + public void testMain_FilePathNotDefined() { + assertThatConfigParameterThrownException(new String[] {"-c"}); + } + + @Test + public void testMain_TooManyCommand() { + assertThatConfigParameterThrownException(new String[] {"-h", "d"}); + } + + @Test + public void testMain_WrongParameter() { + assertThatConfigParameterThrownException(new String[] {"-d"}); + } + + private void assertThatConfigParameterThrownException(final String[] configParameters) { + assertThatThrownBy(() -> Main.main(configParameters)).isInstanceOf(ControlLoopRuntimeException.class) + .hasMessage(String.format(MessageConstants.START_FAILURE_MSG, MessageConstants.POLICY_CLAMP)); + } + + @Test + public void testParticipant_NoFileWithThisName() { + assertThatConfigFileThrownException("src/test/resources/parameters/NoFileWithThisName.json"); + } + + @Test + public void testParticipant_NotValidFile() { + assertThatConfigFileThrownException("src/test/resources/parameters"); + } + + @Test + public void testParticipant_NoParameters() { + assertThatConfigFileThrownException("src/test/resources/parameters/NoParameters.json"); + } + + @Test + public void testParticipant_InvalidParameters() { + assertThatConfigFileThrownException("src/test/resources/parameters/InvalidParameters.json"); + } + + @Test + public void testParticipant_WrongJsonFormat() { + assertThatConfigFileThrownException("src/test/resources/parameters/Unreadable.json"); + } + + private void assertThatConfigFileThrownException(final String configFilePath) { + final String[] configParameters = new String[] {"-c", configFilePath}; + assertThatThrownBy(() -> new Main(configParameters)).isInstanceOf(ControlLoopRuntimeException.class) + .hasMessage(String.format(MessageConstants.START_FAILURE_MSG, MessageConstants.POLICY_CLAMP)); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestParticipantDcaeActivator.java b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestParticipantDcaeActivator.java new file mode 100644 index 000000000..1903868e2 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/java/org/onap/policy/clamp/controlloop/participant/dcae/main/startstop/TestParticipantDcaeActivator.java @@ -0,0 +1,94 @@ +/*- + * ============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.participant.dcae.main.startstop; + +import static org.assertj.core.api.Assertions.assertThatIllegalStateException; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.CommonTestData; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameterHandler; +import org.onap.policy.clamp.controlloop.participant.dcae.main.parameters.ParticipantDcaeParameters; +import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeActivator; +import org.onap.policy.clamp.controlloop.participant.dcae.main.startstop.ParticipantDcaeCommandLineArguments; +import org.onap.policy.common.utils.services.Registry; + +/** + * Class to perform unit test of {@link ParticipantDcaeActivator}}. + * + */ +public class TestParticipantDcaeActivator { + + private static ParticipantDcaeActivator activator; + + /** + * Initializes an activator. + * + * @throws Exception if an error occurs + */ + @BeforeClass + public static void setUp() throws Exception { + Registry.newRegistry(); + final String[] participantConfigParameters = { "-c", "src/test/resources/parameters/TestParameters.json"}; + final ParticipantDcaeCommandLineArguments arguments = + new ParticipantDcaeCommandLineArguments(participantConfigParameters); + final ParticipantDcaeParameters parGroup = + new ParticipantDcaeParameterHandler().getParameters(arguments); + activator = new ParticipantDcaeActivator(parGroup); + } + + /** + * Method for cleanup after each test. + * + * @throws Exception if an error occurs + */ + @AfterClass + public static void teardown() throws Exception { + // shut down activator + if (activator != null && activator.isAlive()) { + activator.shutdown(); + } + } + + @Test + public void testParticipantActivator() { + activator.start(); + assertTrue(activator.isAlive()); + assertTrue(activator.getParameters().isValid()); + assertEquals(CommonTestData.PARTICIPANT_GROUP_NAME, activator.getParameters().getName()); + + // repeat - should throw an exception + assertThatIllegalStateException().isThrownBy(() -> activator.start()); + assertTrue(activator.isAlive()); + assertTrue(activator.getParameters().isValid()); + + activator.shutdown(); + assertFalse(activator.isAlive()); + + // repeat - should throw an exception + assertThatIllegalStateException().isThrownBy(() -> activator.shutdown()); + assertFalse(activator.isAlive()); + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/InvalidParameters.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/InvalidParameters.json new file mode 100644 index 000000000..1035ccb67 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/InvalidParameters.json @@ -0,0 +1,3 @@ +{ + "name": " +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/MinimumParametersH2.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/MinimumParametersH2.json new file mode 100644 index 000000000..1ee2955b9 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/MinimumParametersH2.json @@ -0,0 +1,61 @@ +{ + "name": "ControlLoopParticipantGroup", + "restServerParameters": { + "host": "0.0.0.0", + "port": 6969, + "userName": "healthcheck", + "password": "zb!XztG34", + "https": false, + "aaf": false + }, + "intermediaryParameters": { + "name": "Participant parameters", + "reportingTimeInterval": 120000, + "description": "Participant Description", + "participantId": { + "name": "DCAEParticipant0", + "version": "1.0.0" + }, + "participantType": { + "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant", + "version": "2.3.4" + }, + "clampControlLoopTopics": { + "topicSources": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap", + "fetchTimeout": 15000 + } + ], + "topicSinks": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + }, + { + "topic": "POLICY-NOTIFICATION", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + } + ] + } + }, + "databaseProviderParameters": { + "name": "PolicyProviderParameterGroup", + "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl", + "databaseDriver": "org.h2.Driver", + "databaseUrl": "jdbc:h2:mem:testdb", + "databaseUser": "policy", + "databasePassword": "P01icY", + "persistenceUnit": "ToscaConceptTest" + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/NoParameters.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/NoParameters.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/NoParameters.json @@ -0,0 +1,2 @@ +{ +}
\ No newline at end of file diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestCLParams.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestCLParams.json new file mode 100644 index 000000000..a4258622d --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestCLParams.json @@ -0,0 +1,160 @@ +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 + participant_id: + type: onap.datatypes.ToscaConceptIdentifier + requred: true + 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.MonitoringPolicyControlLoopParticipant: + 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.policy.controlloop.OperationalPolicyControlLoopParticipant: + version: 3.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 + participant_id: + 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 + participant_id: + name: org.onap.policy.controlloop.MonitoringPolicyControlLoopParticipant + version: 2.3.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 + participant_id: + name: org.onap.policy.controlloop.OperationalPolicyControlLoopParticipant + 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 + participant_Id: + 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 diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParameters.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParameters.json new file mode 100644 index 000000000..789fc7bbd --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParameters.json @@ -0,0 +1,71 @@ +{ + "name": "ControlLoopParticipantGroup", + "clampClientParameters": { + "name": "Clamp", + "host": "0.0.0.0", + "port": 8443, + "userName": "admin", + "password": "password", + "https": true, + "aaf": false + }, + "consulClientParameters": { + "name": "Clamp", + "host": "consul", + "port": 31321, + "userName": "admin", + "password": "password", + "https": false, + "aaf": false + }, + "intermediaryParameters": { + "name": "Participant parameters", + "reportingTimeInterval": 120000, + "description": "Participant Description", + "participantId": { + "name": "DCAEParticipant0", + "version": "1.0.0" + }, + "participantType": { + "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant", + "version": "2.3.4" + }, + "clampControlLoopTopics": { + "topicSources": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap", + "fetchTimeout": 15000 + } + ], + "topicSinks": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + }, + { + "topic": "POLICY-NOTIFICATION", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + } + ] + } + }, + "databaseProviderParameters": { + "name": "PolicyProviderParameterGroup", + "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl", + "databaseDriver": "org.h2.Driver", + "databaseUrl": "jdbc:h2:mem:testdb", + "databaseUser": "policy", + "databasePassword": "P01icY", + "persistenceUnit": "ToscaConceptTest" + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParametersStd.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParametersStd.json new file mode 100644 index 000000000..789fc7bbd --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/TestParametersStd.json @@ -0,0 +1,71 @@ +{ + "name": "ControlLoopParticipantGroup", + "clampClientParameters": { + "name": "Clamp", + "host": "0.0.0.0", + "port": 8443, + "userName": "admin", + "password": "password", + "https": true, + "aaf": false + }, + "consulClientParameters": { + "name": "Clamp", + "host": "consul", + "port": 31321, + "userName": "admin", + "password": "password", + "https": false, + "aaf": false + }, + "intermediaryParameters": { + "name": "Participant parameters", + "reportingTimeInterval": 120000, + "description": "Participant Description", + "participantId": { + "name": "DCAEParticipant0", + "version": "1.0.0" + }, + "participantType": { + "name": "org.onap.dcae.controlloop.DCAEMicroserviceControlLoopParticipant", + "version": "2.3.4" + }, + "clampControlLoopTopics": { + "topicSources": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap", + "fetchTimeout": 15000 + } + ], + "topicSinks": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + }, + { + "topic": "POLICY-NOTIFICATION", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + } + ] + } + }, + "databaseProviderParameters": { + "name": "PolicyProviderParameterGroup", + "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl", + "databaseDriver": "org.h2.Driver", + "databaseUrl": "jdbc:h2:mem:testdb", + "databaseUser": "policy", + "databasePassword": "P01icY", + "persistenceUnit": "ToscaConceptTest" + } +} diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/Unreadable.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/Unreadable.json new file mode 100644 index 000000000..581ce8f4f --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/Unreadable.json @@ -0,0 +1,81 @@ +{ + "name": "ControlLoopRuntimeGroup", + "restServerParameters": { + "host": "0.0.0.0", + "port": ${port}, + "userName": "healthcheck", + "password": "zb!XztG34", + "https": false, + "aaf": false + }, + "participantParameters": { + "heartBeatMs": 120000, + "updateParameters": { + "maxRetryCount": 1, + "maxWaitMs": 30000 + }, + "stateChangeParameters": { + "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": "ToscaConceptTest" + }, + "topicParameterGroup": { + "topicSources": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap", + "fetchTimeout": 15000 + } + ], + "topicSinks": [ + { + "topic": "POLICY-CLRUNTIME-PARTICIPANT", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + }, + { + "topic": "POLICY-NOTIFICATION", + "servers": [ + "localhost" + ], + "topicCommInfrastructure": "dmaap" + } + ] + }, + "healthCheckRestClientParameters": [ + { + "clientName": "api", + "hostname": "policy-api", + "port": 6969, + "userName": "healthcheck", + "password": "zb!XztG34", + "useHttps": true, + "basePath": "policy/api/v1/healthcheck" + }, + { + "clientName": "distribution", + "hostname": "policy-distribution", + "port": 6969, + "userName": "healthcheck", + "password": "zb!XztG34", + "useHttps": true, + "basePath": "healthcheck" + } + ] +} + + diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/logback-test.xml b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/logback-test.xml new file mode 100644 index 000000000..cf6b89eb9 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/parameters/logback-test.xml @@ -0,0 +1,42 @@ +<?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>Participant</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.participant" level="trace" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> +</configuration> diff --git a/participant/participant-impl/participant-impl-dcae/src/test/resources/rest/servicetemplates/pm_control_loop_tosca.yaml b/participant/participant-impl/participant-impl-dcae/src/test/resources/rest/servicetemplates/pm_control_loop_tosca.yaml new file mode 100644 index 000000000..01f825fc9 --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/rest/servicetemplates/pm_control_loop_tosca.yaml @@ -0,0 +1,452 @@ +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/participant/participant-impl/participant-impl-dcae/src/test/resources/rest/status.json b/participant/participant-impl/participant-impl-dcae/src/test/resources/rest/status.json new file mode 100644 index 000000000..143ef635d --- /dev/null +++ b/participant/participant-impl/participant-impl-dcae/src/test/resources/rest/status.json @@ -0,0 +1,3918 @@ +{ + "name": "pmsh_loop", + "globalPropertiesJson": { + "dcaeDeployParameters": { + "uniqueBlueprintParameters": { + "tag_version": "nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pmsh:1.1.2", + "replicas": 1, + "operational_policy_name": "pmsh-operational-policy", + "control_loop_name": "pmsh-control-loop", + "pmsh_publish_topic_name": "unauthenticated.DCAE_CL_OUTPUT", + "policy_feedback_topic_name": "unauthenticated.PMSH_CL_INPUT", + "aai_notification_topic_name": "AAI-EVENT", + "publisher_client_role": "org.onap.dcae.pmPublisher", + "subscriber_client_role": "org.onap.dcae.pmSubscriber", + "dcae_location": "san-francisco", + "cpu_limit": "1000m", + "cpu_request": "1000m", + "memory_limit": "1024Mi", + "memory_request": "1024Mi", + "pgaas_cluster_name": "dcae-pg-primary.onap", + "enable_tls": true, + "protocol": "https", + "policy_model_id": "onap.policies.monitoring.dcae-pm-subscription-handler", + "policy_id": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh" + } + } + }, + "modelService": { + "serviceDetails": { + "serviceType": "", + "serviceRole": "", + "description": "vLBMS", + "type": "Service", + "instantiationType": "A-la-carte", + "namingPolicy": "", + "serviceEcompNaming": "true", + "environmentContext": "General_Revenue-Bearing", + "name": "vLoadBalancerMS", + "invariantUUID": "30ec5b59-4799-48d8-ac5f-1058a6b0e48f", + "ecompGeneratedNaming": "true", + "UUID": "63cac700-ab9a-4115-a74f-7eac85e3fce0", + "category": "Network L4+" + }, + "resourceDetails": { + "CP": {}, + "VL": {}, + "VF": { + "vLoadBalancerMS 0": { + "resourceVendor": "Test", + "name": "vLoadBalancerMS", + "resourceVendorModelNumber": "", + "description": "vLBMS", + "invariantUUID": "1a31b9f2-e50d-43b7-89b3-a040250cf506", + "UUID": "b4c4f3d7-929e-4b6d-a1cd-57e952ddc3e6", + "type": "VF", + "category": "Application L4+", + "subcategory": "Load Balancer", + "version": "1.0", + "customizationUUID": "465246dc-7748-45f4-a013-308d92922552", + "resourceVendorRelease": "1.0", + "controllerProperties": { + "sdnc_model_name": "baseconfiguration", + "sdnc_model_version": "1.0.0", + "workflows": { + "resource-assignment": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "activate": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "activate-restconf": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "activate-cli": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "assign-activate": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "imperative-test-wf": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + } + } + } + } + }, + "CR": {}, + "VFC": {}, + "PNF": {}, + "Service": {}, + "CVFC": {}, + "Service Proxy": {}, + "Configuration": {}, + "AllottedResource": {}, + "VFModule": { + "Vloadbalancerms..vpkg..module-1": { + "vfModuleModelInvariantUUID": "ca052563-eb92-4b5b-ad41-9111768ce043", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..vpkg..module-1", + "vfModuleModelUUID": "1e725ccc-b823-4f67-82b9-4f4367070dbc", + "vfModuleModelCustomizationUUID": "1bffdc31-a37d-4dee-b65c-dde623a76e52", + "min_vf_module_instances": 0, + "vf_module_label": "vpkg", + "max_vf_module_instances": 1, + "vf_module_type": "Expansion", + "isBase": false, + "initial_count": 0, + "volume_group": false + }, + "Vloadbalancerms..vdns..module-3": { + "vfModuleModelInvariantUUID": "4c10ba9b-f88f-415e-9de3-5d33336047fa", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..vdns..module-3", + "vfModuleModelUUID": "4fa73b49-8a6c-493e-816b-eb401567b720", + "vfModuleModelCustomizationUUID": "bafcdab0-801d-4d81-9ead-f464640a38b1", + "min_vf_module_instances": 0, + "vf_module_label": "vdns", + "max_vf_module_instances": 50, + "vf_module_type": "Expansion", + "isBase": false, + "initial_count": 0, + "volume_group": false + }, + "Vloadbalancerms..base_template..module-0": { + "vfModuleModelInvariantUUID": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..base_template..module-0", + "vfModuleModelUUID": "63734409-f745-4e4d-a38b-131638a0edce", + "vfModuleModelCustomizationUUID": "86baddea-c730-4fb8-9410-cd2e17fd7f27", + "min_vf_module_instances": 1, + "vf_module_label": "base_template", + "max_vf_module_instances": 1, + "vf_module_type": "Base", + "isBase": true, + "initial_count": 1, + "volume_group": false + }, + "Vloadbalancerms..vlb..module-2": { + "vfModuleModelInvariantUUID": "a772a1f4-0064-412c-833d-4749b15828dd", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..vlb..module-2", + "vfModuleModelUUID": "0f5c3f6a-650a-4303-abb6-fff3e573a07a", + "vfModuleModelCustomizationUUID": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806", + "min_vf_module_instances": 0, + "vf_module_label": "vlb", + "max_vf_module_instances": 1, + "vf_module_type": "Expansion", + "isBase": false, + "initial_count": 0, + "volume_group": false + } + } + } + }, + "lastComputedState": "DESIGN", + "components": { + "POLICY": { + "componentState": { + "stateName": "NOT_SENT", + "description": "The policies defined have NOT yet been created on the policy engine" + } + }, + "DCAE": { + "componentState": { + "stateName": "${status}", + "description": "The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop" + } + } + }, + "operationalPolicies": [], + "microServicePolicies": [ + { + "name": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh", + "shared": false, + "jsonRepresentation": { + "title": "onap.policies.monitoring.dcae-pm-subscription-handler", + "type": "object", + "required": [], + "properties": { + "pmsh_policy": { + "title": "onap.datatypes.monitoring.subscription", + "type": "object", + "required": [ + "measurementGroups", + "fileBasedGP", + "fileLocation", + "subscriptionName", + "administrativeState", + "nfFilter" + ], + "properties": { + "measurementGroups": { + "type": "array", + "description": "Measurement Groups", + "items": { + "title": "onap.datatypes.monitoring.measurementGroups", + "type": "object", + "required": [ + "measurementGroup" + ], + "properties": { + "measurementGroup": { + "type": "object", + "description": "Measurement Group", + "properties": { + "onap.datatypes.monitoring.measurementGroup": { + "title": "onap.datatypes.monitoring.measurementGroup", + "type": "object", + "required": [ + "measurementTypes", + "managedObjectDNsBasic" + ], + "properties": { + "measurementTypes": { + "type": "array", + "description": "List of measurement types", + "items": { + "title": "onap.datatypes.monitoring.measurementTypes", + "type": "object", + "required": [ + "measurementType" + ], + "properties": { + "measurementType": { + "type": "object", + "description": "Measurement type object", + "properties": { + "onap.datatypes.monitoring.measurementType": { + "title": "onap.datatypes.monitoring.measurementType", + "type": "object", + "required": [ + "measurementType" + ], + "properties": { + "measurementType": { + "type": "string", + "description": "Measurement type" + } + } + } + } + } + } + }, + "format": "tabs-top" + }, + "managedObjectDNsBasic": { + "type": "array", + "description": "List of managed object distinguished names", + "items": { + "title": "onap.datatypes.monitoring.managedObjectDNsBasics", + "type": "object", + "required": [ + "managedObjectDNsBasic" + ], + "properties": { + "managedObjectDNsBasic": { + "type": "object", + "description": "Managed object distinguished name object", + "properties": { + "onap.datatypes.monitoring.managedObjectDNsBasic": { + "title": "onap.datatypes.monitoring.managedObjectDNsBasic", + "type": "object", + "required": [ + "DN" + ], + "properties": { + "DN": { + "type": "string", + "description": "Managed object distinguished name" + } + } + } + } + } + } + }, + "format": "tabs-top" + } + } + } + } + } + } + }, + "format": "tabs-top" + }, + "fileBasedGP": { + "type": "integer", + "description": "File based granularity period" + }, + "fileLocation": { + "type": "string", + "description": "ROP file location" + }, + "subscriptionName": { + "type": "string", + "description": "Name of the subscription" + }, + "administrativeState": { + "type": "string", + "description": "State of the subscription", + "enum": [ + "LOCKED", + "UNLOCKED" + ] + }, + "nfFilter": { + "type": "object", + "description": "Network function filter", + "properties": { + "onap.datatypes.monitoring.nfFilter": { + "title": "onap.datatypes.monitoring.nfFilter", + "type": "object", + "required": [ + "modelVersionIDs", + "modelInvariantIDs", + "modelNames", + "nfNames" + ], + "properties": { + "modelVersionIDs": { + "type": "array", + "description": "List of model version IDs", + "items": { + "type": "string" + }, + "format": "tabs-top" + }, + "modelInvariantIDs": { + "type": "array", + "description": "List of model invariant IDs", + "items": { + "type": "string" + }, + "format": "tabs-top" + }, + "modelNames": { + "type": "array", + "description": "List of model names", + "items": { + "type": "string" + }, + "format": "tabs-top" + }, + "nfNames": { + "type": "array", + "description": "List of network functions", + "items": { + "type": "string" + }, + "format": "tabs-top" + } + } + } + } + } + } + } + } + }, + "loopElementModel": { + "name": "onap.policies.monitoring.dcae-pm-subscription-handler", + "loopElementType": "MICRO_SERVICE_TYPE", + "policyModels": [ + { + "policyModelType": "onap.policies.monitoring.dcae-pm-subscription-handler", + "version": "1.0.0", + "policyAcronym": "dcae-pm-subscription-handler", + "policyPdpGroup": { + "supportedPdpGroups": [ + { + "ControlLoopGroup": [ + "apex", + "xacml" + ] + }, + { + "defaultGroup": [ + "xacml" + ] + } + ] + }, + "createdDate": "2021-03-30T09:55:52.261232Z", + "updatedDate": "2021-03-30T09:56:17.502284Z", + "updatedBy": "Not found", + "createdBy": "Not found" + } + ], + "createdDate": "2021-03-30T08:48:21Z", + "updatedDate": "2021-03-30T08:48:21Z", + "updatedBy": "Not found", + "createdBy": "Not found" + }, + "policyModel": { + "policyModelType": "onap.policies.monitoring.dcae-pm-subscription-handler", + "version": "1.0.0", + "policyAcronym": "dcae-pm-subscription-handler", + "policyPdpGroup": { + "supportedPdpGroups": [ + { + "ControlLoopGroup": [ + "apex", + "xacml" + ] + }, + { + "defaultGroup": [ + "xacml" + ] + } + ] + }, + "createdDate": "2021-03-30T09:55:52.261232Z", + "updatedDate": "2021-03-30T09:56:17.502284Z", + "updatedBy": "Not found", + "createdBy": "Not found" + }, + "createdDate": "2021-03-30T13:07:07.960379Z", + "updatedDate": "2021-03-30T13:07:07.960379Z", + "updatedBy": "admin", + "createdBy": "admin" + } + ], + "loopLogs": [ + { + "id": 478, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-05-07T09:32:44Z" + }, + { + "id": 477, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-05-07T09:32:44Z" + }, + { + "id": 476, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-05-07T09:32:43Z" + }, + { + "id": 475, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-05-07T09:32:43Z" + }, + { + "id": 474, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-05-07T09:32:43Z" + }, + { + "id": 473, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-05-07T09:32:43Z" + }, + { + "id": 472, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-05-07T09:32:39Z" + }, + { + "id": 471, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-05-07T09:32:39Z" + }, + { + "id": 470, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-05-07T09:32:35Z" + }, + { + "id": 451, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-07T13:34:30Z" + }, + { + "id": 450, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-07T13:34:30Z" + }, + { + "id": 449, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-07T13:34:30Z" + }, + { + "id": 448, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-07T13:34:30Z" + }, + { + "id": 447, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-07T13:34:30Z" + }, + { + "id": 446, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-07T13:34:30Z" + }, + { + "id": 445, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-07T13:34:26Z" + }, + { + "id": 444, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-07T13:34:26Z" + }, + { + "id": 443, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-07T13:34:22Z" + }, + { + "id": 442, + "logType": "INFO", + "logComponent": "POLICY", + "message": "PDP Group remove ALL status - : ", + "logInstant": "2021-04-07T08:32:06Z" + }, + { + "id": 441, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "STOP request", + "logInstant": "2021-04-07T08:32:02Z" + }, + { + "id": 440, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-07T08:23:46Z" + }, + { + "id": 439, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-07T08:23:46Z" + }, + { + "id": 438, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-07T08:23:46Z" + }, + { + "id": 437, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-07T08:23:46Z" + }, + { + "id": 436, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-07T08:23:46Z" + }, + { + "id": 435, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-07T08:23:46Z" + }, + { + "id": 434, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-07T08:23:42Z" + }, + { + "id": 433, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-07T08:23:41Z" + }, + { + "id": 432, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-07T08:23:37Z" + }, + { + "id": 431, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T15:06:27Z" + }, + { + "id": 430, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T15:06:27Z" + }, + { + "id": 429, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T15:06:27Z" + }, + { + "id": 428, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T15:06:27Z" + }, + { + "id": 427, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T15:06:27Z" + }, + { + "id": 426, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T15:06:27Z" + }, + { + "id": 425, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T15:06:22Z" + }, + { + "id": 424, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T15:06:22Z" + }, + { + "id": 423, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T15:06:18Z" + }, + { + "id": 422, + "logType": "INFO", + "logComponent": "POLICY", + "message": "PDP Group remove ALL status - : ", + "logInstant": "2021-04-06T15:06:04Z" + }, + { + "id": 421, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "STOP request", + "logInstant": "2021-04-06T15:06:00Z" + }, + { + "id": 420, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T15:05:28Z" + }, + { + "id": 419, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T15:05:28Z" + }, + { + "id": 418, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T15:05:28Z" + }, + { + "id": 417, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T15:05:28Z" + }, + { + "id": 416, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T15:05:28Z" + }, + { + "id": 415, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T15:05:28Z" + }, + { + "id": 414, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T15:05:24Z" + }, + { + "id": 413, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T15:05:23Z" + }, + { + "id": 412, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T15:05:19Z" + }, + { + "id": 411, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "UNDEPLOY request successfully executed", + "logInstant": "2021-04-06T15:05:07Z" + }, + { + "id": 410, + "logType": "WARNING", + "logComponent": "CLAMP", + "message": "Cannot Undeploy for the loop: pmsh_loop, the Deployment ID does not exist !", + "logInstant": "2021-04-06T15:05:07Z" + }, + { + "id": 409, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "DCAE UNDEPLOY request", + "logInstant": "2021-04-06T15:05:07Z" + }, + { + "id": 408, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DEPLOY loop status\n (Dep-id:CLAMP_7ae6f14d-80c8-4403-a174-ecb215d04c81,\n StatusUrl:) - : ", + "logInstant": "2021-04-06T15:02:46Z" + }, + { + "id": 407, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "DCAE DEPLOY request", + "logInstant": "2021-04-06T15:02:42Z" + }, + { + "id": 406, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T15:02:26Z" + }, + { + "id": 405, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T15:02:26Z" + }, + { + "id": 404, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T15:02:26Z" + }, + { + "id": 403, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T15:02:26Z" + }, + { + "id": 402, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T15:02:25Z" + }, + { + "id": 401, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T15:02:25Z" + }, + { + "id": 400, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T15:02:21Z" + }, + { + "id": 399, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T15:02:21Z" + }, + { + "id": 398, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T15:02:17Z" + }, + { + "id": 397, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T14:32:53Z" + }, + { + "id": 396, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T14:32:53Z" + }, + { + "id": 395, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T14:32:53Z" + }, + { + "id": 394, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T14:32:53Z" + }, + { + "id": 393, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T14:32:53Z" + }, + { + "id": 392, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:32:53Z" + }, + { + "id": 391, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T14:32:49Z" + }, + { + "id": 390, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:32:49Z" + }, + { + "id": 389, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T14:32:44Z" + }, + { + "id": 388, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T14:31:37Z" + }, + { + "id": 387, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T14:31:37Z" + }, + { + "id": 386, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T14:31:37Z" + }, + { + "id": 385, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T14:31:37Z" + }, + { + "id": 384, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T14:31:37Z" + }, + { + "id": 383, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:31:37Z" + }, + { + "id": 382, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T14:31:33Z" + }, + { + "id": 381, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:31:33Z" + }, + { + "id": 380, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T14:31:28Z" + }, + { + "id": 379, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T14:30:35Z" + }, + { + "id": 378, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T14:30:35Z" + }, + { + "id": 377, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T14:30:34Z" + }, + { + "id": 376, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T14:30:34Z" + }, + { + "id": 375, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T14:30:34Z" + }, + { + "id": 374, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:30:34Z" + }, + { + "id": 373, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T14:30:30Z" + }, + { + "id": 372, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:30:30Z" + }, + { + "id": 371, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T14:30:26Z" + }, + { + "id": 370, + "logType": "INFO", + "logComponent": "POLICY", + "message": "PDP Group remove ALL status - : ", + "logInstant": "2021-04-06T14:04:21Z" + }, + { + "id": 369, + "logType": "WARNING", + "logComponent": "CLAMP", + "message": "Cannot Undeploy for the loop: pmsh_loop, the Deployment ID does not exist !", + "logInstant": "2021-04-06T14:04:17Z" + }, + { + "id": 368, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "DELETE request", + "logInstant": "2021-04-06T14:04:17Z" + }, + { + "id": 367, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T14:03:52Z" + }, + { + "id": 366, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T14:03:52Z" + }, + { + "id": 365, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T14:03:51Z" + }, + { + "id": 364, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T14:03:51Z" + }, + { + "id": 363, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T14:03:51Z" + }, + { + "id": 362, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:03:51Z" + }, + { + "id": 361, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T14:03:47Z" + }, + { + "id": 360, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T14:03:47Z" + }, + { + "id": 359, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T14:03:43Z" + }, + { + "id": 358, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "UNDEPLOY request successfully executed", + "logInstant": "2021-04-06T14:03:35Z" + }, + { + "id": 357, + "logType": "WARNING", + "logComponent": "CLAMP", + "message": "Cannot Undeploy for the loop: pmsh_loop, the Deployment ID does not exist !", + "logInstant": "2021-04-06T14:03:35Z" + }, + { + "id": 356, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "DCAE UNDEPLOY request", + "logInstant": "2021-04-06T14:03:35Z" + }, + { + "id": 355, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T13:57:38Z" + }, + { + "id": 354, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T13:57:38Z" + }, + { + "id": 353, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T13:57:38Z" + }, + { + "id": 352, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T13:57:38Z" + }, + { + "id": 351, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T13:57:37Z" + }, + { + "id": 350, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T13:57:37Z" + }, + { + "id": 349, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T13:57:33Z" + }, + { + "id": 348, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T13:57:33Z" + }, + { + "id": 347, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T13:57:29Z" + }, + { + "id": 346, + "logType": "INFO", + "logComponent": "POLICY", + "message": "PDP Group remove ALL status - : ", + "logInstant": "2021-04-06T13:57:21Z" + }, + { + "id": 345, + "logType": "WARNING", + "logComponent": "CLAMP", + "message": "Cannot Undeploy for the loop: pmsh_loop, the Deployment ID does not exist !", + "logInstant": "2021-04-06T13:57:16Z" + }, + { + "id": 344, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "DELETE request", + "logInstant": "2021-04-06T13:57:16Z" + }, + { + "id": 343, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-06T13:16:29Z" + }, + { + "id": 342, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-06T13:16:29Z" + }, + { + "id": 341, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-06T13:16:29Z" + }, + { + "id": 340, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-06T13:16:29Z" + }, + { + "id": 339, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-06T13:16:29Z" + }, + { + "id": 338, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T13:16:29Z" + }, + { + "id": 337, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-06T13:16:24Z" + }, + { + "id": 336, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-06T13:16:24Z" + }, + { + "id": 335, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-06T13:16:20Z" + }, + { + "id": 334, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "Micro Service policies UPDATED", + "logInstant": "2021-04-01T16:12:47Z" + }, + { + "id": 333, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T16:09:36Z" + }, + { + "id": 332, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T16:09:36Z" + }, + { + "id": 331, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T16:09:36Z" + }, + { + "id": 330, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T16:09:36Z" + }, + { + "id": 329, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T16:09:36Z" + }, + { + "id": 328, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T16:09:36Z" + }, + { + "id": 327, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T16:09:32Z" + }, + { + "id": 326, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T16:09:32Z" + }, + { + "id": 325, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T16:09:27Z" + }, + { + "id": 324, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "Micro Service policies UPDATED", + "logInstant": "2021-04-01T15:16:20Z" + }, + { + "id": 323, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T15:15:57Z" + }, + { + "id": 322, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T15:15:57Z" + }, + { + "id": 321, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T15:15:57Z" + }, + { + "id": 320, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T15:15:57Z" + }, + { + "id": 319, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T15:15:57Z" + }, + { + "id": 318, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T15:15:57Z" + }, + { + "id": 317, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T15:15:52Z" + }, + { + "id": 316, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T15:15:52Z" + }, + { + "id": 315, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T15:15:48Z" + }, + { + "id": 314, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T15:14:19Z" + }, + { + "id": 313, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T15:14:19Z" + }, + { + "id": 312, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T15:14:19Z" + }, + { + "id": 311, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T15:14:19Z" + }, + { + "id": 310, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T15:14:19Z" + }, + { + "id": 309, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T15:14:19Z" + }, + { + "id": 308, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T15:14:15Z" + }, + { + "id": 307, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T15:14:15Z" + }, + { + "id": 306, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T15:14:10Z" + }, + { + "id": 305, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T15:10:59Z" + }, + { + "id": 304, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T15:10:59Z" + }, + { + "id": 303, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T15:10:59Z" + }, + { + "id": 302, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T15:10:59Z" + }, + { + "id": 301, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T15:10:59Z" + }, + { + "id": 300, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T15:10:59Z" + }, + { + "id": 299, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T15:10:55Z" + }, + { + "id": 298, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T15:10:54Z" + }, + { + "id": 297, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T15:10:50Z" + }, + { + "id": 287, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T14:31:38Z" + }, + { + "id": 286, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T14:31:38Z" + }, + { + "id": 285, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T14:31:37Z" + }, + { + "id": 284, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T14:31:37Z" + }, + { + "id": 283, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T14:31:37Z" + }, + { + "id": 282, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T14:31:37Z" + }, + { + "id": 281, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T14:31:33Z" + }, + { + "id": 280, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T14:31:33Z" + }, + { + "id": 279, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "Micro Service policies UPDATED", + "logInstant": "2021-04-01T14:31:32Z" + }, + { + "id": 278, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T14:31:31Z" + }, + { + "id": 277, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T14:31:31Z" + }, + { + "id": 276, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T14:31:30Z" + }, + { + "id": 275, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T14:31:30Z" + }, + { + "id": 274, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 273, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 272, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 271, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 270, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 269, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 268, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 267, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 266, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 265, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 264, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 263, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 262, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 261, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 260, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 259, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 258, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T14:31:29Z" + }, + { + "id": 257, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-04-01T14:31:28Z" + }, + { + "id": 256, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T14:31:28Z" + }, + { + "id": 255, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T14:31:28Z" + }, + { + "id": 254, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-04-01T14:31:28Z" + }, + { + "id": 253, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T14:31:28Z" + }, + { + "id": 252, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T14:31:28Z" + }, + { + "id": 251, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T14:31:28Z" + }, + { + "id": 250, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "Micro Service policies UPDATED", + "logInstant": "2021-04-01T12:39:55Z" + }, + { + "id": 249, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T12:38:31Z" + }, + { + "id": 248, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T12:38:31Z" + }, + { + "id": 247, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T12:38:30Z" + }, + { + "id": 246, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T12:38:30Z" + }, + { + "id": 245, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T12:38:30Z" + }, + { + "id": 244, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T12:38:30Z" + }, + { + "id": 243, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T12:38:26Z" + }, + { + "id": 242, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T12:38:26Z" + }, + { + "id": 241, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T12:38:22Z" + }, + { + "id": 240, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "Micro Service policies UPDATED", + "logInstant": "2021-04-01T12:37:20Z" + }, + { + "id": 239, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T12:37:19Z" + }, + { + "id": 238, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T12:37:19Z" + }, + { + "id": 237, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T12:37:19Z" + }, + { + "id": 236, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T12:37:19Z" + }, + { + "id": 235, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T12:37:19Z" + }, + { + "id": 234, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T12:37:19Z" + }, + { + "id": 233, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T12:37:14Z" + }, + { + "id": 232, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T12:37:14Z" + }, + { + "id": 231, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T12:37:10Z" + }, + { + "id": 221, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "Micro Service policies UPDATED", + "logInstant": "2021-04-01T11:57:59Z" + }, + { + "id": 220, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-04-01T11:57:34Z" + }, + { + "id": 219, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-04-01T11:57:34Z" + }, + { + "id": 218, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-04-01T11:57:34Z" + }, + { + "id": 217, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-04-01T11:57:33Z" + }, + { + "id": 216, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-04-01T11:57:33Z" + }, + { + "id": 215, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T11:57:33Z" + }, + { + "id": 214, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-04-01T11:57:29Z" + }, + { + "id": 213, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-04-01T11:57:29Z" + }, + { + "id": 212, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-04-01T11:57:25Z" + }, + { + "id": 211, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:50:20Z" + }, + { + "id": 210, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:50:20Z" + }, + { + "id": 209, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:50:20Z" + }, + { + "id": 208, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:50:20Z" + }, + { + "id": 207, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:50:20Z" + }, + { + "id": 206, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:50:20Z" + }, + { + "id": 205, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:50:16Z" + }, + { + "id": 204, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:50:16Z" + }, + { + "id": 203, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:50:11Z" + }, + { + "id": 202, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:49:39Z" + }, + { + "id": 201, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:49:39Z" + }, + { + "id": 200, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:49:39Z" + }, + { + "id": 199, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:49:39Z" + }, + { + "id": 198, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:49:39Z" + }, + { + "id": 197, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:49:39Z" + }, + { + "id": 196, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:49:35Z" + }, + { + "id": 195, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:49:35Z" + }, + { + "id": 194, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:49:30Z" + }, + { + "id": 193, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:49:06Z" + }, + { + "id": 192, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:49:06Z" + }, + { + "id": 191, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:49:06Z" + }, + { + "id": 190, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:49:06Z" + }, + { + "id": 189, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:49:06Z" + }, + { + "id": 188, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:49:06Z" + }, + { + "id": 187, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:49:01Z" + }, + { + "id": 186, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:49:01Z" + }, + { + "id": 185, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:48:57Z" + }, + { + "id": 184, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:47:28Z" + }, + { + "id": 183, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:47:28Z" + }, + { + "id": 182, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:47:28Z" + }, + { + "id": 181, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:47:28Z" + }, + { + "id": 180, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:47:27Z" + }, + { + "id": 179, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:47:27Z" + }, + { + "id": 178, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:47:23Z" + }, + { + "id": 177, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:47:23Z" + }, + { + "id": 176, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:47:19Z" + }, + { + "id": 175, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:43:41Z" + }, + { + "id": 174, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:43:41Z" + }, + { + "id": 173, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:43:41Z" + }, + { + "id": 172, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:43:41Z" + }, + { + "id": 171, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:43:41Z" + }, + { + "id": 170, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:43:41Z" + }, + { + "id": 169, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:43:36Z" + }, + { + "id": 168, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T15:43:36Z" + }, + { + "id": 167, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:43:34Z" + }, + { + "id": 166, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:43:34Z" + }, + { + "id": 165, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T15:43:34Z" + }, + { + "id": 164, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:43:34Z" + }, + { + "id": 163, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:43:34Z" + }, + { + "id": 162, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T15:43:34Z" + }, + { + "id": 161, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 160, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 159, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 158, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 157, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 156, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 155, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 154, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 153, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 152, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 151, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 150, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-03-31T15:43:33Z" + }, + { + "id": 149, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 148, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 147, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 146, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 145, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 144, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connection is still allocated", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 143, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 142, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 141, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 140, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T15:43:32Z" + }, + { + "id": 139, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T10:13:01Z" + }, + { + "id": 138, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T10:13:01Z" + }, + { + "id": 137, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T10:13:00Z" + }, + { + "id": 136, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T10:13:00Z" + }, + { + "id": 135, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T10:13:00Z" + }, + { + "id": 134, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T10:13:00Z" + }, + { + "id": 133, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T10:12:56Z" + }, + { + "id": 132, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T10:12:56Z" + }, + { + "id": 131, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T10:12:52Z" + }, + { + "id": 130, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T09:55:12Z" + }, + { + "id": 129, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T09:55:12Z" + }, + { + "id": 128, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T09:55:12Z" + }, + { + "id": 127, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T09:55:12Z" + }, + { + "id": 126, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T09:55:12Z" + }, + { + "id": 125, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T09:55:12Z" + }, + { + "id": 124, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T09:55:08Z" + }, + { + "id": 123, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T09:55:07Z" + }, + { + "id": 122, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T09:55:03Z" + }, + { + "id": 121, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T09:46:18Z" + }, + { + "id": 120, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T09:46:18Z" + }, + { + "id": 119, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T09:46:18Z" + }, + { + "id": 118, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T09:46:18Z" + }, + { + "id": 117, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T09:46:18Z" + }, + { + "id": 116, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T09:46:18Z" + }, + { + "id": 115, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T09:46:13Z" + }, + { + "id": 114, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T09:46:13Z" + }, + { + "id": 113, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T09:46:09Z" + }, + { + "id": 112, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-31T09:45:56Z" + }, + { + "id": 111, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-31T09:45:56Z" + }, + { + "id": 110, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-31T09:45:56Z" + }, + { + "id": 109, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-31T09:45:56Z" + }, + { + "id": 108, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-31T09:45:56Z" + }, + { + "id": 107, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T09:45:55Z" + }, + { + "id": 106, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-31T09:45:51Z" + }, + { + "id": 105, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-31T09:45:51Z" + }, + { + "id": 104, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-31T09:45:47Z" + }, + { + "id": 103, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T16:00:55Z" + }, + { + "id": 102, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T16:00:55Z" + }, + { + "id": 101, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T16:00:55Z" + }, + { + "id": 100, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T16:00:55Z" + }, + { + "id": 99, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T16:00:55Z" + }, + { + "id": 98, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T16:00:54Z" + }, + { + "id": 97, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T16:00:50Z" + }, + { + "id": 96, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T16:00:50Z" + }, + { + "id": 95, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T16:00:46Z" + }, + { + "id": 94, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T15:58:05Z" + }, + { + "id": 93, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T15:58:05Z" + }, + { + "id": 92, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T15:58:05Z" + }, + { + "id": 91, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T15:58:05Z" + }, + { + "id": 90, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T15:58:05Z" + }, + { + "id": 89, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T15:58:05Z" + }, + { + "id": 88, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T15:58:00Z" + }, + { + "id": 87, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T15:58:00Z" + }, + { + "id": 86, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T15:57:56Z" + }, + { + "id": 85, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T15:00:21Z" + }, + { + "id": 84, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T15:00:21Z" + }, + { + "id": 83, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T15:00:21Z" + }, + { + "id": 82, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T15:00:21Z" + }, + { + "id": 81, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T15:00:21Z" + }, + { + "id": 80, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T15:00:21Z" + }, + { + "id": 79, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T15:00:17Z" + }, + { + "id": 78, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T15:00:17Z" + }, + { + "id": 77, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T15:00:12Z" + }, + { + "id": 76, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T14:51:24Z" + }, + { + "id": 75, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T14:51:23Z" + }, + { + "id": 74, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T14:51:23Z" + }, + { + "id": 73, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T14:51:23Z" + }, + { + "id": 72, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T14:51:23Z" + }, + { + "id": 71, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:51:23Z" + }, + { + "id": 70, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T14:51:19Z" + }, + { + "id": 69, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:51:19Z" + }, + { + "id": 68, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T14:51:15Z" + }, + { + "id": 67, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T14:45:06Z" + }, + { + "id": 66, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T14:45:06Z" + }, + { + "id": 65, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T14:45:06Z" + }, + { + "id": 64, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T14:45:06Z" + }, + { + "id": 63, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T14:45:06Z" + }, + { + "id": 62, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:45:06Z" + }, + { + "id": 61, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T14:45:02Z" + }, + { + "id": 60, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:45:02Z" + }, + { + "id": 59, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T14:44:57Z" + }, + { + "id": 58, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T14:44:31Z" + }, + { + "id": 57, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T14:44:31Z" + }, + { + "id": 56, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T14:44:31Z" + }, + { + "id": 55, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T14:44:31Z" + }, + { + "id": 54, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T14:44:31Z" + }, + { + "id": 53, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:44:31Z" + }, + { + "id": 52, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T14:44:27Z" + }, + { + "id": 51, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:44:26Z" + }, + { + "id": 50, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T14:44:22Z" + }, + { + "id": 49, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T14:32:12Z" + }, + { + "id": 48, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T14:32:12Z" + }, + { + "id": 47, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T14:32:12Z" + }, + { + "id": 46, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T14:32:12Z" + }, + { + "id": 45, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T14:32:12Z" + }, + { + "id": 44, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:32:11Z" + }, + { + "id": 43, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T14:32:07Z" + }, + { + "id": 42, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T14:32:07Z" + }, + { + "id": 41, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T14:32:03Z" + }, + { + "id": 40, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request successfully executed", + "logInstant": "2021-03-30T13:07:24Z" + }, + { + "id": 39, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "New loop state is: DESIGN", + "logInstant": "2021-03-30T13:07:24Z" + }, + { + "id": 38, + "logType": "INFO", + "logComponent": "DCAE", + "message": "DCAE state set to: BLUEPRINT_DEPLOYED - message: ", + "logInstant": "2021-03-30T13:07:24Z" + }, + { + "id": 37, + "logType": "INFO", + "logComponent": "POLICY", + "message": "Policy state set to: NOT_SENT", + "logInstant": "2021-03-30T13:07:24Z" + }, + { + "id": 36, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET Policy deployment\n status - : ", + "logInstant": "2021-03-30T13:07:24Z" + }, + { + "id": 35, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T13:07:24Z" + }, + { + "id": 34, + "logType": "INFO", + "logComponent": "POLICY", + "message": "MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0_mHh GET\n Policy status - : ", + "logInstant": "2021-03-30T13:07:19Z" + }, + { + "id": 33, + "logType": "ERROR", + "logComponent": "CLAMP", + "message": "GET policy request failed, Error reported: Connect to localhost:8085 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect", + "logInstant": "2021-03-30T13:07:19Z" + }, + { + "id": 32, + "logType": "INFO", + "logComponent": "CLAMP", + "message": "GET STATUS request", + "logInstant": "2021-03-30T13:07:15Z" + } + ], + "loopTemplate": { + "name": "LOOP_TEMPLATE_k8s_pmsh", + "dcaeBlueprintId": "9dc5dba0-e685-4d5a-b144-8f4d84cfa01f", + "loopElementModelsUsed": [ + { + "loopElementModel": { + "name": "onap.policies.monitoring.dcae-pm-subscription-handler", + "loopElementType": "MICRO_SERVICE_TYPE", + "policyModels": [ + { + "policyModelType": "onap.policies.monitoring.dcae-pm-subscription-handler", + "version": "1.0.0", + "policyAcronym": "dcae-pm-subscription-handler", + "policyPdpGroup": { + "supportedPdpGroups": [ + { + "ControlLoopGroup": [ + "apex", + "xacml" + ] + }, + { + "defaultGroup": [ + "xacml" + ] + } + ] + }, + "createdDate": "2021-03-30T09:55:52.261232Z", + "updatedDate": "2021-03-30T09:56:17.502284Z", + "updatedBy": "Not found", + "createdBy": "Not found" + } + ], + "createdDate": "2021-03-30T08:48:21Z", + "updatedDate": "2021-03-30T08:48:21Z", + "updatedBy": "Not found", + "createdBy": "Not found" + }, + "flowOrder": 0 + } + ], + "modelService": { + "serviceDetails": { + "serviceType": "", + "serviceRole": "", + "description": "vLBMS", + "type": "Service", + "instantiationType": "A-la-carte", + "namingPolicy": "", + "serviceEcompNaming": "true", + "environmentContext": "General_Revenue-Bearing", + "name": "vLoadBalancerMS", + "invariantUUID": "30ec5b59-4799-48d8-ac5f-1058a6b0e48f", + "ecompGeneratedNaming": "true", + "UUID": "63cac700-ab9a-4115-a74f-7eac85e3fce0", + "category": "Network L4+" + }, + "resourceDetails": { + "CP": {}, + "VL": {}, + "VF": { + "vLoadBalancerMS 0": { + "resourceVendor": "Test", + "name": "vLoadBalancerMS", + "resourceVendorModelNumber": "", + "description": "vLBMS", + "invariantUUID": "1a31b9f2-e50d-43b7-89b3-a040250cf506", + "UUID": "b4c4f3d7-929e-4b6d-a1cd-57e952ddc3e6", + "type": "VF", + "category": "Application L4+", + "subcategory": "Load Balancer", + "version": "1.0", + "customizationUUID": "465246dc-7748-45f4-a013-308d92922552", + "resourceVendorRelease": "1.0", + "controllerProperties": { + "sdnc_model_name": "baseconfiguration", + "sdnc_model_version": "1.0.0", + "workflows": { + "resource-assignment": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "activate": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "activate-restconf": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "activate-cli": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "assign-activate": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + }, + "imperative-test-wf": { + "inputs": { + "resource-assignment-properties": { + "type": "object", + "properties": { + "request-id": { + "required": true, + "type": "string", + "input-param": true + }, + "service-instance-id": { + "required": true, + "type": "string", + "input-param": true + }, + "hostname": { + "required": true, + "type": "string", + "input-param": true + }, + "request-info": { + "type": "object", + "properties": { + "prop1": { + "required": true, + "type": "string", + "input-param": true + }, + "prop2": { + "required": true, + "type": "string", + "input-param": true + } + } + } + } + } + } + } + } + } + } + }, + "CR": {}, + "VFC": {}, + "PNF": {}, + "Service": {}, + "CVFC": {}, + "Service Proxy": {}, + "Configuration": {}, + "AllottedResource": {}, + "VFModule": { + "Vloadbalancerms..vpkg..module-1": { + "vfModuleModelInvariantUUID": "ca052563-eb92-4b5b-ad41-9111768ce043", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..vpkg..module-1", + "vfModuleModelUUID": "1e725ccc-b823-4f67-82b9-4f4367070dbc", + "vfModuleModelCustomizationUUID": "1bffdc31-a37d-4dee-b65c-dde623a76e52", + "min_vf_module_instances": 0, + "vf_module_label": "vpkg", + "max_vf_module_instances": 1, + "vf_module_type": "Expansion", + "isBase": false, + "initial_count": 0, + "volume_group": false + }, + "Vloadbalancerms..vdns..module-3": { + "vfModuleModelInvariantUUID": "4c10ba9b-f88f-415e-9de3-5d33336047fa", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..vdns..module-3", + "vfModuleModelUUID": "4fa73b49-8a6c-493e-816b-eb401567b720", + "vfModuleModelCustomizationUUID": "bafcdab0-801d-4d81-9ead-f464640a38b1", + "min_vf_module_instances": 0, + "vf_module_label": "vdns", + "max_vf_module_instances": 50, + "vf_module_type": "Expansion", + "isBase": false, + "initial_count": 0, + "volume_group": false + }, + "Vloadbalancerms..base_template..module-0": { + "vfModuleModelInvariantUUID": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..base_template..module-0", + "vfModuleModelUUID": "63734409-f745-4e4d-a38b-131638a0edce", + "vfModuleModelCustomizationUUID": "86baddea-c730-4fb8-9410-cd2e17fd7f27", + "min_vf_module_instances": 1, + "vf_module_label": "base_template", + "max_vf_module_instances": 1, + "vf_module_type": "Base", + "isBase": true, + "initial_count": 1, + "volume_group": false + }, + "Vloadbalancerms..vlb..module-2": { + "vfModuleModelInvariantUUID": "a772a1f4-0064-412c-833d-4749b15828dd", + "vfModuleModelVersion": "1", + "vfModuleModelName": "Vloadbalancerms..vlb..module-2", + "vfModuleModelUUID": "0f5c3f6a-650a-4303-abb6-fff3e573a07a", + "vfModuleModelCustomizationUUID": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806", + "min_vf_module_instances": 0, + "vf_module_label": "vlb", + "max_vf_module_instances": 1, + "vf_module_type": "Expansion", + "isBase": false, + "initial_count": 0, + "volume_group": false + } + } + } + }, + "maximumInstancesAllowed": 0, + "uniqueBlueprint": true, + "allowedLoopType": "CLOSED", + "createdDate": "2021-03-30T08:48:21Z", + "updatedDate": "2021-03-30T08:48:21Z", + "updatedBy": "Not found", + "createdBy": "Not found" + }, + "createdDate": "2021-03-30T13:07:07.901081Z", + "updatedDate": "2021-03-30T13:07:07.901081Z", + "updatedBy": "admin", + "createdBy": "admin" +} |