From 53afd94577da327523a887d2c8a2d2c182f76e5d Mon Sep 17 00:00:00 2001 From: Dan Timoney Date: Wed, 8 Nov 2017 11:54:38 -0500 Subject: [PATCH] Centralize readthedocs docs Move readthedocs documentation into ccsdk/distribution so that there is a single CCSDK project parent as opposed to separate repo-specific parents. Change-Id: I8f7fc649fd534dfc7e4a00f04728e0233ff4d23c Issue-ID: CCSDK-140 Signed-off-by: Dan Timoney --- docs/index.rst | 11 +- docs/parent/index.rst | 8 + docs/platform/plugins/dmaap.rst | 439 +++++++++++ docs/platform/plugins/dnsdesig.rst | 103 +++ docs/platform/plugins/index.rst | 9 + docs/platform/plugins/pgaas.rst | 130 ++++ docs/platform/plugins/sshkeyshare.rst | 61 ++ docs/release-notes.rst | 45 ++ docs/sli/adaptors/architecture.rst | 27 + docs/sli/adaptors/build.rst | 18 + docs/sli/adaptors/docs/architecture.rst | 27 + docs/sli/adaptors/docs/build.rst | 18 + docs/sli/adaptors/docs/index.rst | 12 + docs/sli/adaptors/docs/logging.rst | 14 + docs/sli/adaptors/docs/offeredapis.rst | 6 + docs/sli/adaptors/docs/release-notes.rst | 46 ++ docs/sli/adaptors/index.rst | 12 + docs/sli/adaptors/logging.rst | 14 + docs/sli/adaptors/offeredapis.rst | 6 + docs/sli/adaptors/release-notes.rst | 46 ++ docs/sli/core/docs/apis/sliapi.rst | 15 + docs/sli/core/docs/architecture.rst | 20 + docs/sli/core/docs/build.rst | 18 + docs/sli/core/docs/index.rst | 13 + docs/sli/core/docs/logging.rst | 14 + docs/sli/core/docs/nodes.rst | 1031 ++++++++++++++++++++++++++ docs/sli/core/docs/offeredapis.rst | 12 + docs/sli/core/docs/release-notes.rst | 46 ++ docs/sli/northbound/apis/asdcApi.rst | 15 + docs/sli/northbound/apis/dataChange.rst | 15 + docs/sli/northbound/architecture.rst | 12 + docs/sli/northbound/build.rst | 18 + docs/sli/northbound/docs/apis/asdcApi.rst | 15 + docs/sli/northbound/docs/apis/dataChange.rst | 15 + docs/sli/northbound/docs/architecture.rst | 12 + docs/sli/northbound/docs/build.rst | 18 + docs/sli/northbound/docs/index.rst | 13 + docs/sli/northbound/docs/logging.rst | 14 + docs/sli/northbound/docs/nodes.rst | 1031 ++++++++++++++++++++++++++ docs/sli/northbound/docs/offeredapis.rst | 13 + docs/sli/northbound/docs/release-notes.rst | 45 ++ docs/sli/northbound/index.rst | 13 + docs/sli/northbound/logging.rst | 14 + docs/sli/northbound/nodes.rst | 1031 ++++++++++++++++++++++++++ docs/sli/northbound/offeredapis.rst | 13 + docs/sli/northbound/release-notes.rst | 45 ++ docs/sli/plugins/architecture.rst | 27 + docs/sli/plugins/build.rst | 18 + docs/sli/plugins/docs/architecture.rst | 27 + docs/sli/plugins/docs/build.rst | 18 + docs/sli/plugins/docs/index.rst | 12 + docs/sli/plugins/docs/logging.rst | 14 + docs/sli/plugins/docs/offeredapis.rst | 6 + docs/sli/plugins/docs/release-notes.rst | 46 ++ docs/sli/plugins/index.rst | 12 + docs/sli/plugins/logging.rst | 14 + docs/sli/plugins/offeredapis.rst | 6 + docs/sli/plugins/release-notes.rst | 46 ++ 58 files changed, 4817 insertions(+), 2 deletions(-) create mode 100644 docs/parent/index.rst create mode 100644 docs/platform/plugins/dmaap.rst create mode 100644 docs/platform/plugins/dnsdesig.rst create mode 100644 docs/platform/plugins/index.rst create mode 100644 docs/platform/plugins/pgaas.rst create mode 100644 docs/platform/plugins/sshkeyshare.rst create mode 100644 docs/release-notes.rst create mode 100644 docs/sli/adaptors/architecture.rst create mode 100644 docs/sli/adaptors/build.rst create mode 100644 docs/sli/adaptors/docs/architecture.rst create mode 100644 docs/sli/adaptors/docs/build.rst create mode 100644 docs/sli/adaptors/docs/index.rst create mode 100644 docs/sli/adaptors/docs/logging.rst create mode 100644 docs/sli/adaptors/docs/offeredapis.rst create mode 100644 docs/sli/adaptors/docs/release-notes.rst create mode 100644 docs/sli/adaptors/index.rst create mode 100644 docs/sli/adaptors/logging.rst create mode 100644 docs/sli/adaptors/offeredapis.rst create mode 100644 docs/sli/adaptors/release-notes.rst create mode 100644 docs/sli/core/docs/apis/sliapi.rst create mode 100644 docs/sli/core/docs/architecture.rst create mode 100644 docs/sli/core/docs/build.rst create mode 100644 docs/sli/core/docs/index.rst create mode 100644 docs/sli/core/docs/logging.rst create mode 100644 docs/sli/core/docs/nodes.rst create mode 100644 docs/sli/core/docs/offeredapis.rst create mode 100644 docs/sli/core/docs/release-notes.rst create mode 100644 docs/sli/northbound/apis/asdcApi.rst create mode 100644 docs/sli/northbound/apis/dataChange.rst create mode 100644 docs/sli/northbound/architecture.rst create mode 100644 docs/sli/northbound/build.rst create mode 100644 docs/sli/northbound/docs/apis/asdcApi.rst create mode 100644 docs/sli/northbound/docs/apis/dataChange.rst create mode 100644 docs/sli/northbound/docs/architecture.rst create mode 100644 docs/sli/northbound/docs/build.rst create mode 100644 docs/sli/northbound/docs/index.rst create mode 100644 docs/sli/northbound/docs/logging.rst create mode 100644 docs/sli/northbound/docs/nodes.rst create mode 100644 docs/sli/northbound/docs/offeredapis.rst create mode 100644 docs/sli/northbound/docs/release-notes.rst create mode 100644 docs/sli/northbound/index.rst create mode 100644 docs/sli/northbound/logging.rst create mode 100644 docs/sli/northbound/nodes.rst create mode 100644 docs/sli/northbound/offeredapis.rst create mode 100644 docs/sli/northbound/release-notes.rst create mode 100644 docs/sli/plugins/architecture.rst create mode 100644 docs/sli/plugins/build.rst create mode 100644 docs/sli/plugins/docs/architecture.rst create mode 100644 docs/sli/plugins/docs/build.rst create mode 100644 docs/sli/plugins/docs/index.rst create mode 100644 docs/sli/plugins/docs/logging.rst create mode 100644 docs/sli/plugins/docs/offeredapis.rst create mode 100644 docs/sli/plugins/docs/release-notes.rst create mode 100644 docs/sli/plugins/index.rst create mode 100644 docs/sli/plugins/logging.rst create mode 100644 docs/sli/plugins/offeredapis.rst create mode 100644 docs/sli/plugins/release-notes.rst diff --git a/docs/index.rst b/docs/index.rst index 833e1aa9..bfa46178 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,8 +1,15 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. -TODO Add files to toctree and delete this header ------------------------------------------------- +Common Controller Software Development Kit +------------------------------------------ .. toctree:: :maxdepth: 1 + parent/index.rst + platform/plugins/index.rst + sli/core/index.rst + sli/adaptors/index.rst + sli/northbound/index.rst + sli/plugins/index.rst + release-notes.rst diff --git a/docs/parent/index.rst b/docs/parent/index.rst new file mode 100644 index 00000000..833e1aa9 --- /dev/null +++ b/docs/parent/index.rst @@ -0,0 +1,8 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +TODO Add files to toctree and delete this header +------------------------------------------------ +.. toctree:: + :maxdepth: 1 + + diff --git a/docs/platform/plugins/dmaap.rst b/docs/platform/plugins/dmaap.rst new file mode 100644 index 00000000..b49eb4f8 --- /dev/null +++ b/docs/platform/plugins/dmaap.rst @@ -0,0 +1,439 @@ +Cloudify DMaaP Plugin +--------------------- + +Cloudify plugin for creating and managing DMaaP Data Router feeds and +subscriptions and DMaaP Message Router topics. The plugin uses the DMaaP +Bus Controller API. + +Plugin Support for DMaaP Data Router +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Plugin Types for DMaaP Data Router +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The Cloudify type definitions for DMaaP Data Router nodes and +relationships are defined in ```dmaap.yaml`` <./dmaap.yaml>`__. + +There are four node types for DMaaP Data Router: + +- ``ccsdk.nodes.Feed``: This type represents a feed that does not yet + exist and that should be created when the install workflow is run + against a blueprint that contains a node of this type. + ++------------------------+----------+-------------+---------------------------------------------------------------------------------------------+ +| Property | Type | Required? | Description | ++========================+==========+=============+=============================================================================================+ +| feed\_name | string | no | a name that identifies the feed (plugin will generate if absent) | ++------------------------+----------+-------------+---------------------------------------------------------------------------------------------+ +| feed\_version | string | no | version number for the feed (feed\_name + feed\_version uniquely identify the feed in DR) | ++------------------------+----------+-------------+---------------------------------------------------------------------------------------------+ +| feed\_description | string | no | human-readable description of the feed | ++------------------------+----------+-------------+---------------------------------------------------------------------------------------------+ +| aspr\_classification | string | no | AT&T ASPR classification of the feed | ++------------------------+----------+-------------+---------------------------------------------------------------------------------------------+ + +- ``ccsdk.nodes.ExistingFeed``: This type represents a feed that + already exists. Nodes of this type are placed in a blueprint so that + other nodes in the blueprint can be set up as publishers or + subscribers to the feed. The table below shows the properties that a + node of this type may have. + ++------------+----------+-------------+---------------------------------------------------------------+ +| Property | Type | Required? | Description | ++============+==========+=============+===============================================================+ +| feed\_id | string | yes | Feed identifier assigned by DMaaP when the feed was created | ++------------+----------+-------------+---------------------------------------------------------------+ + +- ``ccsdk.nodes.ExternalTargetFeed``: This type represents a feed + created in an external DMaaP environment (i.e., an environment that + the plugin cannot access to make provisioning requests, such as a + shared corporate system). Nodes of this type are placed in a + blueprint so that other feed nodes of type ``ccsdk.nodes.Feed`` or + ``ccsdk.nodes.ExistingFeed`` can be set up to "bridge" to external + feeds by publishing data to the external feeds. The table below shows + the properties that a node of this type may have. + ++------------+----------+-------------+----------------------------------------------------------------+ +| Property | Type | Required? | Description | ++============+==========+=============+================================================================+ +| url | string | yes | The publish URL of the external feed. | ++------------+----------+-------------+----------------------------------------------------------------+ +| username | string | yes | The username to be used when delivering to the external feed | ++------------+----------+-------------+----------------------------------------------------------------+ +| userpw | string | yes | The password to be used when delivering to the external feed | ++------------+----------+-------------+----------------------------------------------------------------+ + +*Note: These properties are usually obtained by manually creating a feed +in the external DMaaP DR system and then creating a publisher for that +feed.* + +- ``ccsdk.nodes.ExternalSourceFeed``: This type represents a feed + created in an external DMaaP environment (i.e., an environment that + the plugin cannot access to makes provisioning requests, such as a + shared corporate system). Nodes of this type are place in a blueprint + so that they can be set up to "bridge" to other feed nodes of type + ``ccsdk.nodes.Feed`` or ``ccsdk.nodes.ExistingFeed``. This type has + no node properties, but when a bridge is set up, the url, username, + and password are attached to the node as runtime\_properties, using + the name of the target feed node as the top-level key. + +There are five relationship types for DMaaP Data Router: + +- ``ccsdk.relationships.publish_files``, used to indicate that the + relationship's source node sends is a publisher to the Data Router + feed represented by the relationship's target node. +- ``ccsdk.relationships.subscribe_to_files``, used to indicate that the + relationship's source node is a subscriber to the Data Router feed + represented by the relationship's target node. +- ``ccsdk.relationships.bridges_to``, used to indicate that the + relationship's source node (a ``ccsdk.nodes.Feed`` or + ``ccsdk.nodes.ExistingFeed``) should be set up to forward data + ("bridge") to the relationship's target feed (another + ``ccsdk.nodes.Feed`` or ``ccsdk.nodes.ExistingFeed``). +- ``ccsdk.relationships.bridges_to_external``, used to indicate that + the relationship's source node (a ``ccsdk.nodes.Feed`` or + ``ccsdk.nodes.ExistingFeed``) should be set up to forward data + ("bridge") to the relationship's target node (a feed in an external + DMaaP system, represented by a ``ccsdk.nodes.ExternalTargetFeed`` + node). +- ``ccsdk.relationships.bridges_from_external_to_internal``, used to + indicate the the relationship's source node (a feed in an external + DMaaP system, represented by a ``ccsdk.nodes.ExternalSourceFeed`` + node) should be set up to forward date ("bridge") to the + relationship's target node (an internal ONAP feed, represented by a + ``ccsdk.nodes.Feed`` or ``ccsdk.nodes.ExistingFeed`` node). + +The plugin code implements the lifecycle operations needed to create and +delete feeds and to add and remove publishers and subscribers. It also +implements the operations needed to set up bridging between feeds. + +Interaction with Other Plugins +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When creating a new feed or processing a reference to an existing feed, +the plugin operates independently of other plugins. + +When processing a ``ccsdk.relationships.publish_files`` relationship or +a ``ccsdk.relationships.subscribe_to_files`` relationship, this plugin +needs to obtain data from the source node and, in the case of +``publish_files``, provide data to the source node. Certain conventions +are therefore needed for passing data between this plugin and the +plugins responsible for the source nodes in these relationships. In +Cloudify, the mechanism for sharing data among plugins is the +``ctx.instance.runtime_properties`` dictionary associated with each +node. + +A given source node may have relationships with several feeds. For +example, an ONAP DCAE data collector might publish two different types +of data to two different feeds. An ONAP DCAE analytics module might +subscribe to one feed to get input for its processing and publish its +results to a different feed. When this DMaaP plugin and the plugin for +the source node exchange information, they need to do in a way that lets +them distinguish among different feeds. We do this through a simple +convention: for each source node to feed relationship, the source node +plugin will create a property in the source node's +``runtime_properties`` dictionary. The name of the property will be the +same as the name of the target node of the relationship. For instance, +if a node has a ``publishes_files`` relationship with a target node +named ``feed00``, then the plugin that's responsible for managing the +source node with create an entry in the source node's +``runtime_properties`` dictionary named ``feed00``. This entry itself +will be a dictionary. + +The content of this data exchange dictionary depends on whether the +source node is a publisher (i.e., the relationship is ``publish_files``) +or a subscriber (i.e., the relationship is ``subscribe_to_files``). + +For the ``publish_files`` relationship, the data exchange dictionary has +the following properties: + ++----------------+----------------------+--------------------------------------------------------------------------------------------------+ +| Property | Set by | Description | ++================+======================+==================================================================================================+ +| location | source node plugin | the DMaaP location for the publisher, used to set up routing | ++----------------+----------------------+--------------------------------------------------------------------------------------------------+ +| publish\_url | DMaaP plugin | the URL to which the publisher makes Data Router publish requests | ++----------------+----------------------+--------------------------------------------------------------------------------------------------+ +| log\_url | DMaaP plugin | the URL from which log data for the feed can be obtained | ++----------------+----------------------+--------------------------------------------------------------------------------------------------+ +| username | DMaaP plugin | the username (generated by the DMaaP plugin) the publisher uses to authenticate to Data Router | ++----------------+----------------------+--------------------------------------------------------------------------------------------------+ +| password | DMaaP plugin | the password (generated by the DMaaP plugin) the publisher uses to authenticate to Data Router | ++----------------+----------------------+--------------------------------------------------------------------------------------------------+ + +For the ``subscribe_to_files`` relationship, the data exchange +dictionary has the following properties: + ++-----------------+----------------------+-----------------------------------------------------------------------------------------+ +| Property | Set by | Description | ++=================+======================+=========================================================================================+ +| location | source node plugin | the DMaaP location for the subscriber, used to set up routing | ++-----------------+----------------------+-----------------------------------------------------------------------------------------+ +| delivery\_url | source node plugin | the URL to which the Data Router should deliver files | ++-----------------+----------------------+-----------------------------------------------------------------------------------------+ +| username | source node plugin | the username Data Router uses to authenticate to the subscriber when delivering files | ++-----------------+----------------------+-----------------------------------------------------------------------------------------+ +| password | source node plugin | the username Data Router uses to authenticate to the subscriber when delivering file | ++-----------------+----------------------+-----------------------------------------------------------------------------------------+ + +Plugin Support for DMaaP Message Router +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Plugin Types for DMaaP Message Router +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The Cloudify type definitions for DMaaP Message Router nodes and +relationships are defined in ```dmaap.yaml`` <./dmaap.yaml>`__. + +There are two node types for DMaaP Message Router: + +- ``ccsdk.nodes.Topic``: This type represents a topic that does not yet + exist and that should be created when the install workflow is run + against a blueprint that contains a node of this type. + ++----------------------+-----------+-------------+-----------------------------------------------------------------------------+ +| Property | Type | Required? | Description | ++======================+===========+=============+=============================================================================+ +| topic\_name | string | no | a name that uniquely identifies the feed (plugin will generate if absent) | ++----------------------+-----------+-------------+-----------------------------------------------------------------------------+ +| topic\_description | string | no | human-readable description of the feed | ++----------------------+-----------+-------------+-----------------------------------------------------------------------------+ +| txenable | boolean | no | flag indicating whether transactions are enabled for this topic | ++----------------------+-----------+-------------+-----------------------------------------------------------------------------+ +| replication\_case | string | no | type of replication required for the topic (defaults to no replication) | ++----------------------+-----------+-------------+-----------------------------------------------------------------------------+ +| global\_mr\_url | string | no | Global MR host name for replication to a global MR instance | ++----------------------+-----------+-------------+-----------------------------------------------------------------------------+ + +Note: In order to set up topics, a user should be familiar with message +router and how it is configured, and this README is not the place to +explain the details of message router. Here are a couple of pieces of +information that might be helpful. Currently, the allowed values for +``replication_case`` are: + +- ``REPLICATION_NONE`` +- ``REPLICATION_EDGE_TO_CENTRAL`` +- ``REPLICATION_EDGE_TO_CENTRAL_TO_GLOBAL`` +- ``REPLICATION_CENTRAL_TO_EDGE`` +- ``REPLICATION_CENTRAL_TO_GLOBAL`` +- ``REPLICATION_GLOBAL_TO_CENTRAL`` +- ``REPLICATION_GLOBAL_TO_CENTRAL_TO_EDGE`` + +The ``global_mr_url`` is actually a host name, not a full URL. It points +to a host in a global message router cluster. (A 'global' message router +cluster is one that's not part of ONAP.) + +- ``ccsdk.nodes.ExistingTopic``: This type represents a topic that + already exists. Nodes of this type are placed in a blueprint so that + other nodes in the blueprint can be set up as publishers or + subscribers to the topic. The table below shows the properties that a + node of this type may have. + ++------------+----------+-------------+--------------------------------------------+ +| Property | Type | Required? | Description | ++============+==========+=============+============================================+ +| fqtn | string | yes | fully-qualified topic name for the topic | ++------------+----------+-------------+--------------------------------------------+ + +Interaction with Other Plugins +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When creating a new topic or processing a reference to an existing +topic, the plugin operates independently of other plugins. + +When processing a ``ccsdk.relationships.publish_events`` relationship or +a ``ccsdk.relationships.subscribe_to_events`` relationship, this plugin +needs to obtain data from and provide data to the source node. Certain +conventions are therefore needed for passing data between this plugin +and the plugins responsible for the source nodes in these relationships. +In Cloudify, the mechanism for sharing data among plugins is the +``ctx.instance.runtime_properties`` dictionary associated with each +node. + +A given source node may have relationships with several topics. For +example, an ONAP DCAE analytics module might subscribe to one topic to +get input for its processing and publish its results to a different +topic. When this DMaaP plugin and the plugin for the source node +exchange information, they need to do in a way that lets them +distinguish among different feeds. We do this through a simple +convention: for each source node to topic relationship, the source node +plugin will create a property in the source node's +``runtime_properties`` dictionary. The name of the property will be the +same as the name of the target node of the relationship. For instance, +if a node has a ``publishes_events`` relationship with a target node +named ``topic00``, then the plugin that's responsible for managing the +source node with create an entry in the source node's +``runtime_properties`` dictionary named ``topic00``. This entry itself +will be a dictionary. + +For both types of relationship, the data exchange dictionary has the +following properties: + ++----------------+----------------------+----------------------------------------------------------------------------------+ +| Property | Set by | Description | ++================+======================+==================================================================================+ +| location | source node plugin | the DMaaP location for the publisher or subscriber, used to set up routing | ++----------------+----------------------+----------------------------------------------------------------------------------+ +| client\_role | source node plugin | the AAF client role that's requesting publish or subscribe access to the topic | ++----------------+----------------------+----------------------------------------------------------------------------------+ +| topic\_url | DMaaP plugin | the URL for accessing the topic to publish or receive events | ++----------------+----------------------+----------------------------------------------------------------------------------+ + +Interaction with Consul configuration store +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to storing the results of DMaaP Data Router and DMaaP +Message Router provisioning operations in ``runtime_properties``, the +DMaaP plugin also stores these results into the ONAP configuration +store, which resides in a `Consul key-value +store `__. This allows DMaaP clients (components +that act as publishers, subscribers, or both) to retrieve their DMaaP +configuration information from Consul, rather than having the plugin +that deploys the client directly configure the client using data in +``runtime_properties``. + +The ``runtime_properties`` for a client must contain a property called +``service_component_name``. If this property is not present, the plugin +will raise a NonRecoverableError and cause the installation to fail. + +If ``service_component_name`` is present, then the plugin will use a +Consul key consisting of the value of ``service_component_name`` +prepended to the fixed string ``:dmaap``. For example, if the +``service_component_name`` is ``client123``, the plugin will use +``client123:dmaap`` as the key for storing DMaaP information into +Consul. Information for all of the feeds and topics for a client are +stored under the same key. + +The value stored is a nested JSON object. At the top level of the object +are properties representing each topic or feed for which the component +is a publisher or subscriber. The name of the property is the node name +of the target feed or topic. The value of the property is another JSON +object that corresponds to the dictionary that the plugin created in +``runtime_properties`` corresponding to the target feed or topic. Note +that the information in Consul includes all of the properties for the +feed or topic, those set by the source node plugin as well as those set +by the DMaaP plugin. + +Examples: + +Data Router publisher, target feed ``feed00``: + +:: + + { + "feed00": { + "username": "rC9QR51I", + "log_url": "https://dmaap.example.com/feedlog/972", + "publish_url": "https://dmaap.example.com/publish/972", + "location": "loc00", + "password": "QOQeUh5KLR", + "publisher_id": "972.360gm" + } + } + +Data Router subscriber, target feed ``feed01``: + +:: + + { + "feed01": { + "username": "drdeliver", + "password": "1loveDataR0uter", + "location": "loc00", + "delivery_url": "https://example.com/whatever", + "subscriber_id": "1550" + } + } + +Message Router publisher to ``topic00``, subscriber to ``topic01``. Note +how each topic appears as a top-level property in the object. + +:: + + { + "topic00": { + "topic_url": "https://dmaap.example.com:3905/events/org.onap.ccsdk.dmaap.FTL2.outboundx", + "client_role": "org.onap.ccsdk.member", + "location": "loc00", + "client_id": "1494621774522" + }, + "topic01": { + "topic_url": "https://dmaap.example.com:3905/events/org.onap.ccsdk.dmaap.FTL2.inboundx", + "client_role": "org.onap.ccsdk.member", + "location": "loc00", + "client_id": "1494621778627" + } + } + +Packaging and installing +~~~~~~~~~~~~~~~~~~~~~~~~ + +The DMaaP plugin is meant to be used as a `Cloudify managed +plugin `__. +Managed plugins are packaged using +```wagon`` `__. + +To package this plugin, executing the following command in the top-level +directory of this plugin, from a Python environment in which ``wagon`` +has been installed: + +:: + + wagon create -s . -r -o /path/to/directory/for/wagon/output + +Once the wagon file is built, it can be uploaded to a Cloudify Manager +host using the ``cfy plugins upload`` command described in the +documentation above. + +Managed plugins can also be loaded at the time a Cloudify Manager host +is installed, via the installation blueprint and inputs file. We expect +that this plugin will be loaded at Cloudify Manager installation time, +and that ``cfy plugins upload`` will be used only for delivering patches +between releases. + +Configuration +~~~~~~~~~~~~~ + +The plugin needs to be configured with certain parameters needed to +access the DMaaP Bus Controller. In keeping with the ONAP architecture, +this information is stored in Consul. + +The plugin finds the address and port of the DMaaP Bus Controller using +the Consul service discovery facility. The plugin expects the Bus +Controller to be registered under the name ``dmaap_bus_controller``. + +Additional parameters come from the ``dmaap`` key in the Cloudify +Manager's Consul configuration, which is stored in the Consul KV store +under the key name 'cloudify\_manager'. The table below lists the +properties in the configuration: + ++----------------+----------+-------------+--------------+---------------------------------------------------------------------------------------------+ +| Property | Type | Required? | Default | Description | ++================+==========+=============+==============+=============================================================================================+ +| ``username`` | string | Yes | (none) | The username for logging into DMaaP Bus Controller | ++----------------+----------+-------------+--------------+---------------------------------------------------------------------------------------------+ +| ``password`` | string | Yes | (none) | The password for logging into DMaaP Bus Controller | ++----------------+----------+-------------+--------------+---------------------------------------------------------------------------------------------+ +| ``owner`` | string | Yes | (none) | The name to be used as the owner for entities created by the plugin | ++----------------+----------+-------------+--------------+---------------------------------------------------------------------------------------------+ +| ``protocol`` | string | No | ``https`` | The protocol (URL scheme) used to access the DMaaP bus controller (``http`` or ``https``) | ++----------------+----------+-------------+--------------+---------------------------------------------------------------------------------------------+ +| ``path`` | string | No | ``webapi`` | The path to the root of the DMaaP Bus Controller API endpoint | ++----------------+----------+-------------+--------------+---------------------------------------------------------------------------------------------+ + +Here is an example of a Cloudify Manager configuration object showing +only the ``dmaap`` key: + +:: + + { + "dmaap": { + "username": "dmaap.client@ccsdkorch.onap.org", + "password": "guessmeifyoucan" + "owner": "ccsdkorc" + }, + + (other configuration here) + + } + diff --git a/docs/platform/plugins/dnsdesig.rst b/docs/platform/plugins/dnsdesig.rst new file mode 100644 index 00000000..de67aef3 --- /dev/null +++ b/docs/platform/plugins/dnsdesig.rst @@ -0,0 +1,103 @@ +.. raw:: html + + + +DNS/Designate Plugin +==================== + +Cloudify DNS/Designate plugin description # Description The +DNS/Designate plugin extends the concepts of the Cloudify OpenStack +plugin to include using the DNS/Designate service, to set up and tear +down DNS "A" and "CNAME" records, as part of a Cloudify blueprint. # +Plugin Requirements \* Python versions \* 2.7.x + +Note: These requirements apply to the VM where Cloudify Manager itself +runs. + +Note: Cloudify Manager, itself, requires Python 2.7.x (and CentOS 7). + +Types +===== + +ccsdk.nodes.dns.arecord +----------------------- + +**Derived From:** cloudify.nodes.Root + +**Properties:** + +- ``fqdn`` (required string) The FQDN for the set of DNS A records to + be managed. The DNS zone to which this FQDN belongs is assumed to be + the entire FQDN following the first dot. This value must not end with + a dot. The provided openstack credentials must allow updating records + in the DNS zone. +- ``ttl`` (optional integer default=300) The time to live, in seconds, + of the DNS entries. +- ``openstack`` (required map) The set of configuration parameters to + use for accessing the OpenStack DNS service: username, password, + tenant\_name, auth\_url, and region. + +**Mapped Operations:** + +- ``cloudify.interfaces.lifecycle.create`` Creates or updates the type + "A" recordset for the specified FQDN. \*\* ``Inputs:`` \*\*\* + ``args`` Key-value configuration \*\*\*\* ``ip_addresses`` (required + sequence of string) A non-empty list of IP addresses corresponding to + the FQDN +- ``cloudify.interfaces.lifecycle.delete`` Deletes the type "A" + recordset, if any, for the specified FQDN. + +**Attributes:** This type has no runtime attributes + +ccsdk.nodes.dns.cnamerecord +--------------------------- + +**Derived From:** cloudify.nodes.Root + +**Properties:** + +- ``fqdn`` (required string) The FQDN for the DNS CNAME record to be + managed. The DNS zone to which this FQDN belongs is assumed to be the + entire FQDN following the first dot. This value must not end with a + dot. The provided openstack credentials must allow updating records + in the DNS zone. +- ``ttl`` (optional integer default=300) The time to live, in seconds, + of the DNS entry. +- ``openstack`` (required map) The set of configuration parameters to + use for accessing the OpenStack DNS service: username, password, + tenant\_name, auth\_url, and region. + +**Mapped Operations:** + +- ``cloudify.interfaces.lifecycle.create`` Creates or updates the type + "CNAME" recordset for the specified FQDN. \*\* ``Inputs:`` \*\*\* + ``args`` Key-value configuration \*\*\*\* ``cname`` (required string) + The FQDN that this CNAME record should point to. This value must not + end with at dot. +- ``cloudify.interfaces.lifecycle.delete`` Deletes the type "CNAME" + recordset, if any, for the specified FQDN. + +**Attributes:** This type has no runtime attributes + +Relationships +============= + +This plugin does not define or use any relationships diff --git a/docs/platform/plugins/index.rst b/docs/platform/plugins/index.rst new file mode 100644 index 00000000..35978384 --- /dev/null +++ b/docs/platform/plugins/index.rst @@ -0,0 +1,9 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +.. toctree:: + :maxdepth: 1 + + dmaap.rst + dnsdesig.rst + pgaas.rst + sshkeyshare.rst diff --git a/docs/platform/plugins/pgaas.rst b/docs/platform/plugins/pgaas.rst new file mode 100644 index 00000000..d27436f3 --- /dev/null +++ b/docs/platform/plugins/pgaas.rst @@ -0,0 +1,130 @@ +PGaaS Plugin +============ + +Cloudify PGaaS plugin description and configuraiton # Description The +PGaaS plugin allows users to deploy PostgreSQL application databases, +and retrieve access credentials for such databases, as part of a +Cloudify blueprint. # Plugin Requirements \* Python versions \* 2.7.x \* +System dependencies \* psycopg2 + +Note: These requirements apply to the VM where Cloudify Manager itself +runs. + +Note: The psycopg2 requirement is met by running "yum install +python-psycopg2" on the Cloudify Manager VM. + +Note: Cloudify Manager, itself, requires Python 2.7.x (and Centos 7). + +Types +===== + +dcae.nodes.pgaas.cluster +------------------------ + +**Derived From:** cloudify.nodes.Root + +**Properties:** + +- ``writerfqdn`` (required string) The FQDN used for read-write access + to the cluster containing the postgres database instance. This is + used to identify and access a particular database instance and to + record information about that instance on Cloudify Manager. +- ``use_existing`` (optional boolean default=false) This is used to + reference a database instance, in one blueprint, that was deployed in + a different one. If it is ``true``, then the ``readerfqdn`` property + must not be set and this node must not have any + ``dcae.relationships.pgaas_cluster_uses_sshkeypair`` relationships. + If it is ``false``, then this node must have exactly one + ``dcae.relationships.pgaas_cluster_uses_sshkeypair`` relationship. +- ``readerfqdn`` (optional string default=value of ``writerfqdn``) The + FQDN used for read-only access to the cluster containing the postgres + database instance, if different than the FQDN used for read-write + access. This will be used by viewer roles. + +**Mapped Operations:** + +- ``cloudify.interfaces.lifecycle.create`` validates and records + information about the cluster on the Cloudify Manager server in + /opt/manager/resources/pgaas/``writerfqdn``. +- ``cloudify.interfaces.lifecycle.delete`` deletes previously recorded + information from the Cloudify Manager server. + +Note: When ``use_existing`` is ``true``, the create operation validates +but does not record, and delete does nothing. Delete also does nothing +when validation has failed. + +**Attributes:** This type has no runtime attributes + +dcae.nodes.pgaas.database +------------------------- + +**Derived From:** cloudify.nodes.Root + +**Properties:** \* ``name`` (required string) The name of the +application database, in postgres. This name is also used to create the +names of the roles used to access the database, and the schema made +available to users of the database. \* ``use_existing`` (optional +boolean default=false) This is used to reference an application +database, in one blueprint, that was deployed in a different one. If +true, and this node has a +dcae.relationships.database\_runson\_pgaas\_cluster relationship, the +dcae.nodes.pgaas.cluster node that is the target of that relationship +must also have it's ``use_existing`` property set to true. \* +``writerfqdn`` (optional string) This can be used as an alternative to +specifying the cluster, for the application database, with a +dcae.relationships.database\_runson\_pgaas\_cluster relationship to a +dcae.nodes.pgaas.cluster node. Exactly one of the two options must be +used. The relationship method must be used if this blueprint is +deploying both the cluster and the application database on the cluster. + +**Mapped Operations:** + +- ``cloudify.interfaces.lifecycle.create`` creates the application + database, and various roles for admin/user/viewer access to it. +- ``cloudify.interfaces.lifecycle.delete`` deletes the application + database and roles + +Note: When ``use_existing`` is true, create and delete do not create or +delete the application database or associated roles. Create still sets +runtime attributes (see below). + +**Attributes:** + +- ``admin`` a dict containing access information for adminstrative + access to the application database. +- ``user`` a dict containing access information for user access to the + application database. +- ``viewer`` a dict containing access information for read-only access + to the application database. + +The keys in the access information dicts are as follows: + +- ``database`` the name of the application database. +- ``host`` the appropriate FQDN for accessing the application database, + (writerfqdn or readerfqdn, based on the type of access). +- ``user`` the user role for accessing the database. +- ``password`` the password corresponding to the user role. + +Relationships +============= + +dcae.relationships.pgaas\_cluster\_uses\_sshkeypair +--------------------------------------------------- + +**Description:** A relationship for binding a dcae.nodes.pgaas.cluster +node to the dcae.nodes.ssh.keypair used by the cluster to initialize the +database access password for the postgres role. The password for the +postgres role is expected to be the hex representation of the MD5 hash +of 'postgres' and the contents of the id\_rsa (private key) file for the +ssh keypair. A dcae.nodes.pgaas.cluster node must have such a +relationship if and only if it's use\_existing property is false. ## +dcae.relationships.dcae.relationships.database\_runson\_pgaas\_cluster +**Description:** A relationship for binding a dcae.nodes.pgaas.database +node to the dcae.nodes.pgaas.cluster node that contains the application +database. A dcae.nodes.pgaas.database node must have either such a +relationship or a writerfqdn property. The writerfqdn property cannot be +used if the cluster is created in the same blueprint as the application +database. ## dcae.relationships.application\_uses\_pgaas\_database +**Description:** A relationship for binding a node that needs +application database access information to the dcae.nodes.pgaas.database +node for that application database. diff --git a/docs/platform/plugins/sshkeyshare.rst b/docs/platform/plugins/sshkeyshare.rst new file mode 100644 index 00000000..8b5a0492 --- /dev/null +++ b/docs/platform/plugins/sshkeyshare.rst @@ -0,0 +1,61 @@ +.. raw:: html + + + +sshkeyshare plugin +================== + +Cloudify plugin for creating ssh key pairs on the fly # Description The +sshkeyshare Cloudify plugin creates an ssh key pair that can be used, by +VMs or other containers spun up by a Cloudify blueprint, for +establishing connections, among them. The blue print can, for example, +provide the private key to one VM and the public one to another, as part +of their initial configuration, to allow the one with the private key to +automatically connect to the other one, to run commands. # Plugin +Requirements \* Python versions \* 2.7.x + +Note: These requirements apply to the VM where Cloudify Manager itself +runs. + +Note: Cloudify Manager, itself, requires Pythong 2.7.x (and CentOS 7). + +Types +===== + +ccsdk.nodes.ssh.keypair +----------------------- + +**Derived From:** cloudify.nodes.Root + +**Properties:** This type has no properties + +**Mapped Operations:** \* ``cloudify.interfaces.lifecycle.create`` +Creates a new ssh keypair using ssh-keygen + +**Attributes:** \* ``public`` A string containing the public key of the +newly created keypair. \* ``base64private`` A single line base-64 +encoded representation of the content of the private key file for the +newly created keypair. + +Relationships +============= + +This plugin does not define or use any relationships diff --git a/docs/release-notes.rst b/docs/release-notes.rst new file mode 100644 index 00000000..94b4fc62 --- /dev/null +++ b/docs/release-notes.rst @@ -0,0 +1,45 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +Version: 0.1.0 +-------------- + + +:Release Date: 2017-11-16 + + + +**New Features** + +The Common Controller SDK provides the following functionality : + - Service Logic Interpreter + - Database access library (dblib) + - Service Logic test api (sliapi) + - MD-SAL data query adaptor + - SQL query adaptor + - Resource allocator + - SDC interface + - DMAAP interface + - REST API adaptor + + +**Bug Fixes** + +**Known Issues** + - `CCSDK-110 `_ Resolve license issues in dashboard project + - `CCSDK-136 `_ pgaas is dependent on location_prefix being all lowercase + - `CCSDK-137 `_ isolate deprecated methods + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + +=========== diff --git a/docs/sli/adaptors/architecture.rst b/docs/sli/adaptors/architecture.rst new file mode 100644 index 00000000..8daa0d3b --- /dev/null +++ b/docs/sli/adaptors/architecture.rst @@ -0,0 +1,27 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + +.. note:: + * This section is used to describe a software component from a high level + view of capability, common usage scenarios, and interactions with other + components required in the usage scenarios. + + * The architecture section is typically: provided in a platform-component + and sdk collections; and referenced from developer and user guides. + + * This note must be removed after content has been added. + + +Capabilities +------------ + + +Usage Scenarios +--------------- + + +Interactions +------------ diff --git a/docs/sli/adaptors/build.rst b/docs/sli/adaptors/build.rst new file mode 100644 index 00000000..0a4c308e --- /dev/null +++ b/docs/sli/adaptors/build.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Build +===== + + +Environment +----------- +Requires maven release 3.3 or greater + +Steps +----- +To compile this code: + +1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories. + +2. To compile, run "mvn clean install". \ No newline at end of file diff --git a/docs/sli/adaptors/docs/architecture.rst b/docs/sli/adaptors/docs/architecture.rst new file mode 100644 index 00000000..8daa0d3b --- /dev/null +++ b/docs/sli/adaptors/docs/architecture.rst @@ -0,0 +1,27 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + +.. note:: + * This section is used to describe a software component from a high level + view of capability, common usage scenarios, and interactions with other + components required in the usage scenarios. + + * The architecture section is typically: provided in a platform-component + and sdk collections; and referenced from developer and user guides. + + * This note must be removed after content has been added. + + +Capabilities +------------ + + +Usage Scenarios +--------------- + + +Interactions +------------ diff --git a/docs/sli/adaptors/docs/build.rst b/docs/sli/adaptors/docs/build.rst new file mode 100644 index 00000000..0a4c308e --- /dev/null +++ b/docs/sli/adaptors/docs/build.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Build +===== + + +Environment +----------- +Requires maven release 3.3 or greater + +Steps +----- +To compile this code: + +1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories. + +2. To compile, run "mvn clean install". \ No newline at end of file diff --git a/docs/sli/adaptors/docs/index.rst b/docs/sli/adaptors/docs/index.rst new file mode 100644 index 00000000..3156c8ab --- /dev/null +++ b/docs/sli/adaptors/docs/index.rst @@ -0,0 +1,12 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +CCSDK Service Logic Interpretor Adaptors +---------------------------------------- +.. toctree:: + :maxdepth: 1 + + architecture.rst + offeredapis.rst + logging.rst + build.rst + release-notes.rst diff --git a/docs/sli/adaptors/docs/logging.rst b/docs/sli/adaptors/docs/logging.rst new file mode 100644 index 00000000..187eb03b --- /dev/null +++ b/docs/sli/adaptors/docs/logging.rst @@ -0,0 +1,14 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +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. + + diff --git a/docs/sli/adaptors/docs/offeredapis.rst b/docs/sli/adaptors/docs/offeredapis.rst new file mode 100644 index 00000000..e20c786c --- /dev/null +++ b/docs/sli/adaptors/docs/offeredapis.rst @@ -0,0 +1,6 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Offered APIs +============ + diff --git a/docs/sli/adaptors/docs/release-notes.rst b/docs/sli/adaptors/docs/release-notes.rst new file mode 100644 index 00000000..b4516570 --- /dev/null +++ b/docs/sli/adaptors/docs/release-notes.rst @@ -0,0 +1,46 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +.. note:: + * This Release Notes must be updated each time the team decides to Release new artifacts. + * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes. + * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes. + * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release. + * This note must be removed after content has been added. + + +Version: x.y.z +-------------- + + +:Release Date: yyyy-mm-dd + + + +**New Features** + +One or two sentences explaining the purpose of this Release. + +**Bug Fixes** + - `CIMAN-65 `_ and a sentence explaining what this defect is addressing. +**Known Issues** + - `CIMAN-65 `_ and two, three sentences. + One sentences explaining what is the issue. + + Another sentence explaining the impact of the issue. + + And an optional sentence providing a workaround. + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + +=========== \ No newline at end of file diff --git a/docs/sli/adaptors/index.rst b/docs/sli/adaptors/index.rst new file mode 100644 index 00000000..3156c8ab --- /dev/null +++ b/docs/sli/adaptors/index.rst @@ -0,0 +1,12 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +CCSDK Service Logic Interpretor Adaptors +---------------------------------------- +.. toctree:: + :maxdepth: 1 + + architecture.rst + offeredapis.rst + logging.rst + build.rst + release-notes.rst diff --git a/docs/sli/adaptors/logging.rst b/docs/sli/adaptors/logging.rst new file mode 100644 index 00000000..187eb03b --- /dev/null +++ b/docs/sli/adaptors/logging.rst @@ -0,0 +1,14 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +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. + + diff --git a/docs/sli/adaptors/offeredapis.rst b/docs/sli/adaptors/offeredapis.rst new file mode 100644 index 00000000..e20c786c --- /dev/null +++ b/docs/sli/adaptors/offeredapis.rst @@ -0,0 +1,6 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Offered APIs +============ + diff --git a/docs/sli/adaptors/release-notes.rst b/docs/sli/adaptors/release-notes.rst new file mode 100644 index 00000000..b4516570 --- /dev/null +++ b/docs/sli/adaptors/release-notes.rst @@ -0,0 +1,46 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +.. note:: + * This Release Notes must be updated each time the team decides to Release new artifacts. + * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes. + * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes. + * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release. + * This note must be removed after content has been added. + + +Version: x.y.z +-------------- + + +:Release Date: yyyy-mm-dd + + + +**New Features** + +One or two sentences explaining the purpose of this Release. + +**Bug Fixes** + - `CIMAN-65 `_ and a sentence explaining what this defect is addressing. +**Known Issues** + - `CIMAN-65 `_ and two, three sentences. + One sentences explaining what is the issue. + + Another sentence explaining the impact of the issue. + + And an optional sentence providing a workaround. + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + +=========== \ No newline at end of file diff --git a/docs/sli/core/docs/apis/sliapi.rst b/docs/sli/core/docs/apis/sliapi.rst new file mode 100644 index 00000000..13cdcbd5 --- /dev/null +++ b/docs/sli/core/docs/apis/sliapi.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +SLI-API(2016-11-11) +=================== + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + + +.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/core.git;a=blob_plain;f=sliapi/model/src/main/resources/sli-api.20161110.json + + diff --git a/docs/sli/core/docs/architecture.rst b/docs/sli/core/docs/architecture.rst new file mode 100644 index 00000000..f6101a11 --- /dev/null +++ b/docs/sli/core/docs/architecture.rst @@ -0,0 +1,20 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + + + +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. + +.. toctree:: + :maxdepth: 1 + + nodes.rst + + diff --git a/docs/sli/core/docs/build.rst b/docs/sli/core/docs/build.rst new file mode 100644 index 00000000..0a4c308e --- /dev/null +++ b/docs/sli/core/docs/build.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Build +===== + + +Environment +----------- +Requires maven release 3.3 or greater + +Steps +----- +To compile this code: + +1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories. + +2. To compile, run "mvn clean install". \ No newline at end of file diff --git a/docs/sli/core/docs/index.rst b/docs/sli/core/docs/index.rst new file mode 100644 index 00000000..2055f178 --- /dev/null +++ b/docs/sli/core/docs/index.rst @@ -0,0 +1,13 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +CCSDK Service Logic Interpreter +------------------------------- +.. toctree:: + :maxdepth: 1 + + architecture.rst + offeredapis.rst + logging.rst + build.rst + release-notes.rst + diff --git a/docs/sli/core/docs/logging.rst b/docs/sli/core/docs/logging.rst new file mode 100644 index 00000000..187eb03b --- /dev/null +++ b/docs/sli/core/docs/logging.rst @@ -0,0 +1,14 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +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. + + diff --git a/docs/sli/core/docs/nodes.rst b/docs/sli/core/docs/nodes.rst new file mode 100644 index 00000000..3bdeabcf --- /dev/null +++ b/docs/sli/core/docs/nodes.rst @@ -0,0 +1,1031 @@ +--- Service Logic Interpreter --- Dan Timoney --- 2014-11-12 --- + +Supported node types +==================== + +The following built-in node types are currently supported: + +- Flow Control + + - `**block** <#Block_node>`__ + + - `**call** <#Call_node>`__ + + - `**for** <#For_node>`__ + + - `**return** <#Return_node>`__ + + - `**set** <#Set_node>`__ + + - `**switch** <#Switch_node>`__ + +- Device Management + + - `**configure** <#Configure_node>`__ + +- Java Plugin Support + + - `**execute** <#Execute_node>`__ + +- Recording + + - `**record** <#Record_node>`__ + +- Resource Management + + - `**delete** <#Delete_node>`__ + + - `**exists** <#Exists_node>`__ + + - `**get-resource** <#Get-resource_node>`__ + + - `**is-available** <#Is-available_node>`__ + + - `**notify** <#Notify_node>`__ + + - `**release** <#Release_node>`__ + + - `**reserve** <#Reserve_node>`__ + + - `**save** <#Save_node>`__ + + - `**update** <#Update_node>`__ + +Flow Control +------------ + +Block node +~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **block** node is used to executes a set of nodes. + +Attributes +^^^^^^^^^^ + ++--------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| **atomic** | if *true*, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out. | ++--------------+-----------------------------------------------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + +None + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Call node +~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **call** node is used to call another graph + +Attributes +^^^^^^^^^^ + ++---------------+------------------------------------------------------------------------------------+ +| **module** | Module of directed graph to call. If unset, defaults to that of calling graph | ++---------------+------------------------------------------------------------------------------------+ +| **rpc** | rpc of directed graph to call. | ++---------------+------------------------------------------------------------------------------------+ +| **version** | version of graph to call, If unset, uses active version. | ++---------------+------------------------------------------------------------------------------------+ +| **mode** | mode (sync/async) of graph to call. If unset, defaults to that of calling graph. | ++---------------+------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Not applicable + +Outcomes +^^^^^^^^ + ++-----------------+------------------------------+ +| **success** | Sub graph returned success | ++-----------------+------------------------------+ +| **not-found** | Graph not found | ++-----------------+------------------------------+ +| **failure** | Subgraph returned success | ++-----------------+------------------------------+ + +Table: . + +Example +^^^^^^^ + +:: + + + +For node +~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **for** node provides a fixed iteration looping mechanism, similar to +the Java for loop + +Attributes +^^^^^^^^^^ + ++-------------+------------------+ +| **index** | index variable | ++-------------+------------------+ +| **start** | initial value | ++-------------+------------------+ +| **end** | maximum value | ++-------------+------------------+ + +Parameters +^^^^^^^^^^ + +Not applicable. + +Outcomes +^^^^^^^^ + +Not applicable. The **status** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + + + + + +Return node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **return** node is used to return a status to the invoking MD-SAL +application + +Attributes +^^^^^^^^^^ + ++--------------+---------------------------------------------------+ +| **status** | Status value to return (*success* or *failure*) | ++--------------+---------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +The following optional parameters may be passed to convey more detailed +status information. + ++---------------------+-----------------------------------------------------------------+ +| **error-code** | A brief, usually numeric, code indicating the error condition | ++---------------------+-----------------------------------------------------------------+ +| **error-message** | A more detailed error message | ++---------------------+-----------------------------------------------------------------+ + +Outcomes +^^^^^^^^ + +Not applicable. The **status** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + + +Set node +~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **set** node is used to set one or more values in the execution +context + +Attributes +^^^^^^^^^^ + ++---------------------+-------------------------------------------------------------------------------------+ +| **only-if-unset** | If true the set node will only execute if the current value of the target is null | ++---------------------+-------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to be set are passed as parameters + +Outcomes +^^^^^^^^ + +Not applicable. The **set** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + +Switch node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **switch** node is used to make a decision based on its **test** +attribute. + +Attributes +^^^^^^^^^^ + ++------------+---------------------+ +| **test** | Condition to test | ++------------+---------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + +Depends on the **test** condition + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device Management +----------------- + +Configure node +~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **configure** node is used to configure a device. + +Attributes +^^^^^^^^^^ + ++----------------+-----------------------------------------------------------------------------------+ +| **adaptor** | Fully qualified Java class of resource adaptor to be used | ++----------------+-----------------------------------------------------------------------------------+ +| **activate** | Activate device/interface, for devices that support a separate activation step. | ++----------------+-----------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for item to configure | ++----------------+-----------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Specific to device adaptor. + +Outcomes +^^^^^^^^ + ++----------------------+------------------------------------------------------------------+ +| **success** | Device successfully configured | ++----------------------+------------------------------------------------------------------+ +| **not-found** | Element to be configured does not exist. | ++----------------------+------------------------------------------------------------------+ +| **not-ready** | Element is not in a state where it can be configured/activated | ++----------------------+------------------------------------------------------------------+ +| **already-active** | Attempt to activate element that is already active | ++----------------------+------------------------------------------------------------------+ +| **failure** | Configure failed for some other reason | ++----------------------+------------------------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Java Plugin Support +------------------- + +Execute node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **execute** node is used to execute Java code supplied as a plugin + +Attributes +^^^^^^^^^^ + ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of plugin to be used | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **method** | Name of method in the plugin class to execute. Method must return void, and take 2 arguments: a Map (for parameters) and a SvcLogicContext (to allow plugin read/write access to context memory) | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Specific to plugin / method + +Outcomes +^^^^^^^^ + ++--------------------------+-----------------------------------------------------------------+ +| **success** | Device successfully configured | ++--------------------------+-----------------------------------------------------------------+ +| **not-found** | Plugin class could not be loaded | ++--------------------------+-----------------------------------------------------------------+ +| **unsupported-method** | Named method taking (Map, SvcLogicContext) could not be found | ++--------------------------+-----------------------------------------------------------------+ +| **failure** | Configure failed for some other reason | ++--------------------------+-----------------------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + +Recording +--------- + +Record node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **record** node is used to record an event. For example, this might be +used to log provisioning events. + +Attributes +^^^^^^^^^^ + ++--------------+---------------------------------------------------+ +| **plugin** | Fully qualified Java class to handle recording. | ++--------------+---------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Parameters will depend on the plugin being used. For the FileRecorder +class, the parameters are as follows + ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **file** | The file to which the record should be written | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **field1** | First field to write. There will be **field** parameters for each field to write, from **field1** through **fieldN**. A special value \_\_TIMESTAMP\_\_ may be assigned to a field to insert the current timestamp | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Outcomes +^^^^^^^^ + ++---------------+--------------------------------------------+ +| **success** | Record successfully written | ++---------------+--------------------------------------------+ +| **failure** | Record could not be successfully written | ++---------------+--------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + +Resource Management +------------------- + +Delete node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **delete** node is used to delete a resource from the local resource +inventory. + +Attributes +^^^^^^^^^^ + ++----------------+-------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+-------------------------------------------------------------+ +| **resource** | Type of resource to delete | ++----------------+-------------------------------------------------------------+ +| **key** | SQL-like string specifying key to delete | ++----------------+-------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+--------------------------------------------+ +| **success** | Resource specified deleted successfully. | ++---------------+--------------------------------------------+ +| *failure*> | Resource specified was not deleted | ++---------------+--------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Exists node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **exists** node is used to determine whether a particular instance of +a resource exists. For example, this might be used to test whether a +particular switch CLLI is provisioned. + +Attributes +^^^^^^^^^^ + ++----------------+-------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+-------------------------------------------------------------+ +| **resource** | Type of resource to check | ++----------------+-------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check for | ++----------------+-------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-------------+---------------------------------+ +| **true** | Resource specified exists. | ++-------------+---------------------------------+ +| **false** | Resource specified is unknown | ++-------------+---------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Get-resource node +~~~~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **get-resource** node is used to retrieve information about a +particular resource and make it available to other nodes in the service +logic tree. For example, this might be used to retrieve information +about a particular uni-port. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to retrieve | ++----------------+------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+------------------------------------------------------------------------------------------+ +| **pfx** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------------------------------+ +| **select** | String to specify, if key matches multiple entries, which entry should take precedence | ++----------------+------------------------------------------------------------------------------------------+ +| **order-by** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-----------------+--------------------------------------------------+ +| **success** | Resource successfully retrieved | ++-----------------+--------------------------------------------------+ +| **not-found** | Resource referenced does not exist | ++-----------------+--------------------------------------------------+ +| **failure** | Resource retrieve failed for some other reason | ++-----------------+--------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Is-available node +~~~~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **is-available** node is used to determine whether a particular type +of resource is available. For example, this might be used to test +whether any ports are available for assignment on a particular switch. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------+ +| **resource** | Type of resource to check | ++----------------+------------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check for | ++----------------+------------------------------------------------------------------+ +| **pfx** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-------------+---------------------------------------+ +| **true** | Resource requested is available | ++-------------+---------------------------------------+ +| **false** | Resource requested is not available | ++-------------+---------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Notify node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **notify** node is used to inform an external application (e.g. A&AI) +that a resource was updated. + +Attributes +^^^^^^^^^^ + ++----------------+---------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+---------------------------------------------------------------------+ +| **resource** | Identifies resource that was updated | ++----------------+---------------------------------------------------------------------+ +| **action** | Action that triggered notification to be sent (ADD/UPDATE/DELETE) | ++----------------+---------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+----------------------------------------+ +| **success** | Notification was successful | ++---------------+----------------------------------------+ +| **failure** | Notification failed is not available | ++---------------+----------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Release node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **release** node is used to mark a resource as no longer in use, and +thus available for assignment. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------+ +| **resource** | Type of resource to release | ++----------------+------------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check of resource to release | ++----------------+------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-----------------+-------------------------------------------------+ +| **success** | Resource successfully released | ++-----------------+-------------------------------------------------+ +| **not-found** | Resource referenced does not exist | ++-----------------+-------------------------------------------------+ +| **failure** | Resource release failed for some other reason | ++-----------------+-------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Reserve node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **reserve** node is used to reserve a particular type of resource.. +For example, this might be used to reserve a port on a particular +switch. + +Attributes +^^^^^^^^^^ + ++----------------+----------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+----------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to reserve | ++----------------+----------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for reservation | ++----------------+----------------------------------------------------------------------------------------------+ +| **select** | String to specify, if **key** matches multiple entries, which entry should take precedence | ++----------------+----------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+----------------------------------------------------+ +| **success** | Resource requested was successfully reserved | ++---------------+----------------------------------------------------+ +| **failure** | Resource requested was not successfully reserved | ++---------------+----------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Save node +~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **save** node is used to save information about a particular resource +to persistent storage. For example, this might be used to save +information about a particular uni-port. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to save | ++----------------+------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+------------------------------------------------------------------------------------------+ +| **force** | If "true", save resource even if this resource is already stored in persistent storage | ++----------------+------------------------------------------------------------------------------------------+ +| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext | ++----------------+------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to save (columns) are specified as parameters, with each name +corresponding to a column name and each value corresponding to the value +to set. + +Outcomes +^^^^^^^^ + ++---------------+-------------------------------+ +| **success** | Resource successfully saved | ++---------------+-------------------------------+ +| **failure** | Resource save failed | ++---------------+-------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Update node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **update** node is used to update information about a particular +resource to persistent storage. + +Attributes +^^^^^^^^^^ + ++----------------+----------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+----------------------------------------------------------------------------------------+ +| **resource** | Type of resource to update | ++----------------+----------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+----------------------------------------------------------------------------------------+ +| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext | ++----------------+----------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to save (columns) are specified as parameters, with each name +corresponding to a column name and each value corresponding to the value +to set. + +Outcomes +^^^^^^^^ + ++---------------+-------------------------------+ +| **success** | Resource successfully saved | ++---------------+-------------------------------+ +| **failure** | Resource save failed | ++---------------+-------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + diff --git a/docs/sli/core/docs/offeredapis.rst b/docs/sli/core/docs/offeredapis.rst new file mode 100644 index 00000000..42eafdd4 --- /dev/null +++ b/docs/sli/core/docs/offeredapis.rst @@ -0,0 +1,12 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Offered APIs +============ + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + apis/sliapi.rst + diff --git a/docs/sli/core/docs/release-notes.rst b/docs/sli/core/docs/release-notes.rst new file mode 100644 index 00000000..b4516570 --- /dev/null +++ b/docs/sli/core/docs/release-notes.rst @@ -0,0 +1,46 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +.. note:: + * This Release Notes must be updated each time the team decides to Release new artifacts. + * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes. + * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes. + * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release. + * This note must be removed after content has been added. + + +Version: x.y.z +-------------- + + +:Release Date: yyyy-mm-dd + + + +**New Features** + +One or two sentences explaining the purpose of this Release. + +**Bug Fixes** + - `CIMAN-65 `_ and a sentence explaining what this defect is addressing. +**Known Issues** + - `CIMAN-65 `_ and two, three sentences. + One sentences explaining what is the issue. + + Another sentence explaining the impact of the issue. + + And an optional sentence providing a workaround. + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + +=========== \ No newline at end of file diff --git a/docs/sli/northbound/apis/asdcApi.rst b/docs/sli/northbound/apis/asdcApi.rst new file mode 100644 index 00000000..c9091401 --- /dev/null +++ b/docs/sli/northbound/apis/asdcApi.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +ASDC-API (2017-02-01) +===================== + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + + +.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/northbound.git;a=blob_plain;f=asdcApi/model/src/main/resources/asdc-api.20170201.json + + diff --git a/docs/sli/northbound/apis/dataChange.rst b/docs/sli/northbound/apis/dataChange.rst new file mode 100644 index 00000000..9a9dc044 --- /dev/null +++ b/docs/sli/northbound/apis/dataChange.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +dataChange(2015-05-19) +====================== + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + + +.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/northbound.git;a=blob_plain;f=dataChange/model/src/main/resources/dataChange.20150519.json + + diff --git a/docs/sli/northbound/architecture.rst b/docs/sli/northbound/architecture.rst new file mode 100644 index 00000000..f2648df3 --- /dev/null +++ b/docs/sli/northbound/architecture.rst @@ -0,0 +1,12 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + + +Capabilities +------------ +This repository contains source code and Yang models for the northbound interfaces +used to process updates from SDC (ASDC-API) and for processing data change notifications +from A&AI (dataChange). diff --git a/docs/sli/northbound/build.rst b/docs/sli/northbound/build.rst new file mode 100644 index 00000000..0a4c308e --- /dev/null +++ b/docs/sli/northbound/build.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Build +===== + + +Environment +----------- +Requires maven release 3.3 or greater + +Steps +----- +To compile this code: + +1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories. + +2. To compile, run "mvn clean install". \ No newline at end of file diff --git a/docs/sli/northbound/docs/apis/asdcApi.rst b/docs/sli/northbound/docs/apis/asdcApi.rst new file mode 100644 index 00000000..c9091401 --- /dev/null +++ b/docs/sli/northbound/docs/apis/asdcApi.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +ASDC-API (2017-02-01) +===================== + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + + +.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/northbound.git;a=blob_plain;f=asdcApi/model/src/main/resources/asdc-api.20170201.json + + diff --git a/docs/sli/northbound/docs/apis/dataChange.rst b/docs/sli/northbound/docs/apis/dataChange.rst new file mode 100644 index 00000000..9a9dc044 --- /dev/null +++ b/docs/sli/northbound/docs/apis/dataChange.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +dataChange(2015-05-19) +====================== + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + + +.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/northbound.git;a=blob_plain;f=dataChange/model/src/main/resources/dataChange.20150519.json + + diff --git a/docs/sli/northbound/docs/architecture.rst b/docs/sli/northbound/docs/architecture.rst new file mode 100644 index 00000000..f2648df3 --- /dev/null +++ b/docs/sli/northbound/docs/architecture.rst @@ -0,0 +1,12 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + + +Capabilities +------------ +This repository contains source code and Yang models for the northbound interfaces +used to process updates from SDC (ASDC-API) and for processing data change notifications +from A&AI (dataChange). diff --git a/docs/sli/northbound/docs/build.rst b/docs/sli/northbound/docs/build.rst new file mode 100644 index 00000000..0a4c308e --- /dev/null +++ b/docs/sli/northbound/docs/build.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Build +===== + + +Environment +----------- +Requires maven release 3.3 or greater + +Steps +----- +To compile this code: + +1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories. + +2. To compile, run "mvn clean install". \ No newline at end of file diff --git a/docs/sli/northbound/docs/index.rst b/docs/sli/northbound/docs/index.rst new file mode 100644 index 00000000..9be06c84 --- /dev/null +++ b/docs/sli/northbound/docs/index.rst @@ -0,0 +1,13 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +CCSDK SLI Northbound API +------------------------ +.. toctree:: + :maxdepth: 1 + + architecture.rst + offeredapis.rst + logging.rst + build.rst + release-notes.rst + diff --git a/docs/sli/northbound/docs/logging.rst b/docs/sli/northbound/docs/logging.rst new file mode 100644 index 00000000..187eb03b --- /dev/null +++ b/docs/sli/northbound/docs/logging.rst @@ -0,0 +1,14 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +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. + + diff --git a/docs/sli/northbound/docs/nodes.rst b/docs/sli/northbound/docs/nodes.rst new file mode 100644 index 00000000..3bdeabcf --- /dev/null +++ b/docs/sli/northbound/docs/nodes.rst @@ -0,0 +1,1031 @@ +--- Service Logic Interpreter --- Dan Timoney --- 2014-11-12 --- + +Supported node types +==================== + +The following built-in node types are currently supported: + +- Flow Control + + - `**block** <#Block_node>`__ + + - `**call** <#Call_node>`__ + + - `**for** <#For_node>`__ + + - `**return** <#Return_node>`__ + + - `**set** <#Set_node>`__ + + - `**switch** <#Switch_node>`__ + +- Device Management + + - `**configure** <#Configure_node>`__ + +- Java Plugin Support + + - `**execute** <#Execute_node>`__ + +- Recording + + - `**record** <#Record_node>`__ + +- Resource Management + + - `**delete** <#Delete_node>`__ + + - `**exists** <#Exists_node>`__ + + - `**get-resource** <#Get-resource_node>`__ + + - `**is-available** <#Is-available_node>`__ + + - `**notify** <#Notify_node>`__ + + - `**release** <#Release_node>`__ + + - `**reserve** <#Reserve_node>`__ + + - `**save** <#Save_node>`__ + + - `**update** <#Update_node>`__ + +Flow Control +------------ + +Block node +~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **block** node is used to executes a set of nodes. + +Attributes +^^^^^^^^^^ + ++--------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| **atomic** | if *true*, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out. | ++--------------+-----------------------------------------------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + +None + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Call node +~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **call** node is used to call another graph + +Attributes +^^^^^^^^^^ + ++---------------+------------------------------------------------------------------------------------+ +| **module** | Module of directed graph to call. If unset, defaults to that of calling graph | ++---------------+------------------------------------------------------------------------------------+ +| **rpc** | rpc of directed graph to call. | ++---------------+------------------------------------------------------------------------------------+ +| **version** | version of graph to call, If unset, uses active version. | ++---------------+------------------------------------------------------------------------------------+ +| **mode** | mode (sync/async) of graph to call. If unset, defaults to that of calling graph. | ++---------------+------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Not applicable + +Outcomes +^^^^^^^^ + ++-----------------+------------------------------+ +| **success** | Sub graph returned success | ++-----------------+------------------------------+ +| **not-found** | Graph not found | ++-----------------+------------------------------+ +| **failure** | Subgraph returned success | ++-----------------+------------------------------+ + +Table: . + +Example +^^^^^^^ + +:: + + + +For node +~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **for** node provides a fixed iteration looping mechanism, similar to +the Java for loop + +Attributes +^^^^^^^^^^ + ++-------------+------------------+ +| **index** | index variable | ++-------------+------------------+ +| **start** | initial value | ++-------------+------------------+ +| **end** | maximum value | ++-------------+------------------+ + +Parameters +^^^^^^^^^^ + +Not applicable. + +Outcomes +^^^^^^^^ + +Not applicable. The **status** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + + + + + +Return node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **return** node is used to return a status to the invoking MD-SAL +application + +Attributes +^^^^^^^^^^ + ++--------------+---------------------------------------------------+ +| **status** | Status value to return (*success* or *failure*) | ++--------------+---------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +The following optional parameters may be passed to convey more detailed +status information. + ++---------------------+-----------------------------------------------------------------+ +| **error-code** | A brief, usually numeric, code indicating the error condition | ++---------------------+-----------------------------------------------------------------+ +| **error-message** | A more detailed error message | ++---------------------+-----------------------------------------------------------------+ + +Outcomes +^^^^^^^^ + +Not applicable. The **status** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + + +Set node +~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **set** node is used to set one or more values in the execution +context + +Attributes +^^^^^^^^^^ + ++---------------------+-------------------------------------------------------------------------------------+ +| **only-if-unset** | If true the set node will only execute if the current value of the target is null | ++---------------------+-------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to be set are passed as parameters + +Outcomes +^^^^^^^^ + +Not applicable. The **set** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + +Switch node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **switch** node is used to make a decision based on its **test** +attribute. + +Attributes +^^^^^^^^^^ + ++------------+---------------------+ +| **test** | Condition to test | ++------------+---------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + +Depends on the **test** condition + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device Management +----------------- + +Configure node +~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **configure** node is used to configure a device. + +Attributes +^^^^^^^^^^ + ++----------------+-----------------------------------------------------------------------------------+ +| **adaptor** | Fully qualified Java class of resource adaptor to be used | ++----------------+-----------------------------------------------------------------------------------+ +| **activate** | Activate device/interface, for devices that support a separate activation step. | ++----------------+-----------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for item to configure | ++----------------+-----------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Specific to device adaptor. + +Outcomes +^^^^^^^^ + ++----------------------+------------------------------------------------------------------+ +| **success** | Device successfully configured | ++----------------------+------------------------------------------------------------------+ +| **not-found** | Element to be configured does not exist. | ++----------------------+------------------------------------------------------------------+ +| **not-ready** | Element is not in a state where it can be configured/activated | ++----------------------+------------------------------------------------------------------+ +| **already-active** | Attempt to activate element that is already active | ++----------------------+------------------------------------------------------------------+ +| **failure** | Configure failed for some other reason | ++----------------------+------------------------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Java Plugin Support +------------------- + +Execute node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **execute** node is used to execute Java code supplied as a plugin + +Attributes +^^^^^^^^^^ + ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of plugin to be used | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **method** | Name of method in the plugin class to execute. Method must return void, and take 2 arguments: a Map (for parameters) and a SvcLogicContext (to allow plugin read/write access to context memory) | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Specific to plugin / method + +Outcomes +^^^^^^^^ + ++--------------------------+-----------------------------------------------------------------+ +| **success** | Device successfully configured | ++--------------------------+-----------------------------------------------------------------+ +| **not-found** | Plugin class could not be loaded | ++--------------------------+-----------------------------------------------------------------+ +| **unsupported-method** | Named method taking (Map, SvcLogicContext) could not be found | ++--------------------------+-----------------------------------------------------------------+ +| **failure** | Configure failed for some other reason | ++--------------------------+-----------------------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + +Recording +--------- + +Record node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **record** node is used to record an event. For example, this might be +used to log provisioning events. + +Attributes +^^^^^^^^^^ + ++--------------+---------------------------------------------------+ +| **plugin** | Fully qualified Java class to handle recording. | ++--------------+---------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Parameters will depend on the plugin being used. For the FileRecorder +class, the parameters are as follows + ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **file** | The file to which the record should be written | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **field1** | First field to write. There will be **field** parameters for each field to write, from **field1** through **fieldN**. A special value \_\_TIMESTAMP\_\_ may be assigned to a field to insert the current timestamp | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Outcomes +^^^^^^^^ + ++---------------+--------------------------------------------+ +| **success** | Record successfully written | ++---------------+--------------------------------------------+ +| **failure** | Record could not be successfully written | ++---------------+--------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + +Resource Management +------------------- + +Delete node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **delete** node is used to delete a resource from the local resource +inventory. + +Attributes +^^^^^^^^^^ + ++----------------+-------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+-------------------------------------------------------------+ +| **resource** | Type of resource to delete | ++----------------+-------------------------------------------------------------+ +| **key** | SQL-like string specifying key to delete | ++----------------+-------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+--------------------------------------------+ +| **success** | Resource specified deleted successfully. | ++---------------+--------------------------------------------+ +| *failure*> | Resource specified was not deleted | ++---------------+--------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Exists node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **exists** node is used to determine whether a particular instance of +a resource exists. For example, this might be used to test whether a +particular switch CLLI is provisioned. + +Attributes +^^^^^^^^^^ + ++----------------+-------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+-------------------------------------------------------------+ +| **resource** | Type of resource to check | ++----------------+-------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check for | ++----------------+-------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-------------+---------------------------------+ +| **true** | Resource specified exists. | ++-------------+---------------------------------+ +| **false** | Resource specified is unknown | ++-------------+---------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Get-resource node +~~~~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **get-resource** node is used to retrieve information about a +particular resource and make it available to other nodes in the service +logic tree. For example, this might be used to retrieve information +about a particular uni-port. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to retrieve | ++----------------+------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+------------------------------------------------------------------------------------------+ +| **pfx** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------------------------------+ +| **select** | String to specify, if key matches multiple entries, which entry should take precedence | ++----------------+------------------------------------------------------------------------------------------+ +| **order-by** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-----------------+--------------------------------------------------+ +| **success** | Resource successfully retrieved | ++-----------------+--------------------------------------------------+ +| **not-found** | Resource referenced does not exist | ++-----------------+--------------------------------------------------+ +| **failure** | Resource retrieve failed for some other reason | ++-----------------+--------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Is-available node +~~~~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **is-available** node is used to determine whether a particular type +of resource is available. For example, this might be used to test +whether any ports are available for assignment on a particular switch. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------+ +| **resource** | Type of resource to check | ++----------------+------------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check for | ++----------------+------------------------------------------------------------------+ +| **pfx** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-------------+---------------------------------------+ +| **true** | Resource requested is available | ++-------------+---------------------------------------+ +| **false** | Resource requested is not available | ++-------------+---------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Notify node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **notify** node is used to inform an external application (e.g. A&AI) +that a resource was updated. + +Attributes +^^^^^^^^^^ + ++----------------+---------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+---------------------------------------------------------------------+ +| **resource** | Identifies resource that was updated | ++----------------+---------------------------------------------------------------------+ +| **action** | Action that triggered notification to be sent (ADD/UPDATE/DELETE) | ++----------------+---------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+----------------------------------------+ +| **success** | Notification was successful | ++---------------+----------------------------------------+ +| **failure** | Notification failed is not available | ++---------------+----------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Release node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **release** node is used to mark a resource as no longer in use, and +thus available for assignment. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------+ +| **resource** | Type of resource to release | ++----------------+------------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check of resource to release | ++----------------+------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-----------------+-------------------------------------------------+ +| **success** | Resource successfully released | ++-----------------+-------------------------------------------------+ +| **not-found** | Resource referenced does not exist | ++-----------------+-------------------------------------------------+ +| **failure** | Resource release failed for some other reason | ++-----------------+-------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Reserve node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **reserve** node is used to reserve a particular type of resource.. +For example, this might be used to reserve a port on a particular +switch. + +Attributes +^^^^^^^^^^ + ++----------------+----------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+----------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to reserve | ++----------------+----------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for reservation | ++----------------+----------------------------------------------------------------------------------------------+ +| **select** | String to specify, if **key** matches multiple entries, which entry should take precedence | ++----------------+----------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+----------------------------------------------------+ +| **success** | Resource requested was successfully reserved | ++---------------+----------------------------------------------------+ +| **failure** | Resource requested was not successfully reserved | ++---------------+----------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Save node +~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **save** node is used to save information about a particular resource +to persistent storage. For example, this might be used to save +information about a particular uni-port. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to save | ++----------------+------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+------------------------------------------------------------------------------------------+ +| **force** | If "true", save resource even if this resource is already stored in persistent storage | ++----------------+------------------------------------------------------------------------------------------+ +| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext | ++----------------+------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to save (columns) are specified as parameters, with each name +corresponding to a column name and each value corresponding to the value +to set. + +Outcomes +^^^^^^^^ + ++---------------+-------------------------------+ +| **success** | Resource successfully saved | ++---------------+-------------------------------+ +| **failure** | Resource save failed | ++---------------+-------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Update node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **update** node is used to update information about a particular +resource to persistent storage. + +Attributes +^^^^^^^^^^ + ++----------------+----------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+----------------------------------------------------------------------------------------+ +| **resource** | Type of resource to update | ++----------------+----------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+----------------------------------------------------------------------------------------+ +| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext | ++----------------+----------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to save (columns) are specified as parameters, with each name +corresponding to a column name and each value corresponding to the value +to set. + +Outcomes +^^^^^^^^ + ++---------------+-------------------------------+ +| **success** | Resource successfully saved | ++---------------+-------------------------------+ +| **failure** | Resource save failed | ++---------------+-------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + diff --git a/docs/sli/northbound/docs/offeredapis.rst b/docs/sli/northbound/docs/offeredapis.rst new file mode 100644 index 00000000..2eebdec9 --- /dev/null +++ b/docs/sli/northbound/docs/offeredapis.rst @@ -0,0 +1,13 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Offered APIs +============ + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + apis/asdcApi.rst + apis/dataChange.rst + diff --git a/docs/sli/northbound/docs/release-notes.rst b/docs/sli/northbound/docs/release-notes.rst new file mode 100644 index 00000000..21ff338c --- /dev/null +++ b/docs/sli/northbound/docs/release-notes.rst @@ -0,0 +1,45 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +.. note:: + * This Release Notes must be updated each time the team decides to Release new artifacts. + * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes. + * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes. + * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release. + * This note must be removed after content has been added. + + +Version: x.y.z +-------------- + + +:Release Date: yyyy-mm-dd + + + +**New Features** + +One or two sentences explaining the purpose of this Release. + +**Bug Fixes** + - `CIMAN-65 `_ and a sentence explaining what this defect is addressing. +**Known Issues** + - `CIMAN-65 `_ and two, three sentences. + One sentences explaining what is the issue. + + Another sentence explaining the impact of the issue. + + And an optional sentence providing a workaround. + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + diff --git a/docs/sli/northbound/index.rst b/docs/sli/northbound/index.rst new file mode 100644 index 00000000..9be06c84 --- /dev/null +++ b/docs/sli/northbound/index.rst @@ -0,0 +1,13 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +CCSDK SLI Northbound API +------------------------ +.. toctree:: + :maxdepth: 1 + + architecture.rst + offeredapis.rst + logging.rst + build.rst + release-notes.rst + diff --git a/docs/sli/northbound/logging.rst b/docs/sli/northbound/logging.rst new file mode 100644 index 00000000..187eb03b --- /dev/null +++ b/docs/sli/northbound/logging.rst @@ -0,0 +1,14 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +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. + + diff --git a/docs/sli/northbound/nodes.rst b/docs/sli/northbound/nodes.rst new file mode 100644 index 00000000..3bdeabcf --- /dev/null +++ b/docs/sli/northbound/nodes.rst @@ -0,0 +1,1031 @@ +--- Service Logic Interpreter --- Dan Timoney --- 2014-11-12 --- + +Supported node types +==================== + +The following built-in node types are currently supported: + +- Flow Control + + - `**block** <#Block_node>`__ + + - `**call** <#Call_node>`__ + + - `**for** <#For_node>`__ + + - `**return** <#Return_node>`__ + + - `**set** <#Set_node>`__ + + - `**switch** <#Switch_node>`__ + +- Device Management + + - `**configure** <#Configure_node>`__ + +- Java Plugin Support + + - `**execute** <#Execute_node>`__ + +- Recording + + - `**record** <#Record_node>`__ + +- Resource Management + + - `**delete** <#Delete_node>`__ + + - `**exists** <#Exists_node>`__ + + - `**get-resource** <#Get-resource_node>`__ + + - `**is-available** <#Is-available_node>`__ + + - `**notify** <#Notify_node>`__ + + - `**release** <#Release_node>`__ + + - `**reserve** <#Reserve_node>`__ + + - `**save** <#Save_node>`__ + + - `**update** <#Update_node>`__ + +Flow Control +------------ + +Block node +~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **block** node is used to executes a set of nodes. + +Attributes +^^^^^^^^^^ + ++--------------+-----------------------------------------------------------------------------------------------------------------------------------+ +| **atomic** | if *true*, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out. | ++--------------+-----------------------------------------------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + +None + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Call node +~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **call** node is used to call another graph + +Attributes +^^^^^^^^^^ + ++---------------+------------------------------------------------------------------------------------+ +| **module** | Module of directed graph to call. If unset, defaults to that of calling graph | ++---------------+------------------------------------------------------------------------------------+ +| **rpc** | rpc of directed graph to call. | ++---------------+------------------------------------------------------------------------------------+ +| **version** | version of graph to call, If unset, uses active version. | ++---------------+------------------------------------------------------------------------------------+ +| **mode** | mode (sync/async) of graph to call. If unset, defaults to that of calling graph. | ++---------------+------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Not applicable + +Outcomes +^^^^^^^^ + ++-----------------+------------------------------+ +| **success** | Sub graph returned success | ++-----------------+------------------------------+ +| **not-found** | Graph not found | ++-----------------+------------------------------+ +| **failure** | Subgraph returned success | ++-----------------+------------------------------+ + +Table: . + +Example +^^^^^^^ + +:: + + + +For node +~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **for** node provides a fixed iteration looping mechanism, similar to +the Java for loop + +Attributes +^^^^^^^^^^ + ++-------------+------------------+ +| **index** | index variable | ++-------------+------------------+ +| **start** | initial value | ++-------------+------------------+ +| **end** | maximum value | ++-------------+------------------+ + +Parameters +^^^^^^^^^^ + +Not applicable. + +Outcomes +^^^^^^^^ + +Not applicable. The **status** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + + + + + +Return node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **return** node is used to return a status to the invoking MD-SAL +application + +Attributes +^^^^^^^^^^ + ++--------------+---------------------------------------------------+ +| **status** | Status value to return (*success* or *failure*) | ++--------------+---------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +The following optional parameters may be passed to convey more detailed +status information. + ++---------------------+-----------------------------------------------------------------+ +| **error-code** | A brief, usually numeric, code indicating the error condition | ++---------------------+-----------------------------------------------------------------+ +| **error-message** | A more detailed error message | ++---------------------+-----------------------------------------------------------------+ + +Outcomes +^^^^^^^^ + +Not applicable. The **status** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + + +Set node +~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **set** node is used to set one or more values in the execution +context + +Attributes +^^^^^^^^^^ + ++---------------------+-------------------------------------------------------------------------------------+ +| **only-if-unset** | If true the set node will only execute if the current value of the target is null | ++---------------------+-------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to be set are passed as parameters + +Outcomes +^^^^^^^^ + +Not applicable. The **set** node has no outcomes. + +Example +^^^^^^^ + +:: + + + + + +Switch node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **switch** node is used to make a decision based on its **test** +attribute. + +Attributes +^^^^^^^^^^ + ++------------+---------------------+ +| **test** | Condition to test | ++------------+---------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + +Depends on the **test** condition + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device Management +----------------- + +Configure node +~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **configure** node is used to configure a device. + +Attributes +^^^^^^^^^^ + ++----------------+-----------------------------------------------------------------------------------+ +| **adaptor** | Fully qualified Java class of resource adaptor to be used | ++----------------+-----------------------------------------------------------------------------------+ +| **activate** | Activate device/interface, for devices that support a separate activation step. | ++----------------+-----------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for item to configure | ++----------------+-----------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Specific to device adaptor. + +Outcomes +^^^^^^^^ + ++----------------------+------------------------------------------------------------------+ +| **success** | Device successfully configured | ++----------------------+------------------------------------------------------------------+ +| **not-found** | Element to be configured does not exist. | ++----------------------+------------------------------------------------------------------+ +| **not-ready** | Element is not in a state where it can be configured/activated | ++----------------------+------------------------------------------------------------------+ +| **already-active** | Attempt to activate element that is already active | ++----------------------+------------------------------------------------------------------+ +| **failure** | Configure failed for some other reason | ++----------------------+------------------------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Java Plugin Support +------------------- + +Execute node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **execute** node is used to execute Java code supplied as a plugin + +Attributes +^^^^^^^^^^ + ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of plugin to be used | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **method** | Name of method in the plugin class to execute. Method must return void, and take 2 arguments: a Map (for parameters) and a SvcLogicContext (to allow plugin read/write access to context memory) | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Specific to plugin / method + +Outcomes +^^^^^^^^ + ++--------------------------+-----------------------------------------------------------------+ +| **success** | Device successfully configured | ++--------------------------+-----------------------------------------------------------------+ +| **not-found** | Plugin class could not be loaded | ++--------------------------+-----------------------------------------------------------------+ +| **unsupported-method** | Named method taking (Map, SvcLogicContext) could not be found | ++--------------------------+-----------------------------------------------------------------+ +| **failure** | Configure failed for some other reason | ++--------------------------+-----------------------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + + + + + + + + +Recording +--------- + +Record node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **record** node is used to record an event. For example, this might be +used to log provisioning events. + +Attributes +^^^^^^^^^^ + ++--------------+---------------------------------------------------+ +| **plugin** | Fully qualified Java class to handle recording. | ++--------------+---------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Parameters will depend on the plugin being used. For the FileRecorder +class, the parameters are as follows + ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **file** | The file to which the record should be written | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **field1** | First field to write. There will be **field** parameters for each field to write, from **field1** through **fieldN**. A special value \_\_TIMESTAMP\_\_ may be assigned to a field to insert the current timestamp | ++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Outcomes +^^^^^^^^ + ++---------------+--------------------------------------------+ +| **success** | Record successfully written | ++---------------+--------------------------------------------+ +| **failure** | Record could not be successfully written | ++---------------+--------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + +Resource Management +------------------- + +Delete node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **delete** node is used to delete a resource from the local resource +inventory. + +Attributes +^^^^^^^^^^ + ++----------------+-------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+-------------------------------------------------------------+ +| **resource** | Type of resource to delete | ++----------------+-------------------------------------------------------------+ +| **key** | SQL-like string specifying key to delete | ++----------------+-------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+--------------------------------------------+ +| **success** | Resource specified deleted successfully. | ++---------------+--------------------------------------------+ +| *failure*> | Resource specified was not deleted | ++---------------+--------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Exists node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **exists** node is used to determine whether a particular instance of +a resource exists. For example, this might be used to test whether a +particular switch CLLI is provisioned. + +Attributes +^^^^^^^^^^ + ++----------------+-------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+-------------------------------------------------------------+ +| **resource** | Type of resource to check | ++----------------+-------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check for | ++----------------+-------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-------------+---------------------------------+ +| **true** | Resource specified exists. | ++-------------+---------------------------------+ +| **false** | Resource specified is unknown | ++-------------+---------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Get-resource node +~~~~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **get-resource** node is used to retrieve information about a +particular resource and make it available to other nodes in the service +logic tree. For example, this might be used to retrieve information +about a particular uni-port. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to retrieve | ++----------------+------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+------------------------------------------------------------------------------------------+ +| **pfx** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------------------------------+ +| **select** | String to specify, if key matches multiple entries, which entry should take precedence | ++----------------+------------------------------------------------------------------------------------------+ +| **order-by** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-----------------+--------------------------------------------------+ +| **success** | Resource successfully retrieved | ++-----------------+--------------------------------------------------+ +| **not-found** | Resource referenced does not exist | ++-----------------+--------------------------------------------------+ +| **failure** | Resource retrieve failed for some other reason | ++-----------------+--------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Is-available node +~~~~~~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **is-available** node is used to determine whether a particular type +of resource is available. For example, this might be used to test +whether any ports are available for assignment on a particular switch. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------+ +| **resource** | Type of resource to check | ++----------------+------------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check for | ++----------------+------------------------------------------------------------------+ +| **pfx** | Prefix to add to context variable names set for data retrieved | ++----------------+------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-------------+---------------------------------------+ +| **true** | Resource requested is available | ++-------------+---------------------------------------+ +| **false** | Resource requested is not available | ++-------------+---------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Notify node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **notify** node is used to inform an external application (e.g. A&AI) +that a resource was updated. + +Attributes +^^^^^^^^^^ + ++----------------+---------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+---------------------------------------------------------------------+ +| **resource** | Identifies resource that was updated | ++----------------+---------------------------------------------------------------------+ +| **action** | Action that triggered notification to be sent (ADD/UPDATE/DELETE) | ++----------------+---------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+----------------------------------------+ +| **success** | Notification was successful | ++---------------+----------------------------------------+ +| **failure** | Notification failed is not available | ++---------------+----------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Release node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **release** node is used to mark a resource as no longer in use, and +thus available for assignment. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------+ +| **resource** | Type of resource to release | ++----------------+------------------------------------------------------------------+ +| **key** | SQL-like string specifying key to check of resource to release | ++----------------+------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++-----------------+-------------------------------------------------+ +| **success** | Resource successfully released | ++-----------------+-------------------------------------------------+ +| **not-found** | Resource referenced does not exist | ++-----------------+-------------------------------------------------+ +| **failure** | Resource release failed for some other reason | ++-----------------+-------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + + + + +Reserve node +~~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **reserve** node is used to reserve a particular type of resource.. +For example, this might be used to reserve a port on a particular +switch. + +Attributes +^^^^^^^^^^ + ++----------------+----------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+----------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to reserve | ++----------------+----------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for reservation | ++----------------+----------------------------------------------------------------------------------------------+ +| **select** | String to specify, if **key** matches multiple entries, which entry should take precedence | ++----------------+----------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +None + +Outcomes +^^^^^^^^ + ++---------------+----------------------------------------------------+ +| **success** | Resource requested was successfully reserved | ++---------------+----------------------------------------------------+ +| **failure** | Resource requested was not successfully reserved | ++---------------+----------------------------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Save node +~~~~~~~~~ + +Description +^^^^^^^^^^^ + +A **save** node is used to save information about a particular resource +to persistent storage. For example, this might be used to save +information about a particular uni-port. + +Attributes +^^^^^^^^^^ + ++----------------+------------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+------------------------------------------------------------------------------------------+ +| **resource** | Type of resource to save | ++----------------+------------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+------------------------------------------------------------------------------------------+ +| **force** | If "true", save resource even if this resource is already stored in persistent storage | ++----------------+------------------------------------------------------------------------------------------+ +| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext | ++----------------+------------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to save (columns) are specified as parameters, with each name +corresponding to a column name and each value corresponding to the value +to set. + +Outcomes +^^^^^^^^ + ++---------------+-------------------------------+ +| **success** | Resource successfully saved | ++---------------+-------------------------------+ +| **failure** | Resource save failed | ++---------------+-------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + + +Update node +~~~~~~~~~~~ + +Description +^^^^^^^^^^^ + +An **update** node is used to update information about a particular +resource to persistent storage. + +Attributes +^^^^^^^^^^ + ++----------------+----------------------------------------------------------------------------------------+ +| **plugin** | Fully qualified Java class of resource adaptor to be used | ++----------------+----------------------------------------------------------------------------------------+ +| **resource** | Type of resource to update | ++----------------+----------------------------------------------------------------------------------------+ +| **key** | SQL-like string specifying criteria for retrieval | ++----------------+----------------------------------------------------------------------------------------+ +| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext | ++----------------+----------------------------------------------------------------------------------------+ + +Parameters +^^^^^^^^^^ + +Values to save (columns) are specified as parameters, with each name +corresponding to a column name and each value corresponding to the value +to set. + +Outcomes +^^^^^^^^ + ++---------------+-------------------------------+ +| **success** | Resource successfully saved | ++---------------+-------------------------------+ +| **failure** | Resource save failed | ++---------------+-------------------------------+ + +Example +^^^^^^^ + +:: + + + + + + + + + diff --git a/docs/sli/northbound/offeredapis.rst b/docs/sli/northbound/offeredapis.rst new file mode 100644 index 00000000..2eebdec9 --- /dev/null +++ b/docs/sli/northbound/offeredapis.rst @@ -0,0 +1,13 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Offered APIs +============ + +.. toctree:: + :maxdepth: 1 + :titlesonly: + + apis/asdcApi.rst + apis/dataChange.rst + diff --git a/docs/sli/northbound/release-notes.rst b/docs/sli/northbound/release-notes.rst new file mode 100644 index 00000000..21ff338c --- /dev/null +++ b/docs/sli/northbound/release-notes.rst @@ -0,0 +1,45 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +.. note:: + * This Release Notes must be updated each time the team decides to Release new artifacts. + * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes. + * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes. + * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release. + * This note must be removed after content has been added. + + +Version: x.y.z +-------------- + + +:Release Date: yyyy-mm-dd + + + +**New Features** + +One or two sentences explaining the purpose of this Release. + +**Bug Fixes** + - `CIMAN-65 `_ and a sentence explaining what this defect is addressing. +**Known Issues** + - `CIMAN-65 `_ and two, three sentences. + One sentences explaining what is the issue. + + Another sentence explaining the impact of the issue. + + And an optional sentence providing a workaround. + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + diff --git a/docs/sli/plugins/architecture.rst b/docs/sli/plugins/architecture.rst new file mode 100644 index 00000000..8daa0d3b --- /dev/null +++ b/docs/sli/plugins/architecture.rst @@ -0,0 +1,27 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + +.. note:: + * This section is used to describe a software component from a high level + view of capability, common usage scenarios, and interactions with other + components required in the usage scenarios. + + * The architecture section is typically: provided in a platform-component + and sdk collections; and referenced from developer and user guides. + + * This note must be removed after content has been added. + + +Capabilities +------------ + + +Usage Scenarios +--------------- + + +Interactions +------------ diff --git a/docs/sli/plugins/build.rst b/docs/sli/plugins/build.rst new file mode 100644 index 00000000..0a4c308e --- /dev/null +++ b/docs/sli/plugins/build.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Build +===== + + +Environment +----------- +Requires maven release 3.3 or greater + +Steps +----- +To compile this code: + +1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories. + +2. To compile, run "mvn clean install". \ No newline at end of file diff --git a/docs/sli/plugins/docs/architecture.rst b/docs/sli/plugins/docs/architecture.rst new file mode 100644 index 00000000..8daa0d3b --- /dev/null +++ b/docs/sli/plugins/docs/architecture.rst @@ -0,0 +1,27 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + +.. note:: + * This section is used to describe a software component from a high level + view of capability, common usage scenarios, and interactions with other + components required in the usage scenarios. + + * The architecture section is typically: provided in a platform-component + and sdk collections; and referenced from developer and user guides. + + * This note must be removed after content has been added. + + +Capabilities +------------ + + +Usage Scenarios +--------------- + + +Interactions +------------ diff --git a/docs/sli/plugins/docs/build.rst b/docs/sli/plugins/docs/build.rst new file mode 100644 index 00000000..0a4c308e --- /dev/null +++ b/docs/sli/plugins/docs/build.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Build +===== + + +Environment +----------- +Requires maven release 3.3 or greater + +Steps +----- +To compile this code: + +1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories. + +2. To compile, run "mvn clean install". \ No newline at end of file diff --git a/docs/sli/plugins/docs/index.rst b/docs/sli/plugins/docs/index.rst new file mode 100644 index 00000000..83bb78a8 --- /dev/null +++ b/docs/sli/plugins/docs/index.rst @@ -0,0 +1,12 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +CCSDK Service Logic Interpretor Plugins +---------------------------------------- +.. toctree:: + :maxdepth: 1 + + architecture.rst + offeredapis.rst + logging.rst + build.rst + release-notes.rst diff --git a/docs/sli/plugins/docs/logging.rst b/docs/sli/plugins/docs/logging.rst new file mode 100644 index 00000000..187eb03b --- /dev/null +++ b/docs/sli/plugins/docs/logging.rst @@ -0,0 +1,14 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +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. + + diff --git a/docs/sli/plugins/docs/offeredapis.rst b/docs/sli/plugins/docs/offeredapis.rst new file mode 100644 index 00000000..e20c786c --- /dev/null +++ b/docs/sli/plugins/docs/offeredapis.rst @@ -0,0 +1,6 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Offered APIs +============ + diff --git a/docs/sli/plugins/docs/release-notes.rst b/docs/sli/plugins/docs/release-notes.rst new file mode 100644 index 00000000..b4516570 --- /dev/null +++ b/docs/sli/plugins/docs/release-notes.rst @@ -0,0 +1,46 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +.. note:: + * This Release Notes must be updated each time the team decides to Release new artifacts. + * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes. + * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes. + * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release. + * This note must be removed after content has been added. + + +Version: x.y.z +-------------- + + +:Release Date: yyyy-mm-dd + + + +**New Features** + +One or two sentences explaining the purpose of this Release. + +**Bug Fixes** + - `CIMAN-65 `_ and a sentence explaining what this defect is addressing. +**Known Issues** + - `CIMAN-65 `_ and two, three sentences. + One sentences explaining what is the issue. + + Another sentence explaining the impact of the issue. + + And an optional sentence providing a workaround. + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + +=========== \ No newline at end of file diff --git a/docs/sli/plugins/index.rst b/docs/sli/plugins/index.rst new file mode 100644 index 00000000..83bb78a8 --- /dev/null +++ b/docs/sli/plugins/index.rst @@ -0,0 +1,12 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +CCSDK Service Logic Interpretor Plugins +---------------------------------------- +.. toctree:: + :maxdepth: 1 + + architecture.rst + offeredapis.rst + logging.rst + build.rst + release-notes.rst diff --git a/docs/sli/plugins/logging.rst b/docs/sli/plugins/logging.rst new file mode 100644 index 00000000..187eb03b --- /dev/null +++ b/docs/sli/plugins/logging.rst @@ -0,0 +1,14 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +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. + + diff --git a/docs/sli/plugins/offeredapis.rst b/docs/sli/plugins/offeredapis.rst new file mode 100644 index 00000000..e20c786c --- /dev/null +++ b/docs/sli/plugins/offeredapis.rst @@ -0,0 +1,6 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Offered APIs +============ + diff --git a/docs/sli/plugins/release-notes.rst b/docs/sli/plugins/release-notes.rst new file mode 100644 index 00000000..b4516570 --- /dev/null +++ b/docs/sli/plugins/release-notes.rst @@ -0,0 +1,46 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Release Notes +============= + +.. note:: + * This Release Notes must be updated each time the team decides to Release new artifacts. + * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes. + * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes. + * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release. + * This note must be removed after content has been added. + + +Version: x.y.z +-------------- + + +:Release Date: yyyy-mm-dd + + + +**New Features** + +One or two sentences explaining the purpose of this Release. + +**Bug Fixes** + - `CIMAN-65 `_ and a sentence explaining what this defect is addressing. +**Known Issues** + - `CIMAN-65 `_ and two, three sentences. + One sentences explaining what is the issue. + + Another sentence explaining the impact of the issue. + + And an optional sentence providing a workaround. + +**Security Issues** + You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE `_ + + +**Upgrade Notes** + +**Deprecation Notes** + +**Other** + +=========== \ No newline at end of file -- 2.16.6