Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languageyml
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
languageyml
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

...