summaryrefslogtreecommitdiffstats
path: root/docs/components/dcae-cli/dmaap-connection-objects.md
blob: cf03ccecfb216d4148dce7c9e9c25b8537acc446 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# DMaaP connection objects

DMaaP connection objects are JSON objects that:

1. Components should expect at runtime in their application configuration and is to be used to connect to the appropriate DMaaP feed or topic.
2. Developers must provide through the command-line argument `--dmaap-file` to test their component with manually provisioned feeds and topics.

This page is a reference to the specific structure that each type of DMaaP stream requires.

Note for #1 that components should expect the entire object with all properties at runtime where the default will be `null` unless specified otherwise.

Note for #2 that developers are not required to provide the entire object.  The required properties will be labeled with "*required as input*".

## Message router

Publishers and subscribers both have the same JSON object structure.  Here's an example:

```json
{
    "type": "message_router",
    "aaf_username": "some-user",
    "aaf_password": "some-password",
    "dmaap_info": {
        "client_role": "com.dcae.member",
        "client_id": "1500462518108",
        "location": "mtc00",
        "topic_url": "https://we-are-message-router.us:3905/events/some-topic"
    }
}
```

At the top-level:

Property Name | Type | Description
------------- | ---- | -----------
type | string | *Required as input*.  Must be `message_router` for message router topics
aaf_username | string | AAF username message router clients use to authenticate with secure topics
aaf_password | string | AAF password message router clients use to authenticate with secure topics
dmaap_info | JSON object | *Required as input*. Contains the topic connection details

The `dmaap_info` object contains:

Property Name | Type | Description
------------- | ---- | -----------
client_role | string | AAF client role that's requesting publish or subscribe access to the topic
client_id | string | Client id for given AAF client
location | string | DCAE location for the publisher or subscriber, used to set up routing
topic_url | string | *Required as input*. URL for accessing the topic to publish or receive events

Here's an example of the minimal JSON that must be provided as an input:

```json
{
    "type": "message_router",
    "dmaap_info": {
        "topic_url": "https://we-are-message-router.us:3905/events/some-topic"
    }
}
```

## Data router

### Publisher

Here's an example of what the JSON object connection for data router publisher looks like:

```json
{
    "type": "data_router",
    "dmaap_info": {
        "location": "mtc00",
        "publish_url": "https://we-are-data-router.us/feed/xyz",
        "log_url": "https://we-are-data-router.us/feed/xyz/logs",
        "username": "some-user",
        "password": "some-password",
        "publisher_id": "123456"
    } 
}
```

At the top-level:

Property Name | Type | Description
------------- | ---- | -----------
type | string | *Required as input*.  Must be `data_router` for data router feeds
dmaap_info | JSON object | *Required as input*. Contains the topic connection details

The `dmaap_info` object contains:

Property Name | Type | Description
------------- | ---- | -----------
location | string | DCAE location for the publisher, used to set up routing
publish_url | string | *Required as input*. URL to which the publisher makes Data Router publish requests
log_url | string | URL from which log data for the feed can be obtained
username | string | Username the publisher uses to authenticate to Data Router 
password | string | Password the publisher uses to authenticate to Data Router
publisher_id | string | Publisher id in Data Router

Here's an example of the minimal JSON that must be provided as an input:

```json
{
    "type": "data_router",
    "dmaap_info": {
        "publish_url": "https://we-are-data-router.us/feed/xyz"
    }
}
```

### Subscriber

Here's an example of what the JSON object connection for data router subscriber looks like:

```json
{
    "type": "data_router",
    "dmaap_info": {
        "location": "mtc00",
        "delivery_url": "https://my-subscriber-app.dcae:8080/target-path",
        "username": "some-user",
        "password": "some-password",
        "subscriber_id": "789012"
    } 
}
```

At the top-level:

Property Name | Type | Description
------------- | ---- | -----------
type | string | *Required as input*.  Must be `data_router` for data router feeds
dmaap_info | JSON object | *Required as input*. Contains the topic connection details

The `dmaap_info` object contains:

Property Name | Type | Description
------------- | ---- | -----------
location | string | DCAE location for the publisher, used to set up routing
delivery_url | string | URL to which the Data Router should deliver files
username | string | Username Data Router uses to authenticate to the subscriber when delivering files
password | string | Password Data Router uses to authenticate to the subscriber when delivering files
subscriber_id | string | Subscriber id in Data Router

Here's an example of the minimal JSON that must be provided as an input:

```json
{
    "type": "data_router",
    "dmaap_info": {
    }
}
```

Developers are recommended to use `username` and `password` since this is the recommended security practice.

Note that the dcae-cli will construct the `delivery_url` when deploying the component since this can only be known at deployment time.