dmaap/buscontroller

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.

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

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

  1. 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

  1. 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

Offered APIs

DMaaP Bus Controller REST API Download docs

API name

Swagger JSON

DMaaP Buscontroller API

link

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
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

Name

Located in

Required

Type

Format

Properties

Description

mmagent

query

No

string

detail

query

No

boolean

Request
Responses
200

Success

Type: BrTopic

Example:

{
    "brSource": "somestring",
    "brTarget": "somestring",
    "mmAgentName": "somestring",
    "topicCount": 1
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /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.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

mmagent

query

No

string

refresh

query

No

boolean

split

query

No

boolean

Request
Responses
200

Success

Type: BrTopic

Example:

{
    "brSource": "somestring",
    "brTarget": "somestring",
    "mmAgentName": "somestring",
    "topicCount": 1
}
400

Error

Type: ApiError

Example:

{
    "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
Create some `dcaeLocation` which is a unique identifier for an *OpenStack* tenant purposed for a *dcaeLayer* (ecomp or edge).
Request
Responses
200

Success

Type: DcaeLocation

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /dcaeLocations/{locationName}
Summary

return dcaeLocation details

Description
delete a dcaeLocation
Parameters

Name

Located in

Required

Type

Format

Properties

Description

locationName

path

Yes

string

Request
Responses
200

successful operation

Type: DcaeLocation

Example:

{
    "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: DcaeLocation

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dcaeLocations/{locationName}
Summary

return dcaeLocation details

Description
Returns a specific `dcaeLocation` object with specified tag
Parameters

Name

Located in

Required

Type

Format

Properties

Description

locationName

path

Yes

string

Request
Responses
200

Success

Type: DcaeLocation

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /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).
Request
Responses
200

Success

Type: DcaeLocation

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /dcaeLocations/{locationName}
Summary

return dcaeLocation details

Description
update the openStackAvailabilityZone of a dcaeLocation
Parameters

Name

Located in

Required

Type

Format

Properties

Description

locationName

path

Yes

string

Request
Responses
200

Success

Type: DcaeLocation

Example:

{
    "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: ApiError

Example:

{
    "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
Create a new DMaaP set system wide configuration settings for the *dcaeEnvironment*. Deprecated with introduction of persistence in 1610.
Request
Responses
200

Success

Type: Dmaap

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
POST /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.
Request
Responses
200

Success

Type: Dmaap

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dmaap_v2
Summary

return dmaap details

Description
returns the `dmaap` object, which contains system wide configuration settings
Request
Responses
200

Success

Type: Dmaap

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dmaap
Summary

return dmaap details

Description
returns the `dmaap` object, which contains system wide configuration settings
Request
Responses
200

Success

Type: Dmaap

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /dmaap_v2
Summary

return dmaap details

Description
Update system settings for *dcaeEnvironment*.
Request
Responses
200

Success

Type: Dmaap

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /dmaap
Summary

return dmaap details

Description
Update system settings for *dcaeEnvironment*.
Request
Responses
200

Success

Type: Dmaap

Example:

{
    "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: ApiError

Example:

{
    "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
create a `DR_Node` in a *dcaeLocation*. Note that multiple `DR_Node`s may exist in the same `dcaeLocation`.
Request
Responses
200

Success

Type: DR_Node

Example:

{
    "dcaeLocationName": "somestring",
    "fqdn": "somestring",
    "hostName": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "status": "EMPTY",
    "version": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /dr_nodes/{fqdn}
Summary

No Content

Description
Delete a single `DR_Node` object.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

fqdn

path

Yes

string

Request
Responses
200

successful operation

Type: DR_Node

Example:

{
    "dcaeLocationName": "somestring",
    "fqdn": "somestring",
    "hostName": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "status": "EMPTY",
    "version": "somestring"
}
204

Success

Type: DR_Node

Example:

{
    "dcaeLocationName": "somestring",
    "fqdn": "somestring",
    "hostName": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "status": "EMPTY",
    "version": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dr_nodes/{fqdn}
Summary

return DR_Node details

Description
Retrieve a single `DR_Node` object.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

fqdn

path

Yes

string

Request
Responses
200

Success

Type: DR_Node

Example:

{
    "dcaeLocationName": "somestring",
    "fqdn": "somestring",
    "hostName": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "status": "EMPTY",
    "version": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dr_nodes
Summary

return DR_Node details

Description
Returns array of `DR_Node` object array. Need to add filter by dcaeLocation.
Request
Responses
200

Success

Type: DR_Node

Example:

{
    "dcaeLocationName": "somestring",
    "fqdn": "somestring",
    "hostName": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "status": "EMPTY",
    "version": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /dr_nodes/{fqdn}
Summary

return DR_Node details

Description
Update a single `DR_Node` object.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

fqdn

path

Yes

string

Request
Responses
200

Success

Type: DR_Node

Example:

{
    "dcaeLocationName": "somestring",
    "fqdn": "somestring",
    "hostName": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "status": "EMPTY",
    "version": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "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
create a DR Publisher in the specified environment.
Request
Responses
200

Success

Type: DR_Pub

Example:

{
    "dcaeLocationName": "somestring",
    "feedId": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "pubId": "somestring",
    "status": "EMPTY",
    "username": "somestring",
    "userpwd": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /dr_pubs/{pubId}
Summary

return DR_Pub details

Description
delete a DR Publisher in the specified environment. Delete a `DR_Pub` object by pubId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

pubId

path

Yes

string

Request
Responses
200

successful operation

Type: DR_Pub

Example:

{
    "dcaeLocationName": "somestring",
    "feedId": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "pubId": "somestring",
    "status": "EMPTY",
    "username": "somestring",
    "userpwd": "somestring"
}
204

Success

Type: DR_Pub

Example:

{
    "dcaeLocationName": "somestring",
    "feedId": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "pubId": "somestring",
    "status": "EMPTY",
    "username": "somestring",
    "userpwd": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dr_pubs/{pubId}
Summary

return DR_Pub details

Description
returns a DR Publisher in the specified environment. Gets a `DR_Pub` object by pubId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

pubId

path

Yes

string

Request
Responses
200

Success

Type: DR_Pub

Example:

{
    "dcaeLocationName": "somestring",
    "feedId": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "pubId": "somestring",
    "status": "EMPTY",
    "username": "somestring",
    "userpwd": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dr_pubs
Summary

return DR_Pub details

Description
Returns array of `DR_Pub` objects. Add filter for feedId.
Request
Responses
200

Success

Type: DR_Pub

Example:

{
    "dcaeLocationName": "somestring",
    "feedId": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "pubId": "somestring",
    "status": "EMPTY",
    "username": "somestring",
    "userpwd": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /dr_pubs/{pubId}
Summary

return DR_Pub details

Description
update a DR Publisher in the specified environment. Update a `DR_Pub` object by pubId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

pubId

path

Yes

string

Request
Responses
200

Success

Type: DR_Pub

Example:

{
    "dcaeLocationName": "somestring",
    "feedId": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "pubId": "somestring",
    "status": "EMPTY",
    "username": "somestring",
    "userpwd": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "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
Create a `DR_Sub` object.
Request
Responses
200

Success

Type: DR_Sub

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /dr_subs/{subId}
Summary

return DR_Sub details

Description
Delete a `DR_Sub` object, selected by subId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

subId

path

Yes

string

Request
Responses
200

Success

Type: DR_Sub

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dr_subs/{subId}
Summary

return DR_Sub details

Description
Retrieve a `DR_Sub` object, selected by subId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

subId

path

Yes

string

Request
Responses
200

Success

Type: DR_Sub

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /dr_subs
Summary

return DR_Sub details

Description
Returns array of `DR_Sub` objects. Add filter for feedId.
Request
Responses
200

Success

Type: DR_Sub

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /dr_subs/{subId}
Summary

return DR_Sub details

Description
Update a `DR_Sub` object, selected by subId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

subId

path

Yes

string

Request
Responses
200

Success

Type: DR_Sub

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}

FEEDS

Endpoint for a Data Router Feed

POST /feeds
Summary

return Feed details

Description
Create a of `Feed` object.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

useExisting

query

No

string

Request
Responses
200

Success

Type: Feed

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /feeds/{id}
Summary

return Feed details

Description
Delete a `Feed` object, specified by id.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

id

path

Yes

string

Request
Responses
200

successful operation

Type: Feed

Example:

{
    "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: Feed

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /feeds/{id}
Summary

return Feed details

Description
Retrieve a `Feed` object, specified by id.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

id

path

Yes

string

Request
Responses
200

Success

Type: DR_Pub

Example:

{
    "dcaeLocationName": "somestring",
    "feedId": "somestring",
    "lastMod": "2015-01-01T15:00:00.000Z",
    "pubId": "somestring",
    "status": "EMPTY",
    "username": "somestring",
    "userpwd": "somestring"
}
400

Error

Type: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /feeds
Summary

return Feed details

Description
Returns array of `Feed` objects.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

feedName

query

No

string

version

query

No

string

match

query

No

string

Request
Responses
200

Success

Type: Feed

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /feeds/{id}
Summary

return Feed details

Description
Update a `Feed` object, specified by id.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

id

path

Yes

string

Request
Responses
200

Success

Type: Feed

Example:

{
    "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: ApiError

Example:

{
    "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
returns the `info` object
Request
Responses
200

Success

Type: Dmaap

Example:

{
    "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: ApiError

Example:

{
    "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
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: MR_Client

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /mr_clients/{subId}
Summary

Delete an MR_Client object

Description
Delete a `MR_Client` object, specified by clientId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

subId

path

Yes

string

Request
Responses
200

successful operation

Type: MR_Client

Example:

{
    "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: MR_Client

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /mr_clients
Summary

return MR_Client details

Description
Returns array of `MR_Client` objects.
Request
Responses
200

Success

Type: MR_Client

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /mr_clients/{subId}
Summary

return MR_Client details

Description
Retrieve a `MR_Client` object, specified by clientId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

subId

path

Yes

string

Request
Responses
200

Success

Type: MR_Client

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /mr_clients/{clientId}
Summary

Update an MR_Client object

Description
Update a `MR_Client` object, specified by clientId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

clientId

path

Yes

string

Request
Responses
200

Success

Type: MR_Client

Example:

{
    "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: ApiError

Example:

{
    "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
Create an `MR_Cluster` object.
Request
Responses
200

Success

Type: MR_Cluster

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /mr_clusters/{clusterId}
Summary

return MR_Cluster details

Description
Delete an `MR_Cluster` object, specified by clusterId.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

clusterId

path

Yes

string

Request
Responses
200

successful operation

Type: MR_Cluster

Example:

{
    "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: MR_Cluster

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /mr_clusters/{clusterId}
Summary

return MR_Cluster details

Description
Retrieve an `MR_Cluster` object, specified by clusterId.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

clusterId

path

Yes

string

Request
Responses
200

Success

Type: MR_Cluster

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /mr_clusters
Summary

return MR_Cluster details

Description
Returns array of `MR_Cluster` objects.
Request
Responses
200

Success

Type: MR_Cluster

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /mr_clusters/{clusterId}
Summary

return MR_Cluster details

Description
Update an `MR_Cluster` object, specified by clusterId.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

clusterId

path

Yes

string

Request
Responses
200

Success

Type: MR_Cluster

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}

TOPICS

Endpoint for retreiving MR Topics

POST /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.
Parameters

Name

Located in

Required

Type

Format

Properties

Description

useExisting

query

No

string

Request
Responses
200

Success

Type: Topic

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
DELETE /topics/{topicId}
Summary

return Topic details

Description
Delete a `Topic` object, identified by topicId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

topicId

path

Yes

string

Request
Responses
200

successful operation

Type: Topic

Example:

{
    "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: Topic

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /topics/{topicId}
Summary

return Topic details

Description
Retrieve a `Topic` object, identified by topicId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

topicId

path

Yes

string

Request
Responses
200

Success

Type: Topic

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
GET /topics
Summary

return Topic details

Description
Returns array of `Topic` objects.
Request
Responses
200

Success

Type: Topic

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}
PUT /topics/{topicId}
Summary

return Topic details

Description
Update a `Topic` object, identified by topicId
Parameters

Name

Located in

Required

Type

Format

Properties

Description

topicId

path

Yes

string

Request
Responses
200

Success

Type: Topic

Example:

{
    "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: ApiError

Example:

{
    "code": 1,
    "fields": "somestring",
    "is2xx": true,
    "message": "somestring"
}

Data Structures

ApiError Model Structure

Name

Required

Type

Format

Properties

Description

code

No

integer

int32

fields

No

string

is2xx

No

boolean

message

No

string

BrTopic Model Structure

Name

Required

Type

Format

Properties

Description

brSource

No

string

brTarget

No

string

mmAgentName

No

string

topicCount

No

integer

int32

DR_Node Model Structure

Name

Required

Type

Format

Properties

Description

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

DR_Pub Model Structure

Name

Required

Type

Format

Properties

Description

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

DR_Sub Model Structure

Name

Required

Type

Format

Properties

Description

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

DcaeLocation Model Structure

Name

Required

Type

Format

Properties

Description

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

Dmaap Model Structure

Name

Required

Type

Format

Properties

Description

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

Feed Model Structure

Name

Required

Type

Format

Properties

Description

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 DR_Pub

status

No

string

{‘enum’: [‘EMPTY’, ‘NEW’, ‘STAGED’, ‘VALID’, ‘INVALID’, ‘DELETED’]}

subs

No

array of DR_Sub

subscribeURL

No

string

suspended

No

boolean

MR_Client Model Structure

Name

Required

Type

Format

Properties

Description

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

MR_Cluster Model Structure

Name

Required

Type

Format

Properties

Description

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

MirrorMaker Model Structure

Name

Required

Type

Format

Properties

Description

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

Topic Model Structure

Name

Required

Type

Format

Properties

Description

clients

No

array of 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

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

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.

Delivery

Bus Controller is not involved in the active transport of data. It is for provisioning only.

Security

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 Offered APIs 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:
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:
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

  • org.onap.dmaap.dbcapi.authentication.AafLurAndFish

when CADI filter is not in use, API security is 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
useAAF = true
ApiPermission.Class N/A
AAF is in use for DMaaP-BC and DMaaP-MR can also rely on AAF.
CADI filter is in use, authorization data caching is in use, function can authorize using x509 certificate or Basic Auth.
DMaaP-BC - secured with AAF
DMaaP-MR - secured with AAF
enableCADI = true
useAAF = false
ApiPermission.Class N/A
AAF is not in use for resources configuration.
CADI filter is in use, authorization data caching is in use, function can authorize using x509 certificate or Basic Auth.
DMaaP-BC - secured with AAF
DMaaP-MR - unsecured
enableCADI = false
useAAF = true
ApiPermission.Class = <pckg>.AafLurAndFish
AAF is in use for DMaaP-BC and DMaaP-MR can also rely on AAF.
Legacy authorization is in use, no caching for authorization data, function can authorize using Basic Auth only.
DMaaP-BC - secured with AAF
DMaaP-MR - secured with AAF
enableCADI = false
useAAF = false
ApiPermission.Class = <pckg>.AafLurAndFish
AAF is not in use for resources configuration.
Legacy authorization is in use, no caching for authorization data, function can authorize using Basic Auth only.
DMaaP-BC - secured with AAF
DMaaP-MR - unsecured
enableCADI = false
useAAF = true
ApiPermission.Class = <pckg>.AllowAll
AAF is in use for DMaaP-BC resources and DMaaP-MR can also rely on AAF.
No authentication and authorization is performed on DMaaP BC REST api
DMaaP-BC - unsecured
DMaaP-MR - secured with AAF
enableCADI = false
useAAF = false
ApiPermission.Class = <pckg>.AllowAll
AAF is not in use for resources configuration.
No authentication and authorization is performed on DMaaP BC REST api
DMaaP-BC - unsecured
DMaaP-MR - unsecured

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

#
#   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:   <keystore_password>
#
#   The password for the private key in the https keystore
#
KeyPassword:        <key_password>
#
#   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: <truststore_password>

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.

#################
# 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:
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
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
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.

Release Notes

Jakarta

Abstract

This document provides the release notes for the Jakarta release.

Summary

No change

Release Data

DMaaP Bus Controller Project

Docker images

  • dmaap-bc 2.0.8

  • dbc-client 2.0.9

Release designation

10.0.0 Jakarta

Release date

5/12/2022

New features

NA

Known Limitations, Issues and Workarounds

System Limitations

Known Vulnerabilities

Workarounds

Security Notes

References

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

  1. ONAP Home Page

  2. ONAP Documentation

  3. ONAP Release Downloads

  4. ONAP Wiki Page

Quick Links:

Istanbul

Abstract

This document provides the release notes for the Istanbul release.

Summary

Repo merges, package updates and dbc-clients changes

Release Data

DMaaP Bus Controller Project

Docker images

  • dmaap-bc 2.0.8

  • dbc-client 2.0.7

Release designation

9.0.0 Istanbul

Release date

2021-10-14

New features

  • Consolidated BC repos - DMAAP-1544

  • Package upgrades - DMAAP-1608

  • Update dbc-client script - DMAAP-1561

Known Limitations, Issues and Workarounds

System Limitations

Known Vulnerabilities

Workarounds

Security Notes

References

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

  1. ONAP Home Page

  2. ONAP Documentation

  3. ONAP Release Downloads

  4. ONAP Wiki Page

Quick Links:

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:

  1. ONAP Home Page

  2. ONAP Documentation

  3. ONAP Release Downloads

  4. ONAP Wiki Page

Quick Links:

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:

  1. ONAP Home Page

  2. ONAP Documentation

  3. ONAP Release Downloads

  4. ONAP Wiki Page

Quick Links:

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:

  1. ONAP Home Page

  2. ONAP Documentation

  3. ONAP Release Downloads

  4. ONAP Wiki Page

Quick Links:

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:

Upgrade Notes

NA

Deprecation Notes

NA

Dublin

Version: 1.1.5

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:

Upgrade Notes NA

Deprecation Notes

Casablanca

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:

Upgrade Notes NA

Deprecation Notes