Update Flows for Kafka-Bridge usage
[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": "db7b8dca98eba850",
12         "type": "tab",
13         "label": "Message Topics",
14         "disabled": false,
15         "info": "Subscribes to kafka topics using the strimzi kafka bridge implementation. \n",
16         "env": []
17     },
18     {
19         "id": "7ba02ed596e8cde5",
20         "type": "tab",
21         "label": "OpenFronthaul",
22         "disabled": false,
23         "info": "",
24         "env": []
25     },
26     {
27         "id": "7b2f4859e5963695",
28         "type": "tls-config",
29         "name": "",
30         "cert": "",
31         "key": "",
32         "ca": "",
33         "certname": "",
34         "keyname": "",
35         "caname": "",
36         "servername": "",
37         "verifyservercert": false,
38         "alpnprotocol": ""
39     },
40     {
41         "id": "91a1f8d3ce84ceda",
42         "type": "inject",
43         "z": "51e83a0892da060e",
44         "name": "notifyFileReady",
45         "props": [
46             {
47                 "p": "payload"
48             },
49             {
50                 "p": "topic",
51                 "vt": "str"
52             }
53         ],
54         "repeat": "",
55         "crontab": "",
56         "once": false,
57         "onceDelay": 0.1,
58         "topic": "notifyFileReady",
59         "payload": "",
60         "payloadType": "date",
61         "x": 120,
62         "y": 500,
63         "wires": [
64             [
65                 "b5533c10604af5a6",
66                 "f8e64d1cb25eb4ab"
67             ]
68         ]
69     },
70     {
71         "id": "b5533c10604af5a6",
72         "type": "function",
73         "z": "51e83a0892da060e",
74         "name": "vesHeader",
75         "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    notifyFilePreparationError: 'file-ready',\n    notifyNewAlarm: '3GPP-FaultSupervision',\n    notifyChangedAlarm: '3GPP-FaultSupervision',\n    notifyChangedAlarmGeneral: '3GPP-FaultSupervision',\n    notifyAckStateChanged: '3GPP-FaultSupervision',\n    notifyCorrelatedNotificationChanged: '3GPP-FaultSupervision',\n    notifyComments: '3GPP-FaultSupervision',\n    notifyClearedAlarm: '3GPP-FaultSupervision',\n    notifyAlarmListRebuilt: '3GPP-FaultSupervision',\n    notifyPotentialFaultyAlarmList: '3GPP-FaultSupervision'\n};\nconst topic = namespaces[eventType] || msg.topic;\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: topic,\n    version: \"4.1\",\n    vesEventListenerVersion: \"7.2.1\"\n}\nreturn msg;",
76         "outputs": 1,
77         "noerr": 0,
78         "initialize": "",
79         "finalize": "",
80         "libs": [],
81         "x": 430,
82         "y": 260,
83         "wires": [
84             [
85                 "f65b1c13e0243ef6"
86             ]
87         ]
88     },
89     {
90         "id": "f8e64d1cb25eb4ab",
91         "type": "function",
92         "z": "51e83a0892da060e",
93         "name": "vesStndDefindBody",
94         "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;",
95         "outputs": 1,
96         "noerr": 0,
97         "initialize": "",
98         "finalize": "",
99         "libs": [],
100         "x": 470,
101         "y": 500,
102         "wires": [
103             [
104                 "f65b1c13e0243ef6"
105             ]
106         ]
107     },
108     {
109         "id": "f65b1c13e0243ef6",
110         "type": "join",
111         "z": "51e83a0892da060e",
112         "name": "",
113         "mode": "custom",
114         "build": "object",
115         "property": "payload",
116         "propertyType": "msg",
117         "key": "topic",
118         "joiner": "\\n",
119         "joinerType": "str",
120         "accumulate": false,
121         "timeout": "",
122         "count": "2",
123         "reduceRight": false,
124         "reduceExp": "",
125         "reduceInit": "",
126         "reduceInitType": "",
127         "reduceFixup": "",
128         "x": 690,
129         "y": 280,
130         "wires": [
131             [
132                 "1d6949a57bce82ab"
133             ]
134         ]
135     },
136     {
137         "id": "1d6949a57bce82ab",
138         "type": "function",
139         "z": "51e83a0892da060e",
140         "name": "http-preparation",
141         "func": "const protocol = env.get('VES_ENDPOINT_PROTOCOL');\nconst host = env.get('VES_ENDPOINT_HOST');\nconst port = env.get('VES_ENDPOINT_PORT');\nconst base = protocol + '://' + host + ':' + port;\nconst path = 'eventListener/v7';\nmsg.url = [base, path].join('/');\n\nconst user = env.get('VES_ENDPOINT_USERNAME');\nconst password = env.get('VES_ENDPOINT_PASSWORD');\nconst auth = Buffer.from([user, password].join(':')).toString('base64')\nconst basicAuth = ['Basic', auth].join(' ');\n\nmsg.headers = {};\nmsg.headers['Content-Type'] = 'application/json';\nmsg.headers['Accept'] = 'application/json';\nmsg.headers['Authorization'] = basicAuth;\n\nmsg.payload = {\n  event: msg.payload\n};\nreturn msg;",
142         "outputs": 1,
143         "noerr": 0,
144         "initialize": "",
145         "finalize": "",
146         "libs": [],
147         "x": 840,
148         "y": 280,
149         "wires": [
150             [
151                 "27e1d8d1e9b8fd93",
152                 "9ab2b4d9caf52c14"
153             ]
154         ]
155     },
156     {
157         "id": "27e1d8d1e9b8fd93",
158         "type": "http request",
159         "z": "51e83a0892da060e",
160         "name": "",
161         "method": "POST",
162         "ret": "txt",
163         "paytoqs": "ignore",
164         "url": "",
165         "tls": "7b2f4859e5963695",
166         "persist": true,
167         "proxy": "",
168         "insecureHTTPParser": false,
169         "authType": "",
170         "senderr": false,
171         "headers": [],
172         "x": 1030,
173         "y": 280,
174         "wires": [
175             [
176                 "f3412bcb9e134063"
177             ]
178         ]
179     },
180     {
181         "id": "f3412bcb9e134063",
182         "type": "debug",
183         "z": "51e83a0892da060e",
184         "name": "VesCollectorResponse",
185         "active": true,
186         "tosidebar": false,
187         "console": true,
188         "tostatus": true,
189         "complete": "payload",
190         "targetType": "msg",
191         "statusVal": "payload",
192         "statusType": "auto",
193         "x": 1230,
194         "y": 280,
195         "wires": []
196     },
197     {
198         "id": "b5e1e7a83051b5b6",
199         "type": "inject",
200         "z": "51e83a0892da060e",
201         "name": "pnfRegistration",
202         "props": [
203             {
204                 "p": "payload"
205             },
206             {
207                 "p": "topic",
208                 "vt": "str"
209             }
210         ],
211         "repeat": "",
212         "crontab": "",
213         "once": false,
214         "onceDelay": 0.1,
215         "topic": "pnfRegistration",
216         "payload": "",
217         "payloadType": "date",
218         "x": 120,
219         "y": 80,
220         "wires": [
221             [
222                 "bd43459cf3907a5a",
223                 "b5533c10604af5a6"
224             ]
225         ]
226     },
227     {
228         "id": "bd43459cf3907a5a",
229         "type": "function",
230         "z": "51e83a0892da060e",
231         "name": "vesBody",
232         "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;",
233         "outputs": 1,
234         "noerr": 0,
235         "initialize": "",
236         "finalize": "",
237         "libs": [],
238         "x": 440,
239         "y": 80,
240         "wires": [
241             [
242                 "f65b1c13e0243ef6"
243             ]
244         ]
245     },
246     {
247         "id": "9ab2b4d9caf52c14",
248         "type": "debug",
249         "z": "51e83a0892da060e",
250         "name": "ves-message-data",
251         "active": false,
252         "tosidebar": true,
253         "console": true,
254         "tostatus": true,
255         "complete": "payload",
256         "targetType": "msg",
257         "statusVal": "payload.event.commonEventHeader.stndDefinedNamespace",
258         "statusType": "msg",
259         "x": 1060,
260         "y": 220,
261         "wires": []
262     },
263     {
264         "id": "7d589030272c0a94",
265         "type": "inject",
266         "z": "51e83a0892da060e",
267         "d": true,
268         "name": "notifyHeartbeat",
269         "props": [
270             {
271                 "p": "payload"
272             },
273             {
274                 "p": "topic",
275                 "vt": "str"
276             }
277         ],
278         "repeat": "3",
279         "crontab": "",
280         "once": false,
281         "onceDelay": 0.1,
282         "topic": "notifyHeartbeat",
283         "payload": "",
284         "payloadType": "date",
285         "x": 130,
286         "y": 420,
287         "wires": [
288             [
289                 "b5533c10604af5a6",
290                 "ab3bc53f12d28d8f"
291             ]
292         ]
293     },
294     {
295         "id": "ab3bc53f12d28d8f",
296         "type": "function",
297         "z": "51e83a0892da060e",
298         "name": "vesStndDefindBody",
299         "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;",
300         "outputs": 1,
301         "noerr": 0,
302         "initialize": "",
303         "finalize": "",
304         "libs": [],
305         "x": 470,
306         "y": 420,
307         "wires": [
308             [
309                 "f65b1c13e0243ef6"
310             ]
311         ]
312     },
313     {
314         "id": "1bada25ea9a5aa01",
315         "type": "comment",
316         "z": "51e83a0892da060e",
317         "name": "from SA5 R-18 branch",
318         "info": "",
319         "x": 120,
320         "y": 380,
321         "wires": []
322     },
323     {
324         "id": "f4f4670363ec760f",
325         "type": "comment",
326         "z": "51e83a0892da060e",
327         "name": "from O-RAN-SC",
328         "info": "",
329         "x": 100,
330         "y": 140,
331         "wires": []
332     },
333     {
334         "id": "e4dc4647c388ab77",
335         "type": "comment",
336         "z": "51e83a0892da060e",
337         "name": "from ONAP",
338         "info": "",
339         "x": 90,
340         "y": 40,
341         "wires": []
342     },
343     {
344         "id": "fb6413675e22dc71",
345         "type": "inject",
346         "z": "51e83a0892da060e",
347         "name": "o1NotifyPnfRegistration",
348         "props": [
349             {
350                 "p": "payload"
351             },
352             {
353                 "p": "topic",
354                 "vt": "str"
355             }
356         ],
357         "repeat": "",
358         "crontab": "",
359         "once": false,
360         "onceDelay": 0.1,
361         "topic": "o1NotifyPnfRegistration",
362         "payload": "",
363         "payloadType": "date",
364         "x": 140,
365         "y": 180,
366         "wires": [
367             [
368                 "b5533c10604af5a6",
369                 "51f5fa54867b7e65"
370             ]
371         ]
372     },
373     {
374         "id": "73beab79d5024f4b",
375         "type": "inject",
376         "z": "51e83a0892da060e",
377         "name": "oRanScDuHelloWorldPmStreaming",
378         "props": [
379             {
380                 "p": "payload"
381             },
382             {
383                 "p": "topic",
384                 "vt": "str"
385             }
386         ],
387         "repeat": "",
388         "crontab": "",
389         "once": false,
390         "onceDelay": 0.1,
391         "topic": "oRanScDuHelloWorldPmStreaming",
392         "payload": "",
393         "payloadType": "date",
394         "x": 180,
395         "y": 220,
396         "wires": [
397             [
398                 "5c6f93626fac58b5",
399                 "b5533c10604af5a6"
400             ]
401         ]
402     },
403     {
404         "id": "51f5fa54867b7e65",
405         "type": "function",
406         "z": "51e83a0892da060e",
407         "name": "vesStndDefindBody",
408         "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;",
409         "outputs": 1,
410         "noerr": 0,
411         "initialize": "",
412         "finalize": "",
413         "libs": [],
414         "x": 470,
415         "y": 180,
416         "wires": [
417             [
418                 "f65b1c13e0243ef6"
419             ]
420         ]
421     },
422     {
423         "id": "5c6f93626fac58b5",
424         "type": "function",
425         "z": "51e83a0892da060e",
426         "name": "vesStndDefindBody",
427         "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",
428         "outputs": 1,
429         "noerr": 0,
430         "initialize": "",
431         "finalize": "",
432         "libs": [],
433         "x": 470,
434         "y": 220,
435         "wires": [
436             [
437                 "f65b1c13e0243ef6"
438             ]
439         ]
440     },
441     {
442         "id": "456597d0477d239f",
443         "type": "inject",
444         "z": "51e83a0892da060e",
445         "name": "o-ran-file-management:file-download-event",
446         "props": [
447             {
448                 "p": "payload"
449             },
450             {
451                 "p": "topic",
452                 "vt": "str"
453             }
454         ],
455         "repeat": "",
456         "crontab": "",
457         "once": false,
458         "onceDelay": 0.1,
459         "topic": "o-ran-file-management:file-download-event",
460         "payload": "",
461         "payloadType": "date",
462         "x": 820,
463         "y": 820,
464         "wires": [
465             [
466                 "f40d1d16c7044edc",
467                 "b5533c10604af5a6"
468             ]
469         ]
470     },
471     {
472         "id": "f40d1d16c7044edc",
473         "type": "function",
474         "z": "51e83a0892da060e",
475         "name": "vesStndDefindBody",
476         "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.dcn.smo.o-ran-sc/downloads',\n                'status': 'FAILURE',\n                'reject-reason': 'FTPes Server not reachable.'\n            }\n        }\n    }\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
477         "outputs": 1,
478         "noerr": 0,
479         "initialize": "",
480         "finalize": "",
481         "libs": [],
482         "x": 1150,
483         "y": 820,
484         "wires": [
485             [
486                 "f65b1c13e0243ef6"
487             ]
488         ]
489     },
490     {
491         "id": "3d8f8180f204d804",
492         "type": "inject",
493         "z": "51e83a0892da060e",
494         "name": "o-ran-file-management:file-upload-notification",
495         "props": [
496             {
497                 "p": "payload"
498             },
499             {
500                 "p": "topic",
501                 "vt": "str"
502             }
503         ],
504         "repeat": "",
505         "crontab": "",
506         "once": false,
507         "onceDelay": 0.1,
508         "topic": "o-ran-file-management:file-upload-notification",
509         "payload": "",
510         "payloadType": "date",
511         "x": 830,
512         "y": 860,
513         "wires": [
514             [
515                 "d473bf42d8169599",
516                 "b5533c10604af5a6"
517             ]
518         ]
519     },
520     {
521         "id": "d473bf42d8169599",
522         "type": "function",
523         "z": "51e83a0892da060e",
524         "name": "vesStndDefindBody",
525         "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.dcn.smo.o-ran-sc/downloads',\n                'status': 'FAILURE',\n                'reject-reason': 'FTPes Server not reachable.'\n            }\n        }\n    }\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
526         "outputs": 1,
527         "noerr": 0,
528         "initialize": "",
529         "finalize": "",
530         "libs": [],
531         "x": 1150,
532         "y": 860,
533         "wires": [
534             [
535                 "f65b1c13e0243ef6"
536             ]
537         ]
538     },
539     {
540         "id": "ec85f2a64f79450d",
541         "type": "inject",
542         "z": "51e83a0892da060e",
543         "name": "o-ran-supervision:supervision-notification",
544         "props": [
545             {
546                 "p": "payload"
547             },
548             {
549                 "p": "topic",
550                 "vt": "str"
551             }
552         ],
553         "repeat": "",
554         "crontab": "",
555         "once": false,
556         "onceDelay": 0.1,
557         "topic": "o-ran-supervision:supervision-notification",
558         "payload": "",
559         "payloadType": "date",
560         "x": 820,
561         "y": 1140,
562         "wires": [
563             [
564                 "96ea9b3d7d4121dc",
565                 "b5533c10604af5a6"
566             ]
567         ]
568     },
569     {
570         "id": "96ea9b3d7d4121dc",
571         "type": "function",
572         "z": "51e83a0892da060e",
573         "name": "vesStndDefindBody",
574         "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-supervision.yang#components/schemas/ofhm-event-stream',\n    stndDefinedFieldsVersion: '1.0',\n    data: {\n        'ietf:notification': {\n            'eventTime': eventTime,\n            'o-ran-supervision:supervision-notification': {\n                'session-id': 999999\n            }\n        }\n    }\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
575         "outputs": 1,
576         "noerr": 0,
577         "initialize": "",
578         "finalize": "",
579         "libs": [],
580         "x": 1150,
581         "y": 1140,
582         "wires": [
583             [
584                 "f65b1c13e0243ef6"
585             ]
586         ]
587     },
588     {
589         "id": "027098b9ba7cd1e6",
590         "type": "comment",
591         "z": "51e83a0892da060e",
592         "name": "from OpenFronthaul Management-Plane",
593         "info": "",
594         "x": 780,
595         "y": 380,
596         "wires": []
597     },
598     {
599         "id": "e80ff3c876a343e5",
600         "type": "inject",
601         "z": "51e83a0892da060e",
602         "d": true,
603         "name": "o-ran-ald-port:dc-enabled-status-change",
604         "props": [
605             {
606                 "p": "payload"
607             },
608             {
609                 "p": "topic",
610                 "vt": "str"
611             }
612         ],
613         "repeat": "",
614         "crontab": "",
615         "once": false,
616         "onceDelay": 0.1,
617         "topic": "o-ran-ald-port:dc-enabled-status-change",
618         "payload": "",
619         "payloadType": "date",
620         "x": 820,
621         "y": 420,
622         "wires": [
623             []
624         ]
625     },
626     {
627         "id": "c61fe1f3bdb954d5",
628         "type": "inject",
629         "z": "51e83a0892da060e",
630         "d": true,
631         "name": "o-ran-ald-port:overcurrent-report",
632         "props": [
633             {
634                 "p": "payload"
635             },
636             {
637                 "p": "topic",
638                 "vt": "str"
639             }
640         ],
641         "repeat": "",
642         "crontab": "",
643         "once": false,
644         "onceDelay": 0.1,
645         "topic": "o-ran-ald-port:overcurrent-report",
646         "payload": "",
647         "payloadType": "date",
648         "x": 790,
649         "y": 460,
650         "wires": [
651             []
652         ]
653     },
654     {
655         "id": "939ac153e888cc93",
656         "type": "inject",
657         "z": "51e83a0892da060e",
658         "d": true,
659         "name": "o-ran-antenna-calibration:antenna-calibration-coordinated",
660         "props": [
661             {
662                 "p": "payload"
663             },
664             {
665                 "p": "topic",
666                 "vt": "str"
667             }
668         ],
669         "repeat": "",
670         "crontab": "",
671         "once": false,
672         "onceDelay": 0.1,
673         "topic": "o-ran-antenna-calibration:antenna-calibration-coordinated",
674         "payload": "",
675         "payloadType": "date",
676         "x": 870,
677         "y": 500,
678         "wires": [
679             []
680         ]
681     },
682     {
683         "id": "f7834ee33e7731fb",
684         "type": "inject",
685         "z": "51e83a0892da060e",
686         "d": true,
687         "name": "o-ran-antenna-calibration:antenna-calibration-multiple-time-resource-params",
688         "props": [
689             {
690                 "p": "payload"
691             },
692             {
693                 "p": "topic",
694                 "vt": "str"
695             }
696         ],
697         "repeat": "",
698         "crontab": "",
699         "once": false,
700         "onceDelay": 0.1,
701         "topic": "o-ran-antenna-calibration:antenna-calibration-multiple-time-resource-params",
702         "payload": "",
703         "payloadType": "date",
704         "x": 930,
705         "y": 540,
706         "wires": [
707             []
708         ]
709     },
710     {
711         "id": "8e98d432fcaef200",
712         "type": "inject",
713         "z": "51e83a0892da060e",
714         "d": true,
715         "name": "o-ran-antenna-calibration:antenna-calibration-required",
716         "props": [
717             {
718                 "p": "payload"
719             },
720             {
721                 "p": "topic",
722                 "vt": "str"
723             }
724         ],
725         "repeat": "",
726         "crontab": "",
727         "once": false,
728         "onceDelay": 0.1,
729         "topic": "o-ran-antenna-calibration:antenna-calibration-required",
730         "payload": "",
731         "payloadType": "date",
732         "x": 860,
733         "y": 580,
734         "wires": [
735             []
736         ]
737     },
738     {
739         "id": "554cb2ce5934b36c",
740         "type": "inject",
741         "z": "51e83a0892da060e",
742         "d": true,
743         "name": "o-ran-antenna-calibration:antenna-calibration-result",
744         "props": [
745             {
746                 "p": "payload"
747             },
748             {
749                 "p": "topic",
750                 "vt": "str"
751             }
752         ],
753         "repeat": "",
754         "crontab": "",
755         "once": false,
756         "onceDelay": 0.1,
757         "topic": "o-ran-antenna-calibration:antenna-calibration-result",
758         "payload": "",
759         "payloadType": "date",
760         "x": 850,
761         "y": 620,
762         "wires": [
763             []
764         ]
765     },
766     {
767         "id": "391ce0bfa3b8003d",
768         "type": "inject",
769         "z": "51e83a0892da060e",
770         "d": true,
771         "name": "o-ran-beamforming:beamforming-information-update",
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": "o-ran-beamforming:beamforming-information-update",
786         "payload": "",
787         "payloadType": "date",
788         "x": 850,
789         "y": 660,
790         "wires": [
791             []
792         ]
793     },
794     {
795         "id": "966ca15e87b419f5",
796         "type": "inject",
797         "z": "51e83a0892da060e",
798         "d": true,
799         "name": "o-ran-beamforming:capability-group-beamforming-information-update",
800         "props": [
801             {
802                 "p": "payload"
803             },
804             {
805                 "p": "topic",
806                 "vt": "str"
807             }
808         ],
809         "repeat": "",
810         "crontab": "",
811         "once": false,
812         "onceDelay": 0.1,
813         "topic": "o-ran-beamforming:capability-group-beamforming-information-update",
814         "payload": "",
815         "payloadType": "date",
816         "x": 900,
817         "y": 700,
818         "wires": [
819             []
820         ]
821     },
822     {
823         "id": "243cffacec890e26",
824         "type": "inject",
825         "z": "51e83a0892da060e",
826         "d": true,
827         "name": "o-ran-beamforming:predefined-beam-tilt-offset-complete",
828         "props": [
829             {
830                 "p": "payload"
831             },
832             {
833                 "p": "topic",
834                 "vt": "str"
835             }
836         ],
837         "repeat": "",
838         "crontab": "",
839         "once": false,
840         "onceDelay": 0.1,
841         "topic": "o-ran-beamforming:predefined-beam-tilt-offset-complete",
842         "payload": "",
843         "payloadType": "date",
844         "x": 860,
845         "y": 740,
846         "wires": [
847             []
848         ]
849     },
850     {
851         "id": "843c4093e2ddd914",
852         "type": "inject",
853         "z": "51e83a0892da060e",
854         "d": true,
855         "name": "o-ran-externalio:external-input-change",
856         "props": [
857             {
858                 "p": "payload"
859             },
860             {
861                 "p": "topic",
862                 "vt": "str"
863             }
864         ],
865         "repeat": "",
866         "crontab": "",
867         "once": false,
868         "onceDelay": 0.1,
869         "topic": "o-ran-externalio:external-input-change",
870         "payload": "",
871         "payloadType": "date",
872         "x": 810,
873         "y": 780,
874         "wires": [
875             []
876         ]
877     },
878     {
879         "id": "627b31335d7e5b6f",
880         "type": "inject",
881         "z": "51e83a0892da060e",
882         "d": true,
883         "name": "o-ran-fm:alarm-notif",
884         "props": [
885             {
886                 "p": "payload"
887             },
888             {
889                 "p": "topic",
890                 "vt": "str"
891             }
892         ],
893         "repeat": "",
894         "crontab": "",
895         "once": false,
896         "onceDelay": 0.1,
897         "topic": "o-ran-fm:alarm-notif",
898         "payload": "",
899         "payloadType": "date",
900         "x": 750,
901         "y": 900,
902         "wires": [
903             []
904         ]
905     },
906     {
907         "id": "87c1e3e0e87bd7c1",
908         "type": "inject",
909         "z": "51e83a0892da060e",
910         "d": true,
911         "name": "o-ran-laa-operations:measurement-result",
912         "props": [
913             {
914                 "p": "payload"
915             },
916             {
917                 "p": "topic",
918                 "vt": "str"
919             }
920         ],
921         "repeat": "",
922         "crontab": "",
923         "once": false,
924         "onceDelay": 0.1,
925         "topic": "o-ran-laa-operations:measurement-result",
926         "payload": "",
927         "payloadType": "date",
928         "x": 820,
929         "y": 940,
930         "wires": [
931             []
932         ]
933     },
934     {
935         "id": "27d98684362bee02",
936         "type": "inject",
937         "z": "51e83a0892da060e",
938         "d": true,
939         "name": "o-ran-performance-management:measurement-result-stats",
940         "props": [
941             {
942                 "p": "payload"
943             },
944             {
945                 "p": "topic",
946                 "vt": "str"
947             }
948         ],
949         "repeat": "",
950         "crontab": "",
951         "once": false,
952         "onceDelay": 0.1,
953         "topic": "o-ran-performance-management:measurement-result-stats",
954         "payload": "",
955         "payloadType": "date",
956         "x": 870,
957         "y": 980,
958         "wires": [
959             []
960         ]
961     },
962     {
963         "id": "03292a70960f7d50",
964         "type": "inject",
965         "z": "51e83a0892da060e",
966         "d": true,
967         "name": "o-ran-software-management:activation-event",
968         "props": [
969             {
970                 "p": "payload"
971             },
972             {
973                 "p": "topic",
974                 "vt": "str"
975             }
976         ],
977         "repeat": "",
978         "crontab": "",
979         "once": false,
980         "onceDelay": 0.1,
981         "topic": "o-ran-software-management:activation-event",
982         "payload": "",
983         "payloadType": "date",
984         "x": 830,
985         "y": 1020,
986         "wires": [
987             []
988         ]
989     },
990     {
991         "id": "652dbf9c0ef73057",
992         "type": "inject",
993         "z": "51e83a0892da060e",
994         "d": true,
995         "name": "o-ran-software-management:download-event",
996         "props": [
997             {
998                 "p": "payload"
999             },
1000             {
1001                 "p": "topic",
1002                 "vt": "str"
1003             }
1004         ],
1005         "repeat": "",
1006         "crontab": "",
1007         "once": false,
1008         "onceDelay": 0.1,
1009         "topic": "o-ran-software-management:download-event",
1010         "payload": "",
1011         "payloadType": "date",
1012         "x": 830,
1013         "y": 1060,
1014         "wires": [
1015             []
1016         ]
1017     },
1018     {
1019         "id": "0636add6c6d4d5e2",
1020         "type": "inject",
1021         "z": "51e83a0892da060e",
1022         "d": true,
1023         "name": "o-ran-software-management:install-event",
1024         "props": [
1025             {
1026                 "p": "payload"
1027             },
1028             {
1029                 "p": "topic",
1030                 "vt": "str"
1031             }
1032         ],
1033         "repeat": "",
1034         "crontab": "",
1035         "once": false,
1036         "onceDelay": 0.1,
1037         "topic": "o-ran-software-management:install-event",
1038         "payload": "",
1039         "payloadType": "date",
1040         "x": 820,
1041         "y": 1100,
1042         "wires": [
1043             []
1044         ]
1045     },
1046     {
1047         "id": "4c274d02a62c7565",
1048         "type": "inject",
1049         "z": "51e83a0892da060e",
1050         "d": true,
1051         "name": "o-ran-sync:gnss-state-change",
1052         "props": [
1053             {
1054                 "p": "payload"
1055             },
1056             {
1057                 "p": "topic",
1058                 "vt": "str"
1059             }
1060         ],
1061         "repeat": "",
1062         "crontab": "",
1063         "once": false,
1064         "onceDelay": 0.1,
1065         "topic": "o-ran-sync:gnss-state-change",
1066         "payload": "",
1067         "payloadType": "date",
1068         "x": 780,
1069         "y": 1180,
1070         "wires": [
1071             []
1072         ]
1073     },
1074     {
1075         "id": "ad0e319d109512e7",
1076         "type": "inject",
1077         "z": "51e83a0892da060e",
1078         "d": true,
1079         "name": "o-ran-sync:ptp-state-change",
1080         "props": [
1081             {
1082                 "p": "payload"
1083             },
1084             {
1085                 "p": "topic",
1086                 "vt": "str"
1087             }
1088         ],
1089         "repeat": "",
1090         "crontab": "",
1091         "once": false,
1092         "onceDelay": 0.1,
1093         "topic": "o-ran-sync:ptp-state-change",
1094         "payload": "",
1095         "payloadType": "date",
1096         "x": 780,
1097         "y": 1220,
1098         "wires": [
1099             []
1100         ]
1101     },
1102     {
1103         "id": "de24c11aa05ce94e",
1104         "type": "inject",
1105         "z": "51e83a0892da060e",
1106         "d": true,
1107         "name": "o-ran-sync:synce-state-change",
1108         "props": [
1109             {
1110                 "p": "payload"
1111             },
1112             {
1113                 "p": "topic",
1114                 "vt": "str"
1115             }
1116         ],
1117         "repeat": "",
1118         "crontab": "",
1119         "once": false,
1120         "onceDelay": 0.1,
1121         "topic": "o-ran-sync:synce-state-change",
1122         "payload": "",
1123         "payloadType": "date",
1124         "x": 790,
1125         "y": 1260,
1126         "wires": [
1127             []
1128         ]
1129     },
1130     {
1131         "id": "a9b33c01b841cc78",
1132         "type": "inject",
1133         "z": "51e83a0892da060e",
1134         "d": true,
1135         "name": "o-ran-sync:synchronization-state-change",
1136         "props": [
1137             {
1138                 "p": "payload"
1139             },
1140             {
1141                 "p": "topic",
1142                 "vt": "str"
1143             }
1144         ],
1145         "repeat": "",
1146         "crontab": "",
1147         "once": false,
1148         "onceDelay": 0.1,
1149         "topic": "o-ran-sync:synchronization-state-change",
1150         "payload": "",
1151         "payloadType": "date",
1152         "x": 820,
1153         "y": 1300,
1154         "wires": [
1155             []
1156         ]
1157     },
1158     {
1159         "id": "f4a87018c664902f",
1160         "type": "inject",
1161         "z": "51e83a0892da060e",
1162         "d": true,
1163         "name": "o-ran-trace:trace-log-generated",
1164         "props": [
1165             {
1166                 "p": "payload"
1167             },
1168             {
1169                 "p": "topic",
1170                 "vt": "str"
1171             }
1172         ],
1173         "repeat": "",
1174         "crontab": "",
1175         "once": false,
1176         "onceDelay": 0.1,
1177         "topic": "o-ran-trace:trace-log-generated",
1178         "payload": "",
1179         "payloadType": "date",
1180         "x": 790,
1181         "y": 1340,
1182         "wires": [
1183             []
1184         ]
1185     },
1186     {
1187         "id": "7cbe4e4faa26098b",
1188         "type": "inject",
1189         "z": "51e83a0892da060e",
1190         "d": true,
1191         "name": "o-ran-uplane-conf:rx-array-carriers-state-change",
1192         "props": [
1193             {
1194                 "p": "payload"
1195             },
1196             {
1197                 "p": "topic",
1198                 "vt": "str"
1199             }
1200         ],
1201         "repeat": "",
1202         "crontab": "",
1203         "once": false,
1204         "onceDelay": 0.1,
1205         "topic": "o-ran-uplane-conf:rx-array-carriers-state-change",
1206         "payload": "",
1207         "payloadType": "date",
1208         "x": 840,
1209         "y": 1420,
1210         "wires": [
1211             []
1212         ]
1213     },
1214     {
1215         "id": "a5eeb9d399c203ca",
1216         "type": "inject",
1217         "z": "51e83a0892da060e",
1218         "d": true,
1219         "name": "o-ran-troubleshooting:troubleshooting-log-generated",
1220         "props": [
1221             {
1222                 "p": "payload"
1223             },
1224             {
1225                 "p": "topic",
1226                 "vt": "str"
1227             }
1228         ],
1229         "repeat": "",
1230         "crontab": "",
1231         "once": false,
1232         "onceDelay": 0.1,
1233         "topic": "o-ran-troubleshooting:troubleshooting-log-generated",
1234         "payload": "",
1235         "payloadType": "date",
1236         "x": 850,
1237         "y": 1380,
1238         "wires": [
1239             []
1240         ]
1241     },
1242     {
1243         "id": "b9d72e03c66c78b3",
1244         "type": "inject",
1245         "z": "51e83a0892da060e",
1246         "d": true,
1247         "name": "o-ran-uplane-conf:tx-array-carriers-state-change",
1248         "props": [
1249             {
1250                 "p": "payload"
1251             },
1252             {
1253                 "p": "topic",
1254                 "vt": "str"
1255             }
1256         ],
1257         "repeat": "",
1258         "crontab": "",
1259         "once": false,
1260         "onceDelay": 0.1,
1261         "topic": "o-ran-uplane-conf:tx-array-carriers-state-change",
1262         "payload": "",
1263         "payloadType": "date",
1264         "x": 840,
1265         "y": 1460,
1266         "wires": [
1267             []
1268         ]
1269     },
1270     {
1271         "id": "bfa425cb3d578d07",
1272         "type": "inject",
1273         "z": "51e83a0892da060e",
1274         "name": "notifyNewAlarm",
1275         "props": [
1276             {
1277                 "p": "payload"
1278             },
1279             {
1280                 "p": "topic",
1281                 "vt": "str"
1282             }
1283         ],
1284         "repeat": "",
1285         "crontab": "",
1286         "once": false,
1287         "onceDelay": 0.1,
1288         "topic": "notifyNewAlarm",
1289         "payload": "",
1290         "payloadType": "date",
1291         "x": 120,
1292         "y": 620,
1293         "wires": [
1294             [
1295                 "f71ebd595a7de756",
1296                 "b5533c10604af5a6"
1297             ]
1298         ]
1299     },
1300     {
1301         "id": "f71ebd595a7de756",
1302         "type": "function",
1303         "z": "51e83a0892da060e",
1304         "name": "vesStndDefindBody",
1305         "func": "const timeStamp = new Date(msg.payload);\nconst alarm = 'Connection Loss';\nconst severity = 'CRITICAL';\n\nmsg.payload = {\n    schemaReference: 'https://forge.3gpp.org/rep/sa5/MnS/raw/Rel-18/OpenAPI/TS28532_FaultMnS.yaml#components/schemas/NotifyNewAlarm',\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        alarmId: alarm,\n        alarmType: 'COMMUNICATIONS_ALARM',\n        probableCause: alarm,\n        specificProblem: alarm,\n        perceivedSeverity: severity,\n        backedUpStatus: true,\n        backUpObject: 'xyz',\n        trendIndication: 'MORE_SEVERE',\n        thresholdInfo: {\n            observedMeasurement: 'new',\n            observedValue: 123.1\n        },\n        correlatedNotifications: [],\n        stateChangeDefinition: [{ 'operational-state': 'DISABLED' }],\n        monitoredAttributes: {\n            interface: 'uuid-of-the-interface'\n        },\n        proposedRepairActions: 'Call the police!',\n        additionalText: 'O-RAN Software Community OAM',\n        additionalInformation: {\n            description: 'a test alarm'\n        },\n        rootCauseIndicator: false\n    }\n\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
1306         "outputs": 1,
1307         "noerr": 0,
1308         "initialize": "",
1309         "finalize": "",
1310         "libs": [],
1311         "x": 470,
1312         "y": 620,
1313         "wires": [
1314             [
1315                 "f65b1c13e0243ef6"
1316             ]
1317         ]
1318     },
1319     {
1320         "id": "82da4e47972195a4",
1321         "type": "inject",
1322         "z": "51e83a0892da060e",
1323         "d": true,
1324         "name": "notifyChangedAlarm",
1325         "props": [
1326             {
1327                 "p": "payload"
1328             },
1329             {
1330                 "p": "topic",
1331                 "vt": "str"
1332             }
1333         ],
1334         "repeat": "",
1335         "crontab": "",
1336         "once": false,
1337         "onceDelay": 0.1,
1338         "topic": "notifyChangedAlarm",
1339         "payload": "",
1340         "payloadType": "date",
1341         "x": 130,
1342         "y": 660,
1343         "wires": [
1344             []
1345         ]
1346     },
1347     {
1348         "id": "a3d85c62bee11dad",
1349         "type": "inject",
1350         "z": "51e83a0892da060e",
1351         "d": true,
1352         "name": "notifyChangedAlarmGeneral",
1353         "props": [
1354             {
1355                 "p": "payload"
1356             },
1357             {
1358                 "p": "topic",
1359                 "vt": "str"
1360             }
1361         ],
1362         "repeat": "",
1363         "crontab": "",
1364         "once": false,
1365         "onceDelay": 0.1,
1366         "topic": "notifyChangedAlarmGeneral",
1367         "payload": "",
1368         "payloadType": "date",
1369         "x": 160,
1370         "y": 700,
1371         "wires": [
1372             []
1373         ]
1374     },
1375     {
1376         "id": "e4651c07a56f2448",
1377         "type": "inject",
1378         "z": "51e83a0892da060e",
1379         "d": true,
1380         "name": "notifyAckStateChanged",
1381         "props": [
1382             {
1383                 "p": "payload"
1384             },
1385             {
1386                 "p": "topic",
1387                 "vt": "str"
1388             }
1389         ],
1390         "repeat": "",
1391         "crontab": "",
1392         "once": false,
1393         "onceDelay": 0.1,
1394         "topic": "notifyAckStateChanged",
1395         "payload": "",
1396         "payloadType": "date",
1397         "x": 140,
1398         "y": 740,
1399         "wires": [
1400             []
1401         ]
1402     },
1403     {
1404         "id": "e949006e1b1fe0f0",
1405         "type": "inject",
1406         "z": "51e83a0892da060e",
1407         "d": true,
1408         "name": "notifyCorrelatedNotificationChanged",
1409         "props": [
1410             {
1411                 "p": "payload"
1412             },
1413             {
1414                 "p": "topic",
1415                 "vt": "str"
1416             }
1417         ],
1418         "repeat": "",
1419         "crontab": "",
1420         "once": false,
1421         "onceDelay": 0.1,
1422         "topic": "notifyCorrelatedNotificationChanged",
1423         "payload": "",
1424         "payloadType": "date",
1425         "x": 180,
1426         "y": 780,
1427         "wires": [
1428             []
1429         ]
1430     },
1431     {
1432         "id": "a80169493419d5d0",
1433         "type": "inject",
1434         "z": "51e83a0892da060e",
1435         "d": true,
1436         "name": "notifyComments",
1437         "props": [
1438             {
1439                 "p": "payload"
1440             },
1441             {
1442                 "p": "topic",
1443                 "vt": "str"
1444             }
1445         ],
1446         "repeat": "",
1447         "crontab": "",
1448         "once": false,
1449         "onceDelay": 0.1,
1450         "topic": "notifyComments",
1451         "payload": "",
1452         "payloadType": "date",
1453         "x": 120,
1454         "y": 820,
1455         "wires": [
1456             []
1457         ]
1458     },
1459     {
1460         "id": "9e0f49b3d9b0a5ef",
1461         "type": "inject",
1462         "z": "51e83a0892da060e",
1463         "name": "notifyClearedAlarm",
1464         "props": [
1465             {
1466                 "p": "payload"
1467             },
1468             {
1469                 "p": "topic",
1470                 "vt": "str"
1471             }
1472         ],
1473         "repeat": "",
1474         "crontab": "",
1475         "once": false,
1476         "onceDelay": 0.1,
1477         "topic": "notifyClearedAlarm",
1478         "payload": "",
1479         "payloadType": "date",
1480         "x": 130,
1481         "y": 860,
1482         "wires": [
1483             [
1484                 "69b8d53969426ebf",
1485                 "b5533c10604af5a6"
1486             ]
1487         ]
1488     },
1489     {
1490         "id": "418d585d7406029b",
1491         "type": "inject",
1492         "z": "51e83a0892da060e",
1493         "d": true,
1494         "name": "notifyAlarmListRebuilt",
1495         "props": [
1496             {
1497                 "p": "payload"
1498             },
1499             {
1500                 "p": "topic",
1501                 "vt": "str"
1502             }
1503         ],
1504         "repeat": "",
1505         "crontab": "",
1506         "once": false,
1507         "onceDelay": 0.1,
1508         "topic": "notifyAlarmListRebuilt",
1509         "payload": "",
1510         "payloadType": "date",
1511         "x": 140,
1512         "y": 900,
1513         "wires": [
1514             []
1515         ]
1516     },
1517     {
1518         "id": "f856982bb3c3a65c",
1519         "type": "inject",
1520         "z": "51e83a0892da060e",
1521         "d": true,
1522         "name": "notifyPotentialFaultyAlarmList",
1523         "props": [
1524             {
1525                 "p": "payload"
1526             },
1527             {
1528                 "p": "topic",
1529                 "vt": "str"
1530             }
1531         ],
1532         "repeat": "",
1533         "crontab": "",
1534         "once": false,
1535         "onceDelay": 0.1,
1536         "topic": "notifyPotentialFaultyAlarmList",
1537         "payload": "",
1538         "payloadType": "date",
1539         "x": 160,
1540         "y": 940,
1541         "wires": [
1542             []
1543         ]
1544     },
1545     {
1546         "id": "4617f66b8940469e",
1547         "type": "comment",
1548         "z": "51e83a0892da060e",
1549         "name": "TS28532_FaultMnS.yaml",
1550         "info": "",
1551         "x": 130,
1552         "y": 580,
1553         "wires": []
1554     },
1555     {
1556         "id": "69b8d53969426ebf",
1557         "type": "function",
1558         "z": "51e83a0892da060e",
1559         "name": "vesStndDefindBody",
1560         "func": "const timeStamp = new Date(msg.payload);\nconst alarm = 'Connection Loss';\nconst severity = 'CRITICAL';\n\nmsg.payload = {\n    schemaReference: 'https://forge.3gpp.org/rep/sa5/MnS/raw/Rel-18/OpenAPI/TS28532_FaultMnS.yaml#components/schemas/NotifyClearedAlarm',\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        alarmId: alarm,\n        alarmType: 'COMMUNICATIONS_ALARM',\n        probableCause: alarm,\n        perceivedSeverity: severity,\n        correlatedNotifications: [],\n        clearSystemId: global.get('os').hostname()\n    }\n\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
1561         "outputs": 1,
1562         "noerr": 0,
1563         "initialize": "",
1564         "finalize": "",
1565         "libs": [],
1566         "x": 470,
1567         "y": 860,
1568         "wires": [
1569             [
1570                 "f65b1c13e0243ef6"
1571             ]
1572         ]
1573     },
1574     {
1575         "id": "01e14b971772ee0a",
1576         "type": "comment",
1577         "z": "51e83a0892da060e",
1578         "name": "TS28532_FileDataReportingMnS.yaml",
1579         "info": "",
1580         "x": 170,
1581         "y": 460,
1582         "wires": []
1583     },
1584     {
1585         "id": "ea15cafd2325d76f",
1586         "type": "inject",
1587         "z": "51e83a0892da060e",
1588         "name": "notifyFilePreparationError",
1589         "props": [
1590             {
1591                 "p": "payload"
1592             },
1593             {
1594                 "p": "topic",
1595                 "vt": "str"
1596             }
1597         ],
1598         "repeat": "",
1599         "crontab": "",
1600         "once": false,
1601         "onceDelay": 0.1,
1602         "topic": "notifyFilePreparationError",
1603         "payload": "",
1604         "payloadType": "date",
1605         "x": 150,
1606         "y": 540,
1607         "wires": [
1608             [
1609                 "9f4bc0920fa3c0eb",
1610                 "b5533c10604af5a6"
1611             ]
1612         ]
1613     },
1614     {
1615         "id": "9f4bc0920fa3c0eb",
1616         "type": "function",
1617         "z": "51e83a0892da060e",
1618         "name": "vesStndDefindBody",
1619         "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/NotifyFilePreparationError',\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        reason: 'No Measurements',\n        additionalText: 'Please consult customer documentation!'\n    }\n};\nmsg.topic = 'stndDefinedFields';\nreturn msg;",
1620         "outputs": 1,
1621         "noerr": 0,
1622         "initialize": "",
1623         "finalize": "",
1624         "libs": [],
1625         "x": 470,
1626         "y": 540,
1627         "wires": [
1628             [
1629                 "f65b1c13e0243ef6"
1630             ]
1631         ]
1632     },
1633     {
1634         "id": "a2d14719998c5951",
1635         "type": "debug",
1636         "z": "db7b8dca98eba850",
1637         "name": "eventData",
1638         "active": true,
1639         "tosidebar": true,
1640         "console": true,
1641         "tostatus": true,
1642         "complete": "payload",
1643         "targetType": "msg",
1644         "statusVal": "payload.length",
1645         "statusType": "msg",
1646         "x": 790,
1647         "y": 580,
1648         "wires": []
1649     },
1650     {
1651         "id": "393ee0aac0784928",
1652         "type": "inject",
1653         "z": "db7b8dca98eba850",
1654         "name": "Get Data",
1655         "props": [
1656             {
1657                 "p": "payload"
1658             },
1659             {
1660                 "p": "topic",
1661                 "vt": "str"
1662             }
1663         ],
1664         "repeat": "60",
1665         "crontab": "",
1666         "once": false,
1667         "onceDelay": 0.1,
1668         "topic": "get",
1669         "payload": "",
1670         "payloadType": "date",
1671         "x": 150,
1672         "y": 580,
1673         "wires": [
1674             [
1675                 "f8d2934457eb7030"
1676             ]
1677         ]
1678     },
1679     {
1680         "id": "9745e4eaaad146b5",
1681         "type": "http request",
1682         "z": "db7b8dca98eba850",
1683         "name": "",
1684         "method": "GET",
1685         "ret": "obj",
1686         "paytoqs": "ignore",
1687         "url": "",
1688         "tls": "7b2f4859e5963695",
1689         "persist": true,
1690         "proxy": "",
1691         "insecureHTTPParser": true,
1692         "authType": "",
1693         "senderr": false,
1694         "headers": [],
1695         "x": 490,
1696         "y": 580,
1697         "wires": [
1698             [
1699                 "ec4917fbcca1ea55"
1700             ]
1701         ]
1702     },
1703     {
1704         "id": "ec4917fbcca1ea55",
1705         "type": "function",
1706         "z": "db7b8dca98eba850",
1707         "name": "Provider",
1708         "func": "global.set('topicData', msg.payload)\nreturn msg;",
1709         "outputs": 1,
1710         "noerr": 0,
1711         "initialize": "",
1712         "finalize": "",
1713         "libs": [],
1714         "x": 640,
1715         "y": 580,
1716         "wires": [
1717             [
1718                 "a2d14719998c5951"
1719             ]
1720         ]
1721     },
1722     {
1723         "id": "f8d2934457eb7030",
1724         "type": "function",
1725         "z": "db7b8dca98eba850",
1726         "name": "http-preparation",
1727         "func": "const protocol = env.get('KAFKA_BRIDGE_PROTOCOL');\nconst host = env.get('KAFKA_BRIDGE_HOST');\nconst port = env.get('KAFKA_BRIDGE_PORT');;\nconst base = protocol + '://' + host + ':' + port;\nconst group = env.get('KAFKA_BRIDGE_CONSUMER_GROUP');\nconst name = env.get('KAFKA_BRIDGE_CONSUMER_NAME');\n\nconst urlMapping = {\n    pnfRegistration: 'unauthenticated.VES_PNFREG_OUTPUT',\n    heartbeat: 'unauthenticated.SEC_HEARTBEAT_OUTPUT',\n    fault: 'unauthenticated.SEC_FAULT_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    notifyFilePreparationError: 'unauthenticated.VES_FILE_READY_OUTPUT',\n    oRanOpenfrontManagementPlane: 'unauthenticated.VES_O_RAN_SC_OPENFRONTHAUL_OUTPUT',\n    notifyNewAlarm: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyChangedAlarm: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyChangedAlarmGeneral: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyAckStateChanged: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyCorrelatedNotificationChanged: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyComments: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyClearedAlarm: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyAlarmListRebuilt: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT',\n    notifyPotentialFaultyAlarmList: 'unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT'\n};\n\nmsg.url = [base, 'consumers', group, 'instances', name, 'records'].join('/');\nmsg.headers = {\n    accept: 'application/vnd.kafka.json.v2+json'\n}\nreturn msg;",
1728         "outputs": 1,
1729         "noerr": 0,
1730         "initialize": "",
1731         "finalize": "",
1732         "libs": [],
1733         "x": 320,
1734         "y": 580,
1735         "wires": [
1736             [
1737                 "9745e4eaaad146b5"
1738             ]
1739         ]
1740     },
1741     {
1742         "id": "c82c06ee1b7fad77",
1743         "type": "comment",
1744         "z": "db7b8dca98eba850",
1745         "name": "Get Records",
1746         "info": "",
1747         "x": 90,
1748         "y": 540,
1749         "wires": []
1750     },
1751     {
1752         "id": "6cc496f1420404b3",
1753         "type": "inject",
1754         "z": "db7b8dca98eba850",
1755         "name": "Topics?",
1756         "props": [
1757             {
1758                 "p": "payload"
1759             },
1760             {
1761                 "p": "topic",
1762                 "vt": "str"
1763             }
1764         ],
1765         "repeat": "",
1766         "crontab": "",
1767         "once": true,
1768         "onceDelay": "0.8",
1769         "topic": "topics",
1770         "payload": "",
1771         "payloadType": "date",
1772         "x": 120,
1773         "y": 400,
1774         "wires": [
1775             [
1776                 "7a931d124e3fdc64"
1777             ]
1778         ]
1779     },
1780     {
1781         "id": "7a931d124e3fdc64",
1782         "type": "function",
1783         "z": "db7b8dca98eba850",
1784         "name": "http-preparation",
1785         "func": "const protocol = env.get('KAFKA_BRIDGE_PROTOCOL');\nconst host = env.get('KAFKA_BRIDGE_HOST');\nconst port = env.get('KAFKA_BRIDGE_PORT');\nconst base = protocol + '://' + host + ':' + port;\nconst path = msg.topic;\nmsg.url = [base, path].join('/');\nmsg.method = 'get';\nmsg.headers = {\n    accept: 'application/vnd.kafka.v2+json'\n}\nreturn msg;",
1786         "outputs": 1,
1787         "noerr": 0,
1788         "initialize": "",
1789         "finalize": "",
1790         "libs": [],
1791         "x": 340,
1792         "y": 400,
1793         "wires": [
1794             [
1795                 "53aae16b268527f7"
1796             ]
1797         ]
1798     },
1799     {
1800         "id": "051acf7693d4d457",
1801         "type": "inject",
1802         "z": "db7b8dca98eba850",
1803         "name": "Do Subscription",
1804         "props": [
1805             {
1806                 "p": "payload"
1807             },
1808             {
1809                 "p": "topic",
1810                 "vt": "str"
1811             }
1812         ],
1813         "repeat": "",
1814         "crontab": "",
1815         "once": true,
1816         "onceDelay": "0.6",
1817         "topic": "subscription",
1818         "payload": "",
1819         "payloadType": "date",
1820         "x": 140,
1821         "y": 300,
1822         "wires": [
1823             [
1824                 "a72e6d0ab9261954"
1825             ]
1826         ]
1827     },
1828     {
1829         "id": "a72e6d0ab9261954",
1830         "type": "function",
1831         "z": "db7b8dca98eba850",
1832         "name": "http-preparation",
1833         "func": "const protocol = env.get('KAFKA_BRIDGE_PROTOCOL');\nconst host = env.get('KAFKA_BRIDGE_HOST');\nconst port = env.get('KAFKA_BRIDGE_PORT');\nconst base = protocol + '://' + host + ':' + port;\nconst group = env.get('KAFKA_BRIDGE_CONSUMER_GROUP');\nconst name = env.get('KAFKA_BRIDGE_CONSUMER_NAME');\nmsg.url = [base, 'consumers', group, 'instances', name, msg.topic].join('/');\nmsg.method = 'post';\nmsg.headers = {\n    'content-type': 'application/vnd.kafka.v2+json',\n    accept: 'application/vnd.kafka.v2+json'\n}\nmsg.payload = {\n    \"topics\": [\"unauthenticated.VES_O1_NOTIFY_PNF_REGISTRATION_OUTPUT\", \"unauthenticated.SEC_HEARTBEAT_OUTPUT\", \"unauthenticated.VES_O_RAN_SC_HELLO_WORLD_PM_STREAMING_OUTPUT\", \"unauthenticated.VES_PNFREG_OUTPUT\", \"unauthenticated.VES_FILE_READY_OUTPUT\", \"o-ran-file-management-file-download-event\", \"bridge-quickstart-topic\", \"o-ran-file-management-file-upload-notification\", \"o-ran-supervision-supervision-notification\", \"unauthenticated.SEC_3GPP_FAULTSUPERVISION_OUTPUT\", \"my-topic\", \"unauthenticated.SEC_3GPP_HEARTBEAT_OUTPUT\", \"unauthenticated.SEC_FAULT_OUTPUT\"]\n}\n\nreturn msg;\n",
1834         "outputs": 1,
1835         "noerr": 0,
1836         "initialize": "",
1837         "finalize": "",
1838         "libs": [],
1839         "x": 340,
1840         "y": 300,
1841         "wires": [
1842             [
1843                 "53aae16b268527f7"
1844             ]
1845         ]
1846     },
1847     {
1848         "id": "53aae16b268527f7",
1849         "type": "http request",
1850         "z": "db7b8dca98eba850",
1851         "name": "http request",
1852         "method": "use",
1853         "ret": "txt",
1854         "paytoqs": "ignore",
1855         "url": "",
1856         "tls": "7b2f4859e5963695",
1857         "persist": true,
1858         "proxy": "",
1859         "insecureHTTPParser": true,
1860         "authType": "",
1861         "senderr": false,
1862         "headers": [],
1863         "x": 590,
1864         "y": 300,
1865         "wires": [
1866             [
1867                 "025484501aa58b31"
1868             ]
1869         ]
1870     },
1871     {
1872         "id": "025484501aa58b31",
1873         "type": "debug",
1874         "z": "db7b8dca98eba850",
1875         "name": "Response",
1876         "active": true,
1877         "tosidebar": true,
1878         "console": true,
1879         "tostatus": true,
1880         "complete": "payload",
1881         "targetType": "msg",
1882         "statusVal": "statusCode",
1883         "statusType": "msg",
1884         "x": 770,
1885         "y": 300,
1886         "wires": []
1887     },
1888     {
1889         "id": "2bcd1fcc0cb4f747",
1890         "type": "inject",
1891         "z": "db7b8dca98eba850",
1892         "name": "healthy?",
1893         "props": [
1894             {
1895                 "p": "payload"
1896             },
1897             {
1898                 "p": "topic",
1899                 "vt": "str"
1900             }
1901         ],
1902         "repeat": "",
1903         "crontab": "",
1904         "once": true,
1905         "onceDelay": 0.1,
1906         "topic": "healthy",
1907         "payload": "",
1908         "payloadType": "date",
1909         "x": 120,
1910         "y": 80,
1911         "wires": [
1912             [
1913                 "4b695d52e3231b6b"
1914             ]
1915         ]
1916     },
1917     {
1918         "id": "4b695d52e3231b6b",
1919         "type": "function",
1920         "z": "db7b8dca98eba850",
1921         "name": "http-preparation",
1922         "func": "const protocol = env.get('KAFKA_BRIDGE_PROTOCOL');\nconst host = env.get('KAFKA_BRIDGE_HOST');\nconst port = env.get('KAFKA_BRIDGE_PORT');\nconst base = protocol + '://' + host + ':' + port;\nmsg.url = [base, msg.topic].join('/');\nmsg.method = 'get';\nmsg.headers = {\n    accept: 'application/json'\n}\nreturn msg;\n",
1923         "outputs": 1,
1924         "noerr": 0,
1925         "initialize": "",
1926         "finalize": "",
1927         "libs": [],
1928         "x": 340,
1929         "y": 200,
1930         "wires": [
1931             [
1932                 "53aae16b268527f7"
1933             ]
1934         ]
1935     },
1936     {
1937         "id": "2d834fde764e3443",
1938         "type": "inject",
1939         "z": "db7b8dca98eba850",
1940         "name": "ready?",
1941         "props": [
1942             {
1943                 "p": "payload"
1944             },
1945             {
1946                 "p": "topic",
1947                 "vt": "str"
1948             }
1949         ],
1950         "repeat": "",
1951         "crontab": "",
1952         "once": true,
1953         "onceDelay": "0.2",
1954         "topic": "ready",
1955         "payload": "",
1956         "payloadType": "date",
1957         "x": 120,
1958         "y": 120,
1959         "wires": [
1960             [
1961                 "4b695d52e3231b6b"
1962             ]
1963         ]
1964     },
1965     {
1966         "id": "7bbff4bdad2683f0",
1967         "type": "inject",
1968         "z": "db7b8dca98eba850",
1969         "name": "Schema?",
1970         "props": [
1971             {
1972                 "p": "payload"
1973             },
1974             {
1975                 "p": "topic",
1976                 "vt": "str"
1977             }
1978         ],
1979         "repeat": "",
1980         "crontab": "",
1981         "once": true,
1982         "onceDelay": "0.4",
1983         "topic": "openapi",
1984         "payload": "",
1985         "payloadType": "date",
1986         "x": 120,
1987         "y": 200,
1988         "wires": [
1989             [
1990                 "4b695d52e3231b6b"
1991             ]
1992         ]
1993     },
1994     {
1995         "id": "1b322733222d5c1d",
1996         "type": "inject",
1997         "z": "db7b8dca98eba850",
1998         "name": "Version?",
1999         "props": [
2000             {
2001                 "p": "payload"
2002             },
2003             {
2004                 "p": "topic",
2005                 "vt": "str"
2006             }
2007         ],
2008         "repeat": "",
2009         "crontab": "",
2010         "once": true,
2011         "onceDelay": "0.3",
2012         "topic": " ",
2013         "payload": "",
2014         "payloadType": "date",
2015         "x": 120,
2016         "y": 160,
2017         "wires": [
2018             [
2019                 "4b695d52e3231b6b"
2020             ]
2021         ]
2022     },
2023     {
2024         "id": "12e182c0bee28aad",
2025         "type": "inject",
2026         "z": "db7b8dca98eba850",
2027         "name": "CreateConsumer",
2028         "props": [
2029             {
2030                 "p": "payload"
2031             },
2032             {
2033                 "p": "topic",
2034                 "vt": "str"
2035             }
2036         ],
2037         "repeat": "",
2038         "crontab": "",
2039         "once": true,
2040         "onceDelay": "0.5",
2041         "topic": "consumers",
2042         "payload": "",
2043         "payloadType": "date",
2044         "x": 150,
2045         "y": 260,
2046         "wires": [
2047             [
2048                 "46c33603561bf711"
2049             ]
2050         ]
2051     },
2052     {
2053         "id": "46c33603561bf711",
2054         "type": "function",
2055         "z": "db7b8dca98eba850",
2056         "name": "http-preparation",
2057         "func": "const protocol = env.get('KAFKA_BRIDGE_PROTOCOL');\nconst host = env.get('KAFKA_BRIDGE_HOST');\nconst port = env.get('KAFKA_BRIDGE_PORT');\nconst base = protocol + '://' + host + ':' + port;\nconst group = env.get('KAFKA_BRIDGE_CONSUMER_GROUP');\nconst name = env.get('KAFKA_BRIDGE_CONSUMER_NAME');\nmsg.url = [base, msg.topic, group].join('/');\nmsg.method = 'post';\nmsg.headers = {\n    'content-type': 'application/vnd.kafka.v2+json',\n    accept: 'application/vnd.kafka.v2+json'\n}\nmsg.payload = {\n    name: name,\n    format: 'json',\n    'auto.offset.reset': 'earliest',\n    'enable.auto.commit': true,\n    'fetch.min.bytes': 1,\n    'consumer.request.timeout.ms': 30000,\n    'isolation.level': 'read_uncommitted'\n}\n\nreturn msg;\n",
2058         "outputs": 1,
2059         "noerr": 0,
2060         "initialize": "",
2061         "finalize": "",
2062         "libs": [],
2063         "x": 340,
2064         "y": 260,
2065         "wires": [
2066             [
2067                 "53aae16b268527f7"
2068             ]
2069         ]
2070     },
2071     {
2072         "id": "63c336487e6e0eb9",
2073         "type": "inject",
2074         "z": "db7b8dca98eba850",
2075         "name": "Get Subscription",
2076         "props": [
2077             {
2078                 "p": "payload"
2079             },
2080             {
2081                 "p": "topic",
2082                 "vt": "str"
2083             }
2084         ],
2085         "repeat": "",
2086         "crontab": "",
2087         "once": true,
2088         "onceDelay": "0.7",
2089         "topic": "subscription",
2090         "payload": "",
2091         "payloadType": "date",
2092         "x": 150,
2093         "y": 340,
2094         "wires": [
2095             [
2096                 "b0f5987ab4bd1256"
2097             ]
2098         ]
2099     },
2100     {
2101         "id": "b0f5987ab4bd1256",
2102         "type": "function",
2103         "z": "db7b8dca98eba850",
2104         "name": "http-preparation",
2105         "func": "const protocol = env.get('KAFKA_BRIDGE_PROTOCOL');\nconst host = env.get('KAFKA_BRIDGE_HOST');\nconst port = env.get('KAFKA_BRIDGE_PORT');\nconst base = protocol + '://' + host + ':' + port;\nconst group = env.get('KAFKA_BRIDGE_CONSUMER_GROUP');\nconst name = env.get('KAFKA_BRIDGE_CONSUMER_NAME');\nmsg.url = [base, 'consumers', group, 'instances', name, msg.topic].join('/');\nmsg.method = 'get';\nmsg.headers = {\n    accept: 'application/vnd.kafka.v2+json'\n}\nreturn msg;\n",
2106         "outputs": 1,
2107         "noerr": 0,
2108         "initialize": "",
2109         "finalize": "",
2110         "libs": [],
2111         "x": 340,
2112         "y": 340,
2113         "wires": [
2114             [
2115                 "53aae16b268527f7"
2116             ]
2117         ]
2118     },
2119     {
2120         "id": "ccf49a001b3e92d2",
2121         "type": "comment",
2122         "z": "db7b8dca98eba850",
2123         "name": "Preparation",
2124         "info": "",
2125         "x": 90,
2126         "y": 40,
2127         "wires": []
2128     },
2129     {
2130         "id": "892cacf32948fe41",
2131         "type": "function",
2132         "z": "db7b8dca98eba850",
2133         "name": "http-preparation",
2134         "func": "const protocol = env.get('KAFKA_BRIDGE_PROTOCOL');\nconst host = env.get('KAFKA_BRIDGE_HOST');\nconst port = env.get('KAFKA_BRIDGE_PORT');\nconst base = protocol + '://' + host + ':' + port;\nconst group = env.get('KAFKA_BRIDGE_CONSUMER_GROUP');\nconst name = env.get('KAFKA_BRIDGE_CONSUMER_NAME');\nmsg.url = [base, msg.topic, group, 'instances', name].join('/');\nmsg.method = 'delete';\nmsg.headers = {\n    'content-type': 'application/vnd.kafka.v2+json',\n    accept: 'application/vnd.kafka.v2+json'\n}\nmsg.payload = null\n\nreturn msg;\n",
2135         "outputs": 1,
2136         "noerr": 0,
2137         "initialize": "",
2138         "finalize": "",
2139         "libs": [],
2140         "x": 340,
2141         "y": 460,
2142         "wires": [
2143             [
2144                 "53aae16b268527f7"
2145             ]
2146         ]
2147     },
2148     {
2149         "id": "ca171245ae7b6184",
2150         "type": "inject",
2151         "z": "db7b8dca98eba850",
2152         "name": "DeleteConsumer",
2153         "props": [
2154             {
2155                 "p": "payload"
2156             },
2157             {
2158                 "p": "topic",
2159                 "vt": "str"
2160             }
2161         ],
2162         "repeat": "",
2163         "crontab": "",
2164         "once": false,
2165         "onceDelay": "0.5",
2166         "topic": "consumers",
2167         "payload": "",
2168         "payloadType": "date",
2169         "x": 140,
2170         "y": 460,
2171         "wires": [
2172             [
2173                 "892cacf32948fe41"
2174             ]
2175         ]
2176     },
2177     {
2178         "id": "c5648c1528804847",
2179         "type": "inject",
2180         "z": "7ba02ed596e8cde5",
2181         "name": "supervision-watchdog-reset for O-RU-11221",
2182         "props": [
2183             {
2184                 "p": "payload"
2185             },
2186             {
2187                 "p": "topic",
2188                 "vt": "str"
2189             }
2190         ],
2191         "repeat": "",
2192         "crontab": "",
2193         "once": false,
2194         "onceDelay": 0.1,
2195         "topic": "supervision-watchdog-reset",
2196         "payload": "[\"O-RU-11221\"]",
2197         "payloadType": "json",
2198         "x": 230,
2199         "y": 100,
2200         "wires": [
2201             [
2202                 "2bd693b8c7e5a3cb"
2203             ]
2204         ]
2205     },
2206     {
2207         "id": "329e838eb4bf63f4",
2208         "type": "function",
2209         "z": "7ba02ed596e8cde5",
2210         "name": "http-preparation",
2211         "func": "const protocol = env.get('SDN_CONTROLLER_PROTOCOL');\nconst host = env.get('SDN_CONTROLLER_HOST');\nconst port = env.get('SDN_CONTROLLER_PORT');;\nconst base = protocol + '://' + host + ':' + port;\nconst path = 'rests/operations/network-topology:network-topology/topology=topology-netconf/node=';\nconst nodeId = msg.payload;\nconst mount = 'yang-ext:mount';\nconst action = 'o-ran-supervision:supervision-watchdog-reset';\nmsg.url = [base,path + nodeId, mount, action].join('/');\n\nconst user = env.get('SDN_CONTROLLER_USERNAME');\nconst password = env.get('SDN_CONTROLLER_PASSWORD');\nconst auth = Buffer.from([user, password].join(':')).toString('base64')\nconst basicAuth = ['Basic', auth].join(' ');\n\nmsg.headers = {};\nmsg.headers['Content-Type'] = 'application/yang-data+json';\nmsg.headers['Accept'] = 'application/yang-data+json';\nmsg.headers['Authorization'] = basicAuth;\n\nmsg.payload = { \n  \"o-ran-supervision:input\": \n    {\n      \"supervision-notification-interval\": 60, \n      \"guard-timer-overhead\": 10\n    }\n}\nreturn msg;",
2212         "outputs": 1,
2213         "noerr": 0,
2214         "initialize": "",
2215         "finalize": "",
2216         "libs": [],
2217         "x": 560,
2218         "y": 220,
2219         "wires": [
2220             [
2221                 "1a4b6a4ec23c8f9f",
2222                 "2bd693b8c7e5a3cb"
2223             ]
2224         ]
2225     },
2226     {
2227         "id": "1a4b6a4ec23c8f9f",
2228         "type": "http request",
2229         "z": "7ba02ed596e8cde5",
2230         "name": "RESTCONF request",
2231         "method": "POST",
2232         "ret": "txt",
2233         "paytoqs": "ignore",
2234         "url": "",
2235         "tls": "7b2f4859e5963695",
2236         "persist": true,
2237         "proxy": "",
2238         "insecureHTTPParser": true,
2239         "authType": "",
2240         "senderr": false,
2241         "headers": [],
2242         "x": 800,
2243         "y": 220,
2244         "wires": [
2245             [
2246                 "eb6c2de759c8eb54"
2247             ]
2248         ]
2249     },
2250     {
2251         "id": "eb6c2de759c8eb54",
2252         "type": "debug",
2253         "z": "7ba02ed596e8cde5",
2254         "name": "Response",
2255         "active": true,
2256         "tosidebar": true,
2257         "console": true,
2258         "tostatus": true,
2259         "complete": "payload",
2260         "targetType": "msg",
2261         "statusVal": "payload.length",
2262         "statusType": "msg",
2263         "x": 1010,
2264         "y": 220,
2265         "wires": []
2266     },
2267     {
2268         "id": "0d3ade9a80560c04",
2269         "type": "inject",
2270         "z": "7ba02ed596e8cde5",
2271         "name": "Every 5s",
2272         "props": [],
2273         "repeat": "5",
2274         "crontab": "",
2275         "once": false,
2276         "onceDelay": 0.1,
2277         "topic": "",
2278         "x": 120,
2279         "y": 140,
2280         "wires": [
2281             [
2282                 "5322d78ad66fcb96"
2283             ]
2284         ]
2285     },
2286     {
2287         "id": "5322d78ad66fcb96",
2288         "type": "function",
2289         "z": "7ba02ed596e8cde5",
2290         "name": "Consumer (new Data?)",
2291         "func": "// read topic data from global context\nconst topicData = global.get('topicData');\n// init result as array\nlet result = [];\nif (Array.isArray(topicData)) {\n    result = topicData.filter(event => {\n        return event.value.event.commonEventHeader.stndDefinedNamespace === 'o-ran-supervision:supervision-notification';\n    }).map(event => {\n        return event.value.event.commonEventHeader.sourceName;;\n    });\n}\nmsg.payload = result;\nglobal.set('topicData', []);\nreturn msg; ",
2292         "outputs": 1,
2293         "noerr": 0,
2294         "initialize": "",
2295         "finalize": "",
2296         "libs": [],
2297         "x": 310,
2298         "y": 140,
2299         "wires": [
2300             [
2301                 "2bd693b8c7e5a3cb"
2302             ]
2303         ]
2304     },
2305     {
2306         "id": "2bd693b8c7e5a3cb",
2307         "type": "loop",
2308         "z": "7ba02ed596e8cde5",
2309         "name": "Loop through O-RUs",
2310         "kind": "enum",
2311         "count": "",
2312         "initial": "1",
2313         "step": "1",
2314         "condition": "",
2315         "conditionType": "js",
2316         "when": "before",
2317         "enumeration": "payload",
2318         "enumerationType": "msg",
2319         "limit": "",
2320         "loopPayload": "loop-val",
2321         "finalPayload": "final-last",
2322         "x": 580,
2323         "y": 140,
2324         "wires": [
2325             [],
2326             [
2327                 "329e838eb4bf63f4"
2328             ]
2329         ]
2330     },
2331     {
2332         "id": "f7dc363e5421d1cf",
2333         "type": "comment",
2334         "z": "7ba02ed596e8cde5",
2335         "name": "Supervision",
2336         "info": "",
2337         "x": 90,
2338         "y": 40,
2339         "wires": []
2340     },
2341     {
2342         "id": "a72d8f5e9683dd39",
2343         "type": "comment",
2344         "z": "7ba02ed596e8cde5",
2345         "name": "The Consumer checks for data on the message router provided by the \"Massage Topics\" flow.",
2346         "info": "The Consumer checks for data on the message router provided by the \"Massage Topics\" flow.",
2347         "x": 520,
2348         "y": 280,
2349         "wires": []
2350     }
2351 ]