5e77f4ffd384fb8b48777a59ae4a69fc81aeb9b3
[oam.git] / solution / smo / apps / flows / data / flows.json
1 [
2     {
3         "id": "51e83a0892da060e",
4         "type": "tab",
5         "label": "Event Streaming (VES)",
6         "disabled": false,
7         "info": "Sends a VES messages with body defined by 3GPP TS 28.532.\n",
8         "env": []
9     },
10     {
11         "id": "c5746e29f53f72ce",
12         "type": "tab",
13         "label": "Message Topics",
14         "disabled": false,
15         "info": "Subscribes to Kafka topics ",
16         "env": []
17     },
18     {
19         "id": "7b2f4859e5963695",
20         "type": "tls-config",
21         "name": "",
22         "cert": "",
23         "key": "",
24         "ca": "",
25         "certname": "",
26         "keyname": "",
27         "caname": "",
28         "servername": "",
29         "verifyservercert": false,
30         "alpnprotocol": ""
31     },
32     {
33         "id": "91a1f8d3ce84ceda",
34         "type": "inject",
35         "z": "51e83a0892da060e",
36         "name": "notifyFileReady",
37         "props": [
38             {
39                 "p": "payload"
40             },
41             {
42                 "p": "topic",
43                 "vt": "str"
44             }
45         ],
46         "repeat": "",
47         "crontab": "",
48         "once": false,
49         "onceDelay": 0.1,
50         "topic": "notifyFileReady",
51         "payload": "",
52         "payloadType": "date",
53         "x": 120,
54         "y": 460,
55         "wires": [
56             [
57                 "b5533c10604af5a6",
58                 "f8e64d1cb25eb4ab"
59             ]
60         ]
61     },
62     {
63         "id": "b5533c10604af5a6",
64         "type": "function",
65         "z": "51e83a0892da060e",
66         "name": "vesHeader",
67         "func": "const timeStamp = new Date(msg.payload);\nconst eventType = msg.topic;\nlet domain = \"stndDefined\";\n// handle domain expecption for 'pnfRegistration'\nif (eventType === 'pnfRegistration') {\n    domain = eventType;\n} \nconst nfNamingCode = env.get('APP_NETWORK_FUNCTION_ID');\nconst namespaces = {\n    pnfRegistration: undefined,\n    o1NotifyPnfRegistration: 'o1-notify-pnf-registration',\n    oRanScDuHelloWorldPmStreaming: 'o-ran-sc-du-hello-world-pm-streaming-oas3',\n    notifyHeartbeat: '3GPP-Heartbeat',\n    notifyFileReady: 'file-ready',\n    'o-ran-file-management:file-download-event': 'o-ran-sc-ofhm',\n    'o-ran-file-management:file-upload-notification': 'o-ran-sc-ofhm'\n};\n\nmsg.topic = \"commonEventHeader\"\nmsg.payload = {\n    domain: domain,\n    eventType: eventType,\n    eventId:[nfNamingCode, eventType, msg._msgid].join('_'),\n    eventName: [domain, eventType].join('_'),\n    sequence: Number(timeStamp),\n    priority: \"Low\",\n    reportingEntityId: \"c2b7d6e9-ee35-459a-ab8e-717a6fc1fde6\",\n    reportingEntityName: global.get('os').hostname(),\n    sourceId: \"378e9904-6d39-40ea-9994-0596fe2235a3\",\n    sourceName: env.get('APP_SOURCE'),\n    startEpochMicrosec: timeStamp.getTime() * 1000,\n    lastEpochMicrosec: timeStamp.getTime() * 1000,\n    nfNamingCode: nfNamingCode,\n    nfVendorName: env.get('APP_VENDOR'),\n    timeZoneOffset: \"+00:00\",\n    stndDefinedNamespace: namespaces[eventType],\n    version: \"4.1\",\n    vesEventListenerVersion: \"7.2.1\"\n}\nreturn msg;",
68         "outputs": 1,
69         "noerr": 0,
70         "initialize": "",
71         "finalize": "",
72         "libs": [],
73         "x": 430,
74         "y": 260,
75         "wires": [
76             [
77                 "f65b1c13e0243ef6"
78             ]
79         ]
80     },
81     {
82         "id": "f8e64d1cb25eb4ab",
83         "type": "function",
84         "z": "51e83a0892da060e",
85         "name": "vesStndDefindBody",
86         "func": "const timeStamp = new Date(msg.payload);\nconst startTime = new Date(Math.floor(Number(timeStamp) / 900000) * 900000);\nconst endTime = new Date(Number(startTime) + 900000);\nconst paddy = (num, padlen, padchar) => {\n    const pad_char = typeof padchar !== 'undefined' ? padchar : '0';\n    const pad = new Array(1 + padlen).join(pad_char);\n    return (pad + num).slice(-pad.length);\n}\nconst fileStartTime = [\n    paddy(startTime.getFullYear(), 4),\n    paddy(startTime.getMonth() + 1, 2),\n    paddy(startTime.getDate(), 2),\n    '.',\n    paddy(startTime.getHours(), 2),\n    paddy(startTime.getMinutes(), 2),\n    '+0000'\n].join('');\nconst fileEndTime = [\n    paddy(endTime.getHours(), 2),\n    paddy(endTime.getMinutes(), 2),\n    '+0000'\n].join('');\nconst fileLocation = ['/pm-data-files/A', fileStartTime, '-', fileEndTime, '_', env.get('APP_NETWORK_FUNCTION_ID'), '.xml'].join('');\nmsg.payload = {\n    schemaReference: 'https://forge.3gpp.org/rep/sa5/MnS/raw/Rel-18/OpenAPI/TS28532_FileDataReportingMnS.yaml#components/schemas/NotifyFileReady',\n    stndDefinedFieldsVersion: '1.0',\n    data: {\n        href: global.get('os').hostname(),\n        notificationId: Number(startTime),\n        notificationType: msg.topic,\n        eventTime: timeStamp.toISOString(),\n        systemDN: '/',\n        fileInfoList: [\n            {\n                fileLocation: fileLocation,\n                fileSize: 1234,\n                fileReadyTime: startTime.toISOString(),\n                fileExpirationTime: endTime.toISOString(),\n                fileCompression: 'no',\n                fileFormat: 'xml',\n                fileDataType: 'Performance'\n            }\n        ],\n        additionalText: 'Have fun!'\n    }\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
87         "outputs": 1,
88         "noerr": 0,
89         "initialize": "",
90         "finalize": "",
91         "libs": [],
92         "x": 470,
93         "y": 460,
94         "wires": [
95             [
96                 "f65b1c13e0243ef6"
97             ]
98         ]
99     },
100     {
101         "id": "f65b1c13e0243ef6",
102         "type": "join",
103         "z": "51e83a0892da060e",
104         "name": "",
105         "mode": "custom",
106         "build": "object",
107         "property": "payload",
108         "propertyType": "msg",
109         "key": "topic",
110         "joiner": "\\n",
111         "joinerType": "str",
112         "accumulate": false,
113         "timeout": "",
114         "count": "2",
115         "reduceRight": false,
116         "reduceExp": "",
117         "reduceInit": "",
118         "reduceInitType": "",
119         "reduceFixup": "",
120         "x": 690,
121         "y": 280,
122         "wires": [
123             [
124                 "1d6949a57bce82ab"
125             ]
126         ]
127     },
128     {
129         "id": "1d6949a57bce82ab",
130         "type": "function",
131         "z": "51e83a0892da060e",
132         "name": "createVesEvent",
133         "func": "msg.payload = {\n  event: msg.payload\n};\nreturn msg;",
134         "outputs": 1,
135         "noerr": 0,
136         "initialize": "",
137         "finalize": "",
138         "libs": [],
139         "x": 840,
140         "y": 280,
141         "wires": [
142             [
143                 "27e1d8d1e9b8fd93",
144                 "9ab2b4d9caf52c14"
145             ]
146         ]
147     },
148     {
149         "id": "27e1d8d1e9b8fd93",
150         "type": "http request",
151         "z": "51e83a0892da060e",
152         "name": "",
153         "method": "POST",
154         "ret": "txt",
155         "paytoqs": "ignore",
156         "url": "https://ves-collector.oam.smo.o-ran-sc.org/eventListener/v7",
157         "tls": "7b2f4859e5963695",
158         "persist": false,
159         "proxy": "",
160         "insecureHTTPParser": false,
161         "authType": "basic",
162         "senderr": false,
163         "headers": [],
164         "x": 1030,
165         "y": 280,
166         "wires": [
167             [
168                 "f3412bcb9e134063"
169             ]
170         ]
171     },
172     {
173         "id": "f3412bcb9e134063",
174         "type": "debug",
175         "z": "51e83a0892da060e",
176         "name": "VesCollectorResponse",
177         "active": true,
178         "tosidebar": true,
179         "console": false,
180         "tostatus": false,
181         "complete": "payload",
182         "targetType": "msg",
183         "statusVal": "",
184         "statusType": "auto",
185         "x": 1220,
186         "y": 280,
187         "wires": []
188     },
189     {
190         "id": "b5e1e7a83051b5b6",
191         "type": "inject",
192         "z": "51e83a0892da060e",
193         "name": "pnfRegistration",
194         "props": [
195             {
196                 "p": "payload"
197             },
198             {
199                 "p": "topic",
200                 "vt": "str"
201             }
202         ],
203         "repeat": "",
204         "crontab": "",
205         "once": false,
206         "onceDelay": 0.1,
207         "topic": "pnfRegistration",
208         "payload": "",
209         "payloadType": "date",
210         "x": 120,
211         "y": 80,
212         "wires": [
213             [
214                 "bd43459cf3907a5a",
215                 "b5533c10604af5a6"
216             ]
217         ]
218     },
219     {
220         "id": "bd43459cf3907a5a",
221         "type": "function",
222         "z": "51e83a0892da060e",
223         "name": "vesBody",
224         "func": "msg.topic = 'pnfRegistrationFields';\nmsg.payload = {\n    pnfRegistrationFieldsVersion: '2.1',\n    lastServiceDate: '2023-02-05',\n    macAddress: '02:42:f7:d4:62:ce',\n    manufactureDate: '2021-01-16',\n    modelNumber: 'O-RAN-SC Model',\n    oamV4IpAddress: '10.10.10.11',\n    oamV6IpAddress: '0:0:0:0:0:ffff:a0a:011',\n    serialNumber: 'VENDORA-PNF2-10.10.10.11-pnf2 BestInClass',\n    softwareVersion: '2.3.5',\n    unitFamily: \"O-RAN-SC\",\n    unitType: 'PNF2',\n    vendorName: env.get('APP_VENDOR'),\n    additionalFields: {\n        oamPort: '830',\n        protocol: 'SSH',\n        username: 'netconf',\n        password: 'netconf!',\n        reconnectOnChangedSchema: 'false',\n        'sleep-factor': '1.5',\n    tcpOnly: 'false',\n    connectionTimeout: '20000',\n    maxConnectionAttempts: '100',\n    betweenAttemptsTimeout: '2000',\n    keepaliveDelay: '120'\n}\n};\nreturn msg;",
225         "outputs": 1,
226         "noerr": 0,
227         "initialize": "",
228         "finalize": "",
229         "libs": [],
230         "x": 440,
231         "y": 80,
232         "wires": [
233             [
234                 "f65b1c13e0243ef6"
235             ]
236         ]
237     },
238     {
239         "id": "9ab2b4d9caf52c14",
240         "type": "debug",
241         "z": "51e83a0892da060e",
242         "name": "ves-message-data",
243         "active": false,
244         "tosidebar": true,
245         "console": false,
246         "tostatus": false,
247         "complete": "payload",
248         "targetType": "msg",
249         "statusVal": "",
250         "statusType": "auto",
251         "x": 1050,
252         "y": 320,
253         "wires": []
254     },
255     {
256         "id": "7d589030272c0a94",
257         "type": "inject",
258         "z": "51e83a0892da060e",
259         "d": true,
260         "name": "notifyHeartbeat",
261         "props": [
262             {
263                 "p": "payload"
264             },
265             {
266                 "p": "topic",
267                 "vt": "str"
268             }
269         ],
270         "repeat": "3",
271         "crontab": "",
272         "once": true,
273         "onceDelay": 0.1,
274         "topic": "notifyHeartbeat",
275         "payload": "",
276         "payloadType": "date",
277         "x": 130,
278         "y": 420,
279         "wires": [
280             [
281                 "b5533c10604af5a6",
282                 "ab3bc53f12d28d8f"
283             ]
284         ]
285     },
286     {
287         "id": "ab3bc53f12d28d8f",
288         "type": "function",
289         "z": "51e83a0892da060e",
290         "name": "vesStndDefindBody",
291         "func": "const timeStamp = new Date(msg.payload);\nmsg.payload = {\n    schemaReference: 'https://forge.3gpp.org/rep/sa5/MnS/raw/Rel-18/OpenAPI/TS28532_HeartbeatNtf.yaml#components/schemas/NotifyHeartbeat',\n    stndDefinedFieldsVersion: '1.0',\n    data: {\n        href: global.get('os').hostname(),\n        notificationId: Number(timeStamp),\n        notificationType: msg.topic,\n        eventTime: timeStamp.toISOString(),\n        systemDN: \"/\",\n        heartbeatNtfPeriod: 120\n    }\n};\nmsg.topic = \"stndDefinedFields\";\nreturn msg;",
292         "outputs": 1,
293         "noerr": 0,
294         "initialize": "",
295         "finalize": "",
296         "libs": [],
297         "x": 470,
298         "y": 420,
299         "wires": [
300             [
301                 "f65b1c13e0243ef6"
302             ]
303         ]
304     },
305     {
306         "id": "1bada25ea9a5aa01",
307         "type": "comment",
308         "z": "51e83a0892da060e",
309         "name": "from SA5 R-18 branch",
310         "info": "",
311         "x": 120,
312         "y": 380,
313         "wires": []
314     },
315     {
316         "id": "f4f4670363ec760f",
317         "type": "comment",
318         "z": "51e83a0892da060e",
319         "name": "from O-RAN-SC",
320         "info": "",
321         "x": 100,
322         "y": 140,
323         "wires": []
324     },
325     {
326         "id": "e4dc4647c388ab77",
327         "type": "comment",
328         "z": "51e83a0892da060e",
329         "name": "from ONAP",
330         "info": "",
331         "x": 90,
332         "y": 40,
333         "wires": []
334     },
335     {
336         "id": "fb6413675e22dc71",
337         "type": "inject",
338         "z": "51e83a0892da060e",
339         "name": "o1NotifyPnfRegistration",
340         "props": [
341             {
342                 "p": "payload"
343             },
344             {
345                 "p": "topic",
346                 "vt": "str"
347             }
348         ],
349         "repeat": "",
350         "crontab": "",
351         "once": false,
352         "onceDelay": 0.1,
353         "topic": "o1NotifyPnfRegistration",
354         "payload": "",
355         "payloadType": "date",
356         "x": 140,
357         "y": 180,
358         "wires": [
359             [
360                 "b5533c10604af5a6",
361                 "51f5fa54867b7e65"
362             ]
363         ]
364     },
365     {
366         "id": "73beab79d5024f4b",
367         "type": "inject",
368         "z": "51e83a0892da060e",
369         "name": "oRanScDuHelloWorldPmStreaming",
370         "props": [
371             {
372                 "p": "payload"
373             },
374             {
375                 "p": "topic",
376                 "vt": "str"
377             }
378         ],
379         "repeat": "",
380         "crontab": "",
381         "once": false,
382         "onceDelay": 0.1,
383         "topic": "oRanScDuHelloWorldPmStreaming",
384         "payload": "",
385         "payloadType": "date",
386         "x": 180,
387         "y": 220,
388         "wires": [
389             [
390                 "5c6f93626fac58b5",
391                 "b5533c10604af5a6"
392             ]
393         ]
394     },
395     {
396         "id": "51f5fa54867b7e65",
397         "type": "function",
398         "z": "51e83a0892da060e",
399         "name": "vesStndDefindBody",
400         "func": "const timeStamp = new Date(msg.payload);\nmsg.payload = {\n    schemaReference: 'https://gerrit.o-ran-sc.org/r/gitweb?p=scp/oam/modeling.git;a=blob_plain;f=data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration.yang',\n    stndDefinedFieldsVersion: '1.0',\n    data: {\n        'object-class': 'managed-element',\n        'object-instance': global.get('os').hostname(),\n        'notification-identifier': Number(timeStamp),\n        'notification-type': msg.topic,\n        'event-time': timeStamp.toISOString(),\n        systemDN: \"/\",\n        'vendor-pen': '57272',\n        'vendor-name': 'highstreet technologies USA Corp.',\n        'oam-host': global.get('os').networkInterfaces()['eth0'][0].address || global.get('os').hostname(),\n        'oam-port': 830,\n        'unit-family': 'O-RAN-SC',\n        'unit-type': 'PNF2',\n        'restart-reason': 'system-reboot',\n        'serial-number': 'O-RAN-SC-PNF2-10.10.10.11-pnf2 BestInClass',\n        'macAddress': global.get('os').networkInterfaces()['eth0'][0].mac || '00:00:00:00:00:00',\n        'modelNumber': 'O-RAN-SC Model',\n        'softwareVersion': '2.3.5',\n        'manufactureDate': '2021-01-16',\n        'lastServiceDate': '2021-03-26',\n        'transport-protocol': 'SSH',\n        'username': 'netconf',\n        'password': 'netconf!',\n        'reconnect-on-changed-schema': 'false',\n        'sleep-factor': '1.5',\n        'tcpOnly': 'false',\n        'connection-timeout': '20000',\n        'max-connection-attempts': '100',\n        'between-attempts-timeout': '2000',\n        'keepalive-delay': '120'\n    }\n};\nmsg.topic = \"stndDefinedFields\";\nreturn msg;",
401         "outputs": 1,
402         "noerr": 0,
403         "initialize": "",
404         "finalize": "",
405         "libs": [],
406         "x": 470,
407         "y": 180,
408         "wires": [
409             [
410                 "f65b1c13e0243ef6"
411             ]
412         ]
413     },
414     {
415         "id": "5c6f93626fac58b5",
416         "type": "function",
417         "z": "51e83a0892da060e",
418         "name": "vesStndDefindBody",
419         "func": "const timeStamp = new Date(msg.payload);\nmsg.payload = {\n  schemaReference: 'https://gerrit.o-ran-sc.org/r/gitweb?p=scp/oam/modeling.git;a=blob_plain;f=data-model/oas3/experimental/o-ran-sc-du-hello-world-pm-streaming-oas3.yaml#components/schemas/performance-measurement-job',\n    stndDefinedFieldsVersion: '1.0',\n    data: {\n        id: 'id:' + Number(timeStamp),\n        'start-time': timeStamp.toISOString(),\n        'administrative-state': 'unlocked',\n        'operational-state': 'enabled',\n        'user-label': 'pm-kpis',\n        'job-tag': '1a0827b7-25e7-4292-959f-6b8ab46f14c2',\n        'granularity-period': 900,\n        measurements: [\n          {\n            'measurement-type-instance-reference': 'user-equipment-average-throughput-downlink',\n            value: 300000000,\n            unit: 'kBis/s'\n          },\n          {\n            'measurement-type-instance-reference': 'user-equipment-average-throughput-uplink',\n            value: 300000000,\n            unit: 'kBis/s'\n          }\n        ]\n    }\n};\nmsg.topic = \"stndDefinedFields\";\nreturn msg;\n\n",
420         "outputs": 1,
421         "noerr": 0,
422         "initialize": "",
423         "finalize": "",
424         "libs": [],
425         "x": 470,
426         "y": 220,
427         "wires": [
428             [
429                 "f65b1c13e0243ef6"
430             ]
431         ]
432     },
433     {
434         "id": "2d033da139fb379e",
435         "type": "comment",
436         "z": "51e83a0892da060e",
437         "name": "from OpenFronthaul Management-Plane",
438         "info": "",
439         "x": 820,
440         "y": 380,
441         "wires": []
442     },
443     {
444         "id": "456597d0477d239f",
445         "type": "inject",
446         "z": "51e83a0892da060e",
447         "name": "o-ran-file-management:file-download-event",
448         "props": [
449             {
450                 "p": "payload"
451             },
452             {
453                 "p": "topic",
454                 "vt": "str"
455             }
456         ],
457         "repeat": "",
458         "crontab": "",
459         "once": false,
460         "onceDelay": 0.1,
461         "topic": "o-ran-file-management:file-download-event",
462         "payload": "",
463         "payloadType": "date",
464         "x": 840,
465         "y": 420,
466         "wires": [
467             [
468                 "f40d1d16c7044edc",
469                 "b5533c10604af5a6"
470             ]
471         ]
472     },
473     {
474         "id": "f40d1d16c7044edc",
475         "type": "function",
476         "z": "51e83a0892da060e",
477         "name": "vesStndDefindBody",
478         "func": "const eventTime = new Date(msg.payload).toISOString();\nmsg.payload = {\n    schemaReference: 'https://gerrit.o-ran-sc.org/r/gitweb?p=scp/oam/modeling.git;a=blob_plain;f=data-model/yang/published/o-ran/ru-fh/o-ran-file-management.yang#components/schemas/ofhm-event-stream',\n    stndDefinedFieldsVersion: '1.0',\n    data: {\n        'ietf:notification': {\n            'eventTime': eventTime,\n            'o-ran-file-management:file-download-event': {\n                'local-logical-file-path': 'o-ran/log',\n                'remote-file-path': 'ftpes://username@ftpes.oam.smo.o-ran-sc/downloads',\n                'status': 'FAILURE',\n                'reject-reason': 'FTPes Server not reachable.'\n            }\n        }\n    }\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
479         "outputs": 1,
480         "noerr": 0,
481         "initialize": "",
482         "finalize": "",
483         "libs": [],
484         "x": 1170,
485         "y": 420,
486         "wires": [
487             [
488                 "f65b1c13e0243ef6"
489             ]
490         ]
491     },
492     {
493         "id": "3d8f8180f204d804",
494         "type": "inject",
495         "z": "51e83a0892da060e",
496         "name": "o-ran-file-management:file-upload-notification",
497         "props": [
498             {
499                 "p": "payload"
500             },
501             {
502                 "p": "topic",
503                 "vt": "str"
504             }
505         ],
506         "repeat": "",
507         "crontab": "",
508         "once": false,
509         "onceDelay": 0.1,
510         "topic": "o-ran-file-management:file-upload-notification",
511         "payload": "",
512         "payloadType": "date",
513         "x": 850,
514         "y": 460,
515         "wires": [
516             [
517                 "d473bf42d8169599",
518                 "b5533c10604af5a6"
519             ]
520         ]
521     },
522     {
523         "id": "d473bf42d8169599",
524         "type": "function",
525         "z": "51e83a0892da060e",
526         "name": "vesStndDefindBody",
527         "func": "const eventTime = new Date(msg.payload).toISOString();\nmsg.payload = {\n    schemaReference: 'https://gerrit.o-ran-sc.org/r/gitweb?p=scp/oam/modeling.git;a=blob_plain;f=data-model/yang/published/o-ran/ru-fh/o-ran-file-management.yang#components/schemas/ofhm-event-stream',\n    stndDefinedFieldsVersion: '1.0',\n    data: {\n        'ietf:notification': {\n            'eventTime': eventTime,\n            'o-ran-file-management:file-upload-notification': {\n                'local-logical-file-path': 'o-ran/log',\n                'remote-file-path': 'ftpes://username@ftpes.oam.smo.o-ran-sc/downloads',\n                'status': 'FAILURE',\n                'reject-reason': 'FTPes Server not reachable.'\n            }\n        }\n    }\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
528         "outputs": 1,
529         "noerr": 0,
530         "initialize": "",
531         "finalize": "",
532         "libs": [],
533         "x": 1170,
534         "y": 460,
535         "wires": [
536             [
537                 "f65b1c13e0243ef6"
538             ]
539         ]
540     },
541     {
542         "id": "910dfec7eb74df65",
543         "type": "inject",
544         "z": "c5746e29f53f72ce",
545         "name": "pnfRegistration",
546         "props": [
547             {
548                 "p": "payload"
549             },
550             {
551                 "p": "topic",
552                 "vt": "str"
553             }
554         ],
555         "repeat": "",
556         "crontab": "",
557         "once": false,
558         "onceDelay": 0.1,
559         "topic": "pnfRegistration",
560         "payload": "",
561         "payloadType": "date",
562         "x": 240,
563         "y": 80,
564         "wires": [
565             [
566                 "e5f66f4bd6777ca0"
567             ]
568         ]
569     },
570     {
571         "id": "562063a080cb99d6",
572         "type": "debug",
573         "z": "c5746e29f53f72ce",
574         "name": "eventData",
575         "active": true,
576         "tosidebar": true,
577         "console": false,
578         "tostatus": false,
579         "complete": "payload",
580         "targetType": "msg",
581         "statusVal": "",
582         "statusType": "auto",
583         "x": 990,
584         "y": 220,
585         "wires": []
586     },
587     {
588         "id": "172060688d87f510",
589         "type": "inject",
590         "z": "c5746e29f53f72ce",
591         "d": true,
592         "name": "notifyHeartbeat",
593         "props": [
594             {
595                 "p": "payload"
596             },
597             {
598                 "p": "topic",
599                 "vt": "str"
600             }
601         ],
602         "repeat": "5",
603         "crontab": "",
604         "once": true,
605         "onceDelay": 0.1,
606         "topic": "notifyHeartbeat",
607         "payload": "",
608         "payloadType": "date",
609         "x": 230,
610         "y": 420,
611         "wires": [
612             [
613                 "e5f66f4bd6777ca0"
614             ]
615         ]
616     },
617     {
618         "id": "311c3b5d3d73fc24",
619         "type": "inject",
620         "z": "c5746e29f53f72ce",
621         "name": "notifyFileReady",
622         "props": [
623             {
624                 "p": "payload"
625             },
626             {
627                 "p": "topic",
628                 "vt": "str"
629             }
630         ],
631         "repeat": "",
632         "crontab": "",
633         "once": false,
634         "onceDelay": 0.1,
635         "topic": "notifyFileReady",
636         "payload": "",
637         "payloadType": "date",
638         "x": 240,
639         "y": 460,
640         "wires": [
641             [
642                 "e5f66f4bd6777ca0"
643             ]
644         ]
645     },
646     {
647         "id": "5437e3fdfca300c9",
648         "type": "http request",
649         "z": "c5746e29f53f72ce",
650         "name": "",
651         "method": "GET",
652         "ret": "txt",
653         "paytoqs": "ignore",
654         "url": "",
655         "tls": "7b2f4859e5963695",
656         "persist": true,
657         "proxy": "",
658         "insecureHTTPParser": true,
659         "authType": "",
660         "senderr": false,
661         "headers": [],
662         "x": 670,
663         "y": 220,
664         "wires": [
665             [
666                 "dc576b6355478428"
667             ]
668         ]
669     },
670     {
671         "id": "dc576b6355478428",
672         "type": "function",
673         "z": "c5746e29f53f72ce",
674         "name": "JSON",
675         "func": "const string = msg.payload;\nconst array = JSON.parse(string);\nif (Array.isArray(array)) {\n    msg.payload = array.map( (item) => {\n        if (typeof item === 'string' || item instanceof String) {\n            return JSON.parse(item);\n        }\n    });\n} else {\n    msg.payload = array;\n}\nreturn msg;",
676         "outputs": 1,
677         "noerr": 0,
678         "initialize": "",
679         "finalize": "",
680         "libs": [],
681         "x": 830,
682         "y": 220,
683         "wires": [
684             [
685                 "562063a080cb99d6"
686             ]
687         ]
688     },
689     {
690         "id": "e5f66f4bd6777ca0",
691         "type": "function",
692         "z": "c5746e29f53f72ce",
693         "name": "SET msg.url",
694         "func": "const base = 'https://messages.smo.o-ran-sc.org';\nconst path = 'events';\nconst urlMapping = {\n    pnfRegistration: \"unauthenticated.VES_PNFREG_OUTPUT\",\n    o1NotifyPnfRegistration: \"unauthenticated.VES_O1_NOTIFY_PNF_REGISTRATION_OUTPUT\",\n    oRanScDuHelloWorldPmStreaming: \"unauthenticated.VES_O_RAN_SC_HELLO_WORLD_PM_STREAMING_OUTPUT\",\n    notifyHeartbeat: \"unauthenticated.SEC_3GPP_HEARTBEAT_OUTPUT\",\n    notifyFileReady: \"unauthenticated.VES_FILE_READY_OUTPUT\",\n    oRanOpenfrontManagementPlane: \"unauthenticated.VES_O_RAN_SC_OPENFRONTHAUL_OUTPUT\"\n};\nmsg.url = [base, path, urlMapping[msg.topic], '1','1'].join('/');\nreturn msg;",
695         "outputs": 1,
696         "noerr": 0,
697         "initialize": "",
698         "finalize": "",
699         "libs": [],
700         "x": 490,
701         "y": 220,
702         "wires": [
703             [
704                 "5437e3fdfca300c9"
705             ]
706         ]
707     },
708     {
709         "id": "42275e9c12f8e52b",
710         "type": "comment",
711         "z": "c5746e29f53f72ce",
712         "name": "from O-RAN-SC",
713         "info": "",
714         "x": 100,
715         "y": 140,
716         "wires": []
717     },
718     {
719         "id": "e07fa97ebc66dce0",
720         "type": "comment",
721         "z": "c5746e29f53f72ce",
722         "name": "from ONAP",
723         "info": "",
724         "x": 90,
725         "y": 40,
726         "wires": []
727     },
728     {
729         "id": "44b8c2cc138777f1",
730         "type": "comment",
731         "z": "c5746e29f53f72ce",
732         "name": "from SA5 R-18 branch",
733         "info": "",
734         "x": 120,
735         "y": 380,
736         "wires": []
737     },
738     {
739         "id": "4480e5473a65a757",
740         "type": "inject",
741         "z": "c5746e29f53f72ce",
742         "name": "oRanScDuHelloWorldPmStreaming",
743         "props": [
744             {
745                 "p": "payload"
746             },
747             {
748                 "p": "topic",
749                 "vt": "str"
750             }
751         ],
752         "repeat": "",
753         "crontab": "",
754         "once": false,
755         "onceDelay": 0.1,
756         "topic": "oRanScDuHelloWorldPmStreaming",
757         "payload": "",
758         "payloadType": "date",
759         "x": 180,
760         "y": 220,
761         "wires": [
762             [
763                 "e5f66f4bd6777ca0"
764             ]
765         ]
766     },
767     {
768         "id": "52f22ee054e5b4ac",
769         "type": "inject",
770         "z": "c5746e29f53f72ce",
771         "name": "o1NotifyPnfRegistration",
772         "props": [
773             {
774                 "p": "payload"
775             },
776             {
777                 "p": "topic",
778                 "vt": "str"
779             }
780         ],
781         "repeat": "",
782         "crontab": "",
783         "once": false,
784         "onceDelay": 0.1,
785         "topic": "o1NotifyPnfRegistration",
786         "payload": "",
787         "payloadType": "date",
788         "x": 220,
789         "y": 180,
790         "wires": [
791             [
792                 "e5f66f4bd6777ca0"
793             ]
794         ]
795     },
796     {
797         "id": "3051f52553efaaa4",
798         "type": "http request",
799         "z": "c5746e29f53f72ce",
800         "name": "",
801         "method": "GET",
802         "ret": "txt",
803         "paytoqs": "ignore",
804         "url": "https://messages.smo.o-ran-sc.org/topics",
805         "tls": "7b2f4859e5963695",
806         "persist": true,
807         "proxy": "",
808         "insecureHTTPParser": true,
809         "authType": "",
810         "senderr": false,
811         "headers": [
812             {
813                 "keyType": "other",
814                 "keyValue": "Accept",
815                 "valueType": "other",
816                 "valueValue": "application/json"
817             }
818         ],
819         "x": 670,
820         "y": 180,
821         "wires": [
822             [
823                 "dc576b6355478428"
824             ]
825         ]
826     },
827     {
828         "id": "0acceacb99b7981a",
829         "type": "inject",
830         "z": "c5746e29f53f72ce",
831         "name": "Topics?",
832         "props": [
833             {
834                 "p": "payload"
835             },
836             {
837                 "p": "topic",
838                 "vt": "str"
839             }
840         ],
841         "repeat": "",
842         "crontab": "",
843         "once": false,
844         "onceDelay": 0.1,
845         "topic": "topics",
846         "payload": "",
847         "payloadType": "date",
848         "x": 510,
849         "y": 180,
850         "wires": [
851             [
852                 "3051f52553efaaa4"
853             ]
854         ]
855     },
856     {
857         "id": "34b7ac222692e06d",
858         "type": "comment",
859         "z": "c5746e29f53f72ce",
860         "name": "from OpenFronthaul Management-Plane",
861         "info": "",
862         "x": 180,
863         "y": 280,
864         "wires": []
865     },
866     {
867         "id": "efd550c650283862",
868         "type": "inject",
869         "z": "c5746e29f53f72ce",
870         "name": "oRanOpenfrontManagementPlane",
871         "props": [
872             {
873                 "p": "payload"
874             },
875             {
876                 "p": "topic",
877                 "vt": "str"
878             }
879         ],
880         "repeat": "",
881         "crontab": "",
882         "once": false,
883         "onceDelay": 0.1,
884         "topic": "oRanOpenfrontManagementPlane",
885         "payload": "",
886         "payloadType": "date",
887         "x": 180,
888         "y": 320,
889         "wires": [
890             [
891                 "e5f66f4bd6777ca0"
892             ]
893         ]
894     }
895 ]