From dfb5f170330b1dd82aa08b33376f40e51ec53908 Mon Sep 17 00:00:00 2001 From: "david.mcweeney" Date: Tue, 15 Jun 2021 11:07:03 +0100 Subject: DMAAP-BC - Honolulu Release Notes Change-Id: Id3b646220a56f66072feea7530da9d1b9f4de60f Signed-off-by: david.mcweeney Issue-ID: DMAAP-1547 --- docs/Installation/Installation.rst | 73 - docs/administration/administration.rst | 14 - docs/apis/api-table.rst | 10 + docs/apis/api.rst | 4925 ++++++++++++++++++++++++++++++ docs/apis/swagger.json | 1871 ++++++++++++ docs/architecture.rst | 49 + docs/architecture/architecture.rst | 47 - docs/configuration.rst | 11 + docs/configuration/configuration.rst | 11 - docs/consumedapis.rst | 11 + docs/consumedapis/consumedapis.rst | 10 - docs/delivery.rst | 7 + docs/delivery/delivery.rst | 7 - docs/humaninterfaces/humaninterfaces.rst | 8 - docs/index.rst | 23 +- docs/installation.rst | 72 + docs/logging.rst | 19 + docs/logging/logging.rst | 28 - docs/offeredapis.rst | 12 + docs/offeredapis/offeredapis.rst | 8 - docs/release-notes.rst | 375 +++ docs/release-notes/release-notes.rst | 366 --- docs/security.rst | 317 ++ docs/security/security.rst | 317 -- 24 files changed, 7690 insertions(+), 901 deletions(-) delete mode 100644 docs/Installation/Installation.rst delete mode 100644 docs/administration/administration.rst create mode 100644 docs/apis/api-table.rst create mode 100644 docs/apis/api.rst create mode 100644 docs/apis/swagger.json create mode 100644 docs/architecture.rst delete mode 100644 docs/architecture/architecture.rst create mode 100644 docs/configuration.rst delete mode 100644 docs/configuration/configuration.rst create mode 100644 docs/consumedapis.rst delete mode 100644 docs/consumedapis/consumedapis.rst create mode 100644 docs/delivery.rst delete mode 100644 docs/delivery/delivery.rst delete mode 100644 docs/humaninterfaces/humaninterfaces.rst create mode 100644 docs/installation.rst create mode 100644 docs/logging.rst delete mode 100644 docs/logging/logging.rst create mode 100644 docs/offeredapis.rst delete mode 100644 docs/offeredapis/offeredapis.rst create mode 100644 docs/release-notes.rst delete mode 100644 docs/release-notes/release-notes.rst create mode 100644 docs/security.rst delete mode 100644 docs/security/security.rst diff --git a/docs/Installation/Installation.rst b/docs/Installation/Installation.rst deleted file mode 100644 index 3a8e732..0000000 --- a/docs/Installation/Installation.rst +++ /dev/null @@ -1,73 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Installation -============ - -Environment -=========== -Bus Controller is developed using Postgresql. An embedded Jetty server is used to create the REST service. -The service is packaged as a Docker container image. -Helm charts for Bus Controller are part of the overall dmaap chart set. - -Steps for OOM Deployment ------------------------- - -1) Clone the oom repo -2) cd oom/kubernetes -3) (optionally, customize the buscontroller configuration - see below) -4) make dmaap -5) helm install dmaap --name=dmaap --namespace=mr - - -Customizing the Bus Controller configuration --------------------------------------------- - -The Bus Controller is highly configurable, but by default has settings that should work for a standard ONAP oom deployment. -However, if some customization is desired, there are places to change behavior: -1) The --namespace argument of the helm install step is also refernced to compose the topic namespace used. i.e. the value is appended to org.onap.dmaap. Since Message Router uses org.onap.dmaap.mr by default, we also use --namespace=mr. But this can be changed to a value that matches a different deployment of MR. -2) oom/kubernetes/dmaap/charts/dmaap-bus-controller/values.yaml contains the set of tags used within the charts. These can be modified if necessary. -3) oom/kubernetes/dmaap/charts/dmaap-bus-controller/resources/config/buscontroller.env contains some environment settings for the container. These can be modified. For example, to indicate that AAF integration should be enabled, set USE_AAF=true in this file. -4) oom/kubernetes/dmaap/charts/dmaap-bus-controller/resources/config/dmaapbc.properties contains many properties which can be modified. For example, if a differerent Postgresql instance needed to be used, the value could be specified here. - - -Steps for local development and test ------------------------------------- -On Intel dev machine, in terminal (> indicates prompt) : -1) Build buscontroller images - > git clone https://gerrit.onap.org/r/dmaap/buscontroller - - anonymous http, can't push changes - > cd buscontroller - > mvn clean install -Pdocker - - builds dmaap-bc and dbc-client images -2) Run tests - > cd dmaap-bc/src/main/resources/ - > cp docker-databus-controller.conf /var/tmp/ - - set docker preferences/file sharing to access /var/tmp - - edit docker-compose.yml - - remove "nexus3.onap.org:10001/" from dmaap-bc:image: and dbc-client:image: to - use local images - > docker-compose up -d - - create sample.txt file (as above)(content of file not important) - > curl http://localhost:30241/webapi/bridge - -On Arm: -1) Build buscontroller images - > git clone https://gerrit.onap.org/r/dmaap/buscontroller - - anonymous http, can't push changes - > cd buscontroller - > mvn clean install -Pdocker -Ddocker.pull.registry=docker.io - - ensure we pull Arm version of base image -2) Run tests - > cd dmaap-bc/src/main/resources/ - > cp docker-databus-controller.conf /var/tmp/ - - set docker preferences/file sharing to access /var/tmp - - edit docker-compose.yml - - remove "nexus3.onap.org:10001/" from dmaap-bc:image: and dbc-client:image: to - use local images - - replace 'crunchydata/crunchy-postgres:centos7-10.4-2.0.0' with - multi-platform 'postgres:9.6-alpine' normative image - > docker-compose up -d - - create sample.txt file (as above)(content of file not important) - > curl http://localhost:30241/webapi/bridge - diff --git a/docs/administration/administration.rst b/docs/administration/administration.rst deleted file mode 100644 index b050a1f..0000000 --- a/docs/administration/administration.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Administration -============== - - -Processes ---------- -NA - -Actions -------- -NA diff --git a/docs/apis/api-table.rst b/docs/apis/api-table.rst new file mode 100644 index 0000000..402935e --- /dev/null +++ b/docs/apis/api-table.rst @@ -0,0 +1,10 @@ +DMaaP Bus Controller REST API Download docs +=========================================== + +.. this table is provided to allow for download of API documentation in diff formats + +.. csv-table:: + :header: "API name", "Swagger JSON" + :widths: 10,5 + + "DMaaP Buscontroller API", ":download:`link `" diff --git a/docs/apis/api.rst b/docs/apis/api.rst new file mode 100644 index 0000000..04285b0 --- /dev/null +++ b/docs/apis/api.rst @@ -0,0 +1,4925 @@ +DMaaP Bus Controller REST API 1.1.0 +=================================== + +Description +~~~~~~~~~~~ + + Bus Controller provides an API for OpenDCAE components which need to provision + underlying DMaaP technologies (Data Router and Message Router). + Primary clients for this API are anticipated to be the OpenDCAE + Controller, OpenDCAE Orchestrator, OpenDCAE Inventory and the + ECOMP Portal. + + Objects managed by DMaaP are deployed in a dcaeLocation which is a + unique identifier for an OpenStack tenant for a dcaeLayer, + opendcae-central (aka ecomp) or opendcae-local-ntc (aka edge). + + A dcaeEnvironment (e.g. FTL or prod) has a single DMaaP. A + DMaaP is managed by a one or more stateless DMaaP Bus + Controller(s), though Bus Controller relies on PGaaS for + persistence. Each DMaaP has a single instance of Data Router, + which has 1 or more DR_Nodes deployed at each dcaeLocation. DR + Clients of type DR_Pub generally publish to a DR_Node that is + local to its dcaeLocation. Routing for a Feed is determined by + the dcaelocation of its DR_Sub clients. + + A DMaaP may have many Message Router instances. Each instance is + deployed as an MR_Cluster. One MR_Cluster is deployed at each + dcaeLocation. MR_Clients generally communicate to the + MR_Cluster at the same dcaeLocation. Replication of messages + between MR_Clusters is accomplished by MR Bridge, which is + provioned by DMaaP Bus Controller based on Topic attributes. + + Therefore, the role of DMaaP Bus Controller is to support other + DCAE infrastructure components to dynamically provision DMaaP + services on behalf of DMaaP clients, and to assist in any + management or discovery activity of its clients. + + A convention of this API is to return JSON responses per + OpenStack style. + + + +Contact Information +~~~~~~~~~~~~~~~~~~~ + + + + +http://www.onap.org + + + + +License +~~~~~~~ + + +`Licensed under the Apache License, Version 2.0 `_ + + + + +Base URL +~~~~~~~~ + +http://www.[host]:[port]/webapi +https://www.[host]:[port]/webapi + +BRIDGE +~~~~~~ + + +Endpoint for retreiving MR Bridge metrics + + + + + +GET ``/bridge`` +--------------- + + +Summary ++++++++ + +return BrTopic details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `BrTopic` objects. If source and target query params are specified, only report on that bridge. If detail param is true, list topics names, else just a count is returned. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + mmagent | query | No | string | | | + detail | query | No | boolean | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`BrTopic ` + +**Example:** + +.. code-block:: javascript + + { + "brSource": "somestring", + "brTarget": "somestring", + "mmAgentName": "somestring", + "topicCount": 1 + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/bridge`` +--------------- + + +Summary ++++++++ + +update MirrorMaker details + +Description ++++++++++++ + +.. raw:: html + + replace the topic list for a specific Bridge. Use JSON Body for value to replace whitelist, but if refreshFlag param is true, simply refresh using existing whitelist.If split param is true, spread whitelist over smaller mmagents. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + mmagent | query | No | string | | | + refresh | query | No | boolean | | | + split | query | No | boolean | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`BrTopic ` + +**Example:** + +.. code-block:: javascript + + { + "brSource": "somestring", + "brTarget": "somestring", + "mmAgentName": "somestring", + "topicCount": 1 + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +DCAELOCATIONS +~~~~~~~~~~~~~ + + +an OpenStack tenant purposed for OpenDCAE (i.e. where OpenDCAE components might be deployed) + + + + + +POST ``/dcaeLocations`` +----------------------- + + +Summary ++++++++ + +return dcaeLocation details + +Description ++++++++++++ + +.. raw:: html + + Create some `dcaeLocation` which is a unique identifier for an *OpenStack* tenant purposed for a *dcaeLayer* (ecomp or edge). + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DcaeLocation ` + +**Example:** + +.. code-block:: javascript + + { + "central": true, + "clli": "somestring", + "dcaeLayer": "somestring", + "dcaeLocationName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "local": true, + "openStackAvailabilityZone": "somestring", + "status": "EMPTY", + "subnet": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/dcaeLocations/{locationName}`` +---------------------------------------- + + +Summary ++++++++ + +return dcaeLocation details + +Description ++++++++++++ + +.. raw:: html + + delete a dcaeLocation + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + locationName | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +successful operation + + +Type: :ref:`DcaeLocation ` + +**Example:** + +.. code-block:: javascript + + { + "central": true, + "clli": "somestring", + "dcaeLayer": "somestring", + "dcaeLocationName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "local": true, + "openStackAvailabilityZone": "somestring", + "status": "EMPTY", + "subnet": "somestring" + } + +**204** +^^^^^^^ + +Success + + +Type: :ref:`DcaeLocation ` + +**Example:** + +.. code-block:: javascript + + { + "central": true, + "clli": "somestring", + "dcaeLayer": "somestring", + "dcaeLocationName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "local": true, + "openStackAvailabilityZone": "somestring", + "status": "EMPTY", + "subnet": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dcaeLocations/{locationName}`` +------------------------------------- + + +Summary ++++++++ + +return dcaeLocation details + +Description ++++++++++++ + +.. raw:: html + + Returns a specific `dcaeLocation` object with specified tag + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + locationName | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DcaeLocation ` + +**Example:** + +.. code-block:: javascript + + { + "central": true, + "clli": "somestring", + "dcaeLayer": "somestring", + "dcaeLocationName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "local": true, + "openStackAvailabilityZone": "somestring", + "status": "EMPTY", + "subnet": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dcaeLocations`` +---------------------- + + +Summary ++++++++ + +return dcaeLocation details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `dcaeLocation` objects. All objects managed by DMaaP are deployed in some `dcaeLocation` which is a unique identifier for an *OpenStack* tenant purposed for a *dcaeLayer* (ecomp or edge). + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DcaeLocation ` + +**Example:** + +.. code-block:: javascript + + { + "central": true, + "clli": "somestring", + "dcaeLayer": "somestring", + "dcaeLocationName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "local": true, + "openStackAvailabilityZone": "somestring", + "status": "EMPTY", + "subnet": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/dcaeLocations/{locationName}`` +------------------------------------- + + +Summary ++++++++ + +return dcaeLocation details + +Description ++++++++++++ + +.. raw:: html + + update the openStackAvailabilityZone of a dcaeLocation + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + locationName | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DcaeLocation ` + +**Example:** + +.. code-block:: javascript + + { + "central": true, + "clli": "somestring", + "dcaeLayer": "somestring", + "dcaeLocationName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "local": true, + "openStackAvailabilityZone": "somestring", + "status": "EMPTY", + "subnet": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +DMAAP +~~~~~ + + +V2 Endpoint for this instance of DMaaP object containing values for this OpenDCAE deployment + + + + + +POST ``/dmaap_v2`` +------------------ + + +Summary ++++++++ + +return dmaap details + +Description ++++++++++++ + +.. raw:: html + + Create a new DMaaP set system wide configuration settings for the *dcaeEnvironment*. Deprecated with introduction of persistence in 1610. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Dmaap ` + +**Example:** + +.. code-block:: javascript + + { + "accessKeyOwner": "somestring", + "bridgeAdminTopic": "somestring", + "dmaapName": "somestring", + "drProvUrl": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "loggingUrl": "somestring", + "nodeKey": "somestring", + "status": "EMPTY", + "topicNsRoot": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +POST ``/dmaap`` +--------------- + + +Summary ++++++++ + +return dmaap details + +Description ++++++++++++ + +.. raw:: html + + Create a new DMaaP set system wide configuration settings for the *dcaeEnvironment*. Deprecated with introduction of persistence in 1610. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Dmaap ` + +**Example:** + +.. code-block:: javascript + + { + "accessKeyOwner": "somestring", + "bridgeAdminTopic": "somestring", + "dmaapName": "somestring", + "drProvUrl": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "loggingUrl": "somestring", + "nodeKey": "somestring", + "status": "EMPTY", + "topicNsRoot": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dmaap_v2`` +----------------- + + +Summary ++++++++ + +return dmaap details + +Description ++++++++++++ + +.. raw:: html + + returns the `dmaap` object, which contains system wide configuration settings + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Dmaap ` + +**Example:** + +.. code-block:: javascript + + { + "accessKeyOwner": "somestring", + "bridgeAdminTopic": "somestring", + "dmaapName": "somestring", + "drProvUrl": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "loggingUrl": "somestring", + "nodeKey": "somestring", + "status": "EMPTY", + "topicNsRoot": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dmaap`` +-------------- + + +Summary ++++++++ + +return dmaap details + +Description ++++++++++++ + +.. raw:: html + + returns the `dmaap` object, which contains system wide configuration settings + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Dmaap ` + +**Example:** + +.. code-block:: javascript + + { + "accessKeyOwner": "somestring", + "bridgeAdminTopic": "somestring", + "dmaapName": "somestring", + "drProvUrl": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "loggingUrl": "somestring", + "nodeKey": "somestring", + "status": "EMPTY", + "topicNsRoot": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/dmaap_v2`` +----------------- + + +Summary ++++++++ + +return dmaap details + +Description ++++++++++++ + +.. raw:: html + + Update system settings for *dcaeEnvironment*. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Dmaap ` + +**Example:** + +.. code-block:: javascript + + { + "accessKeyOwner": "somestring", + "bridgeAdminTopic": "somestring", + "dmaapName": "somestring", + "drProvUrl": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "loggingUrl": "somestring", + "nodeKey": "somestring", + "status": "EMPTY", + "topicNsRoot": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/dmaap`` +-------------- + + +Summary ++++++++ + +return dmaap details + +Description ++++++++++++ + +.. raw:: html + + Update system settings for *dcaeEnvironment*. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Dmaap ` + +**Example:** + +.. code-block:: javascript + + { + "accessKeyOwner": "somestring", + "bridgeAdminTopic": "somestring", + "dmaapName": "somestring", + "drProvUrl": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "loggingUrl": "somestring", + "nodeKey": "somestring", + "status": "EMPTY", + "topicNsRoot": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +DR_NODES +~~~~~~~~ + + +Endpoint for a Data Router Node server + + + + + +POST ``/dr_nodes`` +------------------ + + +Summary ++++++++ + +return DR_Node details + +Description ++++++++++++ + +.. raw:: html + + create a `DR_Node` in a *dcaeLocation*. Note that multiple `DR_Node`s may exist in the same `dcaeLocation`. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Node ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "hostName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "status": "EMPTY", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/dr_nodes/{fqdn}`` +--------------------------- + + +Summary ++++++++ + +No Content + +Description ++++++++++++ + +.. raw:: html + + Delete a single `DR_Node` object. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + fqdn | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +successful operation + + +Type: :ref:`DR_Node ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "hostName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "status": "EMPTY", + "version": "somestring" + } + +**204** +^^^^^^^ + +Success + + +Type: :ref:`DR_Node ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "hostName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "status": "EMPTY", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dr_nodes/{fqdn}`` +------------------------ + + +Summary ++++++++ + +return DR_Node details + +Description ++++++++++++ + +.. raw:: html + + Retrieve a single `DR_Node` object. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + fqdn | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Node ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "hostName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "status": "EMPTY", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dr_nodes`` +----------------- + + +Summary ++++++++ + +return DR_Node details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `DR_Node` object array. Need to add filter by dcaeLocation. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Node ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "hostName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "status": "EMPTY", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/dr_nodes/{fqdn}`` +------------------------ + + +Summary ++++++++ + +return DR_Node details + +Description ++++++++++++ + +.. raw:: html + + Update a single `DR_Node` object. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + fqdn | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Node ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "hostName": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "status": "EMPTY", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +DR_PUBS +~~~~~~~ + + +Endpoint for a Data Router client that implements a Publisher + + + + + +POST ``/dr_pubs`` +----------------- + + +Summary ++++++++ + +return DR_Pub details + +Description ++++++++++++ + +.. raw:: html + + create a DR Publisher in the specified environment. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Pub ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/dr_pubs/{pubId}`` +--------------------------- + + +Summary ++++++++ + +return DR_Pub details + +Description ++++++++++++ + +.. raw:: html + + delete a DR Publisher in the specified environment. Delete a `DR_Pub` object by pubId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + pubId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +successful operation + + +Type: :ref:`DR_Pub ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + +**204** +^^^^^^^ + +Success + + +Type: :ref:`DR_Pub ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dr_pubs/{pubId}`` +------------------------ + + +Summary ++++++++ + +return DR_Pub details + +Description ++++++++++++ + +.. raw:: html + + returns a DR Publisher in the specified environment. Gets a `DR_Pub` object by pubId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + pubId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Pub ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dr_pubs`` +---------------- + + +Summary ++++++++ + +return DR_Pub details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `DR_Pub` objects. Add filter for feedId. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Pub ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/dr_pubs/{pubId}`` +------------------------ + + +Summary ++++++++ + +return DR_Pub details + +Description ++++++++++++ + +.. raw:: html + + update a DR Publisher in the specified environment. Update a `DR_Pub` object by pubId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + pubId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Pub ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +DR_SUBS +~~~~~~~ + + +Endpoint for a Data Router client that implements a Subscriber + + + + + +POST ``/dr_subs`` +----------------- + + +Summary ++++++++ + +return DR_Sub details + +Description ++++++++++++ + +.. raw:: html + + Create a `DR_Sub` object. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Sub ` + +**Example:** + +.. code-block:: javascript + + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/dr_subs/{subId}`` +--------------------------- + + +Summary ++++++++ + +return DR_Sub details + +Description ++++++++++++ + +.. raw:: html + + Delete a `DR_Sub` object, selected by subId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + subId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Sub ` + +**Example:** + +.. code-block:: javascript + + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dr_subs/{subId}`` +------------------------ + + +Summary ++++++++ + +return DR_Sub details + +Description ++++++++++++ + +.. raw:: html + + Retrieve a `DR_Sub` object, selected by subId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + subId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Sub ` + +**Example:** + +.. code-block:: javascript + + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/dr_subs`` +---------------- + + +Summary ++++++++ + +return DR_Sub details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `DR_Sub` objects. Add filter for feedId. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Sub ` + +**Example:** + +.. code-block:: javascript + + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/dr_subs/{subId}`` +------------------------ + + +Summary ++++++++ + +return DR_Sub details + +Description ++++++++++++ + +.. raw:: html + + Update a `DR_Sub` object, selected by subId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + subId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Sub ` + +**Example:** + +.. code-block:: javascript + + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +FEEDS +~~~~~ + + +Endpoint for a Data Router Feed + + + + + +POST ``/feeds`` +--------------- + + +Summary ++++++++ + +return Feed details + +Description ++++++++++++ + +.. raw:: html + + Create a of `Feed` object. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + useExisting | query | No | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Feed ` + +**Example:** + +.. code-block:: javascript + + { + "asprClassification": "somestring", + "bytes": [ + "somestring", + "somestring" + ], + "feedDescription": "somestring", + "feedId": "somestring", + "feedName": "somestring", + "feedVersion": "somestring", + "formatUuid": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "publishURL": "somestring", + "pubs": [ + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + }, + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + ], + "status": "EMPTY", + "subs": [ + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + }, + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + ], + "subscribeURL": "somestring", + "suspended": true + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/feeds/{id}`` +---------------------- + + +Summary ++++++++ + +return Feed details + +Description ++++++++++++ + +.. raw:: html + + Delete a `Feed` object, specified by id. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + id | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +successful operation + + +Type: :ref:`Feed ` + +**Example:** + +.. code-block:: javascript + + { + "asprClassification": "somestring", + "bytes": [ + "somestring", + "somestring" + ], + "feedDescription": "somestring", + "feedId": "somestring", + "feedName": "somestring", + "feedVersion": "somestring", + "formatUuid": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "publishURL": "somestring", + "pubs": [ + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + }, + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + ], + "status": "EMPTY", + "subs": [ + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + }, + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + ], + "subscribeURL": "somestring", + "suspended": true + } + +**204** +^^^^^^^ + +Success + + +Type: :ref:`Feed ` + +**Example:** + +.. code-block:: javascript + + { + "asprClassification": "somestring", + "bytes": [ + "somestring", + "somestring" + ], + "feedDescription": "somestring", + "feedId": "somestring", + "feedName": "somestring", + "feedVersion": "somestring", + "formatUuid": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "publishURL": "somestring", + "pubs": [ + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring + }, + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + ], + "status": "EMPTY", + "subs": [ + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + }, + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + ], + "subscribeURL": "somestring", + "suspended": true + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +GET ``/feeds/{id}`` +------------------- + + +Summary ++++++++ + +return Feed details + +Description ++++++++++++ + +.. raw:: html + + Retrieve a `Feed` object, specified by id. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + id | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`DR_Pub ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/feeds`` +-------------- + + +Summary ++++++++ + +return Feed details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `Feed` objects. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + feedName | query | No | string | | | + version | query | No | string | | | + match | query | No | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Feed ` + +**Example:** + +.. code-block:: javascript + + { + "asprClassification": "somestring", + "bytes": [ + "somestring", + "somestring" + ], + "feedDescription": "somestring", + "feedId": "somestring", + "feedName": "somestring", + "feedVersion": "somestring", + "formatUuid": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "publishURL": "somestring", + "pubs": [ + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + }, + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + ], + "status": "EMPTY", + "subs": [ + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + }, + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + ], + "subscribeURL": "somestring", + "suspended": true + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/feeds/{id}`` +------------------- + + +Summary ++++++++ + +return Feed details + +Description ++++++++++++ + +.. raw:: html + + Update a `Feed` object, specified by id. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + id | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Feed ` + +**Example:** + +.. code-block:: javascript + + { + "asprClassification": "somestring", + "bytes": [ + "somestring", + "somestring" + ], + "feedDescription": "somestring", + "feedId": "somestring", + "feedName": "somestring", + "feedVersion": "somestring", + "formatUuid": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "publishURL": "somestring", + "pubs": [ + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + }, + { + "dcaeLocationName": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "pubId": "somestring", + "status": "EMPTY", + "username": "somestring", + "userpwd": "somestring" + } + ], + "status": "EMPTY", + "subs": [ + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + }, + { + "bytes": [ + "somestring", + "somestring" + ], + "dcaeLocationName": "somestring", + "deliveryURL": "somestring", + "feedId": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "logURL": "somestring", + "owner": "somestring", + "status": "EMPTY", + "subId": "somestring", + "suspended": true, + "use100": true, + "username": "somestring", + "userpwd": "somestring" + } + ], + "subscribeURL": "somestring", + "suspended": true + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +INFO +~~~~ + + +Endpoint for this instance of DBCL. Returns health info. + + + + + +GET ``/info`` +------------- + + +Summary ++++++++ + +return info details + +Description ++++++++++++ + +.. raw:: html + + returns the `info` object + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Dmaap ` + +**Example:** + +.. code-block:: javascript + + { + "accessKeyOwner": "somestring", + "bridgeAdminTopic": "somestring", + "dmaapName": "somestring", + "drProvUrl": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "loggingUrl": "somestring", + "nodeKey": "somestring", + "status": "EMPTY", + "topicNsRoot": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +MR_CLIENTS +~~~~~~~~~~ + + +Endpoint for a Message Router Client that implements a Publisher or a Subscriber + + + + + +POST ``/mr_clients`` +-------------------- + + +Summary ++++++++ + +Associate an MR_Client object to a Topic + +Description ++++++++++++ + +.. raw:: html + + Create a `MR_Client` object.The `dcaeLocation` attribute is used to match an `MR_Cluster` object with the same value, with the intent of localizing message traffic. In legacy implementation, the `clientRole` is granted appropriate permission in AAF. Newer implementions may instead specify an AAF Identity, which will be added to the appropriate `Topic` role. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Client ` + +**Example:** + +.. code-block:: javascript + + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/mr_clients/{subId}`` +------------------------------ + + +Summary ++++++++ + +Delete an MR_Client object + +Description ++++++++++++ + +.. raw:: html + + Delete a `MR_Client` object, specified by clientId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + subId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +successful operation + + +Type: :ref:`MR_Client ` + +**Example:** + +.. code-block:: javascript + + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + +**204** +^^^^^^^ + +Success + + +Type: :ref:`MR_Client ` + +**Example:** + +.. code-block:: javascript + + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/mr_clients`` +------------------- + + +Summary ++++++++ + +return MR_Client details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `MR_Client` objects. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Client ` + +**Example:** + +.. code-block:: javascript + + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/mr_clients/{subId}`` +--------------------------- + + +Summary ++++++++ + +return MR_Client details + +Description ++++++++++++ + +.. raw:: html + + Retrieve a `MR_Client` object, specified by clientId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + subId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Client ` + +**Example:** + +.. code-block:: javascript + + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/mr_clients/{clientId}`` +------------------------------ + + +Summary ++++++++ + +Update an MR_Client object + +Description ++++++++++++ + +.. raw:: html + + Update a `MR_Client` object, specified by clientId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + clientId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Client ` + +**Example:** + +.. code-block:: javascript + + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +MR_CLUSTERS +~~~~~~~~~~~ + + +Endpoint for a Message Router servers in a Cluster configuration + + + + + +POST ``/mr_clusters`` +--------------------- + + +Summary ++++++++ + +return MR_Cluster details + +Description ++++++++++++ + +.. raw:: html + + Create an `MR_Cluster` object. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Cluster ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "replicationGroup": "somestring", + "sourceReplicationPort": "somestring", + "status": "EMPTY", + "targetReplicationPort": "somestring", + "topicPort": "somestring", + "topicProtocol": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/mr_clusters/{clusterId}`` +----------------------------------- + + +Summary ++++++++ + +return MR_Cluster details + +Description ++++++++++++ + +.. raw:: html + + Delete an `MR_Cluster` object, specified by clusterId. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + clusterId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +successful operation + + +Type: :ref:`MR_Cluster ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "replicationGroup": "somestring", + "sourceReplicationPort": "somestring", + "status": "EMPTY", + "targetReplicationPort": "somestring", + "topicPort": "somestring", + "topicProtocol": "somestring" + } + +**204** +^^^^^^^ + +Success + + +Type: :ref:`MR_Cluster ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "replicationGroup": "somestring", + "sourceReplicationPort": "somestring", + "status": "EMPTY", + "targetReplicationPort": "somestring", + "topicPort": "somestring", + "topicProtocol": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/mr_clusters/{clusterId}`` +-------------------------------- + + +Summary ++++++++ + +return MR_Cluster details + +Description ++++++++++++ + +.. raw:: html + + Retrieve an `MR_Cluster` object, specified by clusterId. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + clusterId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Cluster ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "replicationGroup": "somestring", + "sourceReplicationPort": "somestring", + "status": "EMPTY", + "targetReplicationPort": "somestring", + "topicPort": "somestring", + "topicProtocol": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/mr_clusters`` +-------------------- + + +Summary ++++++++ + +return MR_Cluster details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `MR_Cluster` objects. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Cluster ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "replicationGroup": "somestring", + "sourceReplicationPort": "somestring", + "status": "EMPTY", + "targetReplicationPort": "somestring", + "topicPort": "somestring", + "topicProtocol": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/mr_clusters/{clusterId}`` +-------------------------------- + + +Summary ++++++++ + +return MR_Cluster details + +Description ++++++++++++ + +.. raw:: html + + Update an `MR_Cluster` object, specified by clusterId. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + clusterId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`MR_Cluster ` + +**Example:** + +.. code-block:: javascript + + { + "dcaeLocationName": "somestring", + "fqdn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "replicationGroup": "somestring", + "sourceReplicationPort": "somestring", + "status": "EMPTY", + "targetReplicationPort": "somestring", + "topicPort": "somestring", + "topicProtocol": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +TOPICS +~~~~~~ + + +Endpoint for retreiving MR Topics + + + + + +POST ``/topics`` +---------------- + + +Summary ++++++++ + +Create a Topic object + +Description ++++++++++++ + +.. raw:: html + + Create `Topic` object.For convenience, the message body may populate the `clients` array, in which case each entry will be added as an `MR_Client`. Beginning in ONAP Dublin Release, dbcapi will create two AAF Roles by default, one each for the publisher and subscriber per topic. MR_Clients can then specify an AAF Identity to be added to the appropriate default Role, avoiding the need to create Role(s) in advance. + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + useExisting | query | No | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Topic ` + +**Example:** + +.. code-block:: javascript + + { + "clients": [ + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + }, + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + ], + "formatUuid": "somestring", + "fqtn": "somestring", + "fqtnStyle": "FQTN_NOT_SPECIFIED", + "globalMrURL": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "owner": "somestring", + "partitionCount": "somestring", + "publisherRole": "somestring", + "replicationCase": "REPLICATION_NOT_SPECIFIED", + "replicationCount": "somestring", + "status": "EMPTY", + "subscriberRole": "somestring", + "tnxEnabled": "somestring", + "topicDescription": "somestring", + "topicName": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +DELETE ``/topics/{topicId}`` +---------------------------- + + +Summary ++++++++ + +return Topic details + +Description ++++++++++++ + +.. raw:: html + + Delete a `Topic` object, identified by topicId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + topicId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +successful operation + + +Type: :ref:`Topic ` + +**Example:** + +.. code-block:: javascript + + { + "clients": [ + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + }, + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + ], + "formatUuid": "somestring", + "fqtn": "somestring", + "fqtnStyle": "FQTN_NOT_SPECIFIED", + "globalMrURL": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "owner": "somestring", + "partitionCount": "somestring", + "publisherRole": "somestring", + "replicationCase": "REPLICATION_NOT_SPECIFIED", + "replicationCount": "somestring", + "status": "EMPTY", + "subscriberRole": "somestring", + "tnxEnabled": "somestring", + "topicDescription": "somestring", + "topicName": "somestring", + "version": "somestring" + } + +**204** +^^^^^^^ + +Success + + +Type: :ref:`Topic ` + +**Example:** + +.. code-block:: javascript + + { + "clients": [ + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + }, + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + ], + "formatUuid": "somestring", + "fqtn": "somestring", + "fqtnStyle": "FQTN_NOT_SPECIFIED", + "globalMrURL": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "owner": "somestring", + "partitionCount": "somestring", + "publisherRole": "somestring", + "replicationCase": "REPLICATION_NOT_SPECIFIED", + "replicationCount": "somestring", + "status": "EMPTY", + "subscriberRole": "somestring", + "tnxEnabled": "somestring", + "topicDescription": "somestring", + "topicName": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/topics/{topicId}`` +------------------------- + + +Summary ++++++++ + +return Topic details + +Description ++++++++++++ + +.. raw:: html + + Retrieve a `Topic` object, identified by topicId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + topicId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Topic ` + +**Example:** + +.. code-block:: javascript + + { + "clients": [ + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + }, + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + ], + "formatUuid": "somestring", + "fqtn": "somestring", + "fqtnStyle": "FQTN_NOT_SPECIFIED", + "globalMrURL": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "owner": "somestring", + "partitionCount": "somestring", + "publisherRole": "somestring", + "replicationCase": "REPLICATION_NOT_SPECIFIED", + "replicationCount": "somestring", + "status": "EMPTY", + "subscriberRole": "somestring", + "tnxEnabled": "somestring", + "topicDescription": "somestring", + "topicName": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +GET ``/topics`` +--------------- + + +Summary ++++++++ + +return Topic details + +Description ++++++++++++ + +.. raw:: html + + Returns array of `Topic` objects. + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Topic ` + +**Example:** + +.. code-block:: javascript + + { + "clients": [ + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + }, + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + ], + "formatUuid": "somestring", + "fqtn": "somestring", + "fqtnStyle": "FQTN_NOT_SPECIFIED", + "globalMrURL": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "owner": "somestring", + "partitionCount": "somestring", + "publisherRole": "somestring", + "replicationCase": "REPLICATION_NOT_SPECIFIED", + "replicationCount": "somestring", + "status": "EMPTY", + "subscriberRole": "somestring", + "tnxEnabled": "somestring", + "topicDescription": "somestring", + "topicName": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + + +PUT ``/topics/{topicId}`` +------------------------- + + +Summary ++++++++ + +return Topic details + +Description ++++++++++++ + +.. raw:: html + + Update a `Topic` object, identified by topicId + +Parameters +++++++++++ + +.. csv-table:: + :delim: | + :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 15, 10, 10, 10, 20, 30 + + topicId | path | Yes | string | | | + + +Request ++++++++ + + +Responses ++++++++++ + +**200** +^^^^^^^ + +Success + + +Type: :ref:`Topic ` + +**Example:** + +.. code-block:: javascript + + { + "clients": [ + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + }, + { + "action": [ + "somestring", + "somestring" + ], + "clientIdentity": "somestring", + "clientRole": "somestring", + "dcaeLocationName": "somestring", + "fqtn": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "mrClientId": "somestring", + "status": "EMPTY", + "topicURL": "somestring" + } + ], + "formatUuid": "somestring", + "fqtn": "somestring", + "fqtnStyle": "FQTN_NOT_SPECIFIED", + "globalMrURL": "somestring", + "lastMod": "2015-01-01T15:00:00.000Z", + "owner": "somestring", + "partitionCount": "somestring", + "publisherRole": "somestring", + "replicationCase": "REPLICATION_NOT_SPECIFIED", + "replicationCount": "somestring", + "status": "EMPTY", + "subscriberRole": "somestring", + "tnxEnabled": "somestring", + "topicDescription": "somestring", + "topicName": "somestring", + "version": "somestring" + } + +**400** +^^^^^^^ + +Error + + +Type: :ref:`ApiError ` + +**Example:** + +.. code-block:: javascript + + { + "code": 1, + "fields": "somestring", + "is2xx": true, + "message": "somestring" + } + + + + +Data Structures +~~~~~~~~~~~~~~~ + +.. _d_a3a7580ce9d87225d7f62e6b67b4d036: + +ApiError Model Structure +------------------------ + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + code | No | integer | int32 | | + fields | No | string | | | + is2xx | No | boolean | | | + message | No | string | | | + +.. _d_d71baea9d8e4e59bc395ef51f45dff1b: + +BrTopic Model Structure +----------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + brSource | No | string | | | + brTarget | No | string | | | + mmAgentName | No | string | | | + topicCount | No | integer | int32 | | + +.. _d_d15e2cee407536866c875375e3f705e0: + +DR_Node Model Structure +----------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + dcaeLocationName | No | string | | | + fqdn | No | string | | | + hostName | No | string | | | + lastMod | No | string | date-time | | datestamp for last update to this object + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + version | No | string | | | + +.. _d_e926d3fa8701e0cc9c8ed1761b3255cd: + +DR_Pub Model Structure +---------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + dcaeLocationName | No | string | | | + feedId | No | string | | | + lastMod | No | string | date-time | | datestamp for last update to this object + pubId | No | string | | | + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + username | No | string | | | + userpwd | No | string | | | + +.. _d_48cf328d246f41e1d11a09251b042f02: + +DR_Sub Model Structure +---------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + bytes | No | array of string | | | + dcaeLocationName | No | string | | | + deliveryURL | No | string | | | + feedId | No | string | | | + lastMod | No | string | date-time | | datestamp for last update to this object + logURL | No | string | | | + owner | No | string | | | + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + subId | No | string | | | + suspended | No | boolean | | | + use100 | No | boolean | | | + username | No | string | | | + userpwd | No | string | | | + +.. _d_47d80e451933beb623fcf5257867cbcb: + +DcaeLocation Model Structure +---------------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + central | No | boolean | | | + clli | No | string | | | + dcaeLayer | No | string | | | + dcaeLocationName | No | string | | | + lastMod | No | string | date-time | | datestamp for last update to this object + local | No | boolean | | | + openStackAvailabilityZone | No | string | | | + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + subnet | No | string | | | + +.. _d_4ea0e7758a1f8502222793e4a13b04f7: + +Dmaap Model Structure +--------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + accessKeyOwner | No | string | | | + bridgeAdminTopic | No | string | | | + dmaapName | No | string | | | + drProvUrl | No | string | | | + lastMod | No | string | date-time | | datestamp for last update to this object + loggingUrl | No | string | | | + nodeKey | No | string | | | + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + topicNsRoot | No | string | | | + version | No | string | | | + +.. _d_289ad39619725df26c9ff382d4c97c75: + +Feed Model Structure +-------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + asprClassification | No | string | | | + bytes | No | array of string | | | + feedDescription | No | string | | | + feedId | No | string | | | + feedName | No | string | | | + feedVersion | No | string | | | + formatUuid | No | string | | | + lastMod | No | string | date-time | | datestamp for last update to this object + logURL | No | string | | | + owner | No | string | | | + publishURL | No | string | | | + pubs | No | array of :ref:`DR_Pub ` | | | + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + subs | No | array of :ref:`DR_Sub ` | | | + subscribeURL | No | string | | | + suspended | No | boolean | | | + +.. _d_56ff81dc98986e27074d9be2731e3f4c: + +MR_Client Model Structure +------------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + action | No | array of string | | | one or more actions from the set ('pub', 'sub', 'view') for which this client needs Permission + clientIdentity | No | string | | | an AAF identity to be associated to an appropriate topic Role + clientRole | No | string | | | an AAF Role to be granted an appropriate Permission. If specified, takes precedence over clientIdentity, for backwards compatibility. + dcaeLocationName | No | string | | | a tag indicating a logical deployment site + fqtn | No | string | | | Fully Qualified Topic Name constructed by dbcapi + lastMod | No | string | date-time | | datestamp for last update to this object + mrClientId | No | string | | | a unique identifier generated by dbcapi for this client + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + topicURL | No | string | | | the URL for a MR instance - typically in the same dcaeLocation - that this client should use to access the topic + +.. _d_eec7176a0080debe1b19c2dad2e97c24: + +MR_Cluster Model Structure +-------------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + dcaeLocationName | No | string | | | + fqdn | No | string | | | + lastMod | No | string | date-time | | + replicationGroup | No | string | | | + sourceReplicationPort | No | string | | | + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + targetReplicationPort | No | string | | | + topicPort | No | string | | | + topicProtocol | No | string | | | + +.. _d_08fb211d40d6deb9b6e04b000fd988e4: + +MirrorMaker Model Structure +--------------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + lastMod | No | string | date-time | | datestamp for last update to this object + mmName | No | string | | | + sourceCluster | No | string | | | + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + targetCluster | No | string | | | + topicCount | No | integer | int32 | | + topics | No | array of string | | | + whitelistUpdateJSON | No | string | | | + +.. _d_2e99841971da81b9d240071b86bf168d: + +Topic Model Structure +--------------------- + +.. csv-table:: + :delim: | + :header: "Name", "Required", "Type", "Format", "Properties", "Description" + :widths: 20, 10, 15, 15, 30, 25 + + clients | No | array of :ref:`MR_Client ` | | | an array of `MR_Client` objects associated to this `Topic` + formatUuid | No | string | | | a reference to an identifier that describes a data format used for this `Topic` + fqtn | No | string | | | Fully Qualified Topic Name constructed by dbcapi, following the rules for `fqtnStyle` + fqtnStyle | No | string | | {'enum': ['FQTN_NOT_SPECIFIED', 'FQTN_LEGACY_FORMAT', 'FQTN_PROJECTID_FORMAT', 'FQTN_PROJECTID_VERSION_FORMAT']} | the construction rule for the `fqtn` field + globalMrURL | No | string | | | the URL of an outside MR instance + lastMod | No | string | date-time | | datestamp for last update to this object + owner | No | string | | | a label used to identify who requested this `Topic` to be provisioned. In the future this may be an AAF Identity. + partitionCount | No | string | | | the kafka attribute for specifying the number of partitions + publisherRole | No | string | | | a value generated by dbcapi, this AAF Role has permission to publish to this `Topic` + replicationCase | No | string | | {'enum': ['REPLICATION_NOT_SPECIFIED', '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', 'REPLICATION_EDGE_TO_FQDN', 'REPLICATION_FQDN_TO_EDGE', 'REPLICATION_FQDN_TO_GLOBAL', 'REPLICATION_GLOBAL_TO_FQDN', 'REPLICATION_EDGE_TO_FQDN_TO_GLOBAL', 'REPLICATION_GLOBAL_TO_FQDN_TO_EDGE']} | An indicator for how this `Topic` should be replicated when there are more than one `MR_Cluster` instances + replicationCount | No | string | | | the kafka attribute for specifying replication within an `MR_Cluster` instance + status | No | string | | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | + subscriberRole | No | string | | | a value generated by dbcapi, this AAF Role has permission to subscribe to this `Topic` + tnxEnabled | No | string | | | + topicDescription | No | string | | | a description of what this Topic is used for + topicName | No | string | | | the short name used by humans, and utilized to construct the `FQTN` + version | No | string | | | a hook for any versioning needed for managing a `Topic` over time + diff --git a/docs/apis/swagger.json b/docs/apis/swagger.json new file mode 100644 index 0000000..ceb041f --- /dev/null +++ b/docs/apis/swagger.json @@ -0,0 +1,1871 @@ +{ + "swagger" : "2.0", + "info" : { + "description" : "provides an API for OpenDCAE components which need to provision\n\t\t\t\t\t\t\t\t\tunderlying DMaaP technologies (Data Router and Message Router).\n\t\t\t\t\t\t\t\t\tPrimary clients for this API are anticipated to be the OpenDCAE\n\t\t\t\t\t\t\t\t\tController, OpenDCAE Orchestrator, OpenDCAE Inventory and the\n\t\t\t\t\t\t\t\t\tECOMP Portal.\n\n\t\t\t\t\t\t\t\t\tObjects managed by DMaaP are deployed in a dcaeLocation which is a\n\t\t\t\t\t\t\t\t\tunique identifier for an OpenStack tenant for a dcaeLayer,\n\t\t\t\t\t\t\t\t\topendcae-central (aka ecomp) or opendcae-local-ntc (aka edge).\n\n\t\t\t\t\t\t\t\t\tA dcaeEnvironment (e.g. FTL or prod) has a single DMaaP. A\n\t\t\t\t\t\t\t\t\tDMaaP is managed by a one or more stateless DMaaP Bus\n\t\t\t\t\t\t\t\t\tController(s), though Bus Controller relies on PGaaS for\n\t\t\t\t\t\t\t\t\tpersistence. Each DMaaP has a single instance of Data Router,\n\t\t\t\t\t\t\t\t\twhich has 1 or more DR_Nodes deployed at each dcaeLocation. DR\n\t\t\t\t\t\t\t\t\tClients of type DR_Pub generally publish to a DR_Node that is\n\t\t\t\t\t\t\t\t\tlocal to its dcaeLocation. Routing for a Feed is determined by\n\t\t\t\t\t\t\t\t\tthe dcaelocation of its DR_Sub clients.\n\n\t\t\t\t\t\t\t\t\tA DMaaP may have many Message Router instances. Each instance is\n\t\t\t\t\t\t\t\t\tdeployed as an MR_Cluster. One MR_Cluster is deployed at each\n\t\t\t\t\t\t\t\t\tdcaeLocation. MR_Clients generally communicate to the\n\t\t\t\t\t\t\t\t\tMR_Cluster at the same dcaeLocation. Replication of messages\n\t\t\t\t\t\t\t\t\tbetween MR_Clusters is accomplished by MR Bridge, which is\n\t\t\t\t\t\t\t\t\tprovioned by DMaaP Bus Controller based on Topic attributes.\n\n\t\t\t\t\t\t\t\t\tTherefore, the role of DMaaP Bus Controller is to support other\n\t\t\t\t\t\t\t\t\tDCAE infrastructure components to dynamically provision DMaaP\n\t\t\t\t\t\t\t\t\tservices on behalf of DMaaP clients, and to assist in any\n\t\t\t\t\t\t\t\t\tmanagement or discovery activity of its clients.\n\n\t\t\t\t\t\t\t\t\tA convention of this API is to return JSON responses per\n\t\t\t\t\t\t\t\t\tOpenStack style.", + "version" : "1.1.0", + "title" : "DMaaP Bus Controller REST API", + "termsOfService" : "http://www.apache.org/licenses/LICENSE-2.0", + "contact" : { + "url" : "http://www.onap.org" + }, + "license" : { + "name" : "Licensed under the Apache License, Version 2.0", + "url" : "http://www.apache.org/licenses/LICENSE-2.0" + } + }, + "host" : "www.[host]:[port]", + "basePath" : "/webapi", + "tags" : [ { + "name" : "Feeds", + "description" : "Endpoint for a Data Router Feed" + }, { + "name" : "MR_Clients", + "description" : "Endpoint for a Message Router Client that implements a Publisher or a Subscriber" + }, { + "name" : "MR_Clusters", + "description" : "Endpoint for a Message Router servers in a Cluster configuration" + }, { + "name" : "bridge", + "description" : "Endpoint for retreiving MR Bridge metrics" + }, { + "name" : "dcaeLocations", + "description" : "an OpenStack tenant purposed for OpenDCAE (i.e. where OpenDCAE components might be deployed)" + }, { + "name" : "dmaap", + "description" : "Endpoint for this instance of DMaaP object containing values for this OpenDCAE deployment" + }, { + "name" : "dr_nodes", + "description" : "Endpoint for a Data Router Node server" + }, { + "name" : "dr_pubs", + "description" : "Endpoint for a Data Router client that implements a Publisher" + }, { + "name" : "dr_subs", + "description" : "Endpoint for a Data Router client that implements a Subscriber" + }, { + "name" : "info", + "description" : "Endpoint for this instance of DBCL. Returns health info." + }, { + "name" : "topics", + "description" : "Endpoint for retreiving MR Topics" + } ], + "schemes" : [ "http", "https" ], + "paths" : { + "/bridge" : { + "get" : { + "tags" : [ "bridge" ], + "summary" : "return BrTopic details", + "description" : "Returns array of `BrTopic` objects. If source and target query params are specified, only report on that bridge. If detail param is true, list topics names, else just a count is returned.", + "operationId" : "getBridgedTopics", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "mmagent", + "in" : "query", + "required" : false, + "type" : "string" + }, { + "name" : "detail", + "in" : "query", + "required" : false, + "type" : "boolean" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/BrTopic" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "bridge" ], + "summary" : "update MirrorMaker details", + "description" : "replace the topic list for a specific Bridge. Use JSON Body for value to replace whitelist, but if refreshFlag param is true, simply refresh using existing whitelist.If split param is true, spread whitelist over smaller mmagents.", + "operationId" : "putBridgedTopics", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "mmagent", + "in" : "query", + "required" : false, + "type" : "string" + }, { + "name" : "refresh", + "in" : "query", + "required" : false, + "type" : "boolean" + }, { + "name" : "split", + "in" : "query", + "required" : false, + "type" : "boolean" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/BrTopic" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dcaeLocations" : { + "get" : { + "tags" : [ "dcaeLocations" ], + "summary" : "return dcaeLocation details", + "description" : "Returns array of `dcaeLocation` objects. All objects managed by DMaaP are deployed in some `dcaeLocation` which is a unique identifier for an *OpenStack* tenant purposed for a *dcaeLayer* (ecomp or edge).", + "operationId" : "getDcaeLocations", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DcaeLocation" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "dcaeLocations" ], + "summary" : "return dcaeLocation details", + "description" : "Create some `dcaeLocation` which is a unique identifier for an *OpenStack* tenant purposed for a *dcaeLayer* (ecomp or edge).", + "operationId" : "addDcaeLocation", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DcaeLocation" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dcaeLocations/{locationName}" : { + "get" : { + "tags" : [ "dcaeLocations" ], + "summary" : "return dcaeLocation details", + "description" : "Returns a specific `dcaeLocation` object with specified tag", + "operationId" : "getDcaeLocation", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "locationName", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DcaeLocation" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "dcaeLocations" ], + "summary" : "return dcaeLocation details", + "description" : "update the openStackAvailabilityZone of a dcaeLocation", + "operationId" : "updateDcaeLocation", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "locationName", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DcaeLocation" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "dcaeLocations" ], + "summary" : "return dcaeLocation details", + "description" : "delete a dcaeLocation", + "operationId" : "deleteDcaeLocation", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "locationName", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "$ref" : "#/definitions/DcaeLocation" + } + }, + "204" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DcaeLocation" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dmaap" : { + "get" : { + "tags" : [ "dmaap" ], + "summary" : "return dmaap details", + "description" : "returns the `dmaap` object, which contains system wide configuration settings", + "operationId" : "getDmaap", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Dmaap" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "dmaap" ], + "summary" : "return dmaap details", + "description" : "Create a new DMaaP set system wide configuration settings for the *dcaeEnvironment*. Deprecated with introduction of persistence in 1610.", + "operationId" : "addDmaap", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Dmaap" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "dmaap" ], + "summary" : "return dmaap details", + "description" : "Update system settings for *dcaeEnvironment*.", + "operationId" : "updateDmaap", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Dmaap" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dr_nodes" : { + "get" : { + "tags" : [ "dr_nodes" ], + "summary" : "return DR_Node details", + "description" : "Returns array of `DR_Node` object array. Need to add filter by dcaeLocation.", + "operationId" : "getDr_Nodes", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Node" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "dr_nodes" ], + "summary" : "return DR_Node details", + "description" : "create a `DR_Node` in a *dcaeLocation*. Note that multiple `DR_Node`s may exist in the same `dcaeLocation`.", + "operationId" : "addDr_Node", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Node" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dr_nodes/{fqdn}" : { + "get" : { + "tags" : [ "dr_nodes" ], + "summary" : "return DR_Node details", + "description" : "Retrieve a single `DR_Node` object.", + "operationId" : "get", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "fqdn", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Node" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "dr_nodes" ], + "summary" : "return DR_Node details", + "description" : "Update a single `DR_Node` object.", + "operationId" : "updateDr_Node", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "fqdn", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Node" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "dr_nodes" ], + "summary" : "No Content", + "description" : "Delete a single `DR_Node` object.", + "operationId" : "deleteDr_Node", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "fqdn", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "$ref" : "#/definitions/DR_Node" + } + }, + "204" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Node" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dr_pubs" : { + "get" : { + "tags" : [ "dr_pubs" ], + "summary" : "return DR_Pub details", + "description" : "Returns array of `DR_Pub` objects. Add filter for feedId.", + "operationId" : "getDr_Pubs", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "dr_pubs" ], + "summary" : "return DR_Pub details", + "description" : "create a DR Publisher in the specified environment.", + "operationId" : "addDr_Pub", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dr_pubs/{pubId}" : { + "get" : { + "tags" : [ "dr_pubs" ], + "summary" : "return DR_Pub details", + "description" : "returns a DR Publisher in the specified environment. Gets a `DR_Pub` object by pubId", + "operationId" : "get", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "pubId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "dr_pubs" ], + "summary" : "return DR_Pub details", + "description" : "update a DR Publisher in the specified environment. Update a `DR_Pub` object by pubId", + "operationId" : "updateDr_Pub", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "pubId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "dr_pubs" ], + "summary" : "return DR_Pub details", + "description" : "delete a DR Publisher in the specified environment. Delete a `DR_Pub` object by pubId", + "operationId" : "deleteDr_Pub", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "pubId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "204" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dr_subs" : { + "get" : { + "tags" : [ "dr_subs" ], + "summary" : "return DR_Sub details", + "description" : "Returns array of `DR_Sub` objects. Add filter for feedId.", + "operationId" : "getDr_Subs", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Sub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "dr_subs" ], + "summary" : "return DR_Sub details", + "description" : "Create a `DR_Sub` object. ", + "operationId" : "addDr_Sub", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Sub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/dr_subs/{subId}" : { + "get" : { + "tags" : [ "dr_subs" ], + "summary" : "return DR_Sub details", + "description" : "Retrieve a `DR_Sub` object, selected by subId", + "operationId" : "get", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "subId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Sub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "dr_subs" ], + "summary" : "return DR_Sub details", + "description" : "Update a `DR_Sub` object, selected by subId", + "operationId" : "updateDr_Sub", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "subId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Sub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "dr_subs" ], + "summary" : "return DR_Sub details", + "description" : "Delete a `DR_Sub` object, selected by subId", + "operationId" : "deleteDr_Sub", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "subId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Sub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/feeds" : { + "get" : { + "tags" : [ "Feeds" ], + "summary" : "return Feed details", + "description" : "Returns array of `Feed` objects.", + "operationId" : "getFeeds", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "feedName", + "in" : "query", + "required" : false, + "type" : "string" + }, { + "name" : "version", + "in" : "query", + "required" : false, + "type" : "string" + }, { + "name" : "match", + "in" : "query", + "required" : false, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Feed" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "Feeds" ], + "summary" : "return Feed details", + "description" : "Create a of `Feed` object.", + "operationId" : "addFeed", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "useExisting", + "in" : "query", + "required" : false, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Feed" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/feeds/sync" : { + "put" : { + "tags" : [ "Feeds" ], + "summary" : "sync feeds to existing DR", + "description" : "When Bus Controller is deployed after DR, then it is possiblethat DR has previous provisioning data that needs to be importedinto Bus Controller.", + "operationId" : "syncFeeds", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "hard", + "in" : "query", + "required" : false, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Feed" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/feeds/{id}" : { + "get" : { + "tags" : [ "Feeds" ], + "summary" : "return Feed details", + "description" : "Retrieve a `Feed` object, specified by id.", + "operationId" : "getFeed", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "id", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "Feeds" ], + "summary" : "return Feed details", + "description" : "Update a `Feed` object, specified by id.", + "operationId" : "updateFeed", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "id", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Feed" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "Feeds" ], + "summary" : "return Feed details", + "description" : "Delete a `Feed` object, specified by id.", + "operationId" : "deleteFeed", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "id", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "$ref" : "#/definitions/Feed" + } + }, + "204" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Feed" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/info" : { + "get" : { + "tags" : [ "info" ], + "summary" : "return info details", + "description" : "returns the `info` object", + "operationId" : "getInfo", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Dmaap" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/mr_clients" : { + "get" : { + "tags" : [ "MR_Clients" ], + "summary" : "return MR_Client details", + "description" : "Returns array of `MR_Client` objects.", + "operationId" : "getMr_Clients", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Client" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "MR_Clients" ], + "summary" : "Associate an MR_Client object to a Topic", + "description" : "Create a `MR_Client` object.The `dcaeLocation` attribute is used to match an `MR_Cluster` object with the same value, with the intent of localizing message traffic. In legacy implementation, the `clientRole` is granted appropriate permission in AAF. Newer implementions may instead specify an AAF Identity, which will be added to the appropriate `Topic` role.", + "operationId" : "addMr_Client", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Client" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/mr_clients/{clientId}" : { + "put" : { + "tags" : [ "MR_Clients" ], + "summary" : "Update an MR_Client object", + "description" : "Update a `MR_Client` object, specified by clientId", + "operationId" : "updateMr_Client", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "clientId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Client" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/mr_clients/{subId}" : { + "get" : { + "tags" : [ "MR_Clients" ], + "summary" : "return MR_Client details", + "description" : "Retrieve a `MR_Client` object, specified by clientId", + "operationId" : "test", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "subId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Client" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "MR_Clients" ], + "summary" : "Delete an MR_Client object", + "description" : "Delete a `MR_Client` object, specified by clientId", + "operationId" : "deleteMr_Client", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "subId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "$ref" : "#/definitions/MR_Client" + } + }, + "204" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Client" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/mr_clusters" : { + "get" : { + "tags" : [ "MR_Clusters" ], + "summary" : "return MR_Cluster details", + "description" : "Returns array of `MR_Cluster` objects.", + "operationId" : "getMr_Clusters", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Cluster" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "MR_Clusters" ], + "summary" : "return MR_Cluster details", + "description" : "Create an `MR_Cluster` object.", + "operationId" : "addMr_Cluster", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Cluster" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/mr_clusters/{clusterId}" : { + "get" : { + "tags" : [ "MR_Clusters" ], + "summary" : "return MR_Cluster details", + "description" : "Retrieve an `MR_Cluster` object, specified by clusterId.", + "operationId" : "getMR_Cluster", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "clusterId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Cluster" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "MR_Clusters" ], + "summary" : "return MR_Cluster details", + "description" : "Update an `MR_Cluster` object, specified by clusterId.", + "operationId" : "updateMr_Cluster", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "clusterId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Cluster" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "MR_Clusters" ], + "summary" : "return MR_Cluster details", + "description" : "Delete an `MR_Cluster` object, specified by clusterId.", + "operationId" : "deleteMr_Cluster", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "clusterId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "$ref" : "#/definitions/MR_Cluster" + } + }, + "204" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/MR_Cluster" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/topics" : { + "get" : { + "tags" : [ "topics" ], + "summary" : "return Topic details", + "description" : "Returns array of `Topic` objects.", + "operationId" : "getTopics", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Topic" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "post" : { + "tags" : [ "topics" ], + "summary" : "Create a Topic object", + "description" : "Create `Topic` object.For convenience, the message body may populate the `clients` array, in which case each entry will be added as an `MR_Client`. Beginning in ONAP Dublin Release, dbcapi will create two AAF Roles by default, one each for the publisher and subscriber per topic. MR_Clients can then specify an AAF Identity to be added to the appropriate default Role, avoiding the need to create Role(s) in advance.", + "operationId" : "addTopic", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "useExisting", + "in" : "query", + "required" : false, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Topic" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + }, + "/topics/{topicId}" : { + "get" : { + "tags" : [ "topics" ], + "summary" : "return Topic details", + "description" : "Retrieve a `Topic` object, identified by topicId", + "operationId" : "getTopic", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "topicId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Topic" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "put" : { + "tags" : [ "topics" ], + "summary" : "return Topic details", + "description" : "Update a `Topic` object, identified by topicId", + "operationId" : "updateTopic", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "topicId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Topic" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + }, + "delete" : { + "tags" : [ "topics" ], + "summary" : "return Topic details", + "description" : "Delete a `Topic` object, identified by topicId", + "operationId" : "deleteTopic", + "consumes" : [ "application/json" ], + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "topicId", + "in" : "path", + "required" : true, + "type" : "string" + } ], + "responses" : { + "200" : { + "description" : "successful operation", + "schema" : { + "$ref" : "#/definitions/Topic" + } + }, + "204" : { + "description" : "Success", + "schema" : { + "$ref" : "#/definitions/Topic" + } + }, + "400" : { + "description" : "Error", + "schema" : { + "$ref" : "#/definitions/ApiError" + } + } + } + } + } + }, + "definitions" : { + "ApiError" : { + "type" : "object", + "properties" : { + "code" : { + "type" : "integer", + "format" : "int32" + }, + "message" : { + "type" : "string" + }, + "fields" : { + "type" : "string" + }, + "is2xx" : { + "type" : "boolean" + } + } + }, + "BrTopic" : { + "type" : "object", + "properties" : { + "brSource" : { + "type" : "string" + }, + "brTarget" : { + "type" : "string" + }, + "mmAgentName" : { + "type" : "string" + }, + "topicCount" : { + "type" : "integer", + "format" : "int32" + } + } + }, + "DR_Node" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "fqdn" : { + "type" : "string" + }, + "dcaeLocationName" : { + "type" : "string" + }, + "hostName" : { + "type" : "string" + }, + "version" : { + "type" : "string" + } + } + }, + "DR_Pub" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "dcaeLocationName" : { + "type" : "string" + }, + "username" : { + "type" : "string" + }, + "userpwd" : { + "type" : "string" + }, + "feedId" : { + "type" : "string" + }, + "pubId" : { + "type" : "string" + }, + "feedName" : { + "type" : "string" + }, + "feedVersion" : { + "type" : "string" + } + } + }, + "DR_Sub" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "dcaeLocationName" : { + "type" : "string" + }, + "username" : { + "type" : "string" + }, + "userpwd" : { + "type" : "string" + }, + "feedId" : { + "type" : "string" + }, + "deliveryURL" : { + "type" : "string" + }, + "logURL" : { + "type" : "string" + }, + "subId" : { + "type" : "string" + }, + "use100" : { + "type" : "boolean" + }, + "suspended" : { + "type" : "boolean" + }, + "owner" : { + "type" : "string" + }, + "guaranteedDelivery" : { + "type" : "boolean" + }, + "guaranteedSequence" : { + "type" : "boolean" + }, + "privilegedSubscriber" : { + "type" : "boolean" + }, + "decompress" : { + "type" : "boolean" + }, + "feedName" : { + "type" : "string" + }, + "feedVersion" : { + "type" : "string" + } + } + }, + "DcaeLocation" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "clli" : { + "type" : "string" + }, + "dcaeLayer" : { + "type" : "string" + }, + "dcaeLocationName" : { + "type" : "string" + }, + "openStackAvailabilityZone" : { + "type" : "string" + }, + "subnet" : { + "type" : "string" + }, + "local" : { + "type" : "boolean" + }, + "central" : { + "type" : "boolean" + } + } + }, + "Dmaap" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "version" : { + "type" : "string" + }, + "topicNsRoot" : { + "type" : "string" + }, + "dmaapName" : { + "type" : "string" + }, + "drProvUrl" : { + "type" : "string" + }, + "bridgeAdminTopic" : { + "type" : "string" + }, + "loggingUrl" : { + "type" : "string" + }, + "nodeKey" : { + "type" : "string" + }, + "accessKeyOwner" : { + "type" : "string" + } + } + }, + "Feed" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "feedId" : { + "type" : "string" + }, + "feedName" : { + "type" : "string" + }, + "feedVersion" : { + "type" : "string" + }, + "feedDescription" : { + "type" : "string" + }, + "owner" : { + "type" : "string" + }, + "asprClassification" : { + "type" : "string" + }, + "publishURL" : { + "type" : "string" + }, + "subscribeURL" : { + "type" : "string" + }, + "suspended" : { + "type" : "boolean" + }, + "logURL" : { + "type" : "string" + }, + "formatUuid" : { + "type" : "string" + }, + "pubs" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/DR_Pub" + } + }, + "subs" : { + "type" : "array", + "items" : { + "$ref" : "#/definitions/DR_Sub" + } + }, + "bytes" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "byte" + } + } + } + }, + "MR_Client" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "dcaeLocationName" : { + "type" : "string", + "description" : "a tag indicating a logical deployment site" + }, + "topicURL" : { + "type" : "string", + "description" : "the URL for a MR instance - typically in the same dcaeLocation - that this client should use to access the topic" + }, + "fqtn" : { + "type" : "string", + "description" : "Fully Qualified Topic Name constructed by dbcapi" + }, + "clientRole" : { + "type" : "string", + "description" : "an AAF Role to be granted an appropriate Permission. If specified, takes precedence over clientIdentity, for backwards compatibility." + }, + "action" : { + "type" : "array", + "description" : "one or more actions from the set (\"pub\", \"sub\", \"view\") for which this client needs Permission", + "items" : { + "type" : "string" + } + }, + "mrClientId" : { + "type" : "string", + "description" : "a unique identifier generated by dbcapi for this client" + }, + "clientIdentity" : { + "type" : "string", + "description" : "an AAF identity to be associated to an appropriate topic Role" + } + } + }, + "MR_Cluster" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "dcaeLocationName" : { + "type" : "string" + }, + "fqdn" : { + "type" : "string" + }, + "topicProtocol" : { + "type" : "string" + }, + "topicPort" : { + "type" : "string" + }, + "replicationGroup" : { + "type" : "string" + }, + "sourceReplicationPort" : { + "type" : "string" + }, + "targetReplicationPort" : { + "type" : "string" + } + } + }, + "MirrorMaker" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "sourceCluster" : { + "type" : "string" + }, + "targetCluster" : { + "type" : "string" + }, + "mmName" : { + "type" : "string" + }, + "topics" : { + "type" : "array", + "items" : { + "type" : "string" + } + }, + "whitelistUpdateJSON" : { + "type" : "string" + }, + "topicCount" : { + "type" : "integer", + "format" : "int32" + } + } + }, + "Topic" : { + "type" : "object", + "properties" : { + "lastMod" : { + "type" : "string", + "format" : "date-time", + "description" : "datestamp for last update to this object" + }, + "status" : { + "type" : "string", + "enum" : [ "EMPTY", "NEW", "STAGED", "VALID", "INVALID", "DELETED" ] + }, + "fqtn" : { + "type" : "string", + "description" : "Fully Qualified Topic Name constructed by dbcapi, following the rules for `fqtnStyle`" + }, + "topicName" : { + "type" : "string", + "description" : "the short name used by humans, and utilized to construct the `FQTN`" + }, + "topicDescription" : { + "type" : "string", + "description" : "a description of what this Topic is used for" + }, + "tnxEnabled" : { + "type" : "string" + }, + "owner" : { + "type" : "string", + "description" : "a label used to identify who requested this `Topic` to be provisioned. In the future this may be an AAF Identity." + }, + "formatUuid" : { + "type" : "string", + "description" : "a reference to an identifier that describes a data format used for this `Topic`" + }, + "replicationCase" : { + "type" : "string", + "description" : "An indicator for how this `Topic` should be replicated when there are more than one `MR_Cluster` instances", + "enum" : [ "REPLICATION_NOT_SPECIFIED", "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", "REPLICATION_EDGE_TO_FQDN", "REPLICATION_FQDN_TO_EDGE", "REPLICATION_FQDN_TO_GLOBAL", "REPLICATION_GLOBAL_TO_FQDN", "REPLICATION_EDGE_TO_FQDN_TO_GLOBAL", "REPLICATION_GLOBAL_TO_FQDN_TO_EDGE" ] + }, + "globalMrURL" : { + "type" : "string", + "description" : "the URL of an outside MR instance" + }, + "fqtnStyle" : { + "type" : "string", + "description" : "the construction rule for the `fqtn` field", + "enum" : [ "FQTN_NOT_SPECIFIED", "FQTN_LEGACY_FORMAT", "FQTN_PROJECTID_FORMAT", "FQTN_PROJECTID_VERSION_FORMAT" ] + }, + "version" : { + "type" : "string", + "description" : "a hook for any versioning needed for managing a `Topic` over time" + }, + "partitionCount" : { + "type" : "string", + "description" : "the kafka attribute for specifying the number of partitions" + }, + "replicationCount" : { + "type" : "string", + "description" : "the kafka attribute for specifying replication within an `MR_Cluster` instance" + }, + "publisherRole" : { + "type" : "string", + "description" : "a value generated by dbcapi, this AAF Role has permission to publish to this `Topic`" + }, + "subscriberRole" : { + "type" : "string", + "description" : "a value generated by dbcapi, this AAF Role has permission to subscribe to this `Topic`" + }, + "clients" : { + "type" : "array", + "description" : "an array of `MR_Client` objects associated to this `Topic`", + "items" : { + "$ref" : "#/definitions/MR_Client" + } + } + } + } + } +} \ No newline at end of file diff --git a/docs/architecture.rst b/docs/architecture.rst new file mode 100644 index 0000000..721146d --- /dev/null +++ b/docs/architecture.rst @@ -0,0 +1,49 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. _architecture: + +Architecture +============ + + +Capabilities +------------ +Bus Controller is a RESTful web service used to provision DMaaP topics on MR (Message Router) +and feeds on DR (Data Router), with associated authorization via AAF. + +Usage Scenarios +--------------- +Bus Controller endpoints are used to provision: + +- an authorized topic on MR, and to create and grant permission for publishers and subscribers. +- a feed on DR, with associated user authentication. + +.. blockdiag:: + + blockdiag layers { + orientation = portrait + DBC_CLIENT -> DBC_API; + DBC_API -> MR; + DBC_API -> DR; + DBC_API -> AAF; + group l1 { + color = blue; + label = "Bus Controller Container"; + DBC_API; + } + group l2 { + color = yellow; + label = "MR"; + MR; + } + group l3 { + color = orange; + label = "DR"; + DR; + } + group l4 { + color = green; + label = "AAF"; + AAF; + } + } diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst deleted file mode 100644 index 547e204..0000000 --- a/docs/architecture/architecture.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 -.. _architecture: - -Architecture -============ - - -Capabilities ------------- -Bus Controller is a RESTful web service used to provision DMaaP topics (on Message Router) and feeds (on Data Router), with associated authorization (on AAF). - -Usage Scenarios ---------------- -Bus Controller endpoints are used to provision: -- a authorized topic on MR, and to create and grant permission for publishers and subscribers. -- a feed on DR, with associated user authenticatio n. - -.. blockdiag:: - - blockdiag layers { - orientation = portrait - DBC_CLIENT -> DBC_API; - DBC_API -> MR; - DBC_API -> DR; - DBC_API -> AAF; - group l1 { - color = blue; - label = "Bus Controller Container"; - DBC_API; - } - group l2 { - color = yellow; - label = "MR"; - MR; - } - group l3 { - color = orange; - label = "DR"; - DR; - } - group l4 { - color = green; - label = "AAF"; - AAF; - } - } diff --git a/docs/configuration.rst b/docs/configuration.rst new file mode 100644 index 0000000..d85b4dc --- /dev/null +++ b/docs/configuration.rst @@ -0,0 +1,11 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Configuration +============= + +Refer to README file in buscontroller repo for a list of properties. +https://gerrit.onap.org/r/gitweb?p=dmaap/buscontroller.git;a=blob;f=README.md + +These properties can be modified by changing the resource file in the helm chart prior to deployment. +oom/kubernetes/dmaap/charts/dmaap-bus-controller/resources/config/dmaapbc.properties diff --git a/docs/configuration/configuration.rst b/docs/configuration/configuration.rst deleted file mode 100644 index d85b4dc..0000000 --- a/docs/configuration/configuration.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Configuration -============= - -Refer to README file in buscontroller repo for a list of properties. -https://gerrit.onap.org/r/gitweb?p=dmaap/buscontroller.git;a=blob;f=README.md - -These properties can be modified by changing the resource file in the helm chart prior to deployment. -oom/kubernetes/dmaap/charts/dmaap-bus-controller/resources/config/dmaapbc.properties diff --git a/docs/consumedapis.rst b/docs/consumedapis.rst new file mode 100644 index 0000000..303fad5 --- /dev/null +++ b/docs/consumedapis.rst @@ -0,0 +1,11 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Consumed APIs +============== + +Bus Controller consumes the following APIs: + +1) the Message Router topic creation API +2) the AAF authorization API to create and grant permissions +3) the DR Provisioning API to create feeds and subscribers diff --git a/docs/consumedapis/consumedapis.rst b/docs/consumedapis/consumedapis.rst deleted file mode 100644 index c45851c..0000000 --- a/docs/consumedapis/consumedapis.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Consumed APIs -============== - -Bus Controller consumes the following APIs: -1) the Message Router topic creation API -2) the AAF authorization API to create and grant permissions -3) the DR Provisioning API to create feeds and subscribers diff --git a/docs/delivery.rst b/docs/delivery.rst new file mode 100644 index 0000000..e438b25 --- /dev/null +++ b/docs/delivery.rst @@ -0,0 +1,7 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Delivery +========= + +Bus Controller is not involved in the active transport of data. It is for provisioning only. diff --git a/docs/delivery/delivery.rst b/docs/delivery/delivery.rst deleted file mode 100644 index e438b25..0000000 --- a/docs/delivery/delivery.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Delivery -========= - -Bus Controller is not involved in the active transport of data. It is for provisioning only. diff --git a/docs/humaninterfaces/humaninterfaces.rst b/docs/humaninterfaces/humaninterfaces.rst deleted file mode 100644 index f115731..0000000 --- a/docs/humaninterfaces/humaninterfaces.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Human Interfaces -================ - - -Buscontroller does not have human interfaces. diff --git a/docs/index.rst b/docs/index.rst index 4e2ad15..5feae2f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,17 +6,16 @@ dmaap/buscontroller =================== .. toctree:: - :maxdepth: 3 + :maxdepth: 1 + + architecture.rst + configuration.rst + installation.rst + offeredapis.rst + consumedapis.rst + logging.rst + delivery.rst + security.rst + release-notes.rst - architecture/architecture.rst - release-notes/release-notes.rst - configuration/configuration.rst - humaninterfaces/humaninterfaces.rst - offeredapis/offeredapis.rst - Installation/Installation.rst - consumedapis/consumedapis.rst - administration/administration.rst - logging/logging.rst - delivery/delivery.rst - security/security.rst diff --git a/docs/installation.rst b/docs/installation.rst new file mode 100644 index 0000000..cee606c --- /dev/null +++ b/docs/installation.rst @@ -0,0 +1,72 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Installation +============ + +Bus Controller is developed using Postgresql. An embedded Jetty server is used to create the REST service. +The service is packaged as a Docker container image. +Helm charts for Bus Controller are part of the overall dmaap chart set. + +Steps for OOM Deployment +------------------------ + +1) Clone the oom repo +2) cd oom/kubernetes +3) (optionally, customize the buscontroller configuration - see below) +4) make dmaap +5) helm install dmaap --name=dmaap --namespace=mr + + +Customizing the Bus Controller configuration +-------------------------------------------- + +The Bus Controller is highly configurable, but by default has settings that should work for a standard ONAP oom deployment. +However, if some customization is desired, there are places to change behavior: + +1) The --namespace argument of the helm install step is also refernced to compose the topic namespace used. i.e. the value is appended to org.onap.dmaap. Since Message Router uses org.onap.dmaap.mr by default, we also use --namespace=mr. But this can be changed to a value that matches a different deployment of MR. +2) oom/kubernetes/dmaap/charts/dmaap-bus-controller/values.yaml contains the set of tags used within the charts. These can be modified if necessary. +3) oom/kubernetes/dmaap/charts/dmaap-bus-controller/resources/config/buscontroller.env contains some environment settings for the container. These can be modified. For example, to indicate that AAF integration should be enabled, set USE_AAF=true in this file. +4) oom/kubernetes/dmaap/charts/dmaap-bus-controller/resources/config/dmaapbc.properties contains many properties which can be modified. For example, if a differerent Postgresql instance needed to be used, the value could be specified here. + + +Steps for local development and test +------------------------------------ +On Intel dev machine, in terminal (> indicates prompt) : +1) Build buscontroller images + > git clone https://gerrit.onap.org/r/dmaap/buscontroller + - anonymous http, can't push changes + > cd buscontroller + > mvn clean install -P docker + - builds dmaap-bc and dbc-client images +2) Run tests + > cd dmaap-bc/src/main/resources/ + > cp docker-databus-controller.conf /var/tmp/ + - set docker preferences/file sharing to access /var/tmp + - edit docker-compose.yml + - remove "nexus3.onap.org:10001/" from dmaap-bc:image: and dbc-client:image: to + use local images + > docker-compose up -d + - create sample.txt file (as above)(content of file not important) + > curl http://localhost:30241/webapi/bridge + +On Arm: +1) Build buscontroller images + > git clone https://gerrit.onap.org/r/dmaap/buscontroller + - anonymous http, can't push changes + > cd buscontroller + > mvn clean install -P docker -Ddocker.pull.registry=docker.io + - ensure we pull Arm version of base image +2) Run tests + > cd dmaap-bc/src/main/resources/ + > cp docker-databus-controller.conf /var/tmp/ + - set docker preferences/file sharing to access /var/tmp + - edit docker-compose.yml + - remove "nexus3.onap.org:10001/" from dmaap-bc:image: and dbc-client:image: to + use local images + - replace 'crunchydata/crunchy-postgres:centos7-10.4-2.0.0' with + multi-platform 'postgres:9.6-alpine' normative image + > docker-compose up -d + - create sample.txt file (as above)(content of file not important) + > curl http://localhost:30241/webapi/bridge + diff --git a/docs/logging.rst b/docs/logging.rst new file mode 100644 index 0000000..676a106 --- /dev/null +++ b/docs/logging.rst @@ -0,0 +1,19 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + .. http://creativecommons.org/licenses/by/4.0 + +Logging +======= + +Where to Access Information +--------------------------- +Bus Controller uses logback framework to generate logs found under logs/ONAP. +Logs are organized into files: + +- application.log - contains general logs +- error.log - contains errors +- audit.log - contains transactions for audit trail +- server.log - contains jetty server specific logging + +Error / Warning Messages +------------------------ +Logging to error.log will distinguish critical errors from warnings. diff --git a/docs/logging/logging.rst b/docs/logging/logging.rst deleted file mode 100644 index aa6ae57..0000000 --- a/docs/logging/logging.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - .. http://creativecommons.org/licenses/by/4.0 - -Logging -======= - -.. note:: - * This section is used to describe the informational or diagnostic messages emitted from - a software component and the methods or collecting them. - - * This section is typically: provided for a platform-component and sdk; and - referenced in developer and user guides - - * This note must be removed after content has been added. - - -Where to Access Information ---------------------------- -Bus Controller uses logback framework to generate logs found under logs/ONAP. -Logs are organized into files: -application.log - contains general logs -error.log - contains errors -audit.log - contains transactions for audit trail -server.log - contains jetty server specific logging - -Error / Warning Messages ------------------------- -Logging to error.log will distinguish critical errors from warnings. diff --git a/docs/offeredapis.rst b/docs/offeredapis.rst new file mode 100644 index 0000000..61991da --- /dev/null +++ b/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 +.. _offeredapis: + +Offered APIs +============== + +.. toctree:: + :maxdepth: 1 + + apis/api-table.rst + apis/api.rst diff --git a/docs/offeredapis/offeredapis.rst b/docs/offeredapis/offeredapis.rst deleted file mode 100644 index f905f38..0000000 --- a/docs/offeredapis/offeredapis.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 -.. _offeredapis: - -Offered APIs -============== - -Refer to Bus Controller API under https://onap.readthedocs.io/en/latest/guides/onap-developer/apiref/index.html diff --git a/docs/release-notes.rst b/docs/release-notes.rst new file mode 100644 index 0000000..cce6ca7 --- /dev/null +++ b/docs/release-notes.rst @@ -0,0 +1,375 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING +.. _release_notes: + +============= +Release Notes +============= + +.. note +.. * This Release Notes must be updated each time the team decides to Release new artifacts. +.. * The scope of these Release Notes are for ONAP DMaaP Buscontroller. 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. + + + +Honolulu +======== + + +Abstract +-------- + + +This document provides the release notes for the Honolulu release. + + +Summary +------- + +Mainly Security changes to update Project Lead details, and update outdated packages + +Release Data +------------ + ++--------------------------------------+--------------------------------------+ +| **DMaaP Bus Controller Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | - dmaap-bc 2.0.5 | +| | - dbc-client 1.0.9 | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 8.0.0 Honolulu | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2021-04-01 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ +* Updated log4j (Listed in "Known Vulternabilities" below) - DMAAP-1515 +* Update Project Lead details - DMAAP-1538 + +Known Limitations, Issues and Workarounds +----------------------------------------- + +System Limitations +------------------ + + +Known Vulnerabilities +--------------------- + +* CVE-2019-17571 + +Workarounds +----------- + + +Security Notes +-------------- + + +References +---------- + +For more information on the ONAP Honolulu release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + + +Quick Links: + +- `DMAAP project page `_ + +- `Passing Badge information for DMAAP `_ + +Guilin +====== + +Abstract +-------- + + +This document provides the release notes for the Guilin release. + + +Summary +------- + +Release Data +------------ + ++--------------------------------------+--------------------------------------+ +| **DMaaP Bus Controller Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | - dmaap-bc 2.0.4 | +| | - dbc-client 1.0.9 | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 7.0.0 guilin | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2020-11-18 | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + +Known Limitations, Issues and Workarounds +----------------------------------------- + +System Limitations +------------------ + + +Known Vulnerabilities +--------------------- + +* CVE-2018-11307 +* CVE-2018-12022 +* CVE-2018-12023 +* CVE-2019-17571 +* CVE-2016-2510 +* CVE-2017-18640 + + +Workarounds +----------- + + +Security Notes +-------------- + + +References +---------- + +For more information on the ONAP Guilin release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + + +Quick Links: + +- `DMAAP project page `_ + +- `Passing Badge information for DMAAP `_ + +Frankfurt +========= + + +Abstract +-------- + + +This document provides the release notes for the Frankfurt release. + + +Summary +------- + +The Frankfurt release focused on improved packaging and deployment. + +Release Data +------------ + ++--------------------------------------+--------------------------------------+ +| **DMaaP Bus Controller Project** | | +| | | ++--------------------------------------+--------------------------------------+ +| **Docker images** | - dmaap-bc 2.0.4 | +| | - dbc-client 1.0.9 | ++--------------------------------------+--------------------------------------+ +| **Release designation** | 6.0.0 frankfurt | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2020-05-14 (TBD) | +| | | ++--------------------------------------+--------------------------------------+ + + +New features +------------ + +* Implement boolean flag in OOM to disable HTTP ports +* Dynamic cert distribution from OOM AAF. The dmaap-bc pod now utilizes an initContainer to acquire SSL certificates from AAF +* the core library, dbcapi, now utilizes Java 11 and new base images were required, so we consider this a major release increment. + + +Known Limitations, Issues and Workarounds +----------------------------------------- + + +System Limitations +------------------ + + +Known Vulnerabilities +--------------------- + +* CVE-2018-11307 +* CVE-2018-12022 +* CVE-2018-12023 +* CVE-2019-17571 +* CVE-2016-2510 +* CVE-2017-18640 + + +Workarounds +----------- + + +Security Notes +-------------- + + +References +---------- + +For more information on the ONAP Frankfurt release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + + +Quick Links: + +- `DMAAP project page `_ + +- `Passing Badge information for DMAAP `_ + +El Alto +======= + +Version: 1.1.5 +-------------- + +: Release Date: 2019-06-06 (El Alto) + +**New Features** + + - No new features + +**Bug Fixes** + NA + +**Known Issues** + NA + +**Security Notes** +DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `Dublin `_. + +Quick Links: + +- `DMAAP project page `_ + +- `Passing Badge information for DMAAP `_ + +- `El Alto Project Vulnerability Review Table for DMAAP `_ + +**Upgrade Notes** + NA + +**Deprecation Notes** + NA + + + +Version: 1.1.5 (Dublin) +----------------------- +: Release Date: 2019-06-06 + +**New Features** + + - DMaaP Provisioning via Bus Controller + +**Bug Fixes** + NA + +**Known Issues** + NA + +**Security Notes** +DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `Dublin `_. + +Quick Links: + +- `DMAAP project page `_ + +- `Passing Badge information for DMAAP `_ + +- `Dublin Project Vulnerability Review Table for DMAAP `_ + +**Upgrade Notes** +NA + +**Deprecation Notes** + + +Version: 1.0.23 +--------------- +: Release Date: 2018-10-18 + +**New Features** + + - configMap for properties + - AAF integration + +**Bug Fixes** + NA + +**Known Issues** + NA + +**Security Notes** +DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. + +Quick Links: + +- `DMAAP project page `_ + +- `Passing Badge information for DMAAP `_ + +- `Project Vulnerability Review Table for DMAAP `_ + +**Upgrade Notes** +NA + +**Deprecation Notes** diff --git a/docs/release-notes/release-notes.rst b/docs/release-notes/release-notes.rst deleted file mode 100644 index 42f7b2c..0000000 --- a/docs/release-notes/release-notes.rst +++ /dev/null @@ -1,366 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING -.. _release_notes: - -DMaaP Buscontroller Release Notes -==================== - -.. note -.. * This Release Notes must be updated each time the team decides to Release new artifacts. -.. * The scope of these Release Notes are for ONAP DMaaP Buscontroller. 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. - - -.. =========================== -.. * * * Honolulu * * * -.. =========================== - - - -Abstract --------- - - -This document provides the release notes for the Honolulu release. - - -Summary -------- - -Mainly Security changes to update Project Lead details, and update outdated packages - -Release Data ------------- - -+--------------------------------------+--------------------------------------+ -| **DMaaP Bus Controller Project** | | -| | | -+--------------------------------------+--------------------------------------+ -| **Docker images** | - dmaap-bc 2.0.5 | -| | - dbc-client 1.0.9 | -+--------------------------------------+--------------------------------------+ -| **Release designation** | 8.0.0 Honolulu | -| | | -+--------------------------------------+--------------------------------------+ -| **Release date** | 2021-04-01 (TBD) | -| | | -+--------------------------------------+--------------------------------------+ - - -New features ------------- -* Updated log4j (Listed in "Known Vulternabilities" below) - DMAAP-1515 -* Update Project Lead details - DMAAP-1538 - -Known Limitations, Issues and Workarounds ------------------------------------------ - -System Limitations ------------------- - - -Known Vulnerabilities ---------------------- - -* CVE-2019-17571 - -Workarounds ------------ - - -Security Notes --------------- - - -References ----------- - -For more information on the ONAP Guilin release, please see: - -#. `ONAP Home Page`_ -#. `ONAP Documentation`_ -#. `ONAP Release Downloads`_ -#. `ONAP Wiki Page`_ - - -.. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org -.. _`ONAP Documentation`: https://docs.onap.org -.. _`ONAP Release Downloads`: https://git.onap.org - - -Quick Links: -- `DMAAP project page `_ -- `Passing Badge information for DMAAP `_ - -.. =========================== -.. * * * GUILIN * * * -.. =========================== - - - -Abstract --------- - - -This document provides the release notes for the Guilin release. - - -Summary -------- - -Release Data ------------- - -+--------------------------------------+--------------------------------------+ -| **DMaaP Bus Controller Project** | | -| | | -+--------------------------------------+--------------------------------------+ -| **Docker images** | - dmaap-bc 2.0.4 | -| | - dbc-client 1.0.9 | -+--------------------------------------+--------------------------------------+ -| **Release designation** | 7.0.0 guilin | -| | | -+--------------------------------------+--------------------------------------+ -| **Release date** | 2020-11-18 | -| | | -+--------------------------------------+--------------------------------------+ - - -New features ------------- - -Known Limitations, Issues and Workarounds ------------------------------------------ - -System Limitations ------------------- - - -Known Vulnerabilities ---------------------- - -* CVE-2018-11307 -* CVE-2018-12022 -* CVE-2018-12023 -* CVE-2019-17571 -* CVE-2016-2510 -* CVE-2017-18640 - - -Workarounds ------------ - - -Security Notes --------------- - - -References ----------- - -For more information on the ONAP Guilin release, please see: - -#. `ONAP Home Page`_ -#. `ONAP Documentation`_ -#. `ONAP Release Downloads`_ -#. `ONAP Wiki Page`_ - - -.. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org -.. _`ONAP Documentation`: https://docs.onap.org -.. _`ONAP Release Downloads`: https://git.onap.org - - -Quick Links: -- `DMAAP project page `_ -- `Passing Badge information for DMAAP `_ - -.. =========================== -.. * * * FRANKFURT * * * -.. =========================== - - - -Abstract --------- - - -This document provides the release notes for the Frankfurt release. - - -Summary -------- - -The Frankfurt release focused on improved packaging and deployment. - -Release Data ------------- - -+--------------------------------------+--------------------------------------+ -| **DMaaP Bus Controller Project** | | -| | | -+--------------------------------------+--------------------------------------+ -| **Docker images** | - dmaap-bc 2.0.4 | -| | - dbc-client 1.0.9 | -+--------------------------------------+--------------------------------------+ -| **Release designation** | 6.0.0 frankfurt | -| | | -+--------------------------------------+--------------------------------------+ -| **Release date** | 2020-05-14 (TBD) | -| | | -+--------------------------------------+--------------------------------------+ - - -New features ------------- - -* Implement boolean flag in OOM to disable HTTP ports -* Dynamic cert distribution from OOM AAF. The dmaap-bc pod now utilizes an initContainer to acquire SSL certificates from AAF -* the core library, dbcapi, now utilizes Java 11 and new base images were required, so we consider this a major release increment. - - -Known Limitations, Issues and Workarounds ------------------------------------------ - - -System Limitations ------------------- - - -Known Vulnerabilities ---------------------- - -* CVE-2018-11307 -* CVE-2018-12022 -* CVE-2018-12023 -* CVE-2019-17571 -* CVE-2016-2510 -* CVE-2017-18640 - - -Workarounds ------------ - - -Security Notes --------------- - - -References ----------- - -For more information on the ONAP Frankfurt release, please see: - -#. `ONAP Home Page`_ -#. `ONAP Documentation`_ -#. `ONAP Release Downloads`_ -#. `ONAP Wiki Page`_ - - -.. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org -.. _`ONAP Documentation`: https://docs.onap.org -.. _`ONAP Release Downloads`: https://git.onap.org - - -Quick Links: -- `DMAAP project page `_ -- `Passing Badge information for DMAAP `_ - -.. ========================== -.. * * * EL ALTO * * * -.. ========================== - -Version: 1.1.5 --------------- - -: Release Date: 2019-06-06 (El Alto) - -**New Features** - - - No new features - -**Bug Fixes** - NA - -**Known Issues** - NA - -**Security Notes** -DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `Dublin `_. - -Quick Links: -- `DMAAP project page `_ -- `Passing Badge information for DMAAP `_ -- `El Alto Project Vulnerability Review Table for DMAAP ` - -**Upgrade Notes** - NA - -**Deprecation Notes** - NA - - - -Version: 1.1.5 (Dublin) ------------------------ -: Release Date: 2019-06-06 - -**New Features** - - - DMaaP Provisioning via Bus Controller - -**Bug Fixes** - NA - -**Known Issues** - NA - -**Security Notes** -DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `Dublin `_. - -Quick Links: -- `DMAAP project page `_ -- `Passing Badge information for DMAAP `_ -- `Dublin Project Vulnerability Review Table for DMAAP `_ - -**Upgrade Notes** -NA - -**Deprecation Notes** - - -Version: 1.0.23 ---------------- -: Release Date: 2018-10-18 - -**New Features** - - - configMap for properties - - AAF integration - -**Bug Fixes** - NA - -**Known Issues** - NA - -**Security Notes** -DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. - -Quick Links: -- `DMAAP project page `_ -- `Passing Badge information for DMAAP `_ -- `Project Vulnerability Review Table for DMAAP `_ - -**Upgrade Notes** -NA - -**Deprecation Notes** diff --git a/docs/security.rst b/docs/security.rst new file mode 100644 index 0000000..aab2c3d --- /dev/null +++ b/docs/security.rst @@ -0,0 +1,317 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Security +======== + +.. contents:: Table of Contents + +Roles and Permissions +--------------------- + +| Roles and permissions for DMaaP BC API are configured in connected AAF instance if ``UseAAF`` flag is set. +| The roles and permissions are being provisioned to AAF instance during DMaaP BC instance initialization phase only when AAF is in use. +| The default namespace in AAF for storing Bus Controller API roles and permissions is ``org.onap.dmaap-bc.api``. +| Separate permission is created for every HTTP method on each DMaaP BC REST api endpoint. +| Refer to :ref:`offeredapis` for comprehensive api information. +| Default name for DMaaP instance in ONAP is ``mr`` which is reflected in instance part of every created permission under DMaaP BC API. +| Exception of above rule is for ``/dmaap`` endpoint where additionally set of permissions for ``boot`` instance is defined: + +.. code-block:: bash + + org.onap.dmaap-bc.api.dmaap|boot|DELETE + org.onap.dmaap-bc.api.dmaap|boot|GET + org.onap.dmaap-bc.api.dmaap|boot|POST + org.onap.dmaap-bc.api.dmaap|boot|PUT + +| These permissions are needed during DMaaP initialization phase, until real instance is configured. This set of permissions is also provided in AAF instance by default. + +| DMaaP BC api permissions are distributed between several predefined roles: + +.. code-block:: bash + + org.onap.dmaap-bc.api.Controller + org.onap.dmaap-bc.api.Inventory + org.onap.dmaap-bc.api.Metrics + org.onap.dmaap-bc.api.Orchestrator + org.onap.dmaap-bc.api.PortalUser + +**Predefined roles brief description:** + - **Controller** - contains all permissions to DMaaP BC REST api, and should be assigned to identities which requires full admin rights to DMaaP BC, like ``dmaap-bc`` service identity itself. + - **Inventory** - role defined for functions which require ReadOnly access to the resources provided on DMaaP BC api. + - **Metrics** - role designed to be used by external function which examines the counts of topics that were replicating between different MR instances. Main permission of this role is to read from DMaaP BC bridge endpoint. + - **Orchestrator** - main role containing all permissions, which client micro-service might need. One of the example functions is ``dmaap plugin`` which is part of DCAE. The difference between this and Controller role is that Orchestrator is not responsible for deploying new k8s cluster or a message-router into that cluster, so it has limited, RO access to dmaap and dcaeLocations endpoints. + - **PortalUser** - role designed to be used in DMaaP Bus Controller Web App, which is based on the ONAP Portal SDK. If the UI app is deployed and available in ONAP Portal, portal users which will use DMaaP BC Web App shall be assigned to this role. + +Bus Controller API security options +----------------------------------- + +| There are three main properties in ``dmaapbc.properties`` responsible for configuring DMaaP BC API security option. +| These are ``enableCADI, useAAF, ApiPermission.Class``. Below table describes purpose of each property: + ++---------------------+------------------------------------------------------+---------------------------------------------------+ +| Property | Values | Description | ++=====================+======================================================+===================================================+ +|enableCADI | true/false | If set to true CADI filter is enabled on | +| | | BC REST api and authorization is performed | +| | | through connected AAF instance. | +| | | Otherwise legacy authorization mechanism is | +| | | used, which depends on api policy defined | +| | | with ApiPermission.Class property setting. | ++---------------------+------------------------------------------------------+---------------------------------------------------+ +|useAAF | true/false | The purpose of this flag is to configure if | +| | | specific namespaces, roles, and permissions | +| | | should be created in AAF instance when | +| | | calling some of DMaaP BC api endpoints. | +| | | Setting it to true will cause automatic | +| | | operation in AAF: | +| | | | +| | | - create set of BC API permissions and assign it | +| | | to predefined roles during DMaaP instance init | +| | | - create topic namespace, permissions and roles | +| | | when secure topic is created using topics | +| | | endpoint | +| | | - assign mr client to specified role in AAF when | +| | | adding new client for the topic using | +| | | ``mr_clients`` endpoint and clientRole defined | +| | | in request | ++---------------------+------------------------------------------------------+---------------------------------------------------+ +|ApiPermission.Class | - org.onap.dmaap.dbcapi.authentication.AllowAll | when CADI filter is not in use, API security is | +| | - org.onap.dmaap.dbcapi.authentication.AafLurAndFish | fulfilled with policy defined by class given in | +| | | this property. Currently available options are: | +| | | | +| | | - AllowAll - authentication and authorization is | +| | | skipped, everyone can invoke any method from BC | +| | | API | +| | | - AafLurAndFish - authentication and authorization| +| | | is performed with direct call to AAF instance | +| | | | +| | | This property allows to define custom policy, | +| | | for example to external authorization system | +| | | by implementing ``ApiAuthorizationCheckInterface``| +| | | | ++---------------------+------------------------------------------------------+---------------------------------------------------+ + +.. note:: + | When CADI filter is in use it caches internally authorization information for the identities calling BC api by default for 10 minutes. + | It can have negative impact on the functions which needs to call the api several times and use newly created permissions in next call. + | CADI cache time can be changed by setting ``aaf_user_expires`` property (value in ms) in DMaaP BC ``cadi.properties`` file. + | However the lowest achievable cache expiration time is 1 min due to internal CADI framework logic. + +**Security properties combination and its implications** + +.. note:: + | DMaaP-MR references in below table are used only to describe security Use Case between DMaaP internal components. + | To set-up DMaaP-MR security options properly, please refer DMaaP Message Router documentation. + | Each properties combination takes effect only on DMaaP BC API security. + ++-------------------------------+----------------------------------------------+--------------------------------+ +| Properties combination | Security result | Use Case | ++===============================+==============================================+================================+ +| | enableCADI = true | | AAF is in use for DMaaP-BC and DMaaP-MR | | DMaaP-BC - secured with AAF | +| | useAAF = true | can also rely on AAF. | | DMaaP-MR - secured with AAF | +| | ApiPermission.Class N/A | | CADI filter is in use, authorization data | | +| | caching is in use, function can authorize | | +| | using x509 certificate or Basic Auth. | | ++-------------------------------+----------------------------------------------+--------------------------------+ +| | enableCADI = true | | AAF is not in use for resources | | DMaaP-BC - secured with AAF | +| | useAAF = false | configuration. | | DMaaP-MR - unsecured | +| | ApiPermission.Class N/A | | CADI filter is in use, authorization data | | +| | caching is in use, function can authorize | | +| | using x509 certificate or Basic Auth. | | ++-------------------------------+----------------------------------------------+--------------------------------+ +| | enableCADI = false | | AAF is in use for DMaaP-BC and DMaaP-MR | | DMaaP-BC - secured with AAF | +| | useAAF = true | can also rely on AAF. | | DMaaP-MR - secured with AAF | +| | ApiPermission.Class = | | Legacy authorization is in use, no caching | | +| .AafLurAndFish | for authorization data, function can | | +| | authorize using Basic Auth only. | | ++-------------------------------+----------------------------------------------+--------------------------------+ +| | enableCADI = false | | AAF is not in use for resources | | DMaaP-BC - secured with AAF | +| | useAAF = false | configuration. | | DMaaP-MR - unsecured | +| | ApiPermission.Class = | | Legacy authorization is in use, no caching | | +| .AafLurAndFish | for authorization data, function can | | +| | authorize using Basic Auth only. | | ++-------------------------------+----------------------------------------------+--------------------------------+ +| | enableCADI = false | | AAF is in use for DMaaP-BC resources and | | DMaaP-BC - unsecured | +| | useAAF = true | DMaaP-MR can also rely on AAF. | | DMaaP-MR - secured with AAF | +| | ApiPermission.Class = | | No authentication and authorization is | | +| .AllowAll | performed on DMaaP BC REST api | | ++-------------------------------+----------------------------------------------+--------------------------------+ +| | enableCADI = false | | AAF is not in use for resources | | DMaaP-BC - unsecured | +| | useAAF = false | configuration. | | DMaaP-MR - unsecured | +| | ApiPermission.Class = | | No authentication and authorization is | | +| .AllowAll | performed on DMaaP BC REST api | | ++-------------------------------+----------------------------------------------+--------------------------------+ + +SSL DMaaP Certificates and Configuration +---------------------------------------- + +Configuration related to ssl can be found in the ``dmaapbc.properties``. +File is located in the ``/opt/app/dmaapbc/etc`` on the dmaap-bc pod. Directory contains also truststore and keystore files used in the ssl setup. +Each change in the configuration file requires restart of the application container + +.. code-block:: bash + + # + # Allow http access to API + # + HttpAllowed: true + # + # The port number for http as seen within the server + # + IntHttpPort: 8080 + # + # The port number for https as seen within the server + # Set to 0 if no certificate is available yet... + # + IntHttpsPort: 8443 + # + # The external port number for https taking port mapping into account + # + ExtHttpsPort: 443 + # + # The type of keystore for https + # + KeyStoreType: jks + # + # The path to the keystore for https + # + KeyStoreFile: etc/keystore + # + # The password for the https keystore + # + KeyStorePassword: + # + # The password for the private key in the https keystore + # + KeyPassword: + # + # The type of truststore for https + # + TrustStoreType: jks + # + # The path to the truststore for https + # + TrustStoreFile: etc/org.onap.dmaap-bc.trust.jks + # + # The password for the https truststore + # + TrustStorePassword: + + +AAF configuration +----------------- + +Usage of AAF can be turned on/off by setting ``UseAAF`` flag to ``true/false`` in the ``dmaapbc.properties`` file. By default AAF usage is turned on. +Property ``cadi.properties`` points to absolute path of the property file generated by AAF for the DmaaP BC application (``dmaap-bc@dmaap-bc.onap.org`` user). +This file is one of the AAF configuration files enabling authentication and authorization for DMaaP BC REST API. + +.. code-block:: bash + + ################# + # AAF Properties: + UseAAF: true + + ################# + # + # path to cadi.properties + # + cadi.properties: /opt/app/osaaf/local/org.onap.dmaap-bc.props + + +Complete AAF configuration consist of following files: + - org.onap.dmaap-bc.props - main configuration file + - org.onap.dmaap-bc.location.props - geographic coordinates of the application + - org.onap.dmaap-bc.cred.props - properties related to credentials, keystore and truststore + - org.onap.dmaap-bc.keyfile - keyfile + - org.onap.dmaap-bc.p12 - keystore + - org.onap.dmaap-bc.trust.jks - truststore + + +| All listed files are located in the ``/opt/app/dmaapbc/etc`` directory. +| File ``org.onap.dmaap-bc.props`` links together all property files by defining them in the ``cadi_prop_files`` property. +| By default all paths to other AAF related configuration points to ``/opt/app/osaaf/local/`` directory. +| This directory is default location that can be changed during generation of configuration files in the AAF application. +| In order to not duplicate mentioned files on the dmaap-bc pod following symbolic link is created in the filesystem: + +.. code-block:: bash + + ln -s /opt/app/dmaapbc/etc /opt/app/osaaf/local + + +User configured and used in DMaaP BC +------------------------------------ + +dmaap-bc@dmaap-bc.onap.org +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It is main user for the DMaaP BC application. It has permissions to validate if user accessing DMaaP BC REST api has appropriate permissions to +perform an action. + + +AAF Permissions ++++++++++++++++ + +.. code-block:: bash + + List Permissions by User[dmaap-bc@dmaap-bc.onap.org] + -------------------------------------------------------------------------------- + PERM Type Instance Action + -------------------------------------------------------------------------------- + org.onap.dmaap-bc.api.access * read + org.onap.dmaap-bc.certman local request,ignoreIPs,showpass + org.onap.dmaap-dr.feed * * + org.onap.dmaap-dr.sub * * + org.onap.dmaap.mr.access * * + org.onap.dmaap.mr.topic * * + org.onap.dmaap.mr.topic * view + org.onap.dmaap.mr.topicFactory :org.onap.dmaap.mr.topic:org.onap.dmaap.mr create,destroy + + +dmaap-bc-topic-mgr@dmaap-bc-topic-mgr.onap.org +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When ``UseAAF`` is set to true then creating topic also will create required perms in AAF. The perms will be created in ``org.onap.dmaap.mr`` namespace. +User ``dmaap-bc-topic-mgr`` is used in the process of creating such permissions. + +**Example:** + Topic name: + aSimpleTopic + + Permissions + | org.onap.dmaap.mr.topic|:topic.org.onap.dmaap.mr.aSimpleTopic|pub + | org.onap.dmaap.mr.topic|:topic.org.onap.dmaap.mr.aSimpleTopic|sub + | org.onap.dmaap.mr.topic|:topic.org.onap.dmaap.mr.aSimpleTopic|view + + +AAF Permissions ++++++++++++++++ + +.. code-block:: bash + + List Permissions by User[dmaap-bc-topic-mgr@dmaap-bc-topic-mgr.onap.org] + --------------------------------------------------------------------------------------- + PERM Type Instance Action + --------------------------------------------------------------------------------------- + org.onap.dmaap-dr.feed * * + org.onap.dmaap-dr.sub * * + org.onap.dmaap.mr.PNF_READY.access * * + org.onap.dmaap.mr.PNF_REGISTRATION.access * * + org.onap.dmaap.mr.access * * + org.onap.dmaap.mr.dgl_ready.access * * + org.onap.dmaap.mr.mirrormaker * admin + org.onap.dmaap.mr.mirrormaker * user + org.onap.dmaap.mr.topic * view + org.onap.dmaap.mr.topic :topic.org.onap.dmaap.mr.mirrormakeragent pub + org.onap.dmaap.mr.topic :topic.org.onap.dmaap.mr.mirrormakeragent sub + org.onap.dmaap.mr.topicFactory :org.onap.dmaap.mr.topic:org.onap.dmaap.mr create + org.onap.dmaap.mr.topicFactory :org.onap.dmaap.mr.topic:org.onap.dmaap.mr destroy + + +aaf_admin@people.osaaf.org +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This user is used in the process of the post-installation during which appropriate namespaces and permissions are created in AAF. + + + diff --git a/docs/security/security.rst b/docs/security/security.rst deleted file mode 100644 index 47a1736..0000000 --- a/docs/security/security.rst +++ /dev/null @@ -1,317 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Security -======== - -.. contents:: Table of Contents - -Roles and Permissions ---------------------- - -| Roles and permissions for DMaaP BC API are configured in connected AAF instance if ``UseAAF`` flag is set. -| The roles and permissions are being provisioned to AAF instance during DMaaP BC instance initialization phase only when AAF is in use. -| The default namespace in AAF for storing Bus Controller API roles and permissions is ``org.onap.dmaap-bc.api``. -| Separate permission is created for every HTTP method on each DMaaP BC REST api endpoint. -| Refer to :doc:`DMaaP Bus Controller REST API<../../../../dmaap/dbcapi.git/docs/api>` for comprehensive api information. -| Default name for DMaaP instance in ONAP is ``mr`` which is reflected in instance part of every created permission under DMaaP BC API. -| Exception of above rule is for ``/dmaap`` endpoint where additionally set of permissions for ``boot`` instance is defined: - -.. code-block:: bash - - org.onap.dmaap-bc.api.dmaap|boot|DELETE - org.onap.dmaap-bc.api.dmaap|boot|GET - org.onap.dmaap-bc.api.dmaap|boot|POST - org.onap.dmaap-bc.api.dmaap|boot|PUT - -| These permissions are needed during DMaaP initialization phase, until real instance is configured. This set of permissions is also provided in AAF instance by default. - -| DMaaP BC api permissions are distributed between several predefined roles: - -.. code-block:: bash - - org.onap.dmaap-bc.api.Controller - org.onap.dmaap-bc.api.Inventory - org.onap.dmaap-bc.api.Metrics - org.onap.dmaap-bc.api.Orchestrator - org.onap.dmaap-bc.api.PortalUser - -**Predefined roles brief description:** - - **Controller** - contains all permissions to DMaaP BC REST api, and should be assigned to identities which requires full admin rights to DMaaP BC, like ``dmaap-bc`` service identity itself. - - **Inventory** - role defined for functions which require ReadOnly access to the resources provided on DMaaP BC api. - - **Metrics** - role designed to be used by external function which examines the counts of topics that were replicating between different MR instances. Main permission of this role is to read from DMaaP BC bridge endpoint. - - **Orchestrator** - main role containing all permissions, which client micro-service might need. One of the example functions is ``dmaap plugin`` which is part of DCAE. The difference between this and Controller role is that Orchestrator is not responsible for deploying new k8s cluster or a message-router into that cluster, so it has limited, RO access to dmaap and dcaeLocations endpoints. - - **PortalUser** - role designed to be used in DMaaP Bus Controller Web App, which is based on the ONAP Portal SDK. If the UI app is deployed and available in ONAP Portal, portal users which will use DMaaP BC Web App shall be assigned to this role. - -Bus Controller API security options ------------------------------------ - -| There are three main properties in ``dmaapbc.properties`` responsible for configuring DMaaP BC API security option. -| These are ``enableCADI, useAAF, ApiPermission.Class``. Below table describes purpose of each property: - -+---------------------+------------------------------------------------------+---------------------------------------------------+ -| Property | Values | Description | -+=====================+======================================================+===================================================+ -|enableCADI | true/false | If set to true CADI filter is enabled on | -| | | BC REST api and authorization is performed | -| | | through connected AAF instance. | -| | | Otherwise legacy authorization mechanism is | -| | | used, which depends on api policy defined | -| | | with ApiPermission.Class property setting. | -+---------------------+------------------------------------------------------+---------------------------------------------------+ -|useAAF | true/false | The purpose of this flag is to configure if | -| | | specific namespaces, roles, and permissions | -| | | should be created in AAF instance when | -| | | calling some of DMaaP BC api endpoints. | -| | | Setting it to true will cause automatic | -| | | operation in AAF: | -| | | | -| | | - create set of BC API permissions and assign it | -| | | to predefined roles during DMaaP instance init | -| | | - create topic namespace, permissions and roles | -| | | when secure topic is created using topics | -| | | endpoint | -| | | - assign mr client to specified role in AAF when | -| | | adding new client for the topic using | -| | | ``mr_clients`` endpoint and clientRole defined | -| | | in request | -+---------------------+------------------------------------------------------+---------------------------------------------------+ -|ApiPermission.Class | - org.onap.dmaap.dbcapi.authentication.AllowAll | when CADI filter is not in use, API security is | -| | - org.onap.dmaap.dbcapi.authentication.AafLurAndFish | fulfilled with policy defined by class given in | -| | | this property. Currently available options are: | -| | | | -| | | - AllowAll - authentication and authorization is | -| | | skipped, everyone can invoke any method from BC | -| | | API | -| | | - AafLurAndFish - authentication and authorization| -| | | is performed with direct call to AAF instance | -| | | | -| | | This property allows to define custom policy, | -| | | for example to external authorization system | -| | | by implementing ``ApiAuthorizationCheckInterface``| -| | | | -+---------------------+------------------------------------------------------+---------------------------------------------------+ - -.. note:: - | When CADI filter is in use it caches internally authorization information for the identities calling BC api by default for 10 minutes. - | It can have negative impact on the functions which needs to call the api several times and use newly created permissions in next call. - | CADI cache time can be changed by setting ``aaf_user_expires`` property (value in ms) in DMaaP BC ``cadi.properties`` file. - | However the lowest achievable cache expiration time is 1 min due to internal CADI framework logic. - -**Security properties combination and its implications** - -.. note:: - | DMaaP-MR references in below table are used only to describe security Use Case between DMaaP internal components. - | To set-up DMaaP-MR security options properly, please refer DMaaP Message Router documentation. - | Each properties combination takes effect only on DMaaP BC API security. - -+-------------------------------+----------------------------------------------+--------------------------------+ -| Properties combination | Security result | Use Case | -+===============================+==============================================+================================+ -| | enableCADI = true | | AAF is in use for DMaaP-BC and DMaaP-MR | | DMaaP-BC - secured with AAF | -| | useAAF = true | can also rely on AAF. | | DMaaP-MR - secured with AAF | -| | ApiPermission.Class N/A | | CADI filter is in use, authorization data | | -| | caching is in use, function can authorize | | -| | using x509 certificate or Basic Auth. | | -+-------------------------------+----------------------------------------------+--------------------------------+ -| | enableCADI = true | | AAF is not in use for resources | | DMaaP-BC - secured with AAF | -| | useAAF = false | configuration. | | DMaaP-MR - unsecured | -| | ApiPermission.Class N/A | | CADI filter is in use, authorization data | | -| | caching is in use, function can authorize | | -| | using x509 certificate or Basic Auth. | | -+-------------------------------+----------------------------------------------+--------------------------------+ -| | enableCADI = false | | AAF is in use for DMaaP-BC and DMaaP-MR | | DMaaP-BC - secured with AAF | -| | useAAF = true | can also rely on AAF. | | DMaaP-MR - secured with AAF | -| | ApiPermission.Class = | | Legacy authorization is in use, no caching | | -| .AafLurAndFish | for authorization data, function can | | -| | authorize using Basic Auth only. | | -+-------------------------------+----------------------------------------------+--------------------------------+ -| | enableCADI = false | | AAF is not in use for resources | | DMaaP-BC - secured with AAF | -| | useAAF = false | configuration. | | DMaaP-MR - unsecured | -| | ApiPermission.Class = | | Legacy authorization is in use, no caching | | -| .AafLurAndFish | for authorization data, function can | | -| | authorize using Basic Auth only. | | -+-------------------------------+----------------------------------------------+--------------------------------+ -| | enableCADI = false | | AAF is in use for DMaaP-BC resources and | | DMaaP-BC - unsecured | -| | useAAF = true | DMaaP-MR can also rely on AAF. | | DMaaP-MR - secured with AAF | -| | ApiPermission.Class = | | No authentication and authorization is | | -| .AllowAll | performed on DMaaP BC REST api | | -+-------------------------------+----------------------------------------------+--------------------------------+ -| | enableCADI = false | | AAF is not in use for resources | | DMaaP-BC - unsecured | -| | useAAF = false | configuration. | | DMaaP-MR - unsecured | -| | ApiPermission.Class = | | No authentication and authorization is | | -| .AllowAll | performed on DMaaP BC REST api | | -+-------------------------------+----------------------------------------------+--------------------------------+ - -SSL DMaaP Certificates and Configuration ----------------------------------------- - -Configuration related to ssl can be found in the ``dmaapbc.properties``. -File is located in the ``/opt/app/dmaapbc/etc`` on the dmaap-bc pod. Directory contains also truststore and keystore files used in the ssl setup. -Each change in the configuration file requires restart of the application container - -.. code-block:: bash - - # - # Allow http access to API - # - HttpAllowed: true - # - # The port number for http as seen within the server - # - IntHttpPort: 8080 - # - # The port number for https as seen within the server - # Set to 0 if no certificate is available yet... - # - IntHttpsPort: 8443 - # - # The external port number for https taking port mapping into account - # - ExtHttpsPort: 443 - # - # The type of keystore for https - # - KeyStoreType: jks - # - # The path to the keystore for https - # - KeyStoreFile: etc/keystore - # - # The password for the https keystore - # - KeyStorePassword: - # - # The password for the private key in the https keystore - # - KeyPassword: - # - # The type of truststore for https - # - TrustStoreType: jks - # - # The path to the truststore for https - # - TrustStoreFile: etc/org.onap.dmaap-bc.trust.jks - # - # The password for the https truststore - # - TrustStorePassword: - - -AAF configuration ------------------ - -Usage of AAF can be turned on/off by setting ``UseAAF`` flag to ``true/false`` in the ``dmaapbc.properties`` file. By default AAF usage is turned on. -Property ``cadi.properties`` points to absolute path of the property file generated by AAF for the DmaaP BC application (``dmaap-bc@dmaap-bc.onap.org`` user). -This file is one of the AAF configuration files enabling authentication and authorization for DMaaP BC REST API. - -.. code-block:: bash - - ################# - # AAF Properties: - UseAAF: true - - ################# - # - # path to cadi.properties - # - cadi.properties: /opt/app/osaaf/local/org.onap.dmaap-bc.props - - -Complete AAF configuration consist of following files: - - org.onap.dmaap-bc.props - main configuration file - - org.onap.dmaap-bc.location.props - geographic coordinates of the application - - org.onap.dmaap-bc.cred.props - properties related to credentials, keystore and truststore - - org.onap.dmaap-bc.keyfile - keyfile - - org.onap.dmaap-bc.p12 - keystore - - org.onap.dmaap-bc.trust.jks - truststore - - -| All listed files are located in the ``/opt/app/dmaapbc/etc`` directory. -| File ``org.onap.dmaap-bc.props`` links together all property files by defining them in the ``cadi_prop_files`` property. -| By default all paths to other AAF related configuration points to ``/opt/app/osaaf/local/`` directory. -| This directory is default location that can be changed during generation of configuration files in the AAF application. -| In order to not duplicate mentioned files on the dmaap-bc pod following symbolic link is created in the filesystem: - -.. code-block:: bash - - ln -s /opt/app/dmaapbc/etc /opt/app/osaaf/local - - -User configured and used in DMaaP BC ------------------------------------- - -dmaap-bc@dmaap-bc.onap.org -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -It is main user for the DMaaP BC application. It has permissions to validate if user accessing DMaaP BC REST api has appropriate permissions to -perform an action. - - -AAF Permissions -+++++++++++++++ - -.. code-block:: bash - - List Permissions by User[dmaap-bc@dmaap-bc.onap.org] - -------------------------------------------------------------------------------- - PERM Type Instance Action - -------------------------------------------------------------------------------- - org.onap.dmaap-bc.api.access * read - org.onap.dmaap-bc.certman local request,ignoreIPs,showpass - org.onap.dmaap-dr.feed * * - org.onap.dmaap-dr.sub * * - org.onap.dmaap.mr.access * * - org.onap.dmaap.mr.topic * * - org.onap.dmaap.mr.topic * view - org.onap.dmaap.mr.topicFactory :org.onap.dmaap.mr.topic:org.onap.dmaap.mr create,destroy - - -dmaap-bc-topic-mgr@dmaap-bc-topic-mgr.onap.org -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -When ``UseAAF`` is set to true then creating topic also will create required perms in AAF. The perms will be created in ``org.onap.dmaap.mr`` namespace. -User ``dmaap-bc-topic-mgr`` is used in the process of creating such permissions. - -**Example:** - Topic name: - aSimpleTopic - - Permissions - | org.onap.dmaap.mr.topic|:topic.org.onap.dmaap.mr.aSimpleTopic|pub - | org.onap.dmaap.mr.topic|:topic.org.onap.dmaap.mr.aSimpleTopic|sub - | org.onap.dmaap.mr.topic|:topic.org.onap.dmaap.mr.aSimpleTopic|view - - -AAF Permissions -+++++++++++++++ - -.. code-block:: bash - - List Permissions by User[dmaap-bc-topic-mgr@dmaap-bc-topic-mgr.onap.org] - --------------------------------------------------------------------------------------- - PERM Type Instance Action - --------------------------------------------------------------------------------------- - org.onap.dmaap-dr.feed * * - org.onap.dmaap-dr.sub * * - org.onap.dmaap.mr.PNF_READY.access * * - org.onap.dmaap.mr.PNF_REGISTRATION.access * * - org.onap.dmaap.mr.access * * - org.onap.dmaap.mr.dgl_ready.access * * - org.onap.dmaap.mr.mirrormaker * admin - org.onap.dmaap.mr.mirrormaker * user - org.onap.dmaap.mr.topic * view - org.onap.dmaap.mr.topic :topic.org.onap.dmaap.mr.mirrormakeragent pub - org.onap.dmaap.mr.topic :topic.org.onap.dmaap.mr.mirrormakeragent sub - org.onap.dmaap.mr.topicFactory :org.onap.dmaap.mr.topic:org.onap.dmaap.mr create - org.onap.dmaap.mr.topicFactory :org.onap.dmaap.mr.topic:org.onap.dmaap.mr destroy - - -aaf_admin@people.osaaf.org -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This user is used in the process of the post-installation during which appropriate namespaces and permissions are created in AAF. - - - -- cgit 1.2.3-korg