.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

.. _common-specification:

Common Elements of the Component Specification
==============================================

This page describes the component specification (JSON) sections that are
common to both Docker and CDAP components. Differences for each are
pointed out below. Elements that are very different, and described in
the CDAP or Docker specific pages.

.. _metadata:

Component Metadata
------------------

Metadata refers to the properties found under the ``self`` JSON. This
group of properties is used to uniquely identify this component
specification and identify the component that this specification is used
to capture.

Example:

::

    "self": {
        "version": "1.0.0",
        "name": "asimov.component.kpi_anomaly",
        "description": "Classifies VNF KPI data as anomalous",
        "component_type": "docker"
    },

``self`` Schema:

+-------------+--------+----------------+
| Property    | Type   | Description    |
| Name        |        |                |
+=============+========+================+
| version     | string | *Required*.    |
|             |        | Semantic       |
|             |        | version        |
|             |        | for this       |
|             |        | specification  |
+-------------+--------+----------------+
| name        | string | *Required*.    |
|             |        | Full           |
|             |        | name of        |
|             |        | this           |
|             |        | component      |
|             |        | which is       |
|             |        | also           |
|             |        | used as        |
|             |        | this           |
|             |        | component's    |
|             |        | catalog        |
|             |        | id.            |
+-------------+--------+----------------+
| description | string | *Required*     |
|             |        | Human-readable |
|             |        | text           |
|             |        | describing     |
|             |        | the            |
|             |        | component      |
|             |        | and the        |
|             |        | components     |
|             |        | functional     |
|             |        | purpose.       |
+-------------+--------+----------------+
| component_t\| string | *Required*     |
| ype         |        | Identify       |
|             |        | what           |
|             |        | containe\      |
|             |        | rization       |
|             |        | technolo\      |
|             |        | gy             |
|             |        | this           |
|             |        | componen\      |
|             |        | t              |
|             |        | uses:          |
|             |        | *docker*       |
|             |        | or             |
|             |        | *cdap*.        |
|             |        |                |
+-------------+--------+----------------+

.. _interfaces:

Interfaces
----------

Interfaces are the JSON objects found under the ``streams`` key and the
``services`` key. These are used to describe the interfaces that the
component uses and the interfaces that the component provides. The
description of each interface includes the associated :any:`data
format <data-formats>`.

Streams
~~~~~~~

-  The ``streams`` JSON is for specifying data produced for consumption
   by other components, and the streams expected to subscribe to that is
   produced by other components. These are “fire and forget” type
   interfaces where the publisher of a stream does not expect or parse a
   response from the subscriber.
-  The term ``stream`` here is abstract and neither refers to “CDAP
   streams” or “DMaaP feeds”. While a stream is very likely a DMaaP
   feed, it could be a direct stream of data being routed via HTTP too.
   It abstractly refers to a sequence of data leaving a publisher.
-  Streams have anonymous publish/subscribe semantics, which decouples
   the production of information from its consumption.
-  In general, components are not aware of who they are communicating
   with.
-  Instead, components that are interested in data, subscribe to the
   relevant stream; components that generate data publish to the
   relevant stream.
-  There can be multiple publishers and subscribers to a stream. Streams
   are intended for unidirectional, streaming communication.

Streams interfaces that implement an HTTP endpoint must support POST.

Streams are split into:

+-------------+----+----------+
| Property    | Ty\| Descript\|
| Name        | pe | ion      |
+=============+====+==========+
| subscribes  | JS\| *Require\|
|             | ON | d*.      |
|             | li\| List of  |
|             | st | all      |
|             |    | availabl\|
|             |    | e        |
|             |    | stream   |
|             |    | interfac\|
|             |    | es       |
|             |    | that     |
|             |    | this     |
|             |    | componen\|
|             |    | t        |
|             |    | has that |
|             |    | can be   |
|             |    | used for |
|             |    | subscrib\|
|             |    | ing      |
+-------------+----+----------+
| publishes   | JS\| *Require\|
|             | ON | d*.      |
|             | li\| List of  |
|             | st | all      |
|             |    | stream   |
|             |    | interfac\|
|             |    | es       |
|             |    | that     |
|             |    | this     |
|             |    | componen\|
|             |    | t        |
|             |    | will     |
|             |    | publish  |
|             |    | onto     |
+-------------+----+----------+

Subscribes
^^^^^^^^^^

Example:

.. code:: json

    "streams": {
        "subscribes": [{
            "format": "dcae.vnf.kpi",
            "version": "1.0.0",
            "route": "/data",        // for CDAP this value is not used
            "type": "http"
        }],
    ...
    }

