You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »


The idea of using control loops to automatically (or autonomously) perform network management has been the subject of much research in the Network Management research community. However,

The diagram below outlines the architecture of the TOSCA defined control loop management.

A TOSCA file contains the descriptor of the control loop. The entire control loop definition, including references to required artifacts, are included in the TOSCA file. The TOSCA file may be packaged in a CSAR, which also includes further artifacts that are required to deploy and instantiate a control loop.

1: Overall Architecture

Liam Fallon to pad out

2: Control Loop Modelling

Joseph O'Leary to pad out this section

A Control Loop service template is made up of several components, those which represent applications, those which represent dynamic config schemas, and the actual node_templates which makes up the loop itself.

Applications can be a DCAE microservice, an operational policy, or any other application as long as it can be modelled, and the targeted ecosystem to has a participant client waiting for the event distributions from CLAMP via DMaaP MR.

Dynamic config on the other hand can be a monitoring policy, or any other resource that provides config to parts of the loop, can be updated after the run time phase has started and is supported by the components hosting the applications in the control loop.

2.1: Control Loop TOSCA file definition

2.1.1 Application Definition 

Application Node Definition
node_types:
  org.onap.APP:
    properties:
      application_name:
        type: string
        description: Human readable name for the application.
        required: true
      provider:
        type: string
        description: Provider of the application and of the descriptor.
        required: true
      application_version:
        type: string
        description: Software version of the application.
        required: true
      resource_id:
        type: string
        description: >The ID of the resource, 
          should be provided if the resource was uploaded to the entity's inventory already.
        required: false
      resource_content:
        type: string
        description: the contents of the application resource, to be uploaded during deploy phase of loop.
        required: false
      monitoring_policy:
        type: string
        description: A reference to the monitoring policy if applicable.
        required: false
    version: 0.0.1
    derived_from: tosca.nodes.Root

2.1.2 Loop Definition

The loop definition is implicit in the node_templates within the topology_template, any node contained within is expected to be a part of the control loop managed by CLAMP.

Loop Definition
topology_template:
  inputs:
    pm_docker_image:
      type: string
      description: docker image used for deploying the PMSH service.
      required: true
    operational_policy_name:
      type: string
      description: name of the operational policy to be triggered on MR when subscription is created.
      required: true
    outbound_topic_name:
      type: string
      description: Name of topic used for messages to policy.
      required: true
    feedback_topic_name:
      type: string
      description: Name of topic used for feedback from policy.
      required: true
    inventory_notification_topic_name:
      type: string
      description: Name of topic used for inventory inventory notifications.
      required: true
    pmsh_resource_id:
      type: string
      description: ID of the PMSH blueprint in the inventory.
      required: true

  node_templates:
    org.onap.PM_Subscription_Handler:
      type: org.onap.APP
      properties:
        application_name: PMSH
        provider: DCAE
        application_Version: '1.0.1'
        resource_id: { get_input: pmsh_resource_id }
        monitoring_policy: 'monitoring_policy_id'


2.1: Modelling from TOSCA to Deployment Data in Run Time Catalogue

2.2: Modelling from TOSCA to Instance Data Run Time Catalogue

3: APIs and Sequence Diagrams

3.1: Deployment

Ajay Deep Singh to pad out this section

3.1.1: Deployment REST API 

 Initial Swagger draft for deployment  API

Initial Swagger Draft for Deployment API
openapi: 3.0.3
info:
  description: >-
    The ControlLoop Deployment API allows users to search and perform
    CRUD action on Controlloop Tosca exported data sets.
  version: 1.0.0
  title: Control Loop Deployment API
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0'
  contact:
    email: lego@est.tech
servers:
  - url: '{scheme}://onap/controlloop/v2/'
    variables:
      scheme:
        description: 'The Data Set API is accessible via https and http'
        enum:
          - 'https'
          - 'http'
        default: 'http'
tags:
  - name: Control Loop 
    description: Deployment API
  - name: design-catalogue
    description: CRUD actions on an designtime Control Loop data sets.
  - name: runtime-catalogue
    description: CRUD actions on an runtime Control Loop data sets.
