Common Controller Software Development Kit

TOSCA Orchestration Plugins

Cloudify DMaaP Plugin

Cloudify plugin for creating and managing DMaaP Data Router feeds and subscriptions and DMaaP Message Router topics. The plugin uses the DMaaP Bus Controller API.

Plugin Support for DMaaP Data Router

Plugin Types for DMaaP Data Router

The Cloudify type definitions for DMaaP Data Router nodes and relationships are defined in `dmaap.yaml <./dmaap.yaml>`__.

There are four node types for DMaaP Data Router:

  • ccsdk.nodes.Feed: This type represents a feed that does not yet exist and that should be created when the install workflow is run against a blueprint that contains a node of this type.

Property

Type

Required?

Description

feed_name

string

no

a name that identifies the feed (plugin will generate if absent)

feed_version

string

no

version number for the feed (feed_name + feed_version uniquely identify the feed in DR)

feed_description

string

no

human-readable description of the feed

aspr_classification

string

no

AT&T ASPR classification of the feed

  • ccsdk.nodes.ExistingFeed: This type represents a feed that already exists. Nodes of this type are placed in a blueprint so that other nodes in the blueprint can be set up as publishers or subscribers to the feed. The table below shows the properties that a node of this type may have.

Property

Type

Required?

Description

feed_id

string

yes

Feed identifier assigned by DMaaP when the feed was created

  • ccsdk.nodes.ExternalTargetFeed: This type represents a feed created in an external DMaaP environment (i.e., an environment that the plugin cannot access to make provisioning requests, such as a shared corporate system). Nodes of this type are placed in a blueprint so that other feed nodes of type ccsdk.nodes.Feed or ccsdk.nodes.ExistingFeed can be set up to “bridge” to external feeds by publishing data to the external feeds. The table below shows the properties that a node of this type may have.

Property

Type

Required?

Description

url

string

yes

The publish URL of the external feed.

username

string

yes

The username to be used when delivering to the external feed

userpw

string

yes

The password to be used when delivering to the external feed

Note: These properties are usually obtained by manually creating a feed in the external DMaaP DR system and then creating a publisher for that feed.

  • ccsdk.nodes.ExternalSourceFeed: This type represents a feed created in an external DMaaP environment (i.e., an environment that the plugin cannot access to makes provisioning requests, such as a shared corporate system). Nodes of this type are place in a blueprint so that they can be set up to “bridge” to other feed nodes of type ccsdk.nodes.Feed or ccsdk.nodes.ExistingFeed. This type has no node properties, but when a bridge is set up, the url, username, and password are attached to the node as runtime_properties, using the name of the target feed node as the top-level key.

There are five relationship types for DMaaP Data Router:

  • ccsdk.relationships.publish_files, used to indicate that the relationship’s source node sends is a publisher to the Data Router feed represented by the relationship’s target node.

  • ccsdk.relationships.subscribe_to_files, used to indicate that the relationship’s source node is a subscriber to the Data Router feed represented by the relationship’s target node.

  • ccsdk.relationships.bridges_to, used to indicate that the relationship’s source node (a ccsdk.nodes.Feed or ccsdk.nodes.ExistingFeed) should be set up to forward data (“bridge”) to the relationship’s target feed (another ccsdk.nodes.Feed or ccsdk.nodes.ExistingFeed).

  • ccsdk.relationships.bridges_to_external, used to indicate that the relationship’s source node (a ccsdk.nodes.Feed or ccsdk.nodes.ExistingFeed) should be set up to forward data (“bridge”) to the relationship’s target node (a feed in an external DMaaP system, represented by a ccsdk.nodes.ExternalTargetFeed node).

  • ccsdk.relationships.bridges_from_external_to_internal, used to indicate the the relationship’s source node (a feed in an external DMaaP system, represented by a ccsdk.nodes.ExternalSourceFeed node) should be set up to forward date (“bridge”) to the relationship’s target node (an internal ONAP feed, represented by a ccsdk.nodes.Feed or ccsdk.nodes.ExistingFeed node).

The plugin code implements the lifecycle operations needed to create and delete feeds and to add and remove publishers and subscribers. It also implements the operations needed to set up bridging between feeds.

Interaction with Other Plugins

When creating a new feed or processing a reference to an existing feed, the plugin operates independently of other plugins.

When processing a ccsdk.relationships.publish_files relationship or a ccsdk.relationships.subscribe_to_files relationship, this plugin needs to obtain data from the source node and, in the case of publish_files, provide data to the source node. Certain conventions are therefore needed for passing data between this plugin and the plugins responsible for the source nodes in these relationships. In Cloudify, the mechanism for sharing data among plugins is the ctx.instance.runtime_properties dictionary associated with each node.

A given source node may have relationships with several feeds. For example, an ONAP DCAE data collector might publish two different types of data to two different feeds. An ONAP DCAE analytics module might subscribe to one feed to get input for its processing and publish its results to a different feed. When this DMaaP plugin and the plugin for the source node exchange information, they need to do in a way that lets them distinguish among different feeds. We do this through a simple convention: for each source node to feed relationship, the source node plugin will create a property in the source node’s runtime_properties dictionary. The name of the property will be the same as the name of the target node of the relationship. For instance, if a node has a publishes_files relationship with a target node named feed00, then the plugin that’s responsible for managing the source node with create an entry in the source node’s runtime_properties dictionary named feed00. This entry itself will be a dictionary.

The content of this data exchange dictionary depends on whether the source node is a publisher (i.e., the relationship is publish_files) or a subscriber (i.e., the relationship is subscribe_to_files).

For the publish_files relationship, the data exchange dictionary has the following properties:

Property

Set by

Description

location

source node plugin

the DMaaP location for the publisher, used to set up routing

publish_url

DMaaP plugin

the URL to which the publisher makes Data Router publish requests

log_url

DMaaP plugin

the URL from which log data for the feed can be obtained

username

DMaaP plugin

the username (generated by the DMaaP plugin) the publisher uses to authenticate to Data Router

password

DMaaP plugin

the password (generated by the DMaaP plugin) the publisher uses to authenticate to Data Router

For the subscribe_to_files relationship, the data exchange dictionary has the following properties:

Property

Set by

Description

location

source node plugin

the DMaaP location for the subscriber, used to set up routing

delivery_url

source node plugin

the URL to which the Data Router should deliver files

username

source node plugin

the username Data Router uses to authenticate to the subscriber when delivering files

password

source node plugin

the username Data Router uses to authenticate to the subscriber when delivering file

Plugin Support for DMaaP Message Router

Plugin Types for DMaaP Message Router

The Cloudify type definitions for DMaaP Message Router nodes and relationships are defined in `dmaap.yaml <./dmaap.yaml>`__.

There are two node types for DMaaP Message Router:

  • ccsdk.nodes.Topic: This type represents a topic that does not yet exist and that should be created when the install workflow is run against a blueprint that contains a node of this type.