This describes that ``asimov.component.kpi_anomaly`` exposes an HTTP
endpoint called ``/data`` which accepts requests that have the data
format of ``dcae.vnf.kpi`` version ``1.0.0``.

``subscribes`` Schema:

+-------------+----+--------------------+
| Property    | Ty\| Descript\          |
| Name        | pe | ion                |
+=============+====+====================+
| format      | st\| *Require\          |
|             | ri\| d*.                |
|             | ng | Data               |
|             |    | format             |
|             |    | id of              |
|             |    | the data           |
|             |    | format             |
|             |    | that is            |
|             |    | used by            |
|             |    | this               |
|             |    | interfac\          |
|             |    | e                  |
+-------------+----+--------------------+
| version     | st\| *Require\          |
|             | ri\| d*.                |
|             | ng | Data               |
|             |    | format             |
|             |    | version            |
|             |    | of the             |
|             |    | data               |
|             |    | format             |
|             |    | that is            |
|             |    | used by            |
|             |    | this               |
|             |    | interfac\          |
|             |    | e                  |
+-------------+----+--------------------+
| route       | st\| *Require\          |
|             | ri\| d                  |
|             | ng | for HTTP           |
|             |    | and data           |
|             |    | router*.           |
|             |    | The HTTP           |
|             |    | route              |
|             |    | that               |
|             |    | this               |
|             |    | interfac\          |
|             |    | e                  |
|             |    | listens            |
|             |    | on                 |
+-------------+----+--------------------+
| config_key  | st\| *Require\          |
|             | ri\| d \                |
|             | ng | for \              |
|             |    | message_router\    |
|             |    | and data \         |
|             |    | router*.           |
|             |    | The HTTP           |
|             |    | route              |
|             |    | that               |
|             |    | this               |
|             |    | interfac\          |
|             |    | e                  |
|             |    | listens            |
|             |    | on                 |
+-------------+----+--------------------+
| type        | st\| *Require\          |
|             | ri\| d*.                |
|             | ng | Type of            |
|             |    | stream:            |
|             |    | ``http``           |
|             |    | ,                  |
|             |    | ``message_router`` |
|             |    | ,                  |
|             |    | ``data_router``    |
+-------------+----+--------------------+

.. _message-router:

Message router
''''''''''''''

Message router subscribers are http clients rather than http services
and performs a http a ``GET`` call. Thus, message router subscribers
description is structured like message router publishers and requires
``config_key``:

.. code:: json

    "streams": {
        "subscribes": [{
            "format": "dcae.some-format",
            "version": "1.0.0",
            "config_key": "some_format_handle",
            "type": "message router"
        }],
    ...
    }


.. _data-router:

Data router
'''''''''''

Data router subscribers are http or https services that handle ``PUT``
requests from data router. Developers must provide the ``route`` or url
path/endpoint that is expected to handle data router requests. This will
be used to construct the delivery url needed to register the subscriber
to the provisioned feed. Developers must also provide a ``config_key``
because there is dynamic configuration information associated with the
feed that the application will need e.g. username and password. See the
page on :doc:`DMaaP connection objects <../dcae-cli/dmaap-connection-objects>` for more details on
the configuration information.

Example (not tied to the larger example):

.. code:: json

    "streams": {
        "subscribes": [{
            "config_key": "some-sub-dr",
            "format": "sandbox.platform.any",
            "route": "/identity",
            "type": "data_router",
            "version": "0.1.0"
        }],
    ...
    }

Publishes
^^^^^^^^^

Example:

.. code:: json

    "streams": {
    ...
        "publishes": [{
            "format": "asimov.format.integerClassification",
            "version": "1.0.0",
            "config_key": "prediction",
            "type": "http"
        }]
    },

This describes that ``asimov.component.kpi_anomaly`` publishes by making
POST requests to streams that support the data format
``asimov.format.integerClassification`` version ``1.0.0``.

``publishes`` Schema:

+-------------+----+--------------------+
| Property    | Ty\| Descript\          |
| Name        | pe | ion                |
+=============+====+====================+
| format      | st\| *Require\          |
|             | ri\| d*.                |
|             | ng | Data               |
|             |    | format             |
|             |    | id of              |
|             |    | the data           |
|             |    | format             |
|             |    | that is            |
|             |    | used by            |
|             |    | this               |
|             |    | interfac\          |
|             |    | e                  |
+-------------+----+--------------------+
| version     | st\| *Require\          |
|             | ri\| d*.                |
|             | ng | Data               |
|             |    | format             |
|             |    | version            |
|             |    | of the             |
|             |    | data               |
|             |    | format             |
|             |    | that is            |
|             |    | used by            |
|             |    | this               |
|             |    | interfac\          |
|             |    | e                  |
+-------------+----+--------------------+
| config_key  | st\| *Require\          |
|             | ri\| d*.                |
|             | ng | The JSON           |
|             |    | key in             |
|             |    | the                |
|             |    | generate\          |
|             |    | d                  |
|             |    | applicat           |
|             |    | ion                |
|             |    | configur\          |
|             |    | ation              |
|             |    | that               |
|             |    | will be            |
|             |    | used to            |
|             |    | pass the           |
|             |    | downstre\          |
|             |    | am                 |
|             |    | componen\          |
|             |    | t’s                |
|             |    | (the               |
|             |    | subscrib\          |
|             |    | er’s)              |
|             |    | connecti\          |
|             |    | on                 |
|             |    | informat\          |
|             |    | ion.               |
+-------------+----+--------------------+
| type        | st\| *Require\          |
|             | ri\| d*.                |
|             | ng | Type of            |
|             |    | stream:            |
|             |    | ``http``           |
|             |    | ,                  |
|             |    | ``message_router`` |
|             |    | ,                  |
|             |    | ``data_router``    |
+-------------+----+--------------------+

.. message-router-1:

Message router
''''''''''''''

Message router publishers are http clients of DMaap message_router.
Developers must provide a ``config_key`` because there is dynamic
configuration information associated with the feed that the application
will need to receive e.g. topic url, username, password. See the page on
:doc:`DMaaP connection objects <../dcae-cli/dmaap-connection-objects>` for more details on
the configuration information.

Example (not tied to the larger example):

.. code:: json

    "streams": {
    ...
        "publishes": [{
            "config_key": "some-pub-mr",
            "format": "sandbox.platform.any",
            "type": "message_router",
            "version": "0.1.0"
        }]
    }

.. data-router-1:

Data router
'''''''''''

