diff options
author | liamfallon <liam.fallon@est.tech> | 2021-05-21 15:00:36 +0100 |
---|---|---|
committer | liamfallon <liam.fallon@est.tech> | 2021-05-21 15:37:13 +0100 |
commit | c9624f0e437db1d91b7076a1abdf71f74b5024dc (patch) | |
tree | bcc8462292df137cd9635df161f5b161f2959440 /participant/participant-impl/participant-impl-dcae/src | |
parent | fa94a96fed5fd7af230a90373a04da47370e2eea (diff) |
Move tosca-controlloop src directries to new modulestosca-poc
This is the second stage of the TOSCA Controlloop merge.
In this review, the src directories of the old tosca-controlloop modules
are moved to the new modules off the root of the clamp repo and the
pom.xml files are updated with dependencies to allow the build of the
moved modules to run.
So the changes are renaming of files and updates of POM files in the
modules to which src directories are added so that the build works, and
of course deletion of the tosca-controlloop directory and its sub-
modules
The third and final review will follow this, which will merge the
tosca-poc branch onto master, in effect merging this review to master.
The differences with the clamp master repo are shown here:
diff -qr clamp clamp-tp | diff_filter.sh
Files clamp/INFO.yaml and clamp-tp/INFO.yaml differ
Only in clamp-tp/common: src
Only in clamp-tp/models: src
Files clamp/participant/participant-impl/participant-impl-dcae/pom.xml and clamp-tp/participant/participant-impl/participant-impl-dcae/pom.xml differ
Only in clamp-tp/participant/participant-impl/participant-impl-dcae: src
Only in clamp-tp/participant/participant-impl/participant-impl-policy: src
Only in clamp-tp/participant/participant-impl/participant-impl-simulator: src
Files clamp/participant/participant-impl/pom.xml and clamp-tp/participant/participant-impl/pom.xml differ
Only in clamp-tp/participant/participant-intermediary: src
Files clamp/participant/pom.xml and clamp-tp/participant/pom.xml differ
Files clamp/pom.xml and clamp-tp/pom.xml differ
Only in clamp/releases: 6.0.1-container.yaml
Only in clamp/releases: 6.0.1.yaml
Only in clamp/releases: 6.0.2-container.yaml
Only in clamp/releases: 6.0.2.yaml
Only in clamp/releases: 6.1.0-container.yaml
Only in clamp/releases: 6.1.0.yaml
Only in clamp/releases: 6.1.1-container.yaml
Only in clamp/releases: 6.1.1.yaml
Files clamp/runtime/pom.xml and clamp-tp/runtime/pom.xml differ
Only in clamp-tp: runtime-controlloop
Issue-ID: POLICY-3215
Change-Id: I0e69e3c566ea387d61f77cfa118bb6d67b4f8253
Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'participant/participant-impl/participant-impl-dcae/src')
33 files changed, 7438 insertions, 0 deletions
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" +} |