Property

Type

Required?

Description

topic_name

string

no

a name that uniquely identifies the feed (plugin will generate if absent)

topic_description

string

no

human-readable description of the feed

txenable

boolean

no

flag indicating whether transactions are enabled for this topic

replication_case

string

no

type of replication required for the topic (defaults to no replication)

global_mr_url

string

no

Global MR host name for replication to a global MR instance

Note: In order to set up topics, a user should be familiar with message router and how it is configured, and this README is not the place to explain the details of message router. Here are a couple of pieces of information that might be helpful. Currently, the allowed values for replication_case are:

  • REPLICATION_NONE

  • REPLICATION_EDGE_TO_CENTRAL

  • REPLICATION_EDGE_TO_CENTRAL_TO_GLOBAL

  • REPLICATION_CENTRAL_TO_EDGE

  • REPLICATION_CENTRAL_TO_GLOBAL

  • REPLICATION_GLOBAL_TO_CENTRAL

  • REPLICATION_GLOBAL_TO_CENTRAL_TO_EDGE

The global_mr_url is actually a host name, not a full URL. It points to a host in a global message router cluster. (A ‘global’ message router cluster is one that’s not part of ONAP.)

  • ccsdk.nodes.ExistingTopic: This type represents a topic that already exists. Nodes of this type are placed in a blueprint so that other nodes in the blueprint can be set up as publishers or subscribers to the topic. The table below shows the properties that a node of this type may have.

Property

Type

Required?

Description

fqtn

string

yes

fully-qualified topic name for the topic

Interaction with Other Plugins

When creating a new topic or processing a reference to an existing topic, the plugin operates independently of other plugins.

When processing a ccsdk.relationships.publish_events relationship or a ccsdk.relationships.subscribe_to_events relationship, this plugin needs to obtain data from and provide data to the source node. Certain conventions are therefore needed for passing data between this plugin and the plugins responsible for the source nodes in these relationships. In Cloudify, the mechanism for sharing data among plugins is the ctx.instance.runtime_properties dictionary associated with each node.

A given source node may have relationships with several topics. For example, an ONAP DCAE analytics module might subscribe to one topic to get input for its processing and publish its results to a different topic. When this DMaaP plugin and the plugin for the source node exchange information, they need to do in a way that lets them distinguish among different feeds. We do this through a simple convention: for each source node to topic relationship, the source node plugin will create a property in the source node’s runtime_properties dictionary. The name of the property will be the same as the name of the target node of the relationship. For instance, if a node has a publishes_events relationship with a target node named topic00, then the plugin that’s responsible for managing the source node with create an entry in the source node’s runtime_properties dictionary named topic00. This entry itself will be a dictionary.

For both types of relationship, the data exchange dictionary has the following properties:

Property

Set by

Description

location

source node plugin

the DMaaP location for the publisher or subscriber, used to set up routing

client_role

source node plugin

the AAF client role that’s requesting publish or subscribe access to the topic

topic_url

DMaaP plugin

the URL for accessing the topic to publish or receive events

Interaction with Consul configuration store

In addition to storing the results of DMaaP Data Router and DMaaP Message Router provisioning operations in runtime_properties, the DMaaP plugin also stores these results into the ONAP configuration store, which resides in a Consul key-value store. This allows DMaaP clients (components that act as publishers, subscribers, or both) to retrieve their DMaaP configuration information from Consul, rather than having the plugin that deploys the client directly configure the client using data in runtime_properties.

The runtime_properties for a client must contain a property called service_component_name. If this property is not present, the plugin will raise a NonRecoverableError and cause the installation to fail.

If service_component_name is present, then the plugin will use a Consul key consisting of the value of service_component_name prepended to the fixed string :dmaap. For example, if the service_component_name is client123, the plugin will use client123:dmaap as the key for storing DMaaP information into Consul. Information for all of the feeds and topics for a client are stored under the same key.

The value stored is a nested JSON object. At the top level of the object are properties representing each topic or feed for which the component is a publisher or subscriber. The name of the property is the node name of the target feed or topic. The value of the property is another JSON object that corresponds to the dictionary that the plugin created in runtime_properties corresponding to the target feed or topic. Note that the information in Consul includes all of the properties for the feed or topic, those set by the source node plugin as well as those set by the DMaaP plugin.

Examples:

Data Router publisher, target feed feed00:

{
  "feed00": {
    "username": "rC9QR51I",
    "log_url": "https://dmaap.example.com/feedlog/972",
    "publish_url": "https://dmaap.example.com/publish/972",
    "location": "loc00",
    "password": "QOQeUh5KLR",
    "publisher_id": "972.360gm"
  }
}

Data Router subscriber, target feed feed01:

{
  "feed01": {
    "username": "drdeliver",
    "password": "1loveDataR0uter",
    "location": "loc00",
    "delivery_url": "https://example.com/whatever",
    "subscriber_id": "1550"
  }
}

Message Router publisher to topic00, subscriber to topic01. Note how each topic appears as a top-level property in the object.

{
  "topic00": {
    "topic_url": "https://dmaap.example.com:3905/events/org.onap.ccsdk.dmaap.FTL2.outboundx",
    "client_role": "org.onap.ccsdk.member",
    "location": "loc00",
    "client_id": "1494621774522"
  },
  "topic01": {
    "topic_url": "https://dmaap.example.com:3905/events/org.onap.ccsdk.dmaap.FTL2.inboundx",
    "client_role": "org.onap.ccsdk.member",
    "location": "loc00",
    "client_id": "1494621778627"
  }
}

Packaging and installing

The DMaaP plugin is meant to be used as a Cloudify managed plugin. Managed plugins are packaged using `wagon <https://github.com/cloudify-cosmo/wagon>`__.

To package this plugin, executing the following command in the top-level directory of this plugin, from a Python environment in which wagon has been installed:

wagon create -s . -r -o /path/to/directory/for/wagon/output

Once the wagon file is built, it can be uploaded to a Cloudify Manager host using the cfy plugins upload command described in the documentation above.

Managed plugins can also be loaded at the time a Cloudify Manager host is installed, via the installation blueprint and inputs file. We expect that this plugin will be loaded at Cloudify Manager installation time, and that cfy plugins upload will be used only for delivering patches between releases.

Configuration

The plugin needs to be configured with certain parameters needed to access the DMaaP Bus Controller. In keeping with the ONAP architecture, this information is stored in Consul.

The plugin finds the address and port of the DMaaP Bus Controller using the Consul service discovery facility. The plugin expects the Bus Controller to be registered under the name dmaap_bus_controller.

Additional parameters come from the dmaap key in the Cloudify Manager’s Consul configuration, which is stored in the Consul KV store under the key name ‘cloudify_manager’. The table below lists the properties in the configuration:

Property

Type

Required?

Default

Description

username

string

Yes

(none)

The username for logging into DMaaP Bus Controller

password

string

Yes

(none)

