diff options
Diffstat (limited to 'common/src')
6 files changed, 797 insertions, 0 deletions
diff --git a/common/src/main/java/org/onap/policy/clamp/controlloop/common/rest/CoderHttpMesageConverter.java b/common/src/main/java/org/onap/policy/clamp/controlloop/common/rest/CoderHttpMesageConverter.java new file mode 100644 index 000000000..9eb43fd6f --- /dev/null +++ b/common/src/main/java/org/onap/policy/clamp/controlloop/common/rest/CoderHttpMesageConverter.java @@ -0,0 +1,74 @@ +/*- + * ============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.common.rest; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import javax.ws.rs.core.Response; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; +import org.onap.policy.common.utils.coder.Coder; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.coder.StandardYamlCoder; +import org.springframework.http.HttpInputMessage; +import org.springframework.http.HttpOutputMessage; +import org.springframework.http.MediaType; +import org.springframework.http.converter.AbstractHttpMessageConverter; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.http.converter.HttpMessageNotWritableException; + +public class CoderHttpMesageConverter<T> extends AbstractHttpMessageConverter<T> { + + private Coder coder; + + public CoderHttpMesageConverter(String type) { + super(new MediaType("application", type, StandardCharsets.UTF_8)); + this.coder = "json".equals(type) ? new StandardCoder() : new StandardYamlCoder(); + } + + @Override + protected boolean supports(Class<?> clazz) { + return true; + } + + @Override + protected T readInternal(Class<? extends T> clazz, HttpInputMessage inputMessage) + throws IOException, HttpMessageNotReadableException { + try (var is = new InputStreamReader(inputMessage.getBody(), StandardCharsets.UTF_8)) { + return coder.decode(is, clazz); + } catch (CoderException e) { + throw new ControlLoopRuntimeException(Response.Status.BAD_REQUEST, e.getMessage(), e); + } + } + + @Override + protected void writeInternal(T t, HttpOutputMessage outputMessage) + throws IOException, HttpMessageNotWritableException { + try (var writer = new OutputStreamWriter(outputMessage.getBody(), StandardCharsets.UTF_8)) { + coder.encode(writer, t); + } catch (CoderException e) { + throw new ControlLoopRuntimeException(Response.Status.BAD_REQUEST, e.getMessage(), e); + } + } + +} diff --git a/common/src/main/java/org/onap/policy/clamp/controlloop/common/rest/RequestResponseLoggingFilter.java b/common/src/main/java/org/onap/policy/clamp/controlloop/common/rest/RequestResponseLoggingFilter.java new file mode 100644 index 000000000..915cdf0b2 --- /dev/null +++ b/common/src/main/java/org/onap/policy/clamp/controlloop/common/rest/RequestResponseLoggingFilter.java @@ -0,0 +1,69 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.controlloop.common.rest; + +import java.io.IOException; +import java.util.UUID; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(2) +public class RequestResponseLoggingFilter implements Filter { + + private static final String VERSION_MINOR_NAME = "X-MinorVersion"; + private static final String VERSION_PATCH_NAME = "X-PatchVersion"; + private static final String VERSION_LATEST_NAME = "X-LatestVersion"; + public static final String API_VERSION = "1.0.0"; + public static final String REQUEST_ID_NAME = "X-ONAP-RequestID"; + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + + + HttpServletResponse res = (HttpServletResponse) response; + HttpServletRequest req = (HttpServletRequest) request; + + /* + * Disabling sonar because of ONAP requires the request ID to be copied from the request + * to the response. + */ + String requestId = req.getHeader(REQUEST_ID_NAME); + res.addHeader(REQUEST_ID_NAME, requestId != null ? requestId : UUID.randomUUID().toString()); // NOSONAR + + res.addHeader(VERSION_MINOR_NAME, "0"); + res.addHeader(VERSION_PATCH_NAME, "0"); + res.addHeader(VERSION_LATEST_NAME, API_VERSION); + + chain.doFilter(request, response); + } + +} diff --git a/common/src/main/java/org/onap/policy/clamp/controlloop/common/utils/CommonUtils.java b/common/src/main/java/org/onap/policy/clamp/controlloop/common/utils/CommonUtils.java new file mode 100644 index 000000000..4b0e41f23 --- /dev/null +++ b/common/src/main/java/org/onap/policy/clamp/controlloop/common/utils/CommonUtils.java @@ -0,0 +1,150 @@ +/*- + * ============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.common.utils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElementDefinition; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantDefinition; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUpdates; +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.ToscaNodeType; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate; + +/** + * Utility functions used in controlloop-runtime and participants. + * + */ +public class CommonUtils { + private static final String POLICY_TYPE_ID = "policy_type_id"; + private static final String POLICY_ID = "policy_id"; + + /** + * Prepare participant updates map. + * + * @param clElement controlloop element + * @param participantUpdates list of participantUpdates + */ + public static void prepareParticipantUpdate(ControlLoopElement clElement, + List<ParticipantUpdates> participantUpdates) { + if (participantUpdates.isEmpty()) { + participantUpdates.add(getControlLoopElementList(clElement)); + return; + } + + var participantExists = false; + for (ParticipantUpdates participantUpdate : participantUpdates) { + if (participantUpdate.getParticipantId().equals(clElement.getParticipantId())) { + participantUpdate.setControlLoopElementList(List.of(clElement)); + participantExists = true; + } + } + if (!participantExists) { + participantUpdates.add(getControlLoopElementList(clElement)); + } + } + + private static ParticipantUpdates getControlLoopElementList(ControlLoopElement clElement) { + var participantUpdate = new ParticipantUpdates(); + participantUpdate.setParticipantId(clElement.getParticipantId()); + participantUpdate.setControlLoopElementList(List.of(clElement)); + return participantUpdate; + } + + /** + * Set the Policy information in the service template for the controlloopelement. + * + * @param clElement controlloop element + * @param toscaServiceTemplate ToscaServiceTemplate + */ + public static void setServiceTemplatePolicyInfo(ControlLoopElement clElement, + ToscaServiceTemplate toscaServiceTemplate) { + // Pass respective PolicyTypes or Policies as part of toscaServiceTemplateFragment + if (toscaServiceTemplate.getPolicyTypes() == null + && toscaServiceTemplate.getToscaTopologyTemplate().getPolicies() == null) { + return; + } + ToscaServiceTemplate toscaServiceTemplateFragment = new ToscaServiceTemplate(); + toscaServiceTemplateFragment.setPolicyTypes(toscaServiceTemplate.getPolicyTypes()); + ToscaTopologyTemplate toscaTopologyTemplate = new ToscaTopologyTemplate(); + toscaTopologyTemplate.setPolicies(toscaServiceTemplate.getToscaTopologyTemplate().getPolicies()); + toscaServiceTemplateFragment.setToscaTopologyTemplate(toscaTopologyTemplate); + toscaServiceTemplateFragment.setDataTypes(toscaServiceTemplate.getDataTypes()); + clElement.setToscaServiceTemplateFragment(toscaServiceTemplateFragment); + } + + /** + * Prepare ParticipantDefinitionUpdate to set in the message. + * + * @param clParticipantType controlloop element + * @param entryKey key for the entry + * @param entryValue value relates to toscaNodeTemplate + * @param participantDefinitionUpdates list of participantDefinitionUpdates + * @param commonPropertiesMap common properties map + */ + public static void prepareParticipantDefinitionUpdate(ToscaConceptIdentifier clParticipantType, String entryKey, + ToscaNodeTemplate entryValue, List<ParticipantDefinition> participantDefinitionUpdates, + Map<String, ToscaNodeType> commonPropertiesMap) { + + var clDefinition = new ControlLoopElementDefinition(); + clDefinition.setClElementDefinitionId(new ToscaConceptIdentifier(entryKey, entryValue.getVersion())); + clDefinition.setControlLoopElementToscaNodeTemplate(entryValue); + if (commonPropertiesMap != null) { + ToscaNodeType nodeType = commonPropertiesMap.get(entryValue.getType()); + if (nodeType != null) { + clDefinition.setCommonPropertiesMap(nodeType.getProperties()); + } + } + + List<ControlLoopElementDefinition> controlLoopElementDefinitionList = new ArrayList<>(); + + if (participantDefinitionUpdates.isEmpty()) { + participantDefinitionUpdates + .add(getParticipantDefinition(clDefinition, clParticipantType, controlLoopElementDefinitionList)); + } else { + var participantExists = false; + for (ParticipantDefinition participantDefinitionUpdate : participantDefinitionUpdates) { + if (participantDefinitionUpdate.getParticipantType().equals(clParticipantType)) { + participantDefinitionUpdate.getControlLoopElementDefinitionList().add(clDefinition); + participantExists = true; + } + } + if (!participantExists) { + participantDefinitionUpdates.add( + getParticipantDefinition(clDefinition, clParticipantType, controlLoopElementDefinitionList)); + } + } + } + + private static ParticipantDefinition getParticipantDefinition(ControlLoopElementDefinition clDefinition, + ToscaConceptIdentifier clParticipantType, + List<ControlLoopElementDefinition> controlLoopElementDefinitionList) { + var participantDefinition = new ParticipantDefinition(); + participantDefinition.setParticipantType(clParticipantType); + controlLoopElementDefinitionList.add(clDefinition); + participantDefinition.setControlLoopElementDefinitionList(controlLoopElementDefinitionList); + return participantDefinition; + } +} diff --git a/common/src/main/resources/tosca/ApplicationServiceDescriptorTypes.yaml b/common/src/main/resources/tosca/ApplicationServiceDescriptorTypes.yaml new file mode 100644 index 000000000..ad16173b9 --- /dev/null +++ b/common/src/main/resources/tosca/ApplicationServiceDescriptorTypes.yaml @@ -0,0 +1,74 @@ +# ============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========================================================= +tosca_definitions_version: tosca_simple_yaml_1_3 +node_types: + org.oran.asd.DeploymentItem: + version: 1.0.1 + derived_from: org.onap.policy.clamp.controlloop.KubernetesControlLoopElement + properties: + deployemntItemId: + type: onap.datatypes.ToscaConceptIdentifier + required: true + description: The identifier of this deployment item + artifactId: + type: onap.datatypes.ToscaConceptIdentifier + required: true + description: Reference to a DeploymentArtifact + lifecycleParameters: + type: string + required: false + description: List of parameters that can be overridden at deployment time + (e.g. values for values.yaml in the chart this item references) + org.oran.asd.ASD: + version: 1.0.1 + derived_from: org.onap.policy.clamp.controlloop.ControlLoop + properties: + asdId: + type: onap.datatypes.ToscaConceptIdentifier + required: true + description: The identifier of this deployment item + asdSchemaVersion: + type: onap.datatypes.ToscaConceptIdentifier + required: true + description: Reference to a DeploymentArtifact + asdApplication: + type: onap.datatypes.ToscaConceptIdentifier + required: true + description: Reference to a DeploymentArtifact + asdApplicationInfoName: + type: string + required: false + description: Human readable name for the Application service. Can change during the AS lifetime. + asdExtCpd: + type: string + required: false + description: Describes external interface(s) exposed by this AS enabling connection with a VL. + (Similar to VnfExtCpd on VNF-D, but only describing L3 and above interfaces, since + K8S can’t do <L3) + enhancedClusterCapabilities: + type: string + required: false + description: Describes expected capabilities of the target Kubernetes cluster to aid placement of the + application service on a suitable cluster. Examples of capabilities are; required networking + characteristics, Kubernetes API extensions or quantifiable node specific resources. This attribute + can contain information complementing information provided in the referenced DeploymentArtifacts. + Note; Modeling of enhancedClusterCapabilities is subject to standardization but is ffs. Alignment + between O2-IMS and O2-DMS of these values is required. + + + diff --git a/common/src/test/resources/asd/MyDomainASDDefintion.yaml b/common/src/test/resources/asd/MyDomainASDDefintion.yaml new file mode 100644 index 000000000..f354ea075 --- /dev/null +++ b/common/src/test/resources/asd/MyDomainASDDefintion.yaml @@ -0,0 +1,131 @@ +# ============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========================================================= +tosca_definitions_version: tosca_simple_yaml_1_3 +topology_template: + node_templates: + org.oran.asd.MyApplicationServiceDeploymentItem0: + version: 1.0.0 + type: org.oran.asd.DeploymentItem + type_version: 1.0.1 + description: The first Deployment Item in our Application Service + properties: + deployemntItemId: org.oran.asd.MyApplicationServiceDeploymentItem0:1.0.0 + artifactId: org.oran.asd.MyApplicationServiceDeploymentArtifact0:1.0.0 + lifecycleParameters: To be defined + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Kubernetes:1.0.0 + startPhase: 2 + uninitializedToPassiveTimeout: 180 + chart: + chartId: MyApplicationServiceDeploymentItem0Chart:1.0.0 + releaseName: SomeRelease + namespace: org.oran.asd.MyApplicationService + org.oran.asd.MyApplicationServiceDeploymentItem1: + version: 1.0.0 + type: org.oran.asd.DeploymentItem + type_version: 1.0.1 + description: The second Deployment Item in our Application Service + properties: + deployemntItemId: org.oran.asd.MyApplicationServiceDeploymentItem1:1.0.0 + artifactId: org.oran.asd.MyApplicationServiceDeploymentArtifact1:1.0.0 + lifecycleParameters: To be defined + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Kubernetes:1.0.0 + startPhase: 4 + uninitializedToPassiveTimeout: 10 + chart: + chartId: MyApplicationServiceDeploymentItem1Chart:1.0.0 + releaseName: SomeRelease + namespace: org.oran.asd.MyApplicationService + org.oran.asd.MyApplicationRestConfig: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.HttpControlLoopElement + type_version: 1.0.1 + description: The REST configuration for My Application + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Http:1.0.0 + startPhase: 1 + baseUrl: https://10.10.10.10:12345/MyApplicationServiceDeploymentItem0RestEndpoint + httpHeaders: + "Content-Type": "application/json" + "Accept": "application/json" + configurationEntities: + org.onap.policy.controlloop.gentleguidance.setDomainConfig:1.0.0: + configurationEntityId: org.onap.policy.controlloop.gentleguidance.setDomainConfig:1.0.0 + restSequence: + - restRequestId: org.oran.asd.myapplication.setDomainConfig.CreateConfig:1.0.0 + httpMethd: POST + path: "gentle/create" + body: + gentleLevel: veryGentle + gentleType: softAndFurry + expectedResponse: 200 + - restRequestId: org.oran.asd.myapplication.setDomainConfig.CreateConfig:1.0.0 + httpMethd: POST + path: "guidance/create" + body: + guidanceLevel: high + guidanceType: subtle + expectedResponse: 200 + org.oran.asd.myapplication.updateDomainConfig:1.0.0: + configurationEntityId: org.oran.asd.myapplication.updateDomainConfig:1.0.0 + restSequence: + - restRequestId: org.oran.asd.myapplication.updateDomainConfig.UpdateConfig:1.0.0 + httpMethd: PUT + path: "gentle/update]" + body: + gentleLevel: robust + gentleType: hardAndGritty + expectedResponse: 200 + - restRequestId: org.oran.asd.myapplication.updateDomainConfig.UpdateConfig:1.0.0 + httpMethd: PUT + path: "guidance/update" + body: + guidanceLevel: low + guidanceType: terse + expectedResponse: 200 + org.oran.asd.MyApplicationPolicy: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement + type_version: 1.0.1 + description: My Application Operational Policy + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Policy:1.0.0 + startPhase: 0 + policyType: onap.policies.controlloop.operational.common.Apex:1.0.0 + policyId: org.oran.asd.myapplication.ServiceControlPolicy:1.0.0 + org.org.oran.asd.MyApplicationService: + version: 1.0.0 + type: org.oran.asd.ASD + type_version: 1.0.1 + description: ASD Definition of the My Application Service + properties: + asdId: org.org.oran.asd.MyApplicationService:1.0.0 + asdSchemaVersion: 2.3.2 + provider: Ericsson + asdApplication: org.oran.asd.MyWonderfulApplicationService:1.2.1 + asdApplicationInfoName: The wonderful ASD service that does everything imaginable + asdExtCpd: To be defined + enhancedCludterCapabilities: To be defined + elements: + - org.oran.asd.MyApplicationServiceDeploymentItem0:1.0.0 + - org.oran.asd.MyApplicationServiceDeploymentItem1:1.0.0 + - org.oran.asd.MyApplicationRestConfig:1.0.0 + - org.oran.asd.MyApplicationPolicy:1.0.0 diff --git a/common/src/test/resources/gentleguidance/GentleGuidanceMultipleTopologyTemplates.yaml b/common/src/test/resources/gentleguidance/GentleGuidanceMultipleTopologyTemplates.yaml new file mode 100644 index 000000000..93b5ba5a5 --- /dev/null +++ b/common/src/test/resources/gentleguidance/GentleGuidanceMultipleTopologyTemplates.yaml @@ -0,0 +1,299 @@ +tosca_definitions_version: tosca_simple_yaml_1_3 +topology_template: + node_templates: + org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.KubernetesControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Kubernetes Microservice + org.onap.domain.gentleguidance.RestControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.HttpControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Microservice REST configuration + org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Operational Policy + org.onap.domain.gentleguidance.CdsControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.CDSControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance CDS blueprint + org.onap.domain.gentleguidance.ControlLoopDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.ControlLoop + type_version: 1.0.1 + description: Control loop definition for the Gentle Guidance domain + properties: + provider: Ericsson + elements: + - org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition:1.0.0 + - org.onap.domain.gentleguidance.RestControlLoopElementDefinition:1.0.0 + - org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition:1.0.0 + - org.onap.domain.gentleguidance.CdsControlLoopElementDefinition:1.0.0 + +After Commissioning: + +tosca_definitions_version: tosca_simple_yaml_1_3 +topology_template: + node_templates: + org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.KubernetesControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Kubernetes Microservice + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Kubernetes:1.0.0 + startPhase: 2 + uninitializedToPassiveTimeout: 180 + org.onap.domain.gentleguidance.RestControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.HttpControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Microservice REST configuration + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Http:1.0.0 + startPhase: 1 + baseUrl: https://10.10.10.10:12345/gentleguidancemicroservice + org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Operational Policy + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Policy:1.0.0 + startPhase: 0 + org.onap.domain.gentleguidance.CdsControlLoopElementDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.CDSControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance CDS blueprint + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Cds:1.0.0 + startPhase: 0 + org.onap.domain.gentleguidance.ControlLoopDefinition: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.ControlLoop + type_version: 1.0.1 + description: Control loop definition for the Gentle Guidance domain + properties: + provider: Ericsson + elements: + - org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition:1.0.0 + - org.onap.domain.gentleguidance.RestControlLoopElementDefinition:1.0.0 + - org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition:1.0.0 + - org.onap.domain.gentleguidance.CdsControlLoopElementDefinition:1.0.0 + + +After Instantiation: + +(Instance 1) + +tosca_definitions_version: tosca_simple_yaml_1_3 +topology_template: + node_templates: + org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition_Instance1: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.KubernetesControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Kubernetes Microservice + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Kubernetes:1.0.0 + startPhase: 2 + uninitializedToPassiveTimeout: 180 + chart: + chartId: GentleGuidance:1.0.0 + releaseName: Istanbul + namespace: org.onap.policy.controlloop.gentleguidance + org.onap.domain.gentleguidance.RestControlLoopElementDefinition_Instance1: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.HttpControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Microservice REST configuration + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Http:1.0.0 + startPhase: 1 + baseUrl: https://10.10.10.10:12345/gentleguidancemicroservice + httpHeaders: + "Content-Type": "application/json" + "Accept": "application/json" + configurationEntities: + org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig:1.0.0: + configurationEntityId: org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig:1.0.0 + restSequence: + - restRequestId: org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig.CreateGentle:1.0.0 + httpMethd: POST + path: "gentle/create" + body: + gentleLevel: veryGentle + gentleType: softAndFurry + expectedResponse: 200 + - restRequestId: org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig.CreateGuidance:1.0.0 + httpMethd: POST + path: "guidance/create" + body: + guidanceLevel: high + guidanceType: subtle + expectedResponse: 200 + org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig:1.0.0: + configurationEntityId: org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig:1.0.0 + restSequence: + - restRequestId: org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig.CreateGentle:1.0.0 + httpMethd: PUT + path: "gentle/update]" + body: + gentleLevel: robust + gentleType: hardAndGritty + expectedResponse: 200 + - restRequestId: org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig.CreateGuidance:1.0.0 + httpMethd: PUT + path: "guidance/update" + body: + guidanceLevel: low + guidanceType: terse + expectedResponse: 200 + org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition_Instance1: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Operational Policy + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Policy:1.0.0 + startPhase: 0 + policyType: onap.policies.controlloop.operational.common.Apex:1.0.0 + policyId: org.onap.domain.gentleguidance.policy.GentleGuidanceAssertive:1.0.0 + org.onap.domain.gentleguidance.CdsControlLoopElementDefinition_Instance1: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.CDSControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance CDS blueprint + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Cds:1.0.0 + startPhase: 0 + cdsBlueprint: "Placeholder for the CDS blueprint" + org.onap.domain.gentleguidance.ControlLoopDefinition_Instance1: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.ControlLoop + type_version: 1.0.1 + description: Control loop definition for the Gentle Guidance domain + properties: + provider: Ericsson + elements: + - org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition_Instance1:1.0.0 + - org.onap.domain.gentleguidance.RestControlLoopElementDefinition_Instance1:1.0.0 + - org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition_Instance1:1.0.0 + - org.onap.domain.gentleguidance.CdsControlLoopElementDefinition_Instance1:1.0.0 + + +(Instance 2) + +tosca_definitions_version: tosca_simple_yaml_1_3 +topology_template: + node_templates: + org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition_Instance2: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.KubernetesControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Kubernetes Microservice + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Kubernetes:1.0.0 + startPhase: 2 + uninitializedToPassiveTimeout: 180 + chart: + chartId: GentleGuidance:1.0.0 + releaseName: Istanbul + namespace: org.onap.policy.controlloop.gentleguidance + org.onap.domain.gentleguidance.RestControlLoopElementDefinition_Instance2: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.HttpControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Microservice REST configuration + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Http:1.0.0 + startPhase: 1 + baseUrl: https://10.10.10.10:12345/gentleguidancemicroservice + httpHeaders: + "Content-Type": "application/json" + "Accept": "application/json" + configurationEntities: + org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig:1.0.0: + configurationEntityId: org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig:1.0.0 + restSequence: + - restRequestId: org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig.CreateGentle:1.0.0 + httpMethd: POST + path: "gentle/create" + body: + gentleLevel: veryGentle + gentleType: softAndFurry + expectedResponse: 200 + - restRequestId: org.onap.policy.controlloop.gentleguidance.setGentleGuidanceConfig.CreateGuidance:1.0.0 + httpMethd: POST + path: "guidance/create" + body: + guidanceLevel: low + guidanceType: subtle + expectedResponse: 200 + org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig:1.0.0: + configurationEntityId: org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig:1.0.0 + restSequence: + - restRequestId: org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig.CreateGentle:1.0.0 + httpMethd: PUT + path: "gentle/update]" + body: + gentleLevel: robust + gentleType: SoftandRobust + expectedResponse: 200 + - restRequestId: org.onap.policy.controlloop.gentleguidance.updateGentleGuidanceConfig.CreateGuidance:1.0.0 + httpMethd: PUT + path: "guidance/update" + body: + guidanceLevel: low + guidanceType: terse + expectedResponse: 200 + org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition_Instance2: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance Operational Policy + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Policy:1.0.0 + startPhase: 0 + policyType: onap.policies.controlloop.operational.common.Apex:1.0.0 + policyId: org.onap.domain.gentleguidance.policy.GentleGuidanceAssertive:1.0.0 + org.onap.domain.gentleguidance.CdsControlLoopElementDefinition_Instance2: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.CDSControlLoopElement + type_version: 1.0.1 + description: Control loop element for the Gentle Guidance CDS blueprint + properties: + provider: Ericsson + participantType: org.onap.policy.controlloop.participant.Cds:1.0.0 + startPhase: 0 + cdsBlueprint: "Placeholder for the CDS blueprint" + org.onap.domain.gentleguidance.ControlLoopDefinition_Instance2: + version: 1.0.0 + type: org.onap.policy.clamp.controlloop.ControlLoop + type_version: 1.0.1 + description: Control loop definition for the Gentle Guidance domain + properties: + provider: Ericsson + elements: + - org.onap.domain.gentleguidance.KubernetesControlLoopElementDefinition_Instance2:1.0.0 + - org.onap.domain.gentleguidance.RestControlLoopElementDefinition_Instance2:1.0.0 + - org.onap.domain.gentleguidance.PolicyControlLoopElementDefinition_Instance2:1.0.0 + - org.onap.domain.gentleguidance.CdsControlLoopElementDefinition_Instance2:1.0.0 + + |