@itentialopensource/adapter-calix_smx 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+
2
+ ## 0.2.0 [02-14-2026]
3
+
4
+ * minor/auto-migrate/20260213-104259
5
+
6
+ See merge request itentialopensource/adapters/adapter-calix_smx!5
7
+
8
+ ---
9
+
package/PROPERTIES.md CHANGED
@@ -54,7 +54,8 @@ This section defines **all** the properties that are available for the adapter,
54
54
  "healthcheck_on_timeout": false,
55
55
  "return_raw": false,
56
56
  "archiving": false,
57
- "return_request": false
57
+ "return_request": false,
58
+ "keep_alive_interval": 0
58
59
  },
59
60
  "ssl": {
60
61
  "ecdhCurve": "",
@@ -403,6 +404,10 @@ The request section defines properties to help handle requests.
403
404
  <td style="padding:15px">return_request</td>
404
405
  <td style="padding:15px">Optional flag. Default is false. Will return the actual request that is made including headers. This should only be used during debugging issues as there could be credentials in the actual request.</td>
405
406
  </tr>
407
+ <tr>
408
+ <td style="padding:15px">keep_alive_interval</td>
409
+ <td style="padding:15px">Optional. TCP keep-alive interval in seconds for long-lived connections. Set to 0 to disable keep-alive (default). When enabled, minimum value is 30 seconds.</td>
410
+ </tr>
406
411
  </table>
407
412
  <br>
408
413
 
package/TAB1.md ADDED
@@ -0,0 +1,8 @@
1
+ # Overview
2
+
3
+ This adapter is used to integrate the Itential Platform with the Calixsmx System. The API that was used to build the adapter for Calixsmx is usually available in the report directory of this adapter. The adapter utilizes the Calixsmx API to provide the integrations that are deemed pertinent to Itential Platform. The ReadMe file is intended to provide information on this adapter it is generated from various other Markdown files.
4
+
5
+ ## Details
6
+ This adapter from Itential is used to integrate the Itential Platform with Calixsmx. With this adapter you have the ability to perform operations such as:
7
+
8
+ For further technical details on how to install and use this adapter, please click the Technical Documentation tab.
package/TAB2.md ADDED
@@ -0,0 +1,320 @@
1
+ # Calixsmx
2
+
3
+ ## Table of Contents
4
+
5
+ - [Specific Adapter Information](#specific-adapter-information)
6
+ - [Authentication](#authentication)
7
+ - [Sample Properties](#sample-properties)
8
+ - [Swagger](#swagger)
9
+ - [Generic Adapter Information](#generic-adapter-information)
10
+
11
+ ## Specific Adapter Information
12
+ ### Authentication
13
+
14
+ This document will go through the steps for authenticating the Calixsmx adapter with Basic Authentication. Properly configuring the properties for an adapter in Itential Platform is critical for getting the adapter online. You can read more about adapter authentication <a href="https://docs.itential.com/opensource/docs/authentication" target="_blank">HERE</a>.
15
+
16
+ #### Basic Authentication
17
+ The Calixsmx adapter requires Basic Authentication. If you change authentication methods, you should change this section accordingly and merge it back into the adapter repository.
18
+
19
+ STEPS
20
+ 1. Ensure you have access to a Calixsmx server and that it is running
21
+ 2. Follow the steps in the README.md to import the adapter into Itential Platform if you have not already done so
22
+ 3. Use the properties below for the ```properties.authentication``` field
23
+ ```json
24
+ "authentication": {
25
+ "auth_method": "basic user_password",
26
+ "username": "<username>",
27
+ "password": "<password>",
28
+ "token": "",
29
+ "token_timeout": 1800000,
30
+ "token_cache": "local",
31
+ "invalid_token_error": 401,
32
+ "auth_field": "header.headers.Authorization",
33
+ "auth_field_format": "Basic {b64}{username}:{password}{/b64}",
34
+ "auth_logging": false,
35
+ "client_id": "",
36
+ "client_secret": "",
37
+ "grant_type": "",
38
+ "auth_request_datatype": "",
39
+ "auth_response_datatype": "",
40
+ "token_response_placement": ""
41
+ }
42
+ ```
43
+ 4. Restart the adapter. If your properties were set correctly, the adapter should go online.
44
+
45
+ #### Troubleshooting
46
+ - Make sure you copied over the correct username and password.
47
+ - Turn on debug level logs for the adapter in Itential Platform Admin Essentials.
48
+ - Turn on auth_logging for the adapter in Itential Platform Admin Essentials (adapter properties).
49
+ - Investigate the logs - in particular:
50
+ - The FULL REQUEST log to make sure the proper headers are being sent with the request.
51
+ - The FULL BODY log to make sure the payload is accurate.
52
+ - The CALL RETURN log to see what the other system is telling us.
53
+ - Remember when you are done to turn auth_logging off as you do not want to log credentials.
54
+
55
+ ### Sample Properties
56
+
57
+ Sample Properties can be used to help you configure the adapter in the Itential Platform. You will need to update connectivity information such as the host, port, protocol and credentials.
58
+
59
+ ```json
60
+ "properties": {
61
+ "host": "localhost",
62
+ "port": 80,
63
+ "choosepath": "",
64
+ "base_path": "/rest/v1",
65
+ "version": "",
66
+ "cache_location": "none",
67
+ "encode_pathvars": true,
68
+ "encode_queryvars": true,
69
+ "save_metric": false,
70
+ "stub": true,
71
+ "protocol": "http",
72
+ "authentication": {
73
+ "auth_method": "basic user_password",
74
+ "username": "username",
75
+ "password": "password",
76
+ "token": "token",
77
+ "token_timeout": 600000,
78
+ "token_cache": "local",
79
+ "invalid_token_error": 401,
80
+ "auth_field": "header.headers.Authorization",
81
+ "auth_field_format": "Basic {b64}{username}:{password}{/b64}",
82
+ "auth_logging": false,
83
+ "client_id": "",
84
+ "client_secret": "",
85
+ "grant_type": "",
86
+ "auth_request_datatype": "",
87
+ "auth_response_datatype": "",
88
+ "token_response_placement": "",
89
+ "sensitive": [],
90
+ "multiStepAuthCalls": [
91
+ {
92
+ "name": "",
93
+ "requestFields": {},
94
+ "responseFields": {},
95
+ "successfullResponseCode": 200
96
+ }
97
+ ],
98
+ "sso": {
99
+ "protocol": "",
100
+ "host": "",
101
+ "port": 0
102
+ }
103
+ },
104
+ "healthcheck": {
105
+ "type": "none",
106
+ "frequency": 60000,
107
+ "query_object": {},
108
+ "addlHeaders": {}
109
+ },
110
+ "throttle": {
111
+ "throttle_enabled": false,
112
+ "number_pronghorns": 1,
113
+ "sync_async": "sync",
114
+ "max_in_queue": 1000,
115
+ "concurrent_max": 1,
116
+ "expire_timeout": 0,
117
+ "avg_runtime": 200,
118
+ "priorities": [
119
+ {
120
+ "value": 0,
121
+ "percent": 100
122
+ }
123
+ ]
124
+ },
125
+ "request": {
126
+ "number_redirects": 0,
127
+ "number_retries": 3,
128
+ "limit_retry_error": [
129
+ 0
130
+ ],
131
+ "failover_codes": [],
132
+ "attempt_timeout": 5000,
133
+ "global_request": {
134
+ "payload": {},
135
+ "uriOptions": {},
136
+ "addlHeaders": {},
137
+ "authData": {}
138
+ },
139
+ "healthcheck_on_timeout": true,
140
+ "return_raw": false,
141
+ "archiving": false,
142
+ "return_request": false
143
+ },
144
+ "proxy": {
145
+ "enabled": false,
146
+ "host": "",
147
+ "port": 1,
148
+ "protocol": "http",
149
+ "username": "",
150
+ "password": ""
151
+ },
152
+ "ssl": {
153
+ "ecdhCurve": "",
154
+ "enabled": false,
155
+ "accept_invalid_cert": false,
156
+ "ca_file": "",
157
+ "key_file": "",
158
+ "cert_file": "",
159
+ "secure_protocol": "",
160
+ "ciphers": ""
161
+ },
162
+ "mongo": {
163
+ "url": "",
164
+ "host": "",
165
+ "port": 0,
166
+ "database": "",
167
+ "dbAuth": false,
168
+ "username": "",
169
+ "password": "",
170
+ "replSet": "",
171
+ "addSrv": false,
172
+ "db_ssl": {
173
+ "enabled": false,
174
+ "accept_invalid_cert": false,
175
+ "ca_file": "",
176
+ "key_file": "",
177
+ "cert_file": ""
178
+ }
179
+ },
180
+ "devicebroker": {
181
+ "enabled": false,
182
+ "getDevice": [
183
+ {
184
+ "path": "/get/devices/{id}",
185
+ "method": "GET",
186
+ "query": {},
187
+ "body": {},
188
+ "headers": {},
189
+ "handleFailure": "fail",
190
+ "requestFields": {
191
+ "id": "name"
192
+ },
193
+ "responseDatakey": "",
194
+ "responseFields": {
195
+ "name": "host",
196
+ "ostype": "os",
197
+ "ostypePrefix": "system-",
198
+ "ipaddress": "attributes.ipaddr",
199
+ "port": "443"
200
+ }
201
+ }
202
+ ],
203
+ "getDevicesFiltered": [
204
+ {
205
+ "path": "/get/devices",
206
+ "method": "GET",
207
+ "pagination": {
208
+ "offsetVar": "",
209
+ "limitVar": "",
210
+ "incrementBy": "limit",
211
+ "requestLocation": "query"
212
+ },
213
+ "query": {},
214
+ "body": {},
215
+ "headers": {},
216
+ "handleFailure": "fail",
217
+ "requestFields": {},
218
+ "responseDatakey": "",
219
+ "responseFields": {
220
+ "name": "host",
221
+ "ostype": "os",
222
+ "ostypePrefix": "system-",
223
+ "ipaddress": "attributes.ipaddr",
224
+ "port": "443"
225
+ }
226
+ }
227
+ ],
228
+ "isAlive": [
229
+ {
230
+ "path": "/get/devices/{id}/status",
231
+ "method": "GET",
232
+ "query": {},
233
+ "body": {},
234
+ "headers": {},
235
+ "handleFailure": "fail",
236
+ "requestFields": {
237
+ "id": "name"
238
+ },
239
+ "responseDatakey": "",
240
+ "responseFields": {
241
+ "status": "status",
242
+ "statusValue": "online"
243
+ }
244
+ }
245
+ ],
246
+ "getConfig": [
247
+ {
248
+ "path": "/get/devices/{id}/configPart1",
249
+ "method": "GET",
250
+ "query": {},
251
+ "body": {},
252
+ "headers": {},
253
+ "handleFailure": "fail",
254
+ "requestFields": {
255
+ "id": "name"
256
+ },
257
+ "responseDatakey": "",
258
+ "responseFields": {}
259
+ }
260
+ ],
261
+ "getCount": [
262
+ {
263
+ "path": "/get/devices",
264
+ "method": "GET",
265
+ "query": {},
266
+ "body": {},
267
+ "headers": {},
268
+ "handleFailure": "fail",
269
+ "requestFields": {},
270
+ "responseDatakey": "",
271
+ "responseFields": {}
272
+ }
273
+ ]
274
+ },
275
+ "cache": {
276
+ "enabled": false,
277
+ "entities": [
278
+ {
279
+ "entityType": "",
280
+ "frequency": 1440,
281
+ "flushOnFail": false,
282
+ "limit": 1000,
283
+ "retryAttempts": 5,
284
+ "sort": true,
285
+ "populate": [
286
+ {
287
+ "path": "",
288
+ "method": "GET",
289
+ "pagination": {
290
+ "offsetVar": "",
291
+ "limitVar": "",
292
+ "incrementBy": "limit",
293
+ "requestLocation": "query"
294
+ },
295
+ "query": {},
296
+ "body": {},
297
+ "headers": {},
298
+ "handleFailure": "ignore",
299
+ "requestFields": {},
300
+ "responseDatakey": "",
301
+ "responseFields": {}
302
+ }
303
+ ],
304
+ "cachedTasks": [
305
+ {
306
+ "name": "",
307
+ "filterField": "",
308
+ "filterLoc": ""
309
+ }
310
+ ]
311
+ }
312
+ ]
313
+ }
314
+ }
315
+ ```
316
+ ### Swagger
317
+
318
+ Note: The content for this section may be missing as its corresponding .json file is unavailable. This sections will be updated once adapter-openapi.json file is added.
319
+ ## [Generic Adapter Information](https://gitlab.com/itentialopensource/adapters/adapter-calix_smx/-/blob/master/README.md)
320
+
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@itentialopensource/adapter-calix_smx",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "This adapter integrates with system described as: Calix SMx Northbound API.",
5
5
  "main": "adapter.js",
6
6
  "systemName": "Calixsmx",
7
- "wizardVersion": "3.8.0",
8
- "engineVersion": "1.79.3",
7
+ "wizardVersion": "3.12.1",
8
+ "engineVersion": "1.82.5",
9
9
  "adapterType": "http",
10
10
  "scripts": {
11
11
  "preinstall": "node utils/setup.js",
@@ -38,8 +38,8 @@
38
38
  ],
39
39
  "license": "Apache-2.0",
40
40
  "engines": {
41
- "node": ">= 14.0.0",
42
- "npm": ">= 6.0.0"
41
+ "node": ">= 18.18.0",
42
+ "npm": ">= 9.8.1"
43
43
  },
44
44
  "repository": {
45
45
  "type": "git",
@@ -48,14 +48,14 @@
48
48
  "author": "Itential",
49
49
  "homepage": "https://gitlab.com/itentialopensource/adapters/adapter-calix_smx#readme",
50
50
  "dependencies": {
51
- "@itentialopensource/adapter-utils": "6.0.3",
51
+ "@itentialopensource/adapter-utils": "6.1.14",
52
52
  "acorn": "8.14.1",
53
53
  "ajv": "8.17.1",
54
- "axios": "1.12.2",
54
+ "axios": "1.13.5",
55
55
  "commander": "11.1.0",
56
56
  "fs-extra": "11.3.0",
57
57
  "json-query": "2.2.2",
58
- "mocha": "10.8.2",
58
+ "mocha": "11.3.0",
59
59
  "mocha-param": "2.0.1",
60
60
  "mongodb": "4.17.2",
61
61
  "ping": "0.4.4",
@@ -66,7 +66,7 @@
66
66
  "boolean",
67
67
  "string"
68
68
  ],
69
- "description": "When true the metrics collected by the adapter will be stored in mongo or on the filesystem",
69
+ "description": "When true the metrics collected by the adapter will be stored in mongo or in the adapter. If a full path is provided, metrics will be saved in the path provided.",
70
70
  "default": false
71
71
  },
72
72
  "stub": {
@@ -460,7 +460,7 @@
460
460
  "type": "integer",
461
461
  "description": "How often the healthcheck should run (in milliseconds).",
462
462
  "default": 300000,
463
- "minimum": 60000,
463
+ "minimum": 30000,
464
464
  "maximum": 3600000
465
465
  },
466
466
  "protocol": {
@@ -695,6 +695,13 @@
695
695
  "type": "boolean",
696
696
  "description": "This property turns on returning the response information - need to be carefull in case credentials are in the path",
697
697
  "default": false
698
+ },
699
+ "keep_alive_interval": {
700
+ "type": "integer",
701
+ "description": "TCP keep-alive interval in milliseconds to prevent connection timeout during long-running requests. 0 = disabled (default). Minimum value when enabled is 30000ms (30 seconds). Values below 30000ms will be auto-corrected to 30000ms with a warning.",
702
+ "default": 0,
703
+ "minimum": 0,
704
+ "maximum": 3600000
698
705
  }
699
706
  },
700
707
  "required": [
@@ -1106,7 +1113,7 @@
1106
1113
  },
1107
1114
  "requestFields": {
1108
1115
  "type": "object",
1109
- "description": "The json object with response fields of the call to getDevice",
1116
+ "description": "The json object with request fields of the call to getDevice",
1110
1117
  "additionalProperties": {
1111
1118
  "type": [
1112
1119
  "string",
@@ -1249,7 +1256,7 @@
1249
1256
  },
1250
1257
  "requestFields": {
1251
1258
  "type": "object",
1252
- "description": "The json object with response fields of the call to getDevice",
1259
+ "description": "The json object with request fields of the call to getDevice",
1253
1260
  "additionalProperties": {
1254
1261
  "type": [
1255
1262
  "string",
@@ -1360,7 +1367,7 @@
1360
1367
  },
1361
1368
  "requestFields": {
1362
1369
  "type": "object",
1363
- "description": "The json object with response fields of the call to getDevice",
1370
+ "description": "The json object with request fields of the call to getDevice",
1364
1371
  "additionalProperties": {
1365
1372
  "type": [
1366
1373
  "string",
@@ -1456,7 +1463,7 @@
1456
1463
  },
1457
1464
  "requestFields": {
1458
1465
  "type": "object",
1459
- "description": "The json object with response fields of the call to getDevice",
1466
+ "description": "The json object with request fields of the call to getDevice",
1460
1467
  "additionalProperties": {
1461
1468
  "type": [
1462
1469
  "string",
@@ -1541,7 +1548,7 @@
1541
1548
  },
1542
1549
  "requestFields": {
1543
1550
  "type": "object",
1544
- "description": "The json object with response fields of the call to getDevice",
1551
+ "description": "The json object with request fields of the call to getDevice",
1545
1552
  "additionalProperties": {
1546
1553
  "type": [
1547
1554
  "string",
@@ -1624,12 +1631,12 @@
1624
1631
  "properties": {
1625
1632
  "path": {
1626
1633
  "type": "string",
1627
- "description": "The fully qualified path of the call to getDevice (e.g. /rest/api/device/{deviceid})",
1634
+ "description": "The fully qualified path of the call to populate the cache (e.g. /rest/api/devices)",
1628
1635
  "default": ""
1629
1636
  },
1630
1637
  "method": {
1631
1638
  "type": "string",
1632
- "description": "The method of the call to getDevice",
1639
+ "description": "The method of the call to populate the cache",
1633
1640
  "default": "GET"
1634
1641
  },
1635
1642
  "pagination": {
@@ -1666,7 +1673,7 @@
1666
1673
  },
1667
1674
  "query": {
1668
1675
  "type": "object",
1669
- "description": "The json object with query parameters of the call to getDevice",
1676
+ "description": "The json object with query parameters of the call to populate the cache",
1670
1677
  "additionalProperties": {
1671
1678
  "type": [
1672
1679
  "string",
@@ -1676,7 +1683,7 @@
1676
1683
  },
1677
1684
  "body": {
1678
1685
  "type": "object",
1679
- "description": "The json object with body of the call to getDevice",
1686
+ "description": "The json object with body of the call to populate the cache",
1680
1687
  "additionalProperties": {
1681
1688
  "type": [
1682
1689
  "string",
@@ -1686,7 +1693,7 @@
1686
1693
  },
1687
1694
  "headers": {
1688
1695
  "type": "object",
1689
- "description": "The json object with headers of the call to getDevice",
1696
+ "description": "The json object with headers of the call to populate the cache",
1690
1697
  "additionalProperties": {
1691
1698
  "type": [
1692
1699
  "string",
@@ -1705,7 +1712,7 @@
1705
1712
  },
1706
1713
  "requestFields": {
1707
1714
  "type": "object",
1708
- "description": "The json object with response fields of the call to getDevice",
1715
+ "description": "The json object with request fields of the call to populate the cache",
1709
1716
  "additionalProperties": {
1710
1717
  "type": [
1711
1718
  "string",
@@ -1721,7 +1728,7 @@
1721
1728
  },
1722
1729
  "responseFields": {
1723
1730
  "type": "object",
1724
- "description": "The json object with response fields of the call to getDevice",
1731
+ "description": "The json object with response fields of the call to populate the cache",
1725
1732
  "additionalProperties": {
1726
1733
  "type": [
1727
1734
  "string",