The password for logging into DMaaP Bus Controller

owner

string

Yes

(none)

The name to be used as the owner for entities created by the plugin

protocol

string

No

https

The protocol (URL scheme) used to access the DMaaP bus controller (http or https)

path

string

No

webapi

The path to the root of the DMaaP Bus Controller API endpoint

Here is an example of a Cloudify Manager configuration object showing only the dmaap key:

{
  "dmaap": {
    "username": "dmaap.client@ccsdkorch.onap.org",
    "password": "guessmeifyoucan"
    "owner": "ccsdkorc"
  },

  (other configuration here)

}

DNS/Designate Plugin

Cloudify DNS/Designate plugin description # Description The DNS/Designate plugin extends the concepts of the Cloudify OpenStack plugin to include using the DNS/Designate service, to set up and tear down DNS “A” and “CNAME” records, as part of a Cloudify blueprint. # Plugin Requirements * Python versions * 2.7.x

Note: These requirements apply to the VM where Cloudify Manager itself runs.

Note: Cloudify Manager, itself, requires Python 2.7.x (and CentOS 7).

Types

ccsdk.nodes.dns.arecord

Derived From: cloudify.nodes.Root

Properties:

  • fqdn (required string) The FQDN for the set of DNS A records to be managed. The DNS zone to which this FQDN belongs is assumed to be the entire FQDN following the first dot. This value must not end with a dot. The provided openstack credentials must allow updating records in the DNS zone.

  • ttl (optional integer default=300) The time to live, in seconds, of the DNS entries.

  • openstack (required map) The set of configuration parameters to use for accessing the OpenStack DNS service: username, password, tenant_name, auth_url, and region.

Mapped Operations:

  • cloudify.interfaces.lifecycle.create Creates or updates the type “A” recordset for the specified FQDN. ** Inputs: *** args Key-value configuration **** ip_addresses (required sequence of string) A non-empty list of IP addresses corresponding to the FQDN

  • cloudify.interfaces.lifecycle.delete Deletes the type “A” recordset, if any, for the specified FQDN.

Attributes: This type has no runtime attributes

ccsdk.nodes.dns.cnamerecord

Derived From: cloudify.nodes.Root

Properties:

  • fqdn (required string) The FQDN for the DNS CNAME record to be managed. The DNS zone to which this FQDN belongs is assumed to be the entire FQDN following the first dot. This value must not end with a dot. The provided openstack credentials must allow updating records in the DNS zone.

  • ttl (optional integer default=300) The time to live, in seconds, of the DNS entry.

  • openstack (required map) The set of configuration parameters to use for accessing the OpenStack DNS service: username, password, tenant_name, auth_url, and region.

Mapped Operations:

  • cloudify.interfaces.lifecycle.create Creates or updates the type “CNAME” recordset for the specified FQDN. ** Inputs: *** args Key-value configuration **** cname (required string) The FQDN that this CNAME record should point to. This value must not end with at dot.

  • cloudify.interfaces.lifecycle.delete Deletes the type “CNAME” recordset, if any, for the specified FQDN.

Attributes: This type has no runtime attributes

Relationships

This plugin does not define or use any relationships

PGaaS Plugin

Cloudify PGaaS plugin description and configuraiton # Description The PGaaS plugin allows users to deploy PostgreSQL application databases, and retrieve access credentials for such databases, as part of a Cloudify blueprint. # Plugin Requirements * Python versions * 2.7.x * System dependencies * psycopg2

Note: These requirements apply to the VM where Cloudify Manager itself runs.

Note: The psycopg2 requirement is met by running “yum install python-psycopg2” on the Cloudify Manager VM.

Note: Cloudify Manager, itself, requires Python 2.7.x (and Centos 7).

Types

dcae.nodes.pgaas.cluster

Derived From: cloudify.nodes.Root

Properties:

  • writerfqdn (required string) The FQDN used for read-write access to the cluster containing the postgres database instance. This is used to identify and access a particular database instance and to record information about that instance on Cloudify Manager.

  • use_existing (optional boolean default=false) This is used to reference a database instance, in one blueprint, that was deployed in a different one. If it is true, then the readerfqdn property must not be set and this node must not have any dcae.relationships.pgaas_cluster_uses_sshkeypair relationships. If it is false, then this node must have exactly one dcae.relationships.pgaas_cluster_uses_sshkeypair relationship.

  • readerfqdn (optional string default=value of writerfqdn) The FQDN used for read-only access to the cluster containing the postgres database instance, if different than the FQDN used for read-write access. This will be used by viewer roles.

Mapped Operations:

  • cloudify.interfaces.lifecycle.create validates and records information about the cluster on the Cloudify Manager server in /opt/manager/resources/pgaas/writerfqdn.

  • cloudify.interfaces.lifecycle.delete deletes previously recorded information from the Cloudify Manager server.

Note: When use_existing is true, the create operation validates but does not record, and delete does nothing. Delete also does nothing when validation has failed.

Attributes: This type has no runtime attributes

dcae.nodes.pgaas.database

Derived From: cloudify.nodes.Root

Properties: * name (required string) The name of the application database, in postgres. This name is also used to create the names of the roles used to access the database, and the schema made available to users of the database. * use_existing (optional boolean default=false) This is used to reference an application database, in one blueprint, that was deployed in a different one. If true, and this node has a dcae.relationships.database_runson_pgaas_cluster relationship, the dcae.nodes.pgaas.cluster node that is the target of that relationship must also have it’s use_existing property set to true. * writerfqdn (optional string) This can be used as an alternative to specifying the cluster, for the application database, with a dcae.relationships.database_runson_pgaas_cluster relationship to a dcae.nodes.pgaas.cluster node. Exactly one of the two options must be used. The relationship method must be used if this blueprint is deploying both the cluster and the application database on the cluster.

Mapped Operations:

  • cloudify.interfaces.lifecycle.create creates the application database, and various roles for admin/user/viewer access to it.

  • cloudify.interfaces.lifecycle.delete deletes the application database and roles

Note: When use_existing is true, create and delete do not create or delete the application database or associated roles. Create still sets runtime attributes (see below).

Attributes:

  • admin a dict containing access information for adminstrative access to the application database.

  • user a dict containing access information for user access to the application database.

  • viewer a dict containing access information for read-only access to the application database.

The keys in the access information dicts are as follows:

  • database the name of the application database.

  • host the appropriate FQDN for accessing the application database, (writerfqdn or readerfqdn, based on the type of access).

  • user the user role for accessing the database.

  • password the password corresponding to the user role.

Relationships

dcae.relationships.pgaas_cluster_uses_sshkeypair

