Versions Compared

Key

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

...

  1. Gather what you need:

    Deck of Cards
    idprerequisite


    Card
    labelinstantiation

    Have the HEAT template along with the HEAT environment file.


    Card
    labelpost-instantiation

    Have the configuration template to apply on the VNF.


      1. XML for NETCONF
      2. JSON / XML for RESTCONF
      3. not supported yet - CLI



  2. Identify which values resources are static and dynamic
  3. Create and fill-in the a table for all the dynamic values

    While doing so, identify the resources using the same process to be resolved; for instance, if two IPs has to be resolved through the same IPAM, the process the resolve the IP is the same.

    Card
    labelinstantiation

    Here are the information to capture for each dynamic cloud parameters

    Cloud Parameter Resource nameHow to resolveInput Ingredients for resolutionOutput of resolution
    Either the cloud parameters name or the placeholder given for the dynamic property.


    Deck of Cards
    Name as in the HEAT environment file
    Deck of Cards
    idhow to resolve


    Card
    labelInput

    Value will be given as input in the request.


    Card
    labelDefault

    Value will be defaulted in the model.


    Card
    labelREST

    Value will be resolved by sending a query to the REST system


    AuthURLURIPayloadVERB

    Supported Auth type

    Deck of Cards
    idauth


    Card
    labelToken

    Use token based authentication

    • token


    Card
    labelBasic

    Use basic authentication

    • username
    • password


    Card
    labelSSL

    Use SSL basic authentication

    • keystore type
    • truststore
    • truststore password
    • keystore
    • keystore password



    http(s)://<host>:<port>/xyzJSON formatted payloadHTTP method




    Card
    labelSQL

    Value will be resolved by sending a SQL statement to the DB system


    TypeURLQueryUsernamePassword
    Only maria-db supported for now


    jdbc:mysql://<host>:<port>/db

    SQL statement





    These are all the required parameters to process the resolution of that particular resources.

    Deck of Cards
    idinput


    Card
    labelREST

    List of placeholders used for

    • URI
    • Payload


    Card
    labelDB

    List of placeholders used for

    • SQL statement



    This is the expected result from the system, and you should know what value out of the response is of interest for you.

    If it's a JSON payload, then you should think about the json path to access to value of interest.



Data dictionary

For each unique identified dynamic resource, along with all their ingredients, we need to create a data dictionary.

See modeling concept to understand context: CDS Modeling Concepts#ResourceDefinitionakaDatadictionary

Bellow are examples for each resource source

Deck of Cards
idDD


Card
labelinput


Code Block
themeMidnight
{
    "tags": "unit-number",
    "name": "unit-number",
    "property": {
      "description": "unit-number",
      "type": "string"
    },
    "updated-by": "adetalhouet",
    "sources": {
      "input": {
        "type": "source-input"
      }
    }
  }



Card
labeldefault


Code Block
themeEmacs
{
  "tags": "prefix-id",
  "name": "prefix-id",
  "property" :{
    "description": "prefix-id",
    "type": "integer"
  },
  "updated-by": "adetalhouet",
  "sources": {
    "default": {
      "type": "source-default",
      "properties": {
      }
    }
  }
}



Card
labelrest


Code Block
themeDJango
titlecreate_netbox_ip_address
{
    "tags" : "oam-local-ipv4-address",
    "name" : "create_netbox_ip",
    "property" : {
      "description" : "netbox ip",
      "type" : "dt-netbox-ip"
    },
    "updated-by" : "adetalhouet",
    "sources" : {
      "primary-config-data" : {
        "type" : "source-rest",
        "properties" : {
          "type" : "JSON",
          "verb" : "POST",
          "endpoint-selector" : "ipam-1",
          "url-path" : "/api/ipam/prefixes/$prefixId/available-ips/",
          "path" : "/address",
          "input-key-mapping" : {
            "prefixId" : "prefix-id"
          },
          "output-key-mapping" : {
            "address" : "address"
          },
          "key-dependencies" : [ "prefix-id" ]
        }
      }
    }
  }



Card
labeldb


Code Block
themeFadeToGrey
{
  "name": "vf-module-type",
  "tags": "vf-module-type",
  "property": {
    "description": "vf-module-type",
    "type": "string"
  },
  "updated-by": "adetalhouet",
  "sources": {
    "primary-db": {
      "type": "source-primary-db",
      "properties": {
        "type": "SQL",
        "query": "select sdnctl.demo.value as value from sdnctl.demo where sdnctl.demo.id=:vfmoduleid",
        "input-key-mapping": {
          "vfmoduleid": "vf-module-number"
        },
        "output-key-mapping": {
          "vf-module-type": "value"
        },
        "key-dependencies": [
          "vf-module-number"
        ]
      }
    }
  }
}



Card
labelcapability


Code Block
themeRDark
{
  "tags": "interface-description",
  "name": "interface-description",
  "property": {
    "description": "interface-description",
    "type": "string"
  },
  "updated-by": "adetalhouet",
  "sources": {
    "capability": {
      "type": "source-capability",
      "properties": {
        "script-type": "jython",
        "script-class-reference": "DescriptionExample",
        "instance-dependencies": [

        ]
      }
    }
  }
}




Workflows

The following workflows are contracts established between SO, SDNC and CDS to cover the instantiation and the post-instantiation use cases.

...