From: liamfallon Date: Wed, 7 Jul 2021 19:08:41 +0000 (+0100) Subject: Update CL TOSCA definitions, Add Guidance UC X-Git-Tag: 6.1.2~71^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=aa725fcc52bd2eb009dc407480e113158e65ddbd;p=policy%2Fclamp.git 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 --- 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