Description: A relationship for binding a dcae.nodes.pgaas.cluster node to the dcae.nodes.ssh.keypair used by the cluster to initialize the database access password for the postgres role. The password for the postgres role is expected to be the hex representation of the MD5 hash of ‘postgres’ and the contents of the id_rsa (private key) file for the ssh keypair. A dcae.nodes.pgaas.cluster node must have such a relationship if and only if it’s use_existing property is false. ## dcae.relationships.dcae.relationships.database_runson_pgaas_cluster Description: A relationship for binding a dcae.nodes.pgaas.database node to the dcae.nodes.pgaas.cluster node that contains the application database. A dcae.nodes.pgaas.database node must have either such a relationship or a writerfqdn property. The writerfqdn property cannot be used if the cluster is created in the same blueprint as the application database. ## dcae.relationships.application_uses_pgaas_database Description: A relationship for binding a node that needs application database access information to the dcae.nodes.pgaas.database node for that application database.

sshkeyshare plugin

Cloudify plugin for creating ssh key pairs on the fly # Description The sshkeyshare Cloudify plugin creates an ssh key pair that can be used, by VMs or other containers spun up by a Cloudify blueprint, for establishing connections, among them. The blue print can, for example, provide the private key to one VM and the public one to another, as part of their initial configuration, to allow the one with the private key to automatically connect to the other one, to run commands. # Plugin Requirements * Python versions * 2.7.x

Note: These requirements apply to the VM where Cloudify Manager itself runs.

Note: Cloudify Manager, itself, requires Pythong 2.7.x (and CentOS 7).

Types

ccsdk.nodes.ssh.keypair

Derived From: cloudify.nodes.Root

Properties: This type has no properties

Mapped Operations: * cloudify.interfaces.lifecycle.create Creates a new ssh keypair using ssh-keygen

Attributes: * public A string containing the public key of the newly created keypair. * base64private A single line base-64 encoded representation of the content of the private key file for the newly created keypair.

Relationships

This plugin does not define or use any relationships

Directed Graph Support (Service Logic Interpreter)

Architecture

Repositories

CCSDK contains the following repositories to support service logic (aka directed graph) development:

  • ccsdk/parent : contains parent poms, which contain common properties, plugin settings, etc

  • ccsdk/sli/core : contains the core components needed to compile and execute directed graphs

  • ccsdk/sli/adaptors : contains adaptors to provide access to resources from within directed graphs

  • ccsdk/sli/northbound : contains code for northbound interfaces that maybe used by CCSDK clients

  • ccsdk/sli/plugins : contains code to be called from directed graph “execute” nodes

Capabilities

Provides the core Service Logic Interpreter (SLI) functionality, used to execute directed graphs (DGs). Directed graphs allow service designers to define the logic to be executed within the SDN controller in a graphical format which can be updated in real time, without a need to restart the controller.

— Service Logic Interpreter — Dan Timoney — 2014-11-12 —

Supported node types

The following built-in node types are currently supported:

Flow Control
Block node
Description

A block node is used to executes a set of nodes.

Attributes

atomic

if true, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out.

Parameters

None

Outcomes

None

Example
<block>
  <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
    <parameter name="file" value="/tmp/sample_r1.log" />
    <parameter name="field1" value="__TIMESTAMP__"/>
    <parameter name="field2" value="RESERVED"/>
    <parameter name="field3" value="$asePort.uni_circuit_id"/>
  </record>
  <return status="success">
    <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
  </return>
</block>
Call node
Description

A call node is used to call another graph

Attributes

module

Module of directed graph to call. If unset, defaults to that of calling graph

rpc

rpc of directed graph to call.

version

version of graph to call, If unset, uses active version.

mode

mode (sync/async) of graph to call. If unset, defaults to that of calling graph.

Parameters

Not applicable

Outcomes

success

Sub graph returned success

not-found

Graph not found

failure

Subgraph returned success

Table: .

Example
<call rpc="svc-topology-reserve" mode="sync" />
For node
Description

A for node provides a fixed iteration looping mechanism, similar to the Java for loop

Attributes

index

index variable

start

initial value

end

maximum value

Parameters

Not applicable.

Outcomes

Not applicable. The status node has no outcomes.

Example
<for index="i" start="0" end="`$service-data.universal-cpe-ft.l2-switch-interfaces_length`">
   <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
      <parameter name="logger" value="message-log"/>
      <parameter name="level" value="info"/>
      <parameter name="field1" value="`'current l2-switch-interface name is ' + $service-data.universal-cpe-ft.l2-switch-interfaces[$i].name`"/>
   </record>
</for>
Return node
Description

A return node is used to return a status to the invoking MD-SAL application

Attributes

status

Status value to return (success or failure)

Parameters

The following optional parameters may be passed to convey more detailed status information.

error-code

A brief, usually numeric, code indicating the error condition

error-message

A more detailed error message

Outcomes

Not applicable. The status node has no outcomes.

Example
<return status="failure">
  <parameter name="error-code" value="1542" />
  <parameter name="error-message" value="Activation failure" />
</return>
Set node
Description

A set node is used to set one or more values in the execution context

Attributes

only-if-unset

If true the set node will only execute if the current value of the target is null

Parameters

Values to be set are passed as parameters

Outcomes

Not applicable. The set node has no outcomes.

Example
<set>
  <parameter name="vlan" value="$network.provider-segmentation-id" />
</set>
Switch node
Description

A switch node is used to make a decision based on its test attribute.

Attributes

test

Condition to test

Parameters

None

Outcomes

Depends on the test condition

Example
<switch test="$uni-cir-units">
  <outcome value="Mbps">
    <reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
             resource="ase-port"
             key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
             pfx="asePort">

      <outcome value="success">
        <return status="success">
          <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
        </return>
      </outcome>
      <outcome value="Other">
        <return status="failure">
          <parameter name="error-code" value="1010" />
          <parameter name="error-message" value="No ports found that match criteria" />
        </return>
      </outcome>
    </reserve>
  </outcome>
  <outcome value="Gbps">
    <reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
             resource="ase-port"
             key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value*1000"
             pfx="asePort">

      <outcome value="success">
        <return status="success">
          <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
        </return>
      </outcome>
      <outcome value="Other">
        <return status="failure">
          <parameter name="error-code" value="1010" />
          <parameter name="error-message" value="No ports found that match criteria" />
        </return>
      </outcome>
    </reserve>
  </outcome>
</switch>
Device Management
Configure node
Description

A configure node is used to configure a device.

Attributes

adaptor

Fully qualified Java class of resource adaptor to be used

activate

Activate device/interface, for devices that support a separate activation step.

key

SQL-like string specifying criteria for item to configure

Parameters

Specific to device adaptor.

Outcomes

success

Device successfully configured

not-found

Element to be configured does not exist.

not-ready

Element is not in a state where it can be configured/activated

already-active

Attempt to activate element that is already active

failure

Configure failed for some other reason