Data router publishers are http clients that make ``PUT`` requests to
data router. Developers must also provide a ``config_key`` because there
is dynamic configuration information associated with the feed that the
application will need to receive e.g. publish url, username, password.
See the page on :doc:`DMaaP connection objects <../dcae-cli/dmaap-connection-objects>` for more details on
the configuration information.

Example (not tied to the larger example):

.. code:: json

    "streams": {
    ...
        "publishes": [{
            "config_key": "some-pub-dr",
            "format": "sandbox.platform.any",
            "type": "data_router",
            "version": "0.1.0"
        }]
    }

Quick Reference
^^^^^^^^^^^^^^^

Refer to this :doc:`Quick Reference <streams-grid>` for a
comparison of the Streams ‘Publishes’ and ‘Subscribes’ sections.

Services
~~~~~~~~

-  The publish / subscribe model is a very flexible communication
   paradigm, but its many-to-many one-way transport is not appropriate
   for RPC request / reply interactions, which are often required in a
   distributed system.
-  Request / reply is done via a Service, which is defined by a pair of
   messages: one for the request and one for the reply.

Services are split into:

+-------------+----+----------+
| Property    | Ty\| Descript\|
| Name        | pe | ion      |
+=============+====+==========+
| calls       | JS\| *Require\|
|             | ON | d*.      |
|             | li\| List of  |
|             | st | all      |
|             |    | service  |
|             |    | interfac\|
|             |    | es       |
|             |    | that     |
|             |    | this     |
|             |    | componen\|
|             |    | t        |
|             |    | will     |
|             |    | call     |
+-------------+----+----------+
| provides    | JS\| *Require\|
|             | ON | d*.      |
|             | li\| List of  |
|             | st | all      |
|             |    | service  |
|             |    | interfac\|
|             |    | es       |
|             |    | that     |
|             |    | this     |
|             |    | componen\|
|             |    | t        |
|             |    | exposes  |
|             |    | and      |
|             |    | provides |
+-------------+----+----------+

Calls
^^^^^

The JSON ``services/calls`` is for specifying that the component relies
on an HTTP(S) service—the component sends that service an HTTP request,
and that service responds with an HTTP reply. An example of this is how
string matching (SM) depends on the AAI Broker. SM performs a
synchronous REST call to the AAI broker, providing it the VMNAME of the
VNF, and the AAI Broker responds with additional details about the VNF.
This dependency is expressed via ``services/calls``. In contrast, the
output of string matching (the alerts it computes) is sent directly to
policy as a fire-and-forget interface, so that is an example of a
``stream``.

Example:

.. code:: json

    "services": {
        "calls": [{
            "config_key": "vnf-db",
            "request": {
                "format": "dcae.vnf.meta",
                "version": "1.0.0"
                },
            "response": {
                "format": "dcae.vnf.kpi",
                "version": "1.0.0"
                }
        }],
    ...
    }