paths:
  /design-catalogue/loops:
    get:
      tags:
        - design-catalogue
      operationId: getAllLoopsUsingGET
      summary: Returns a list of all available Control Loops.
      responses:
        '200':
          description: OK
          content:
            application/yaml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ControlLoop'
                  
  /design-catalogue/loop/{controlLoopId}:
    get:
      tags:
        - design-catalogue
      summary: >-
        Returns a specific control loop.
      description: >-
        This GET API returns a specific control loop.
      operationId: getLoopByIdUsingGET
      parameters:
        - name: controlLoopId
          in: path
          description: 'Id of the control loop.'
          required: true
          example: "org.onap.PM_CDS_Blueprint"
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/yaml:
              schema:
                $ref: '#/components/schemas/ControlLoop'
  
    delete:
      tags:
        - design-catalogue
      summary: Delete a specific Control Loop by ID.
      operationId: deleteLoopByIdUsingDELETE
      parameters:
        - name: controlLoopId
          in: path
          description: Identity for the control loop
          required: true
          style: simple
          schema:
            type: string
      responses:
        '200':
          description: OK
        '404':
          description: Control Loop not present

    post:
      tags:
        - design-catalogue
      summary: >-
        Accepts a Tosca Service Template representing a Control Loop.
      description: >-
        This API Create a Control Loop.
      operationId: createLoopWithIDUsingPOST
      parameters:
        - name: controlLoopId
          in: path
          description: Identity for the control loop
          required: true
          style: simple
          schema:
            type: string
      responses:
        '200':
          description: OK
        '409':
          description: Control Loop already exist.
     
    put:
      tags:
        - design-catalogue
      summary: Updates a Control Loop.
      operationId: updateLoopWithIDUsingPUT
      parameters:
        - name: controlLoopId
          in: path
          description: Identity for the control loop
          required: true
          style: simple
          schema:
            type: string
      responses:
        '200':
          description: OK
        '404':
          description: Control Loop not found
          
  /runtime-catalogue/deploy:
    post:
      tags:
        - runtime-catalogue
      summary: >-
        Deploys Tosca Service Template in RunTime Catalogue.
      description: >-
        This API Deploys Tosca Service Template in RunTime Catalogue DB.
      operationId: deployLoopWithPOST
      responses:
        '200':
          description: OK
        '404':
          description: No matching record found for the given criteria.
          
  /runtime-catalogue/loop/{controlLoopId}:
    get:
      tags:
        - runtime-catalogue
      summary: >-
        Returns a specific control loop.
      description: >-
        This GET API returns a specific control loop.
      operationId: getLoopByIdUsing
      parameters:
        - name: controlLoopId
          in: path
          description: 'Id of the control loop.'
          required: true
          example: "org.onap.PM_CDS_Blueprint"
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/yaml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ControlLoop'
  
    delete:
      tags:
        - runtime-catalogue
      summary: Delete a specific Control Loop by ID.
      operationId: deleteLoopByIdUsing
      parameters:
        - name: controlLoopId
          in: path
          description: Identity for the control loop
          required: true
          style: simple
          schema:
            type: string
      responses:
        '200':
          description: OK
        '404':
          description: Control Loop not present

    post:
      tags:
        - runtime-catalogue
      summary: >-
        Accepts a Tosca Service Template representing a Control Loop.
      description: >-
        This API Create a Control Loop.
      operationId: createLoopWithIDUsing
      parameters:
        - name: controlLoopId
          in: path
          description: Identity for the control loop
          required: true
          style: simple
          schema:
            type: string
      responses:
        '200':
          description: OK
        '409':
          description: Control Loop already exist.
     
    put:
      tags:
        - runtime-catalogue
      summary: Updates a Control Loop.
      operationId: updateLoopWithIDUsing
      parameters:
        - name: controlLoopId
          in: path
          description: Identity for the control loop
          required: true
          style: simple
          schema:
            type: string
      responses:
        '200':
          description: OK
        '404':
          description: Control Loop not found

components:
  schemas:
    ControlLoop:
      title: ControlLoop
      type: object
      properties:
        id:
          type: string
        ControlLoop:
          type: string

3.1.2: Deployment Sequence Diagrams

3.2: Instantiation

Robertas Rimkus to pad out this section

3.2.1: Instantiation REST API


3.2.2: Instantiation Sequence Diagrams

3.2.3: Instantiation DMaaP API

3.2.4: Instantiation Participant API

3.3: Monitoring

3.3.1: Monitoring REST API

3.3.2: Monitoring Sequence Diagrams

3.3.3: Monitoring DMaaP API

3.3.4: Monitoring Participant API

4: Design

4.1: Server Side

4.1.1 Database Schema and JPA

4.1.2: TOSCA Processing

4.1.3: Instance Control

4.1.4: Execution Monitoring

4.2: Participant Side

4.2.1: Participant Agent

4.2.2: Policy Participant Agent

4.2.3: CDS Participant Agent

4.2.4: DCAE Participant Agent

4.2.5: SO Participant Agent

4.3: Client Side

4.3.1: Client SDK: Composition of Control Loop Tosca

4.3.2: Client User Interface


5: MVP

5.1: Goals

5.2: Limitations








  • No labels