Example
<configure adaptor="org.onap.ccsdk.sli.adaptors.emt.EmtAdaptor"
           key="$uni-circuit-id" activate="true">
  <parameter name="circuit.id" value="$uni-circuit-id" />
  <parameter name="subscriber.name" value="$subscriber-name" />
  <parameter name="emt.clli" value="$edge-device-clli" />
  <parameter name="port.tagging" value="$port-tagging" />
  <parameter name="port.mediaSpeed" value="$media-speed" />
  <parameter name="location.state" value="$uni-location-state" />
  <parameter name="location.city" value="$uni-location-city" />
  <parameter name="cosCategory" value="$cos-category" />
  <parameter name="gosProfile" value="$gos-profile" />
  <parameter name="lldp" value="$asePort.resource-lldp" />
  <parameter name="mtu" value="$asePort.resource-mtu" />
  <outcome value="success">
    <block>
      <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
        <parameter name="file" value="/tmp/sample_r1.log" />
        <parameter name="field1" value="__TIMESTAMP__"/>
        <parameter name="field2" value="ACTIVE"/>
        <parameter name="field3" value="$uni-circuit-id"/>
      </record>
      <return status="success">
        <parameter name="edge-device-clli" value="$asePort.resource-emt-clli" />
      </return>
    </block>
  </outcome>
  <outcome value="already-active">
    <return status="failure">
      <parameter name="error-code" value="1590" />
      <parameter name="error-message" value="Port already active" />
    </return>
  </outcome>
  <outcome value="Other">
    <return status="failure">
      <parameter name="error-code" value="1542" />
      <parameter name="error-message" value="Activation failure" />
    </return>
  </outcome>
</configure>
Java Plugin Support
Execute node
Description

An execute node is used to execute Java code supplied as a plugin

Attributes

plugin

Fully qualified Java class of plugin to be used

method

Name of method in the plugin class to execute. Method must return void, and take 2 arguments: a Map (for parameters) and a SvcLogicContext (to allow plugin read/write access to context memory)

Parameters

Specific to plugin / method

Outcomes

success

Device successfully configured

not-found

Plugin class could not be loaded

unsupported-method

Named method taking (Map, SvcLogicContext) could not be found

failure

Configure failed for some other reason

Example
<execute plugin="org.onap.ccsdk.sli.plugins.HelloWorld"
           method="log">
  <parameter name="message" value="Hello, world!" />
  <outcome value="success">
      <return status="success"/>
  </outcome>
  <outcome value="not-found">
    <return status="failure">
      <parameter name="error-code" value="1590" />
      <parameter name="error-message" value="Could not locate plugin" />
    </return>
  </outcome>
  <outcome value="Other">
    <return status="failure">
      <parameter name="error-code" value="1542" />
      <parameter name="error-message" value="Internal error" />
    </return>
  </outcome>
</execute>
Recording
Record node
Description

A record node is used to record an event. For example, this might be used to log provisioning events.

Attributes

plugin

Fully qualified Java class to handle recording.

Parameters

Parameters will depend on the plugin being used. For the FileRecorder class, the parameters are as follows

file

The file to which the record should be written

field1

First field to write. There will be field parameters for each field to write, from field1 through fieldN. A special value __TIMESTAMP__ may be assigned to a field to insert the current timestamp

Outcomes

success

Record successfully written

failure

Record could not be successfully written

Example
<record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
  <parameter name="file" value="/tmp/sample_r1.log" />
  <parameter name="field1" value="__TIMESTAMP__"/>
  <parameter name="field2" value="ACTIVE"/>
  <parameter name="field3" value="$uni-circuit-id"/>
</record>
Resource Management
Delete node
Description

A delete node is used to delete a resource from the local resource inventory.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to delete

key

SQL-like string specifying key to delete

Parameters

None

Outcomes

success

Resource specified deleted successfully.

failure>

Resource specified was not deleted

Example
<delete plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
        resource="ase-port"
        key="uni_circuit_id == $uni-circuit-id">
  <outcome value="true">
    <return status="success"/>
  </outcome>
  <outcome value="false">
    <return status="failure"/>
  </outcome>
</delete>
Exists node
Description

An exists node is used to determine whether a particular instance of a resource exists. For example, this might be used to test whether a particular switch CLLI is provisioned.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to check

key

SQL-like string specifying key to check for

Parameters

None

Outcomes

true

Resource specified exists.

false

Resource specified is unknown

Example
<exists plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
        resource="ase-port"
        key="uni_circuit_id == $uni-circuit-id">
  <outcome value="true">
    <return status="success"/>
  </outcome>
  <outcome value="false">
    <return status="failure"/>
  </outcome>
</exists>
Get-resource node
Description

A get-resource node is used to retrieve information about a particular resource and make it available to other nodes in the service logic tree. For example, this might be used to retrieve information about a particular uni-port.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to retrieve

key

SQL-like string specifying criteria for retrieval

pfx

Prefix to add to context variable names set for data retrieved

select

String to specify, if key matches multiple entries, which entry should take precedence

order-by

Prefix to add to context variable names set for data retrieved

Parameters

None

Outcomes

success

Resource successfully retrieved

not-found

Resource referenced does not exist

failure

Resource retrieve failed for some other reason

Example
<get-resource plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
              resource="ase-port"
              key="uni_circuit_id == $uni-circuit-id"
              pfx="current-port">
  <outcome value="success">
    <return status="success"/>
  </outcome>
  <outcome value="not-found">
    <return status="failure"/>
  </outcome>
  <outcome value="failure">
    <return status="failure"/>
  </outcome>
</get-resource>
Is-available node
Description

An is-available node is used to determine whether a particular type of resource is available. For example, this might be used to test whether any ports are available for assignment on a particular switch.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to check

key

SQL-like string specifying key to check for

pfx

Prefix to add to context variable names set for data retrieved

Parameters

None

Outcomes

true

Resource requested is available

false

Resource requested is not available

Example
<is-available plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
              resource="ase-port"
              key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value">
  <outcome value="true">
    <return status="success"/>
  </outcome>
  <outcome value="false">
    <return status="failure"/>
  </outcome>
</is-available>
Notify node
Description

A notify node is used to inform an external application (e.g. A&AI) that a resource was updated.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Identifies resource that was updated

action

Action that triggered notification to be sent (ADD/UPDATE/DELETE)

Parameters

None

Outcomes

success

Notification was successful

failure

Notification failed is not available

Example
<notify plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
              resource="ase-port"
              action="ADD">
  <outcome value="success">
    <return status="success"/>
  </outcome>
  <outcome value="Other">
    <return status="failure"/>
  </outcome>
</notify>
Release node
Description

A release node is used to mark a resource as no longer in use, and thus available for assignment.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to release

key

SQL-like string specifying key to check of resource to release

Parameters

None

Outcomes

success

Resource successfully released

not-found

Resource referenced does not exist

failure

Resource release failed for some other reason

Example
<release plugin="org.onap.ccsdk.sli.adaptors.SampleServiceResource"
         resource="ase-port"
         key="uni_circuit_id == $uni-circuit-id">
  <outcome value="success">
    <return status="success"/>
  </outcome>
  <outcome value="not-found">
    <return status="failure"/>
  </outcome>
  <outcome value="failure">
    <return status="failure"/>
  </outcome>