This describes that ``asimov.component.kpi_anomaly`` will make HTTP
calls to a downstream component that accepts requests of data format
``dcae.vnf.meta`` version ``1.0.0`` and is expecting the response to be
``dcae.vnf.kpi`` version ``1.0.0``.

``calls`` Schema:

+-------------+----+----------+
| Property    | Ty\| Descript\|
| Name        | pe | ion      |
+=============+====+==========+
| request     | JS\| *Require\|
|             | ON | d*.      |
|             | ob\| Descript\|
|             | je\| ion      |
|             | ct | of the   |
|             |    | expected |
|             |    | request  |
|             |    | for this |
|             |    | downstre\|
|             |    | am       |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+
| response    | JS\| *Require\|
|             | ON | d*.      |
|             | ob\| Descript\|
|             | je\| ion      |
|             | ct | of the   |
|             |    | expected |
|             |    | response |
|             |    | for this |
|             |    | downstre\|
|             |    | am       |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+
| config_key  | st\| *Require\|
|             | ri\| d*.      |
|             | ng | The JSON |
|             |    | key in   |
|             |    | the      |
|             |    | generate\|
|             |    | d        |
|             |    | applicat |
|             |    | ion      |
|             |    | configur\|
|             |    | ation    |
|             |    | that     |
|             |    | will be  |
|             |    | used to  |
|             |    | pass the |
|             |    | downstre\|
|             |    | am       |
|             |    | componen |
|             |    | t        |
|             |    | connecti\|
|             |    | on       |
|             |    | informat\|
|             |    | ion.     |
+-------------+----+----------+

The JSON object schema for both ``request`` and ``response``:

+-------------+----+----------+
| Property    | Ty\| Descript\|
| Name        | pe | ion      |
+=============+====+==========+
| format      | st\| *Require\|
|             | ri\| d*.      |
|             | ng | Data     |
|             |    | format   |
|             |    | id of    |
|             |    | the data |
|             |    | format   |
|             |    | that is  |
|             |    | used by  |
|             |    | this     |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+
| version     | st\| *Require\|
|             | ri\| d*.      |
|             | ng | Data     |
|             |    | format   |
|             |    | version  |
|             |    | of the   |
|             |    | data     |
|             |    | format   |
|             |    | that is  |
|             |    | used by  |
|             |    | this     |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+

Provides
^^^^^^^^

Example:

.. code:: json

    "services": {
    ...
        "provides": [{
            "route": "/score-vnf",
            "request": {
                "format": "dcae.vnf.meta",
                "version": "1.0.0"
                },
            "response": {
                "format": "asimov.format.integerClassification",
                "version": "1.0.0"
                }
        }]
    },

This describes that ``asimov.component.kpi_anomaly`` provides a service
interface and it is exposed on the ``/score-vnf`` HTTP endpoint. The
endpoint accepts requests that have the data format ``dcae.vnf.meta``
version ``1.0.0`` and gives back a response of
``asimov.format.integerClassification`` version ``1.0.0``.

``provides`` Schema for a Docker component:

+-------------+----+----------+
| Property    | Ty\| Descript\|
| Name        | pe | ion      |
+=============+====+==========+
| request     | JS\| *Require\|
|             | ON | d*.      |
|             | ob\| Descript\|
|             | je\| ion      |
|             | ct | of the   |
|             |    | expected |
|             |    | request  |
|             |    | for this |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+
| response    | JS\| *Require\|
|             | ON | d*.      |
|             | ob\| Descript\|
|             | je\| ion      |
|             | ct | of the   |
|             |    | expected |
|             |    | response |
|             |    | for this |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+
| route       | st\| *Require\|
|             | ri\| d*.      |
|             | ng | The HTTP |
|             |    | route    |
|             |    | that     |
|             |    | this     |
|             |    | interfac\|
|             |    | e        |
|             |    | listens  |
|             |    | on       |
+-------------+----+----------+

The JSON object schema for both ``request`` and ``response``:

+-------------+----+----------+
| Property    | Ty\| Descript\|
| Name        | pe | ion      |
+=============+====+==========+
| format      | st\| *Require\|
|             | ri\| d*.      |
|             | ng | Data     |
|             |    | format   |
|             |    | id of    |
|             |    | the data |
|             |    | format   |
|             |    | that is  |
|             |    | used by  |
|             |    | this     |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+
| version     | st\| *Require\|
|             | ri\| d*.      |
|             | ng | Data     |
|             |    | format   |
|             |    | version  |
|             |    | of the   |
|             |    | data     |
|             |    | format   |
|             |    | that is  |
|             |    | used by  |
|             |    | this     |
|             |    | interfac\|
|             |    | e        |
+-------------+----+----------+

