Update CL TOSCA definitions, Add Guidance UC 09/122509/4
authorliamfallon <liam.fallon@est.tech>
Wed, 7 Jul 2021 19:08:41 +0000 (20:08 +0100)
committerLiam Fallon <liam.fallon@est.tech>
Fri, 9 Jul 2021 11:08:13 +0000 (11:08 +0000)
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 <liam.fallon@est.tech>
common/src/main/resources/tosca/CdsControlLoopElementType.yaml
common/src/main/resources/tosca/ControlLoopTOSCAServiceTemplateTypes.yaml
common/src/main/resources/tosca/DcaeControlLoopElementType.yaml
common/src/main/resources/tosca/HttpControlLoopElementType.yaml
common/src/main/resources/tosca/KubernetesControlLoopElementType.yaml
common/src/main/resources/tosca/PolicyControlLoopElementType.yaml
common/src/test/resources/examples/controlloop/PMSubscriptionHandling.yaml
common/src/test/resources/gentleguidance/GentleGuidanceDefaultPropeties.yaml [new file with mode: 0644]
common/src/test/resources/gentleguidance/GentleGuidanceNoPropeties.yaml [new file with mode: 0644]

index 296324b..c2fc66a 100644 (file)
@@ -24,3 +24,4 @@ node_types:
       cdsBlueprint:
         type: string
         required: true
+        description: The CDS blueprint that this control loop element is managing.
index 615fc34..e45a062 100644 (file)
@@ -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
 
index 654a094..acf91bb 100644 (file)
@@ -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.
index 4fdb605..fd37040 100644 (file)
@@ -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
index 7468581..86a8ce1 100644 (file)
@@ -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
index f2d45f1..e584c2f 100644 (file)
@@ -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
index f9f9742..5c6883b 100644 (file)
@@ -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 (file)
index 0000000..d634a1f
--- /dev/null
@@ -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 (file)
index 0000000..d022261
--- /dev/null
@@ -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