</release>
Reserve node
Description

A reserve node is used to reserve a particular type of resource.. For example, this might be used to reserve a port on a particular switch.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to reserve

key

SQL-like string specifying criteria for reservation

select

String to specify, if key matches multiple entries, which entry should take precedence

Parameters

None

Outcomes

success

Resource requested was successfully reserved

failure

Resource requested was not successfully reserved

Example
<reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
         resource="ase-port"
         key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
         select="min(speed)">
  <outcome value="success">
    <return status="success"/>
  </outcome>
  <outcome value="failure">
    <return status="failure"/>
  </outcome>
</reserve>
Save node
Description

A save node is used to save information about a particular resource to persistent storage. For example, this might be used to save information about a particular uni-port.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to save

key

SQL-like string specifying criteria for retrieval

force

If “true”, save resource even if this resource is already stored in persistent storage

pfx

Prefix to be prepended to variable names, when attributes are set in SvcLogicContext

Parameters

Values to save (columns) are specified as parameters, with each name corresponding to a column name and each value corresponding to the value to set.

Outcomes

success

Resource successfully saved

failure

Resource save failed

Example
<save plugin="`$sample-resource-plugin`" resource="vnf"
    key="vnf-name = $requests.vnf.vnf-name" force="true"
    pfx="requests.vnf">
    <parameter name="vnf-name"
        value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
    <parameter name="vnf-type" value="vce" />
    <parameter name="orchestration-status" value="pending-create" />
    <parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
    <parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
    <parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
</save>
Update node
Description

An update node is used to update information about a particular resource to persistent storage.

Attributes

plugin

Fully qualified Java class of resource adaptor to be used

resource

Type of resource to update

key

SQL-like string specifying criteria for retrieval

pfx

Prefix to be prepended to variable names, when attributes are set in SvcLogicContext

Parameters

Values to save (columns) are specified as parameters, with each name corresponding to a column name and each value corresponding to the value to set.

Outcomes

success

Resource successfully saved

failure

Resource save failed

Example
<update plugin="`$sample-resource-plugin`" resource="vnf"
    key="vnf-name = $requests.vnf.vnf-name"
    pfx="requests.vnf">
    <parameter name="vnf-name"
        value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
    <parameter name="vnf-type" value="vce" />
    <parameter name="orchestration-status" value="pending-create" />
    <parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
    <parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
    <parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
</update>

Build

Environment

Requires maven release 3.3 or greater

Steps

To compile this code:

  1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories.

  2. To compile all of CCSDK SLI code

Logging

CCSDK uses slf4j to log messages to the standard OpenDaylight karaf.log log file.

Where to Access Information

Logs are found within the SDNC docker container, in the directory /opt/opendaylight/current/data/logs.

Offered APIs

ASDC-API (2017-02-01)

POST /config

  • Description: SDC Interface

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

**(config)artifacts

body

**(config)vf-license-model-versions

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:artifacts

  • Produces: [‘application/json’, ‘application/xml’]

Responses

200 - No response was specified

GET /config/ASDC-API:artifacts

  • Produces: [‘application/json’, ‘application/xml’]

Responses

200 - No response was specified

POST /config/ASDC-API:artifacts

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

**(config)artifact

body

Responses

200 - No response was specified

PUT /config/ASDC-API:artifacts

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

(config)artifacts

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:artifacts/artifact/{artifact-name}/{artifact-version}

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-name

path

Name of artifact

string

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:artifacts/artifact/{artifact-name}/{artifact-version}

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-name

path

Name of artifact

string

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

PUT /config/ASDC-API:artifacts/artifact/{artifact-name}/{artifact-version}

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-name

path

Name of artifact

string

artifact-version

path

Version of artifact

string

(config)artifact

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions

  • Produces: [‘application/json’, ‘application/xml’]

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions

  • Produces: [‘application/json’, ‘application/xml’]

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

**(config)vf-license-model-version

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

(config)vf-license-model-versions

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)vf-license-model

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)vf-license-model-version

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)feature-group-list

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)vf-license-model

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)feature-group

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)feature-group-list

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)license-key-group-list

body

**(config)entitlement-pool-list

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)feature-group

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)entitlement-pool

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)entitlement-pool-list

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)threshold-value

body

**(config)time

body

**(config)operational-scope

body

**(config)entitlement-metric

body

**(config)aggregation-function

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)entitlement-pool

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/aggregation-function

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/aggregation-function

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/aggregation-function

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)aggregation-function

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/entitlement-metric

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/entitlement-metric

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/entitlement-metric

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)entitlement-metric

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/operational-scope

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/operational-scope

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/operational-scope

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)operational-scope

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/threshold-value

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/threshold-value

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/threshold-value

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)threshold-value

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/time

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/time

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/time

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)time

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)license-key-group

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)license-key-group-list

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

POST /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

**(config)operational-scope

body

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)license-key-group

body

Responses

200 - No response was specified

DELETE /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group/operational-scope

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

GET /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group/operational-scope

  • Description: xxxx

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

Responses

200 - No response was specified

PUT /config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group/operational-scope

  • Description: xxxx

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

artifact-version

path

Version of artifact

string

(config)operational-scope

body

Responses

200 - No response was specified

GET /operational/ASDC-API:artifacts

  • Produces: [‘application/json’, ‘application/xml’]

Responses

200 - No response was specified

GET /operational/ASDC-API:vf-license-model-versions

  • Produces: [‘application/json’, ‘application/xml’]

Responses

200 - No response was specified

POST /operations/ASDC-API:vf-license-model-update

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

dataChange(2015-05-19)

POST /operations/DataChange:data-change-notification

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

LCM (2018-03-29)

