...
The example Gentle Guidance control loop is illustrated in the diagram above. The domain logic for the control loop is implemented in a microservice running in Kubernetes, a policy, a CDS blueprint, and some configuration that is passed to the microservice over a REST endpoint. We want to manage the life cycle of the domain logic for our Gentle Guidance control loop using our TOSCA based Control Loop Life Cycle Management approach. To do this we create four Control Loop Element definitions, one for the Kubernetes microservice, one for the policy, one for the CDS blueprint and one or the REST configuration.
3.2 The TOSCA Control Loop Definition
We use a TOSCA Topology Template to specify a Control Loop definition and the definitions of its Control Loop Elements. Optionally, we can specify default parameter values in the TOSCA Topology Template. The actual values of Control Loop common and instance specific parameters are set at run time in the CLAMP GUI.
In the case of the Gentle Guidance control loop, we define a Control Loop Element Node Template for each part of the domain logic we are managing. We then define the Control Loop Node Template for the control loop itself.
The code fragment below shows the TOSCA Topology Template for the Gentle Guidance domain when no parameters are defined. Please refer to <Add Github link when merged> for the definitive Yaml specification.
Code Block | ||
---|---|---|
| ||
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:
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 |
The code fragment below shows the TOSCA Topology Template for the Gentle Guidance domain when the default values of parameters are defined. Please refer to <Add Github link when merged> for the definitive Yaml specification.
Code Block | ||
---|---|---|
| ||
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
|
sss <Add Github link when merged>
4. Creating Custom Control Loop Elements
...