From aa725fcc52bd2eb009dc407480e113158e65ddbd Mon Sep 17 00:00:00 2001 From: liamfallon Date: Wed, 7 Jul 2021 20:08:41 +0100 Subject: Update CL TOSCA definitions, Add Guidance UC This patch makes some minor updates to the TOSCA definitions, mainly the introduction of common parameters. It also introduces the first draft of a "Gentle Guidance" control loop that can be used for testing, verification, documenting and explaining the TOSCA control loop framework. Issue-ID: POLICY-3341 Change-Id: Ie2d5379bd362f088d7c500402f83745cc7e6aca3 Signed-off-by: liamfallon --- .../resources/tosca/CdsControlLoopElementType.yaml | 1 + .../ControlLoopTOSCAServiceTemplateTypes.yaml | 52 +++++++++- .../tosca/DcaeControlLoopElementType.yaml | 6 +- .../tosca/HttpControlLoopElementType.yaml | 17 +-- .../tosca/KubernetesControlLoopElementType.yaml | 20 ++-- .../tosca/PolicyControlLoopElementType.yaml | 9 +- .../controlloop/PMSubscriptionHandling.yaml | 18 ++-- .../GentleGuidanceDefaultPropeties.yaml | 115 +++++++++++++++++++++ .../gentleguidance/GentleGuidanceNoPropeties.yaml | 52 ++++++++++ 9 files changed, 258 insertions(+), 32 deletions(-) create mode 100644 common/src/test/resources/gentleguidance/GentleGuidanceDefaultPropeties.yaml create mode 100644 common/src/test/resources/gentleguidance/GentleGuidanceNoPropeties.yaml diff --git a/common/src/main/resources/tosca/CdsControlLoopElementType.yaml b/common/src/main/resources/tosca/CdsControlLoopElementType.yaml index 296324b68..c2fc66a6a 100644 --- a/common/src/main/resources/tosca/CdsControlLoopElementType.yaml +++ b/common/src/main/resources/tosca/CdsControlLoopElementType.yaml @@ -24,3 +24,4 @@ node_types: cdsBlueprint: type: string required: true + description: The CDS blueprint that this control loop element is managing. diff --git a/common/src/main/resources/tosca/ControlLoopTOSCAServiceTemplateTypes.yaml b/common/src/main/resources/tosca/ControlLoopTOSCAServiceTemplateTypes.yaml index 615fc34dd..e45a06257 100644 --- a/common/src/main/resources/tosca/ControlLoopTOSCAServiceTemplateTypes.yaml +++ b/common/src/main/resources/tosca/ControlLoopTOSCAServiceTemplateTypes.yaml @@ -34,20 +34,62 @@ node_types: provider: type: string required: false + metadata: + common: true description: Specifies the organization that provides the control loop element - participant_type: + participantType: type: onap.datatypes.ToscaConceptIdentifier required: true + metadata: + common: true description: The identity of the participant type that hosts this type of Control Loop Element - start_phase: + startPhase: type: integer required: false constraints: - greater-or-equal: 0 + metadata: + common: true description: A value indicating the start phase in which this control loop element will be started, the first start phase is zero. Control Loop Elements are started in their start_phase order and stopped in reverse start phase order. Control Loop Elements with the same start phase are started and stopped simultaneously + uninitializedToPassiveTimeout: + type: integer + required: false + constraints: + - greater-or-equal: 0 + default: 60 + metadata: + common: true + description: The maximum time in seconds to wait for a state chage from uninitialized to passive + passiveToRunningTimeout: + type: integer + required: false + constraints: + - greater-or-equal: 0 + default: 60 + metadata: + common: true + description: The maximum time in seconds to wait for a state chage from passive to running + runningToPassiveTimeout: + type: integer + required: false + constraints: + - greater-or-equal: 0 + default: 60 + metadata: + common: true + description: The maximum time in seconds to wait for a state chage from running to passive + passiveToUninitializedTimeout: + type: integer + required: false + constraints: + - greater-or-equal: 0 + default: 60 + metadata: + common: true + description: The maximum time in seconds to wait for a state chage from passive to uninitialized org.onap.policy.clamp.controlloop.ControlLoop: version: 1.0.1 derived_from: tosca.nodetypes.Root @@ -55,11 +97,15 @@ node_types: provider: type: string required: false + metadata: + common: true description: Specifies the organization that provides the control loop element elements: type: list required: true - description: Specifies a list of control loop element definitions that make up this control loop definition + metadata: + common: true entry_schema: type: onap.datatypes.ToscaConceptIdentifier + description: Specifies a list of control loop element definitions that make up this control loop definition diff --git a/common/src/main/resources/tosca/DcaeControlLoopElementType.yaml b/common/src/main/resources/tosca/DcaeControlLoopElementType.yaml index 654a09470..acf91bb92 100644 --- a/common/src/main/resources/tosca/DcaeControlLoopElementType.yaml +++ b/common/src/main/resources/tosca/DcaeControlLoopElementType.yaml @@ -26,14 +26,14 @@ data_types: name: consulUrl type: string typeVersion: 0.0.0 - description: Consul url for this entry required: true + description: Consul url for this entry consulBody: name: consulBody type: string typeVersion: 0.0.0 - description: Body of Consul entry required: true + description: Body of Consul entry node_types: org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement: version: 1.0.1 @@ -42,8 +42,10 @@ node_types: dcaeBlueprint: type: string required: true + description: The DCAE blueprint for the DCAE microservice this control loop element is managing. consulInfo: type: list required: false entry_schema: type: org.onap.datatypes.policy.clamp.controlloop.DCAEControlLoopElementConsulInfo + description: The information to be sent to Consul for the microservice this control loop element is managing. diff --git a/common/src/main/resources/tosca/HttpControlLoopElementType.yaml b/common/src/main/resources/tosca/HttpControlLoopElementType.yaml index 4fdb60546..fd37040c6 100644 --- a/common/src/main/resources/tosca/HttpControlLoopElementType.yaml +++ b/common/src/main/resources/tosca/HttpControlLoopElementType.yaml @@ -24,28 +24,28 @@ data_types: restRequestId: type: onap.datatypes.ToscaConceptIdentifier typeVersion: 1.0.0 - description: The name and version of a REST request to be sent to a REST endpoint required: true + description: The name and version of a REST request to be sent to a REST endpoint httpMethod: type: string - description: The REST method to use required: true constraints: - valid_values: [POST, PUT, GET, DELETE] + description: The REST method to use path: type: string - description: The path of the REST request relative to the base URL required: true + description: The path of the REST request relative to the base URL body: type: string - description: The body of the REST request for PUT and POST requests required: false + description: The body of the REST request for PUT and POST requests expectedResponse: type: integer - description: THe expected HTTP status code for the REST request required: true constraints: - in_range: [100, 599] + description: THe expected HTTP status code for the REST request org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.ConfigurationEntity: version: 1.0.0 derived_from: tosca.datatypes.Root @@ -53,14 +53,14 @@ data_types: configurationEntityId: type: onap.datatypes.ToscaConceptIdentifier typeVersion: 1.0.0 - description: The name and version of a Configuration Entity to be handled by the HTTP Control Loop Element required: true + description: The name and version of a Configuration Entity to be handled by the HTTP Control Loop Element restSequence: type: list - description: A sequence of REST commands to send to the REST endpoint entry_schema: type: org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.RestRequest typeVersion: 1.0.0 + description: A sequence of REST commands to send to the REST endpoint node_types: org.onap.policy.clamp.controlloop.HttpControlLoopElement: version: 1.0.1 @@ -69,14 +69,17 @@ node_types: baseUrl: type: string required: true + description: The base URL to be prepended to each path, identifies the host for the REST endpoints. httpHeaders: type: map required: false entry_schema: type: string + description: HTTP headers to send on REST requests configurationEntities: type: map required: true entry_schema: type: org.onap.datatypes.policy.clamp.controlloop.httpControlLoopElement.ConfigurationEntity typeVersion: 1.0.0 + description: The connfiguration entities the Control Loop Element is managing and their associated REST requests diff --git a/common/src/main/resources/tosca/KubernetesControlLoopElementType.yaml b/common/src/main/resources/tosca/KubernetesControlLoopElementType.yaml index 7468581b5..86a8ce197 100644 --- a/common/src/main/resources/tosca/KubernetesControlLoopElementType.yaml +++ b/common/src/main/resources/tosca/KubernetesControlLoopElementType.yaml @@ -24,26 +24,26 @@ data_types: chartId: type: onap.datatypes.ToscaConceptIdentifier typeVersion: 1.0.0 - description: The name and version of the chart required: true + description: The name and version of the chart releaseName: type: string - description: The name of the release of the chart required: true + description: The name of the release of the chart repository: type: string - description: The name of the repository where the chart is stored required: false + description: The name of the repository where the chart is stored namespace: type: string - description: The name space of the chart required: true + description: The name space of the chart overrideParams: type: map - description: A map of override settings for parameters in the chart required: false entry_schema: type: string + description: A map of override settings for parameters in the chart node_types: org.onap.policy.clamp.controlloop.KubernetesControlLoopElement: version: 1.0.1 @@ -52,25 +52,25 @@ node_types: chart: type: org.onap.datatypes.policy.clamp.controlloop.kubernetesControlLoopElement.Chart typeVersion: 1.0.0 - description: The helm chart for the microservice required: true + description: The helm chart for the microservice configs: type: list - description: The configurations for the microservice required: false entry_schema: type: string + description: The configurations for the microservice requirements: type: string - description: The requirements for the microservice required: false + description: The requirements for the microservice templates: type: list - description: The templates for the microservice required: false entry_schema: type: string + description: The templates for the microservice values: type: string + required: false description: The values for the microservice - required: true diff --git a/common/src/main/resources/tosca/PolicyControlLoopElementType.yaml b/common/src/main/resources/tosca/PolicyControlLoopElementType.yaml index f2d45f1bb..e584c2fce 100644 --- a/common/src/main/resources/tosca/PolicyControlLoopElementType.yaml +++ b/common/src/main/resources/tosca/PolicyControlLoopElementType.yaml @@ -21,6 +21,13 @@ node_types: version: 1.0.1 derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement properties: - policyId: + policyType: type: onap.datatypes.ToscaConceptIdentifier required: true + description: The policy type of the policy that this control loop element is managing + policyId: + type: onap.datatypes.ToscaConceptIdentifier + required: false + description: The policy that this control loop element is managing, if the policy ID is specified, the policy + is either already in the Policy Framework database or is specified in the "policies" part of the + TOSCA service template of the Control Loop definition diff --git a/common/src/test/resources/examples/controlloop/PMSubscriptionHandling.yaml b/common/src/test/resources/examples/controlloop/PMSubscriptionHandling.yaml index f9f97420a..5c6883bee 100644 --- a/common/src/test/resources/examples/controlloop/PMSubscriptionHandling.yaml +++ b/common/src/test/resources/examples/controlloop/PMSubscriptionHandling.yaml @@ -309,24 +309,24 @@ node_types: properties: provider: type: string - requred: false + required: false org.onap.policy.clamp.controlloop.ControlLoopElement: version: 1.0.1 derived_from: tosca.nodetypes.Root properties: provider: type: string - requred: false + required: false participant_id: type: onap.datatypes.ToscaConceptIdentifier - requred: true + required: true org.onap.policy.clamp.controlloop.ControlLoop: version: 1.0.1 derived_from: tosca.nodetypes.Root properties: provider: type: string - requred: false + required: false elements: type: list required: true @@ -338,10 +338,10 @@ node_types: properties: dcae_blueprint_id: type: onap.datatypes.ToscaConceptIdentifier - requred: false + required: false dcae_blueprint: type: onap.dcae.cloudify_blueprint - requred: false + required: false consul_info: type: list required: false @@ -353,17 +353,17 @@ node_types: properties: policy_type_id: type: onap.datatypes.ToscaConceptIdentifier - requred: true + required: true policy_id: type: onap.datatypes.ToscaConceptIdentifier - requred: false + required: false org.onap.policy.clamp.controlloop.CDSControlLoopElement: version: 1.0.1 derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement properties: cds_blueprint_id: type: onap.datatypes.ToscaConceptIdentifier - requred: true + required: true topology_template: inputs: pmsh_monitoring_policy: diff --git a/common/src/test/resources/gentleguidance/GentleGuidanceDefaultPropeties.yaml b/common/src/test/resources/gentleguidance/GentleGuidanceDefaultPropeties.yaml new file mode 100644 index 000000000..d634a1fa5 --- /dev/null +++ b/common/src/test/resources/gentleguidance/GentleGuidanceDefaultPropeties.yaml @@ -0,0 +1,115 @@ +# ============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.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 + chart: + chartId: GentleGuidance:1.0.0 + releaseName: Istanbul + namespace: org.onap.policy.controlloop.gentleguidance + 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 + 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: + 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: + 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: + 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 diff --git a/common/src/test/resources/gentleguidance/GentleGuidanceNoPropeties.yaml b/common/src/test/resources/gentleguidance/GentleGuidanceNoPropeties.yaml new file mode 100644 index 000000000..d0222617d --- /dev/null +++ b/common/src/test/resources/gentleguidance/GentleGuidanceNoPropeties.yaml @@ -0,0 +1,52 @@ +# ============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.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 -- cgit 1.2.3-korg