POST /operations/LCM:action-status

  • Description: An operation to get the current state of the previously submitted LCM request

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:attach-volume

  • Description: An operation to attach a cinder volume to a VM

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:audit

  • Description: An operation to audit the configurations of a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:check-lock

  • Description: An operation to check VNF lock status

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:config-backup

  • Description: An operation to Backup configurations of a virtual network function\n(or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:config-backup-delete

  • Description: An operation to Delete backup configurations of a virtual network\nfunction (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:config-export

  • Description: An operation to Export configurations of a virtual network function\n(or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:config-modify

  • Description: Use the ModifyConfig command when a full configuration cycle is either not required\nor is considered too costly. The ModifyConfig LCM action affects only a subset of the\ntotal configuration data of a VNF. The set of configuration parameters to be affected\nis a subset of the total configuration data of the target VNF type. The payload Stop\nApplication must contain the configuration parameters to be modified and their values.\nA successful modify returns a success response. A failed modify returns a failure\nresponse and the specific failure messages in the response payload Stop Application

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:config-restore

  • Description: An operation to restore the configurations of a virtual network\nfunction (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:config-scale-out

  • Description: An operation to Modify the configuration or other action to support\na ConfigScaleOut of a VNF.

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:configure

  • Description: An operation to configure the configurations of a virtual network\nfunction (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:detach-volume

  • Description: An operation to detach a cinder volume from a VM

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:evacuate

  • Description: An operation to evacuate a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:health-check

  • Description: An operation to perform health check of vSCP prior its upgrading

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:live-upgrade

  • Description: An operation to perform upgrade of vSCP

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:lock

  • Description: An operation to perform VNF lock operation

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:migrate

  • Description: An operation to migrate a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:query

  • Description: An operation to query the status of a targe VNF.\nReturns information on each VM, including state (active or standby)\nand status (healthy or unhealthy)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:quiesce-traffic

  • Description: An operation to stop traffic gracefully on the VF.\nIt stops traffic gracefully without stopping the application

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:reboot

  • Description: An operation to reboot a specified virtual machine (VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:rebuild

  • Description: An operation to rebuild a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:restart

  • Description: An operation to restart a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:resume-traffic

  • Description: An operation to resume traffic gracefully on the VF.\nIt resumes traffic gracefully without stopping the application

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:rollback

  • Description: An operation to rollback to particular snapshot of a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:snapshot

  • Description: An operation to create a snapshot of a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:software-upload

  • Description: An operation to upload a new version of vSCP image to vSCP for updating it

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:start

  • Description: An operation to start a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:start-application

  • Description: An operation to perform VNF Start Application operation

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:stop

  • Description: An operation to stop the configurations of a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:stop-application

  • Description: An operation to Stop Application traffic to a virtual network function

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:sync

  • Description: An operation to sync the configurations of a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:terminate

  • Description: An operation to terminate the configurations of a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:test

  • Description: An operation to test the configurations of a virtual network function (or VM)

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:unlock

  • Description: An operation to perform VNF unlock operation

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:upgrade-backout

  • Description: An operation does a backout after an UpgradeSoftware is completed (either successfully or unsuccessfully).

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:upgrade-backup

  • Description: An operation to do full backup of the VNF data prior to an upgrade.

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:upgrade-post-check

  • Description: An operation to check the VNF upgrade has been successful completed and all processes are running properly.

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:upgrade-pre-check

  • Description: An operation to check that the VNF has the correct software version needed for a software upgrade.

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:upgrade-software

  • Description: An operation to upgrade the target VNF to a new version and expected that the VNF is in a quiesced status .

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:download-n-e-sw

  • Description: An operation to download NE software.

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

POST /operations/LCM:activate-n-e-sw

  • Description: An operation to activate NE software.

  • Consumes: [‘application/json’, ‘application/xml’]

  • Produces: [‘application/json’, ‘application/xml’]

Parameters

Name

Position

Description

Type

body

body

Responses

200 - No response was specified

SLI-API(2016-11-11)

Error

Unable to process URL: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/core.git;a=blob_plain;f=sliapi/model/src/main/resources/sli-api.20161110.json. Please check that the URL is a valid Swagger api-docs URL and it is accesible

CCSDK Release Notes

Abstract

This document provides the release notes for the Istanbul release of the Common Controller Software Development Kit (CCSDK).

Summary

The Istanbul release of CCSDK introduces enhancements to network slicing and extends support for ORAN integration via the A1 interface. It also includes a major OpenDaylight release upgrade (to Silicon).

Release Data

Project

CCSDK

Docker images

See Docker Containers section below

Release designation

Istanbul Maintenance Release 1

New features

The CCSDK Istanbul release includes the following features:

  • Upgrade to OpenDaylight Silicon Release (Jira CCSDK-3390)

  • A1 Adapter and A1 Policy Management Extensions in Istanbul Release - CCSDK (Jira CCSDK-3229)

  • Support of O-RAN-SC D-Release (Jira CCSDK-3158)

  • CCSDK impacts for Network slicing in Istanbul Release (Jira CCSDK-3297)

For the complete list of CCSDK Istanbul release epics and CCSDK Istanbul release user stories , please see the ONAP Jira.

Bug fixes

Istanbul Maintenance Release 1 addresses a critical vulnerability discovered in the log4j library. This issue has been resolved by upgrading to version 2.17.1 of log4j-core, which is no longer vulnerable to this issue. The complete list of changes can be found in Jira CCSDK-3556 <https://jira.onap.org/browse/CCSDK-3556>

The full list of bugs fixed in the CCSDK Istanbul release is maintained on the ONAP Jira.

Known Issues

The full list of known issues in CCSDK is maintained on the ONAP Jira.

It should be noted that several CCSDK repositories have a transitive dependency on log4j version 1.x. While this version is not vulnerable to the recent ‘log4shell’ vulnerability, there are other known vulnerabilities in this version. The following table summarizes where log4j 1.x is currently used in CCSDK:

Repository

Transitive dependencies

ccsdk/apps

org.onap.aaf.authz:aaf-misc-env:2.1.21 -> log4j:log4j:1.2.17

ccsdk/cds

org.hibernate:hibernate-testing:jar:5.4.32.Final -> log4j:log4j:1.2.17

org.onap.dmaap.messagerouter.dmaapclient:dmaapClient:1.1.5 -> log4j:log4j:1.2.17

ccsdk/features

org.onap.aaf.authz:aaf-misc-env:2.1.21 -> log4j:log4j:1.2.17

org.onap.dmaap.messagerouter.dmaapclient:dmaapClient:1.1.12 -> log4j:log4j:1.2.17

ccsdk/sli

org.onap.dmaap.messagerouter.dmaapclient:dmaapClient:1.1.12 -> log4j:log4j:1.2.17

Deliverables

Software Deliverables
Docker Containers

The following table lists the docker containers comprising the CCSDK Guilin release along with the current stable Guilin version/tag. Each of these is available on the ONAP nexus3 site (https://nexus3.onap.org) and can be downloaded with the following command:

docker pull nexus3.onap.org:10001/{image-name}:{version}

Note: users that want to use the latest in-development Guilin version may use the tag 1.0-STAGING-latest to pull the latest daily Guilin build

Image name

Description

Version

onap/ccsdk-alpine-j11-image

Base Alpine Linux image for CCSDK

1.2.6

onap/ccsdk-ansible-server-image

Ansible server image

1.2.6

onap/ccsdk-apps-ms-neng

Naming microservice

1.2.1

onap/ccsdk-blueprints-processor

CDS blueprint processor

1.2.1

onap/ccsdk-cds-ui-server

CDS user interface back end

1.2.1

onap/ccsdk-commandexecutor

CDS command executor

1.2.1

onap/ccsdk-controllerblueprint

CDS controller blueprints

1.2.1

onap/ccsdk-dgbuilder-image

Directed graph builder

1.2.6

onap/ccsdk-odl-silicon-alpine-image

Alpine based OpenDaylight Silicon image

1.2.6

onap/ccsdk-odlsli-alpine-image

Alpine based OpenDaylight image with CCSDK

1.2.6

onap/ccsdk-saltstack-server-image

Saltstack server

1.2.6

onap/ccsdk-sdclistener

CDS SDC listener

1.2.3

onap/ccsdk-ubuntu-image

Base Ubuntu image for CCSDK

1.2.6

Maven Artifacts

In addition to docker containers, CCSDK also provides libraries that are intended to be used by client applications (e.g. APPC, SDNC) as maven dependencies.

ccsdk/parent

Many CCSDK clients need to be able to inherit settings from third party parent poms provided by OpenDaylight or springboot, and therefore are unable to use the standard ONAP parent pom. The CCSDK parent repository provides its own version of parent poms whose contents are consistent with ONAP standard settings (as defined in oparent), but whose parent is the OpenDaylight or springboot parent, so that clients can effectively merge both sets of settings.

The following table lists the parent poms provided by CCSDK and the current stable Frankfurt version of each.

groupId

artifactId

version

Description

org.onap.ccsdk.parent

binding-parent

2.2.4

Parent used in place of OpenDaylight binding-parent

org.onap.ccsdk.parent

bundle-parent

2.2.4

Parent used in place of OpenDaylight bundle-parent

org.onap.ccsdk.parent

client-parent

2.2.4

Parent used for projects that create client libraries for OpenDaylight APIs

org.onap.ccsdk.parent

dependencies-bom

2.2.4

Bill of Materials POM that defines versions of third party libraries used outside ODL container. Intended to be imported in dependencyManagement section.

org.onap.ccsdk.parent

dependencies-odl-bom

2.2.4

Bill of Materials POM that defines versions of third party libraries used within ODL container. Intended to be imported in dependencyManagement section.

org.onap.ccsdk.parent

feature-repo-parent

2.2.4

Parent used in place of OpenDaylight feature-repo-parent

org.onap.ccsdk.parent

karaf4-parent

2.2.4

Parent used in place of OpenDaylight karaf4-parent

org.onap.ccsdk.parent

mdsal-it-parent

2.2.4

Parent used in place of OpenDaylight mdsal-it-parent

org.onap.ccsdk.parent

odlparent

2.2.4

Parent used in place of OpenDaylight odlparent

org.onap.ccsdk.parent

odlparent-lite

2.2.4

Parent used in place of OpenDaylight odlparent-lite

org.onap.ccsdk.parent

single-feature-parent

2.2.4

Parent used in place of OpenDaylight single-feature-parent

org.onap.ccsdk.parent

spring-boot-1-starter-parent

2.2.4

Parent used in place of spring-boot-starter-parent for Springboot 1.x. NOTE This is deprecated and will be removed in a future release, since springboot 1.x should no longer be used due to security issues

org.onap.ccsdk.parent

spring-boot-25-starter-parent

2.2.4

Parent used in place of spring-boot-starter-parent for Springboot 2.5.x

org.onap.ccsdk.parent

spring-boot-starter-parent

2.2.4

Parent used in place of spring-boot-starter-parent for Springboot 2.3.x

org.onap.ccsdk.parent

standalone-parent

2.2.4

Parent used for projects that have no need for other third party parent poms

ccsdk/sli

The ccsdk/sli library provides the Service Logic Interpreter (SLI), which is the engine that runs directed graphs. It also provides a number of libraries that can be used by other CCSDK client projects.

The following table lists the maven artifacts provided for use by CCSDK client projects.

groupId

artifactId

version

Description

org.onap.ccsdk.sli.core

dblib-provider

1.3.4

Database access library

org.onap.ccsdk.sli.core

sli-common

1.3.4

Common SLI data objects

org.onap.ccsdk.sli.core

sli-provider-base

1.3.4

ODL-independent SLI implementation objects

org.onap.ccsdk.sli.core

sli-provider

1.3.4

ODL-dependent SLI implementation objects

org.onap.ccsdk.sli.core

sliPluginUtils-provider

1.3.4

Utilities for use in SLI adaptors/plugins

org.onap.ccsdk.sli.core

utils-provider

1.3.4

Utilities

org.onap.ccsdk.sli.adaptors

aai-service-provider

1.3.4

A&AI interface adaptor

org.onap.ccsdk.sli.adaptors

ansible-adapter-bundle

1.3.4

Ansible interface adaptor

org.onap.ccsdk.sli.adaptors

mdsal-resource-provider

1.3.4

MD-SAL interface adaptor

org.onap.ccsdk.sli.adaptors

netbox-client-provider

1.3.4

netbox interface adaptor

org.onap.ccsdk.sli.adaptors

resource-assignment-provider

1.3.4

resource allocator

org.onap.ccsdk.sli.adaptors

saltstack-adaptor-provider

1.3.4

saltstack interface adaptor

org.onap.ccsdk.sli.adaptors

sql-resource-provider

1.3.4

SQL database interface adaptor

org.onap.ccsdk.sli.northbound

asdcApi-provider

1.3.4

ODL-based SDC interface

org.onap.ccsdk.sli.northbound

dataChange-provider

1.3.4

A&AI data change notification interface

org.onap.ccsdk.sli.northbound

dmaap-listener

1.3.4

DMaaP listener interface

org.onap.ccsdk.sli.northbound

lcm-provider

1.3.4

Life Cycle Management event interface

org.onap.ccsdk.sli.northbound

ueb-listener

1.3.4

SDC event listener

org.onap.ccsdk.sli.plugins

properties-node-provider

1.3.4

Used to load a properties file for use in a directed graph

org.onap.ccsdk.sli.plugins

restapi-call-node-provider

1.3.4

Used to call a generic REST API from a directed graph

org.onap.ccsdk.sli.plugins

restconf-client-provider

1.3.4

Used to call a RESTCONF API from a directed graph

org.onap.ccsdk.sli.plugins

sshapi-call-node

1.3.4

Used to invoke an SSH interface from a directed graph

org.onap.ccsdk.sli.plugins

template-node-provider

1.3.4

Provides velocity template support

Documentation Deliverables

Known Limitations, Issues and Workarounds

System Limitations

No system limitations noted.

Known Vulnerabilities

Any known vulnerabilities for ONAP are tracked in the ONAP Jira in the OJSI project. Any outstanding OJSI issues that pertain to CCSDK are listed in the Known Security Issues section below.

Workarounds

Not applicable.

Security Notes

Fixed Security Issues

There are no new security fixes in the Guilin release.

Known Security Issues

There is currently only one known CCSDK security issue, related to a third party application (netbox) that CCSDK uses:

  • OJSI-160 : netbox-nginx exposes plain text HTTP endpoint using port 30420

Test Results

Not applicable

References

For more information on the ONAP Istanbul release, please see:

  1. ONAP Home Page

  2. ONAP Documentation

  3. ONAP Release Downloads

  4. ONAP Wiki Page