Versions Compared

Key

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

...

MariaDB [controlloop]> select * from ExampleObjMap;
+---------------+---------+
| name          | version |
+---------------+---------+
| ExampleObjMap | 1.0.0   |
+---------------+---------+

MariaDB [controlloop]> select * from Example;
+----------+---------+--------+-----------+
| name     | version | primed | timeStamp |
+----------+---------+--------+-----------+
| example1 | 1.0.0   | NULL   | NULL      |
| example2 | 1.0.0   | NULL   | NULL      |
+----------+---------+--------+-----------+

MariaDB [controlloop]> select * from ExampleObjMap_Example;
+---------------+----------------+------------+---------------+--------------+
| parent_name   | parent_version | child_name | child_version | examples_KEY |
+---------------+----------------+------------+---------------+--------------+
| ExampleObjMap | 1.0.0          | example1   | 1.0.0         | MyKey1       |
| ExampleObjMap | 1.0.0          | example2   | 1.0.0         | MyKey2       |
+---------------+----------------+------------+---------------+--------------+

Performance issue

Using current version, for each operation save/read/delete of the service template below, control-loop runtime application access to 14 tables and handles 51 rows.

Code Block
languageyml
titleExample of Service Template
collapsetrue
name: ToscaServiceTemplateSimple
version: 1.0.1
tosca_definitions_version: tosca_simple_yaml_1_3
data_types:
  onap.datatypes.ToscaConceptIdentifier:
    derived_from: tosca.datatypes.Root
    properties:
      name:
        type: string
        required: true
      version:
        type: string
        required: true
node_types:
  org.onap.policy.clamp.controlloop.Participant:
    version: 1.0.1
    derived_from: tosca.nodetypes.Root
    properties:
      provider:
        type: string
        requred: false
  org.onap.policy.clamp.controlloop.ControlLoopElement:
    version: 1.0.1
    derived_from: tosca.nodetypes.Root
    properties:
      provider:
        type: string
        requred: false
      participantType:
        type: onap.datatypes.ToscaConceptIdentifier
        requred: true
      startPhase:
        type: integer
        required: false
        constraints:
          - greater_or_equal: 0
        metadata:
          common: true
        description: check wiki documentation about start phase
          stopped simultaneously
  org.onap.policy.clamp.controlloop.ControlLoop:
    version: 1.0.1
    derived_from: tosca.nodetypes.Root
    properties:
      provider:
        type: string
        requred: false
      elements:
        type: list
        required: true
        entry_schema:
          type: onap.datatypes.ToscaConceptIdentifier
  org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement:
    version: 1.0.1
    derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
    properties:
      chart:
        type: string
        required: true
      configs:
        type: list
        required: false
      requirements:
        type: string
        requred: false
      templates:
        type: list
        required: false
        entry_schema:
      values:
        type: string
        requred: true
topology_template:
  node_templates:
    org.onap.k8s.controlloop.K8SControlLoopParticipant:
      version: 2.3.4
      type: org.onap.policy.clamp.controlloop.Participant
      type_version: 1.0.1
      description: Participant for K8S
      properties:
        provider: ONAP
   
    org.onap.domain.database.HelloWorld_K8SMicroserviceControlLoopElement:
      # Chart from any chart repository configured on helm client.
      version: 1.2.3
      type: org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement
      type_version: 1.0.0
      description: Control loop element for the K8S microservice for Hello World
      properties:
        provider: ONAP
        participantType:
          name: org.onap.k8s.controlloop.K8SControlLoopParticipant1
          version: 2.3.4
        chart:  
          chartId:         
            name: dummy
            version: 0.1.0 
          releaseName: test                         
          namespace: test   

    org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement:  
      # Chart from local file system    
      version: 1.2.3
      type: org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement
      type_version: 1.0.0
      description: Control loop element for the K8S microservice for PMSH
      properties:
        provider: ONAP
        participantType:
          name: org.onap.k8s.controlloop.K8SControlLoopParticipant2
          version: 2.3.4
        startPhase: 1
        chart:          
          chartId: 
            name: dcae-pmsh         
            version: 8.0.0
          namespace: onap 
          releaseName: pmshms
          repository:
            repoName: chartmuseum
            protocol: http
            address: 10.152.183.120
            port: 80
            userName: onapinitializer
            password: demo123456!
          overrideParams:
            global.masterPassword: test
            
                 

    org.onap.domain.database.Local_K8SMicroserviceControlLoopElement: 
      # Chart installation without passing repository name     
      version: 1.2.3
      type: org.onap.policy.clamp.controlloop.K8SMicroserviceControlLoopElement
      type_version: 1.0.0
      description: Control loop element for the K8S microservice for local chart
      properties:
        provider: ONAP
        participantType:
          name: org.onap.k8s.controlloop.K8SControlLoopParticipant
          version: 2.3.4
        chart:
          chartId:      
            name: nginx-ingress
            version: 0.9.1    
          releaseName: nginxms
          namespace: test   
          repository:
            repoName: nginx-stable       

    org.onap.domain.sample.GenericK8s_ControlLoopDefinition:
      version: 1.2.3
      type: org.onap.policy.clamp.controlloop.ControlLoop
      type_version: 1.0.0
      description: Control loop for Hello World
      properties:
        provider: ONAP
        elements:        
        - name: org.onap.domain.database.HelloWorld_K8SMicroserviceControlLoopElement
          version: 1.2.3   
        - name: org.onap.domain.database.PMSH_K8SMicroserviceControlLoopElement
          version: 1.2.3     
        - name: org.onap.domain.database.Local_K8SMicroserviceControlLoopElement
          version: 1.2.3                  
   


Multi templates

Right now using Spring repositories it is possible to create more than one service template, as service templates in policy-models/tosca. It works in both Eclipse-Link and Hibernate.

How to create additional service template (just add different name and version into the yaml file):

...

  • Move to Hibernate with EclipseLink tables is probably possible.
  • The presence of longblob types used to store whole objects is an issues, it is readable only by Java language or by any other language compatible with Java binary code. I am not sure if a db-migrator can handle that.
  • Document databases store all information for a given object in a single instance in the database, and every stored object can be different from every other.  Each operation save/read/delete of a service template, could be done using one access to a document. So, using Cassandra/MongoDB /Cassandra will solve all issues. JpaRepository and  and CassandraRepository/MongoRepository extend CrudRepository and expose the capabilities of the underlying persistence technology in addition to the rather generic persistence technology-agnostic interfaces like e.g. CrudRepository.

...