Note, for CDAP, there is a slight variation due to the way CDAP exposes
services:

::

          "provides":[                             // note this is a list of JSON
             {  
                "request":{  ...},
                "response":{  ...},
                "service_name":"name CDAP service", 
                "service_endpoint":"greet",         // E.g the URL is /services/service_name/methods/service_endpoint
                "verb":"GET"                        // GET, PUT, or POST
             }
          ]

``provides`` Schema for a CDAP component:

+-------------+----+-----------+
| Property    | Ty\| Descript\ |
| Name        | pe | ion       |
+=============+====+===========+
| request     | JS\| *Require\ |
|             | ON | d*.       |
|             | ob\| Descript\ |
|             | je\| ion       |
|             | ct | of the    |
|             |    | expected  |
|             |    | request   |
|             |    | data      |
|             |    | format    |
|             |    | for this  |
|             |    | interfac\ |
|             |    | e         |
+-------------+----+-----------+
| response    | JS\| *Require\ |
|             | ON | d*.       |
|             | ob\| Descript\ |
|             | je\| ion       |
|             | ct | of the    |
|             |    | expected  |
|             |    | response  |
|             |    | for this  |
|             |    | interfac\ |
|             |    | e         |
+-------------+----+-----------+
| service_nam\| st\| *Require\ |
| e           | ri\| d*.       |
|             | ng | The CDAP  |
|             |    | service   |
|             |    | name (eg  |
|             |    | “Greetin\ |
|             |    | g”)       |
+-------------+----+-----------+
| service_end | st\| *Require\ |
| point       | ri\| d*.       |
|             | ng | The CDAP  |
|             |    | service   |
|             |    | endpoint  |
|             |    | for this  |
|             |    | service_n\|
|             |    | ame       |
|             |    | (eg       |
|             |    | “/greet”  |
|             |    | )         |
+-------------+----+-----------+
| verb        | st\| *Require\ |
|             | ri\| d*.       |
|             | ng | ‘GET’,    |
|             |    | ‘PUT’ or  |
|             |    | ‘POST’    |
+-------------+----+-----------+

Parameters
----------

``parameters`` is where to specify the component’s application
configuration parameters that are not connection information.

+---------------+------------+----------------------------------+
| Property Name | Type       | Description                      |
+===============+============+==================================+
| parameters    | JSON array | Each entry is a parameter object |
+---------------+------------+----------------------------------+

Parameter object has the following available properties:

+--------------+----+----------+------+
| Property     | Ty\| Descript\| Defa\|
| Name         | pe | ion      | ult  |
+==============+====+==========+======+
| name         | st\| *Require\|      |
|              | ri\| d*.      |      |
|              | ng | The      |      |
|              |    | property |      |
|              |    | name     |      |
|              |    | that     |      |
|              |    | will be  |      |
|              |    | used as  |      |
|              |    | the key  |      |
|              |    | in the   |      |
|              |    | generate\|      |
|              |    | d        |      |
|              |    | config   |      |
+--------------+----+----------+------+
| value        | an\| *Require\|      |
|              | y  | d*.      |      |
|              |    | The      |      |
|              |    | default  |      |
|              |    | value    |      |
|              |    | for the  |      |
|              |    | given    |      |
|              |    | paramete\|      |
|              |    | r        |      |
+--------------+----+----------+------+
| description  | st\| *Require\|      |
|              | ri\| d*.      |      |
|              | ng | Human-re\|      |
|              |    | adable   |      |
|              |    | text     |      |
|              |    | describi\|      |
|              |    | ng       |      |
|              |    | the      |      |
|              |    | paramete\|      |
|              |    | r        |      |
|              |    | like     |      |
|              |    | what its |      |
|              |    | for      |      |
+--------------+----+----------+------+
| type         | st\| The      |      |
|              | ri\| required |      |
|              | ng | data     |      |
|              |    | type for |      |
|              |    | the      |      |
|              |    | paramete\|      |
|              |    | r        |      |
+--------------+----+----------+------+
| required     | bo\| An       | true |
|              | ol\| optional |      |
|              | ea\| key that |      |
|              | n  | declares |      |
|              |    | a        |      |
|              |    | paramete\|      |
|              |    | r        |      |
|              |    | as       |      |
|              |    | required |      |
|              |    | (true)   |      |
|              |    | or not   |      |
|              |    | (false)  |      |
+--------------+----+----------+------+
| constraints  | ar\| The      |      |
|              | ra\| optional |      |
|              | y  | list of  |      |
|              |    | sequence |      |
|              |    | d        |      |
|              |    | constrai\|      |
|              |    | nt       |      |
|              |    | clauses  |      |
|              |    | for the  |      |
|              |    | paramete\|      |
|              |    | r.       |      |
|              |    | See      |      |
|              |    | below    |      |
+--------------+----+----------+------+
| entry_schem\ | st\| The      |      |
| a            | ri\| optional |      |
|              | ng | key that |      |
|              |    | is used  |      |
|              |    | to       |      |
|              |    | declare  |      |
|              |    | the name |      |
|              |    | of the   |      |
|              |    | Datatype |      |
|              |    | definiti\|      |
|              |    | on       |      |
|              |    | for      |      |
|              |    | entries  |      |
|              |    | of set   |      |
|              |    | types    |      |
|              |    | such as  |      |
|              |    | the      |      |
|              |    | TOSCA    |      |
|              |    | ‘list’   |      |
|              |    | or       |      |
|              |    | ‘map’.   |      |
|              |    | Only 1   |      |
|              |    | level is |      |
|              |    | supporte\|      |
|              |    | d        |      |
|              |    | at this  |      |
|              |    | time     |      |
+--------------+----+----------+------+
| designer_ed\ | bo\| An       | true |
| itable       | ol\| optional |      |
|              | ea\| key that |      |
|              | n  | declares |      |
|              |    | a        |      |
|              |    | paramete\|      |
|              |    | r        |      |
|              |    | to be    |      |
|              |    | editable |      |
|              |    | by       |      |
|              |    | designer |      |
|              |    | (true)   |      |
|              |    | or not   |      |
|              |    | (false)  |      |
+--------------+----+----------+------+
| sourced_at_d\| bo\| An       | fals\|
| eployment    | ol\| optional | e    |
|              | ea\| key that |      |
|              | n  | declares |      |
|              |    | a        |      |
|              |    | paramete\|      |
|              |    | r’s      |      |
|              |    | value to |      |
|              |    | be       |      |
|              |    | assigned |      |
|              |    | at       |      |
|              |    | deployme\|      |
|              |    | nt       |      |
|              |    | time     |      |
|              |    | (true)   |      |
+--------------+----+----------+------+
| policy_edit\ | bo\| An       | true |
| able         | ol\| optional |      |
|              | ea\| key that |      |
|              | n  | declares |      |
|              |    | a        |      |
|              |    | paramete\|      |
|              |    | r        |      |
|              |    | to be    |      |
|              |    | editable |      |
|              |    | by       |      |
|              |    | policy   |      |
|              |    | (true)   |      |
|              |    | or not   |      |
|              |    | (false)  |      |
+--------------+----+----------+------+
| policy_sche\ | ar\| The      |      |
| ma           | ra\| optional |      |
|              | y  | list of  |      |
|              |    | schema   |      |
|              |    | definiti\|      |
|              |    | ons      |      |
|              |    | used for |      |
|              |    | policy.  |      |
|              |    | See      |      |
|              |    | below    |      |
+--------------+----+----------+------+

Example:

.. code:: json

    "parameters": [
        {
            "name": "threshold",
            "value": 0.75,
            "description": "Probability threshold to exceed to be anomalous"
        }
    ]

Many of the parameter properties have been copied from TOSCA model
property definitions and are to be used for service design composition
and policy creation. See `section 3.5.8 *Property
definition* <http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.1/TOSCA-Simple-Profile-YAML-v1.1.html>`__.

The property ``constraints`` is a list of objects where each constraint
object:

+--------------+----+----------+
| Property     | Ty\| Descript\|
| Name         | pe | ion      |
+==============+====+==========+
| equal        |    | Constrai\|
|              |    | ns       |
|              |    | a        |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value    |
|              |    | equal to |
|              |    | (‘=’)    |
|              |    | the      |
|              |    | value    |
|              |    | declared |
+--------------+----+----------+
| greater_tha\ | nu\| Constrai\|
| n            | mb\| ns       |
|              | er | a        |
|              |    | property |
|              |    | or       |
|              |    | paramete |
|              |    | r        |
|              |    | to a     |
|              |    | value    |
|              |    | greater  |
|              |    | than     |
|              |    | (‘>’)    |
|              |    | the      |
|              |    | value    |
|              |    | declared |
+--------------+----+----------+
| greater_or_e\| nu\| Constrai\|
| qual         | mb\| ns       |
|              | er | a        |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value    |
|              |    | greater  |
|              |    | than or  |
|              |    | equal to |
|              |    | (‘>=’)   |
|              |    | the      |
|              |    | value    |
|              |    | declared |
+--------------+----+----------+
| less_than    | nu\| Constrai\|
|              | mb\| ns       |
|              | er | a        |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value    |
|              |    | less     |
|              |    | than     |
|              |    | (‘<’)    |
|              |    | the      |
|              |    | value    |
|              |    | declared |
+--------------+----+----------+
| less_or_equ\ | nu\| Constrai\|
| al           | mb\| ns       |
|              | er | a        |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value    |
|              |    | less     |
|              |    | than or  |
|              |    | equal to |
|              |    | (‘<=’)   |
|              |    | the      |
|              |    | value    |
|              |    | declared |
+--------------+----+----------+
| valid_value\ | ar\| Constrai\|
| s            | ra\| ns       |
|              | y  | a        |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value    |
|              |    | that is  |
|              |    | in the   |
|              |    | list of  |
|              |    | declared |
|              |    | values   |
+--------------+----+----------+
| length       | nu\| Constrai\|
|              | mb\| ns       |
|              | er | the      |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value of |
|              |    | a given  |
|              |    | length   |
+--------------+----+----------+
| min_length   | nu\| Constrai\|
|              | mb\| ns       |
|              | er | the      |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value to |
|              |    | a        |
|              |    | minimum  |
|              |    | length   |
+--------------+----+----------+
| max_length   | nu\| Constrai\|
|              | mb\| ns       |
|              | er | the      |
|              |    | property |
|              |    | or       |
|              |    | paramete\|
|              |    | r        |
|              |    | to a     |
|              |    | value to |
|              |    | a        |
|              |    | maximum  |
|              |    | length   |
+--------------+----+----------+

``threshold`` is the configuration parameter and will get set to 0.75
when the configuration gets generated.

The property ``policy_schema`` is a list of objects where each
policy_schema object:

+-------------+----+----------+------+
| Property    | Ty\| Descript\| Defa\|
| Name        | pe | ion      | ult  |
+=============+====+==========+======+
| name        | st\| *Require\|      |
|             | ri\| d*.      |      |
|             | ng | paramete\|      |
|             |    | r        |      |
|             |    | name     |      |
+-------------+----+----------+------+
| value       | st\| default  |      |
|             | ri\| value    |      |
|             | ng | for the  |      |
|             |    | paramete\|      |
|             |    | r        |      |
+-------------+----+----------+------+
| description | st\| paramete\|      |
|             | ri\| r        |      |
|             | ng | descript\|      |
|             |    | ion      |      |
+-------------+----+----------+------+
| type        | en\| *Require\|      |
|             | um | d*.      |      |
|             |    | data     |      |
|             |    | type of  |      |
|             |    | the      |      |
|             |    | paramete\|      |
|             |    | r,       |      |
|             |    | ‘string’ |      |
|             |    | ,        |      |
|             |    | ‘number’ |      |
|             |    | ,        |      |
|             |    | ‘boolean |      |
|             |    | ’,       |      |
|             |    | ‘datetim\|      |
|             |    | e’,      |      |
|             |    | ‘list’,  |      |
|             |    | or ‘map’ |      |
+-------------+----+----------+------+
| required    | bo\| is       | true |
|             | ol\| paramete\|      |
|             | ea\| r        |      |
|             | n  | required |      |
|             |    | or not?  |      |
+-------------+----+----------+------+
| constraints | ar\| The      |      |
|             | ra\| optional |      |
|             | y  | list of  |      |
|             |    | sequence\|      |
|             |    | d        |      |
|             |    | constrai\|      |
|             |    | nt       |      |
|             |    | clauses  |      |
|             |    | for the  |      |
|             |    | paramete\|      |
|             |    | r.       |      |
|             |    | See      |      |
|             |    | above    |      |
+-------------+----+----------+------+
| entry_schem\| st\| The      |      |
| a           | ri\| optional |      |
|             | ng | key that |      |
|             |    | is used  |      |
|             |    | to       |      |
|             |    | declare  |      |
|             |    | the name |      |
|             |    | of the   |      |
|             |    | Datatype |      |
|             |    | definiti\|      |
|             |    | on       |      |
|             |    | for      |      |
|             |    | certain  |      |
|             |    | types.   |      |
|             |    | entry_sc\|      |
|             |    | hema     |      |
|             |    | must be  |      |
|             |    | defined  |      |
|             |    | when the |      |
|             |    | type is  |      |
|             |    | either   |      |
|             |    | list or  |      |
|             |    | map. If  |      |
|             |    | the type |      |
|             |    | is list  |      |
|             |    | and the  |      |
|             |    | entry    |      |
|             |    | type is  |      |
|             |    | a simple |      |
|             |    | type     |      |
|             |    | (string, |      |
|             |    | number,  |      |
|             |    | bookean, |      |
|             |    | datetime |      |
|             |    | ),       |      |
|             |    | follow   |      |
|             |    | with an  |      |
|             |    | string   |      |
|             |    | to       |      |
|             |    | describe |      |
|             |    | the      |      |
|             |    | entry    |      |
+-------------+----+----------+------+
|             | If |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | ty\|          |      |
|             | pe |          |      |
|             | is |          |      |
|             | li\|          |      |
|             | st |          |      |
|             | an\|          |      |
|             | d  |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | en\|          |      |
|             | tr\|          |      |
|             | y  |          |      |
|             | ty\|          |      |
|             | pe |          |      |
|             | is |          |      |
|             | a  |          |      |
|             | ma\|          |      |
|             | p, |          |      |
|             | fo\|          |      |
|             | ll\|          |      |
|             | ow |          |      |
|             | wi\|          |      |
|             | th |          |      |
|             | an |          |      |
|             | ar\|          |      |
|             | ra\|          |      |
|             | y  |          |      |
|             | to |          |      |
|             | de\|          |      |
|             | sc\|          |      |
|             | ri\|          |      |
|             | be |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | ke\|          |      |
|             | ys |          |      |
|             | fo\|          |      |
|             | r  |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | en\|          |      |
|             | tr\|          |      |
|             | y  |          |      |
|             | ma\|          |      |
|             | p  |          |      |
+-------------+----+----------+------+
|             | If |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | ty\|          |      |
|             | pe |          |      |
|             | is |          |      |
|             | li\|          |      |
|             | st |          |      |
|             | an\|          |      |
|             | d  |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | en\|          |      |
|             | tr\|          |      |
|             | y  |          |      |
|             | ty\|          |      |
|             | pe |          |      |
|             | is |          |      |
|             | a  |          |      |
|             | li\|          |      |
|             | st |          |      |
|             | ,  |          |      |
|             | th\|          |      |
|             | at |          |      |
|             | is |          |      |
|             | no\|          |      |
|             | t  |          |      |
|             | cu\|          |      |
|             | rr\|          |      |
|             | en\|          |      |
|             | tl\|          |      |
|             | y  |          |      |
|             | su\|          |      |
|             | pp\|          |      |
|             | or\|          |      |
|             | te\|          |      |
|             | d \|          |      |
+-------------+----+----------+------+
|             | If |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | ty\|          |      |
|             | pe |          |      |
|             | is |          |      |
|             | ma\|          |      |
|             | p, |          |      |
|             | fo\|          |      |
|             | ll\|          |      |
|             | ow |          |      |
|             | wi\|          |      |
|             | th |          |      |
|             | an |          |      |
|             | ar\|          |      |
|             | ay |          |      |
|             | to |          |      |
|             | de\|          |      |
|             | sc\|          |      |
|             | ri\|          |      |
|             | be |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | ke\|          |      |
|             | ys |          |      |
|             | fo\|          |      |
|             | r  |          |      |
|             | th\|          |      |
|             | e  |          |      |
|             | ma\|          |      |
|             | p  |          |      |
+-------------+----+----------+------+

Generated Application Configuration
-----------------------------------

The above example for component ``asimov.component.kpi_anomaly`` will
get transformed into the following application configuration JSON that
is fully resolved and provided at runtime by calling the
``config binding service``:

.. code:: json

    {
        "streams_publishes": {
            "prediction": ["10.100.1.100:32567"]
        },
        "streams_subscribes": {},
        "threshold": 0.75,
        "services_calls": {
            "vnf-db": ["10.100.1.101:32890"]
        }
    }

.. _artifacts:

Artifacts
---------

``artifacts`` contains a list of artifacts associated with this
component. For Docker, this is the full path (including the registry) to
the Docker image. For CDAP, this is the full path to the CDAP jar.

+---------------+------------+---------------------------------+
| Property Name | Type       | Description                     |
+===============+============+=================================+
| artifacts     | JSON array | Each entry is a artifact object |
+---------------+------------+---------------------------------+

``artifact`` Schema:

+---------------+--------+--------------------------------------------+
| Property Name | Type   | Description                                |
+===============+========+============================================+
| uri           | string | *Required*. Uri to the artifact, full path |
+---------------+--------+--------------------------------------------+
| type          | string | *Required*. ``docker image`` or ``jar``    |
+---------------+--------+--------------------------------------------+
