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 typeccsdk.nodes.Feed
orccsdk.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 typeccsdk.nodes.Feed
orccsdk.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 (accsdk.nodes.Feed
orccsdk.nodes.ExistingFeed
) should be set up to forward data (“bridge”) to the relationship’s target feed (anotherccsdk.nodes.Feed
orccsdk.nodes.ExistingFeed
).ccsdk.relationships.bridges_to_external
, used to indicate that the relationship’s source node (accsdk.nodes.Feed
orccsdk.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 accsdk.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 accsdk.nodes.ExternalSourceFeed
node) should be set up to forward date (“bridge”) to the relationship’s target node (an internal ONAP feed, represented by accsdk.nodes.Feed
orccsdk.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 |
---|---|---|---|---|
|
string |
Yes |
(none) |
The username for logging into DMaaP Bus Controller |
|
string |
Yes |
(none) |
The password for logging into DMaaP Bus Controller |
|
string |
Yes |
(none) |
The name to be used as the owner for entities created by the plugin |
|
string |
No |
|
The protocol (URL scheme) used to access the DMaaP bus controller ( |
|
string |
No |
|
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 FQDNcloudify.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 istrue
, then thereaderfqdn
property must not be set and this node must not have anydcae.relationships.pgaas_cluster_uses_sshkeypair
relationships. If it isfalse
, then this node must have exactly onedcae.relationships.pgaas_cluster_uses_sshkeypair
relationship.readerfqdn
(optional string default=value ofwriterfqdn
) 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.
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
Device Management
Java Plugin Support
Recording
Resource Management
Flow Control
A block node is used to executes a set of nodes.
atomic |
if true, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out. |
None
None
<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>
A call node is used to call another graph
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. |
Not applicable
success |
Sub graph returned success |
not-found |
Graph not found |
failure |
Subgraph returned success |
Table: .
<call rpc="svc-topology-reserve" mode="sync" />
A for node provides a fixed iteration looping mechanism, similar to the Java for loop
index |
index variable |
start |
initial value |
end |
maximum value |
Not applicable.
Not applicable. The status node has no outcomes.
<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>
A return node is used to return a status to the invoking MD-SAL application
status |
Status value to return (success or failure) |
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 |
Not applicable. The status node has no outcomes.
<return status="failure">
<parameter name="error-code" value="1542" />
<parameter name="error-message" value="Activation failure" />
</return>
A set node is used to set one or more values in the execution context
only-if-unset |
If true the set node will only execute if the current value of the target is null |
Values to be set are passed as parameters
Not applicable. The set node has no outcomes.
<set>
<parameter name="vlan" value="$network.provider-segmentation-id" />
</set>
A switch node is used to make a decision based on its test attribute.
test |
Condition to test |
None
Depends on the test condition
<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
A configure node is used to configure a device.
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 |
Specific to device adaptor.
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 |
<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
An execute node is used to execute Java code supplied as a plugin
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) |
Specific to plugin / method
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 |
<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
A record node is used to record an event. For example, this might be used to log provisioning events.
plugin |
Fully qualified Java class to handle recording. |
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 |
success |
Record successfully written |
failure |
Record could not be successfully written |
<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
A delete node is used to delete a resource from the local resource inventory.
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 |
None
success |
Resource specified deleted successfully. |
failure> |
Resource specified was not deleted |
<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>
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.
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 |
None
true |
Resource specified exists. |
false |
Resource specified is unknown |
<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>
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.
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 |
None
success |
Resource successfully retrieved |
not-found |
Resource referenced does not exist |
failure |
Resource retrieve failed for some other reason |
<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>
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.
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 |
None
true |
Resource requested is available |
false |
Resource requested is not available |
<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>
A notify node is used to inform an external application (e.g. A&AI) that a resource was updated.
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) |
None
success |
Notification was successful |
failure |
Notification failed is not available |
<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>
A release node is used to mark a resource as no longer in use, and thus available for assignment.
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 |
None
success |
Resource successfully released |
not-found |
Resource referenced does not exist |
failure |
Resource release failed for some other reason |
<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>
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.
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 |
None
success |
Resource requested was successfully reserved |
failure |
Resource requested was not successfully reserved |
<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>
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.
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 |
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.
success |
Resource successfully saved |
failure |
Resource save failed |
<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>
An update node is used to update information about a particular resource to persistent storage.
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 |
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.
success |
Resource successfully saved |
failure |
Resource save failed |
<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:
Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories.
- To compile all of CCSDK SLI code
git clone http://gerrit.onap.org/r/ccsdk/parent
cd parent ; mvn clean install ; cd ..
mkdir sli ; cd sli
git clone http://gerrit.onap.org/r/ccsdk/sli/core
cd core ; mvn clean install
cd ../adaptors ; mvn clean install
cd ../northbound ; mvn clean install
cd ../plugins ; mvn clean install
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 Jakarta release of the Common Controller Software Development Kit (CCSDK).
Summary
The Jakarta 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 Phosphorus).
Release Data
Project |
CCSDK |
Docker images |
See Docker Containers section below |
Release designation |
Jakarta |
New features
The CCSDK Jakarta release includes the following features:
Upgrade to OpenDaylight Phosphorus Release (Jira CCSDK-3451)
A1 Adapter and A1 Policy Management Extensions in Jakarta Release - CCSDK (Jira CCSDK-3463)
CCSDK impacts for Network slicing in Jakarta Release (Jira CCSDK-3554)
For the complete list of CCSDK Jakarta release epics and CCSDK Jakarta release user stories , please see the ONAP Jira.
Bug fixes
The Jakarta release carries forward a fix from Istanbul Maintenance Release 1 for 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 Jakarta 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 Jakarta release along with the current stable Jakarta 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 Jakarta version may use the tag 1.3-STAGING-latest to pull the latest daily Jakarta build
Image name |
Description |
Version |
---|---|---|
onap/ccsdk-alpine-j11-image |
Base Alpine Linux image for CCSDK |
1.3.4 |
onap/ccsdk-ansible-server-image |
Ansible server image |
1.3.4 |
onap/ccsdk-apps-ms-neng |
Naming microservice |
1.3.0 |
onap/ccsdk-blueprints-processor |
CDS blueprint processor |
1.3.0 |
onap/ccsdk-cds-ui-server |
CDS user interface back end |
1.3.0 |
onap/ccsdk-commandexecutor |
CDS command executor |
1.3.0 |
onap/ccsdk-controllerblueprint |
CDS controller blueprints |
1.3.0 |
onap/ccsdk-dgbuilder-image |
Directed graph builder |
1.3.4 |
onap/ccsdk-odl-phosphorus-alpine-image |
Alpine based OpenDaylight Phosphorus image |
1.3.4 |
onap/ccsdk-odlsli-alpine-image |
Alpine based OpenDaylight image with CCSDK |
1.3.4 |
onap/ccsdk-saltstack-server-image |
Saltstack server |
1.3.4 |
onap/ccsdk-sdclistener |
CDS SDC listener |
1.3.0 |
onap/ccsdk-ubuntu-image |
Base Ubuntu image for CCSDK |
1.3.4 |
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.
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.3.3 |
Parent used in place of OpenDaylight binding-parent |
org.onap.ccsdk.parent |
bundle-parent |
2.3.3 |
Parent used in place of OpenDaylight bundle-parent |
org.onap.ccsdk.parent |
client-parent |
2.3.3 |
Parent used for projects that create client libraries for OpenDaylight APIs |
org.onap.ccsdk.parent |
dependencies-bom |
2.3.3 |
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.3.3 |
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.3.3 |
Parent used in place of OpenDaylight feature-repo-parent |
org.onap.ccsdk.parent |
karaf4-parent |
2.3.3 |
Parent used in place of OpenDaylight karaf4-parent |
org.onap.ccsdk.parent |
mdsal-it-parent |
2.3.3 |
Parent used in place of OpenDaylight mdsal-it-parent |
org.onap.ccsdk.parent |
odlparent |
2.3.3 |
Parent used in place of OpenDaylight odlparent |
org.onap.ccsdk.parent |
odlparent-lite |
2.3.3 |
Parent used in place of OpenDaylight odlparent-lite |
org.onap.ccsdk.parent |
single-feature-parent |
2.3.3 |
Parent used in place of OpenDaylight single-feature-parent |
org.onap.ccsdk.parent |
spring-boot-1-starter-parent |
2.3.3 |
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.3.3 |
Parent used in place of spring-boot-starter-parent for Springboot 2.5.x |
org.onap.ccsdk.parent |
spring-boot-26-starter-parent |
2.3.4 |
Parent used in place of spring-boot-starter-parent for Springboot 2.6.x |
org.onap.ccsdk.parent |
spring-boot-starter-parent |
2.3.3 |
Parent used in place of spring-boot-starter-parent for Springboot 2.3.x |
org.onap.ccsdk.parent |
standalone-parent |
2.3.3 |
Parent used for projects that have no need for other third party parent poms |
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.4.1 |
Database access library |
org.onap.ccsdk.sli.core |
sli-common |
1.4.1 |
Common SLI data objects |
org.onap.ccsdk.sli.core |
sli-provider-base |
1.4.1 |
ODL-independent SLI implementation objects |
org.onap.ccsdk.sli.core |
sli-provider |
1.4.1 |
ODL-dependent SLI implementation objects |
org.onap.ccsdk.sli.core |
sliPluginUtils-provider |
1.4.1 |
Utilities for use in SLI adaptors/plugins |
org.onap.ccsdk.sli.core |
utils-provider |
1.4.1 |
Utilities |
org.onap.ccsdk.sli.adaptors |
aai-service-provider |
1.4.1 |
A&AI interface adaptor |
org.onap.ccsdk.sli.adaptors |
ansible-adapter-bundle |
1.4.1 |
Ansible interface adaptor |
org.onap.ccsdk.sli.adaptors |
mdsal-resource-provider |
1.4.1 |
MD-SAL interface adaptor |
org.onap.ccsdk.sli.adaptors |
netbox-client-provider |
1.4.1 |
netbox interface adaptor |
org.onap.ccsdk.sli.adaptors |
resource-assignment-provider |
1.4.1 |
resource allocator |
org.onap.ccsdk.sli.adaptors |
saltstack-adaptor-provider |
1.4.1 |
saltstack interface adaptor |
org.onap.ccsdk.sli.adaptors |
sql-resource-provider |
1.4.1 |
SQL database interface adaptor |
org.onap.ccsdk.sli.northbound |
asdcApi-provider |
1.4.1 |
ODL-based SDC interface |
org.onap.ccsdk.sli.northbound |
dataChange-provider |
1.4.1 |
A&AI data change notification interface |
org.onap.ccsdk.sli.northbound |
dmaap-listener |
1.4.1 |
DMaaP listener interface |
org.onap.ccsdk.sli.northbound |
lcm-provider |
1.4.1 |
Life Cycle Management event interface |
org.onap.ccsdk.sli.northbound |
ueb-listener |
1.4.1 |
SDC event listener |
org.onap.ccsdk.sli.plugins |
properties-node-provider |
1.4.1 |
Used to load a properties file for use in a directed graph |
org.onap.ccsdk.sli.plugins |
restapi-call-node-provider |
1.4.1 |
Used to call a generic REST API from a directed graph |
org.onap.ccsdk.sli.plugins |
restconf-client-provider |
1.4.1 |
Used to call a RESTCONF API from a directed graph |
org.onap.ccsdk.sli.plugins |
sshapi-call-node |
1.4.1 |
Used to invoke an SSH interface from a directed graph |
org.onap.ccsdk.sli.plugins |
template-node-provider |
1.4.1 |
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 Jakarta 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 Jakarta release, please see: