pmcf 2.66.4 → 2.68.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcf",
3
- "version": "2.66.4",
3
+ "version": "2.68.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -20,7 +20,10 @@
20
20
  "kea",
21
21
  "keepalived",
22
22
  "openldap",
23
- "systemd"
23
+ "systemd",
24
+ "chrony",
25
+ "influxdb",
26
+ "openldap"
24
27
  ],
25
28
  "contributors": [
26
29
  {
package/src/module.mjs CHANGED
@@ -22,6 +22,7 @@ export * from "./services/bind.mjs";
22
22
  export * from "./services/chrony.mjs";
23
23
  export * from "./services/kea.mjs";
24
24
  export * from "./services/openldap.mjs";
25
+ export * from "./services/influxdb.mjs";
25
26
  export * from "./services/systemd-journal.mjs";
26
27
  export * from "./services/systemd-journal-remote.mjs";
27
28
  export * from "./services/systemd-journal-upload.mjs";
package/src/service.mjs CHANGED
@@ -128,7 +128,9 @@ export class Service extends Base {
128
128
 
129
129
  endpoints(filter) {
130
130
  const data = serviceTypeEndpoints(this.type);
131
-
131
+ if (!data) {
132
+ return [];
133
+ }
132
134
  const l = this._port === undefined ? {} : { port: this._port };
133
135
  let result = [...this.host.networkAddresses()]
134
136
  .map(na => data.map(d => new Endpoint(this, na, { ...d, ...l })))
@@ -16,13 +16,27 @@ import {
16
16
  addresses
17
17
  } from "pmcf";
18
18
  import { addType } from "../types.mjs";
19
- import { addServiceTypes } from "../service-types.mjs";
20
19
  import { Service, ServiceTypeDefinition } from "../service.mjs";
21
20
  import { ExtraSourceServiceTypeDefinition } from "../extra-source-service.mjs";
22
21
  import { addHook } from "../hooks.mjs";
23
22
 
24
23
  const address_types = ["network", "host", "network_interface"];
25
24
 
25
+ const BindServiceTypes = {
26
+ "bind-statistics": {
27
+ endpoints: [
28
+ {
29
+ port: 19521,
30
+ protocol: "tcp",
31
+ tls: false
32
+ }
33
+ ]
34
+ },
35
+ rdnc: {
36
+ endpoints: [{ type: "rdnc", port: 953, protocol: "tcp", tls: false }]
37
+ }
38
+ };
39
+
26
40
  const BindServiceTypeDefinition = {
27
41
  name: "bind",
28
42
  specializationOf: ServiceTypeDefinition,
@@ -87,25 +101,12 @@ const BindServiceTypeDefinition = {
87
101
  expire: { type: "string", collection: false, writeable: true },
88
102
  minimum: { type: "string", collection: false, writeable: true },
89
103
  allowedUpdates: { type: "string", collection: true, writeable: true }
90
- }
91
- };
104
+ },
92
105
 
93
- const BindServiceTypes = {
94
- [BindServiceTypeDefinition.name]: {
106
+ service: {
95
107
  extends: ["dns"]
96
108
  },
97
- "bind-statistics": {
98
- endpoints: [
99
- {
100
- port: 19521,
101
- protocol: "tcp",
102
- tls: false
103
- }
104
- ]
105
- },
106
- rdnc: {
107
- endpoints: [{ type: "rdnc", port: 953, protocol: "tcp", tls: false }]
108
- }
109
+ services: BindServiceTypes
109
110
  };
110
111
 
111
112
  const rdncEndpoint = BindServiceTypes.rdnc.endpoints[0];
@@ -142,7 +143,6 @@ export class BindService extends ExtraSourceService {
142
143
 
143
144
  static {
144
145
  addType(this);
145
- addServiceTypes(BindServiceTypes);
146
146
  }
147
147
 
148
148
  static get typeDefinition() {
@@ -7,7 +7,6 @@ import {
7
7
  ExtraSourceServiceTypeDefinition
8
8
  } from "../extra-source-service.mjs";
9
9
  import { writeLines } from "../utils.mjs";
10
- import { addServiceTypes } from "../service-types.mjs";
11
10
 
12
11
  const ChronyServiceTypeDefinition = {
13
12
  name: "chrony",
@@ -15,11 +14,8 @@ const ChronyServiceTypeDefinition = {
15
14
  owners: ServiceTypeDefinition.owners,
16
15
  extends: ExtraSourceServiceTypeDefinition,
17
16
  priority: 0.1,
18
- properties: {}
19
- };
20
-
21
- const ChronyServiceTypes = {
22
- "chrony": {
17
+ properties: {},
18
+ service: {
23
19
  extends: ["ntp"]
24
20
  }
25
21
  };
@@ -27,7 +23,6 @@ const ChronyServiceTypes = {
27
23
  export class ChronyService extends ExtraSourceService {
28
24
  static {
29
25
  addType(this);
30
- addServiceTypes(ChronyServiceTypes);
31
26
  }
32
27
 
33
28
  static get typeDefinition() {
@@ -0,0 +1,39 @@
1
+ import { addType } from "../types.mjs";
2
+ import { Service, ServiceTypeDefinition } from "../service.mjs";
3
+
4
+ const InfluxdbServiceTypeDefinition = {
5
+ name: "influxdb",
6
+ specializationOf: ServiceTypeDefinition,
7
+ owners: ServiceTypeDefinition.owners,
8
+ extends: ServiceTypeDefinition,
9
+ priority: 0.1,
10
+ properties: {},
11
+ service: {
12
+ endpoints: [
13
+ {
14
+ port: 8086,
15
+ protocol: "tcp",
16
+ tls: false
17
+ }
18
+ ]
19
+ }
20
+ };
21
+
22
+ export class InfluxdbService extends Service {
23
+ static {
24
+ addType(this);
25
+ }
26
+
27
+ static get typeDefinition() {
28
+ return InfluxdbServiceTypeDefinition;
29
+ }
30
+
31
+ constructor(owner, data) {
32
+ super(owner, data);
33
+ this.read(data, InfluxdbServiceTypeDefinition);
34
+ }
35
+
36
+ get type() {
37
+ return InfluxdbServiceTypeDefinition.name;
38
+ }
39
+ }
@@ -12,19 +12,9 @@ import {
12
12
  SUBNET_LOCALHOST_IPV4,
13
13
  SUBNET_LOCALHOST_IPV6
14
14
  } from "pmcf";
15
- import { addServiceTypes } from "../service-types.mjs";
16
15
  import { addType } from "../types.mjs";
17
16
  import { writeLines } from "../utils.mjs";
18
17
 
19
- const KeaServiceTypeDefinition = {
20
- name: "kea",
21
- specializationOf: ServiceTypeDefinition,
22
- owners: ServiceTypeDefinition.owners,
23
- extends: ServiceTypeDefinition,
24
- priority: 0.1,
25
- properties: {}
26
- };
27
-
28
18
  const ddnsEndpoint = {
29
19
  type: "kea-ddns",
30
20
  port: 53001,
@@ -74,28 +64,38 @@ const controlDDNSEndpoint = {
74
64
  path: "/run/kea/ddns-ctrl-socket"
75
65
  };
76
66
 
77
- const KEAServiceTypes = {
78
- kea: { extends: ["dhcp"] },
79
- "kea-ddns": {
80
- endpoints: [ddnsEndpoint]
81
- },
82
- "kea-control-agent": {
83
- endpoints: [controlAgentEndpoint]
84
- },
85
- "kea-ha-4": {
86
- endpoints: [ha4Endpoint]
87
- },
88
- "kea-ha-6": {
89
- endpoints: [ha6Endpoint]
90
- },
91
- "kea-control-dhcp4": {
92
- endpoints: [control4Endpoint]
93
- },
94
- "kea-control-dhcp6": {
95
- endpoints: [control6Endpoint]
67
+ const KeaServiceTypeDefinition = {
68
+ name: "kea",
69
+ specializationOf: ServiceTypeDefinition,
70
+ owners: ServiceTypeDefinition.owners,
71
+ extends: ServiceTypeDefinition,
72
+ priority: 0.1,
73
+ properties: {},
74
+ service: {
75
+ extends: ["dhcp"]
96
76
  },
97
- "kea-control-ddns": {
98
- endpoints: [controlDDNSEndpoint]
77
+ services: {
78
+ "kea-ddns": {
79
+ endpoints: [ddnsEndpoint]
80
+ },
81
+ "kea-control-agent": {
82
+ endpoints: [controlAgentEndpoint]
83
+ },
84
+ "kea-ha-4": {
85
+ endpoints: [ha4Endpoint]
86
+ },
87
+ "kea-ha-6": {
88
+ endpoints: [ha6Endpoint]
89
+ },
90
+ "kea-control-dhcp4": {
91
+ endpoints: [control4Endpoint]
92
+ },
93
+ "kea-control-dhcp6": {
94
+ endpoints: [control6Endpoint]
95
+ },
96
+ "kea-control-ddns": {
97
+ endpoints: [controlDDNSEndpoint]
98
+ }
99
99
  }
100
100
  };
101
101
 
@@ -105,7 +105,6 @@ export const fetureHasHTTPEndpoints = keaVersion > 2.7;
105
105
  export class KeaService extends Service {
106
106
  static {
107
107
  addType(this);
108
- addServiceTypes(KEAServiceTypes);
109
108
  }
110
109
 
111
110
  static get typeDefinition() {
@@ -13,7 +13,8 @@ const OpenLDAPServiceTypeDefinition = {
13
13
  owners: ServiceTypeDefinition.owners,
14
14
  extends: ServiceTypeDefinition,
15
15
  priority: 0.1,
16
- properties: {}
16
+ properties: {},
17
+ service: {}
17
18
  };
18
19
 
19
20
  export class OpenLDAPService extends Service {
@@ -1,6 +1,5 @@
1
1
  import { Service, ServiceTypeDefinition } from "pmcf";
2
2
  import { addType } from "../types.mjs";
3
- import { addServiceTypes } from "../service-types.mjs";
4
3
 
5
4
  const SystemdJournalRemoteServiceTypeDefinition = {
6
5
  name: "systemd-journal-remote",
@@ -8,11 +7,8 @@ const SystemdJournalRemoteServiceTypeDefinition = {
8
7
  owners: ServiceTypeDefinition.owners,
9
8
  extends: ServiceTypeDefinition,
10
9
  priority: 0.1,
11
- properties: {}
12
- };
13
-
14
- const SystemdJournalRemoteServiceTypes = {
15
- [SystemdJournalRemoteServiceTypeDefinition.name]: {
10
+ properties: {},
11
+ services: {
16
12
  extends: ["http"],
17
13
  endpoints: [
18
14
  {
@@ -27,7 +23,6 @@ const SystemdJournalRemoteServiceTypes = {
27
23
  export class SystemdJournalRemoteService extends Service {
28
24
  static {
29
25
  addType(this);
30
- addServiceTypes(SystemdJournalRemoteServiceTypes);
31
26
  }
32
27
 
33
28
  static get typeDefinition() {
@@ -9,7 +9,8 @@ const SystemdJournalUploadServiceTypeDefinition = {
9
9
  priority: 0.1,
10
10
  properties: {
11
11
  url: { type: "string", collection: false, writeable: true }
12
- }
12
+ },
13
+ service: {}
13
14
  };
14
15
 
15
16
  export class SystemdJournalUploadService extends Service {
@@ -7,7 +7,8 @@ const SystemdJournalServiceTypeDefinition = {
7
7
  owners: ServiceTypeDefinition.owners,
8
8
  extends: ServiceTypeDefinition,
9
9
  priority: 0.1,
10
- properties: {}
10
+ properties: {},
11
+ service: {}
11
12
  };
12
13
 
13
14
  export class SystemdJournalService extends Service {
@@ -11,7 +11,8 @@ const SystemdResolvedServiceTypeDefinition = {
11
11
  owners: ServiceTypeDefinition.owners,
12
12
  extends: ServiceTypeDefinition,
13
13
  priority: 0.1,
14
- properties: {}
14
+ properties: {},
15
+ service: {}
15
16
  };
16
17
 
17
18
  export class SystemdResolvedService extends ExtraSourceService {
@@ -11,7 +11,8 @@ const SystemdTimesyncdServiceTypeDefinition = {
11
11
  owners: ServiceTypeDefinition.owners,
12
12
  extends: ServiceTypeDefinition,
13
13
  priority: 0.1,
14
- properties: {}
14
+ properties: {},
15
+ service: {}
15
16
  };
16
17
 
17
18
  export class SystemdTimesyncdService extends ExtraSourceService {
package/src/types.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import { asArray } from "./utils.mjs";
2
+ import { addServiceTypes } from "./service-types.mjs";
2
3
 
3
4
  export const types = {};
4
5
 
@@ -9,6 +10,14 @@ export function addType(clazz) {
9
10
  type.specializationOf.specializations[type.name] = type;
10
11
  }
11
12
 
13
+ if (type.service) {
14
+ addServiceTypes({ [type.name]: type.service });
15
+ }
16
+
17
+ if (type.services) {
18
+ addServiceTypes(type.services);
19
+ }
20
+
12
21
  types[type.name] = type;
13
22
 
14
23
  type.clazz = clazz;
@@ -22,6 +22,7 @@ export * from "./services/bind.mjs";
22
22
  export * from "./services/chrony.mjs";
23
23
  export * from "./services/kea.mjs";
24
24
  export * from "./services/openldap.mjs";
25
+ export * from "./services/influxdb.mjs";
25
26
  export * from "./services/systemd-journal.mjs";
26
27
  export * from "./services/systemd-journal-remote.mjs";
27
28
  export * from "./services/systemd-journal-upload.mjs";
@@ -360,6 +360,26 @@ export class BindService extends ExtraSourceService {
360
360
  writeable: boolean;
361
361
  };
362
362
  };
363
+ service: {
364
+ extends: string[];
365
+ };
366
+ services: {
367
+ "bind-statistics": {
368
+ endpoints: {
369
+ port: number;
370
+ protocol: string;
371
+ tls: boolean;
372
+ }[];
373
+ };
374
+ rdnc: {
375
+ endpoints: {
376
+ type: string;
377
+ port: number;
378
+ protocol: string;
379
+ tls: boolean;
380
+ }[];
381
+ };
382
+ };
363
383
  };
364
384
  allowedUpdates: any[];
365
385
  recordTTL: string;
@@ -264,6 +264,9 @@ export class ChronyService extends ExtraSourceService {
264
264
  };
265
265
  priority: number;
266
266
  properties: {};
267
+ service: {
268
+ extends: string[];
269
+ };
267
270
  };
268
271
  preparePackages(dir: any): AsyncGenerator<{
269
272
  dir: any;
@@ -0,0 +1,265 @@
1
+ export class InfluxdbService extends Service {
2
+ static get typeDefinition(): {
3
+ name: string;
4
+ specializationOf: {
5
+ name: string;
6
+ owners: string[];
7
+ priority: number;
8
+ extends: {
9
+ name: string;
10
+ owners: any[];
11
+ properties: {
12
+ owner: {
13
+ type: string;
14
+ collection: boolean;
15
+ writeable: boolean;
16
+ };
17
+ type: {
18
+ type: string;
19
+ collection: boolean;
20
+ writeable: boolean;
21
+ };
22
+ name: {
23
+ type: string;
24
+ collection: boolean;
25
+ identifier: boolean;
26
+ writeable: boolean;
27
+ };
28
+ description: {
29
+ type: string;
30
+ collection: boolean;
31
+ writeable: boolean;
32
+ };
33
+ priority: {
34
+ type: string;
35
+ collection: boolean;
36
+ writeable: boolean;
37
+ };
38
+ directory: {
39
+ type: string;
40
+ collection: boolean;
41
+ writeable: boolean;
42
+ };
43
+ packaging: {
44
+ type: string;
45
+ collection: boolean;
46
+ writeable: boolean;
47
+ };
48
+ tags: {
49
+ type: string;
50
+ collection: boolean;
51
+ writeable: boolean;
52
+ };
53
+ };
54
+ };
55
+ specializations: {};
56
+ factoryFor(owner: any, value: any): any;
57
+ properties: {
58
+ alias: {
59
+ type: string;
60
+ collection: boolean;
61
+ writeable: boolean;
62
+ };
63
+ weight: {
64
+ type: string;
65
+ collection: boolean;
66
+ writeable: boolean;
67
+ default: number;
68
+ };
69
+ systemd: {
70
+ type: string;
71
+ collection: boolean;
72
+ writeable: boolean;
73
+ };
74
+ port: {
75
+ type: string;
76
+ collection: boolean;
77
+ writeable: boolean;
78
+ };
79
+ protocol: {
80
+ type: string;
81
+ collection: boolean;
82
+ writeable: boolean;
83
+ values: string[];
84
+ };
85
+ type: {
86
+ type: string;
87
+ collection: boolean;
88
+ writeable: boolean;
89
+ };
90
+ types: {
91
+ type: string;
92
+ collection: boolean;
93
+ writeable: boolean;
94
+ };
95
+ tls: {
96
+ type: string;
97
+ collection: boolean;
98
+ writeable: boolean;
99
+ default: boolean;
100
+ };
101
+ hostName: {
102
+ type: string;
103
+ collection: boolean;
104
+ writeable: boolean;
105
+ };
106
+ cidrAddresses: {
107
+ type: string;
108
+ collection: boolean;
109
+ writeable: boolean;
110
+ };
111
+ cidrAddress: {
112
+ type: string;
113
+ collection: boolean;
114
+ writeable: boolean;
115
+ };
116
+ addresses: {
117
+ type: string;
118
+ collection: boolean;
119
+ writeable: boolean;
120
+ };
121
+ address: {
122
+ type: string;
123
+ collection: boolean;
124
+ writeable: boolean;
125
+ };
126
+ };
127
+ };
128
+ owners: string[];
129
+ extends: {
130
+ name: string;
131
+ owners: string[];
132
+ priority: number;
133
+ extends: {
134
+ name: string;
135
+ owners: any[];
136
+ properties: {
137
+ owner: {
138
+ type: string;
139
+ collection: boolean;
140
+ writeable: boolean;
141
+ };
142
+ type: {
143
+ type: string;
144
+ collection: boolean;
145
+ writeable: boolean;
146
+ };
147
+ name: {
148
+ type: string;
149
+ collection: boolean;
150
+ identifier: boolean;
151
+ writeable: boolean;
152
+ };
153
+ description: {
154
+ type: string;
155
+ collection: boolean;
156
+ writeable: boolean;
157
+ };
158
+ priority: {
159
+ type: string;
160
+ collection: boolean;
161
+ writeable: boolean;
162
+ };
163
+ directory: {
164
+ type: string;
165
+ collection: boolean;
166
+ writeable: boolean;
167
+ };
168
+ packaging: {
169
+ type: string;
170
+ collection: boolean;
171
+ writeable: boolean;
172
+ };
173
+ tags: {
174
+ type: string;
175
+ collection: boolean;
176
+ writeable: boolean;
177
+ };
178
+ };
179
+ };
180
+ specializations: {};
181
+ factoryFor(owner: any, value: any): any;
182
+ properties: {
183
+ alias: {
184
+ type: string;
185
+ collection: boolean;
186
+ writeable: boolean;
187
+ };
188
+ weight: {
189
+ type: string;
190
+ collection: boolean;
191
+ writeable: boolean;
192
+ default: number;
193
+ };
194
+ systemd: {
195
+ type: string;
196
+ collection: boolean;
197
+ writeable: boolean;
198
+ };
199
+ port: {
200
+ type: string;
201
+ collection: boolean;
202
+ writeable: boolean;
203
+ };
204
+ protocol: {
205
+ type: string;
206
+ collection: boolean;
207
+ writeable: boolean;
208
+ values: string[];
209
+ };
210
+ type: {
211
+ type: string;
212
+ collection: boolean;
213
+ writeable: boolean;
214
+ };
215
+ types: {
216
+ type: string;
217
+ collection: boolean;
218
+ writeable: boolean;
219
+ };
220
+ tls: {
221
+ type: string;
222
+ collection: boolean;
223
+ writeable: boolean;
224
+ default: boolean;
225
+ };
226
+ hostName: {
227
+ type: string;
228
+ collection: boolean;
229
+ writeable: boolean;
230
+ };
231
+ cidrAddresses: {
232
+ type: string;
233
+ collection: boolean;
234
+ writeable: boolean;
235
+ };
236
+ cidrAddress: {
237
+ type: string;
238
+ collection: boolean;
239
+ writeable: boolean;
240
+ };
241
+ addresses: {
242
+ type: string;
243
+ collection: boolean;
244
+ writeable: boolean;
245
+ };
246
+ address: {
247
+ type: string;
248
+ collection: boolean;
249
+ writeable: boolean;
250
+ };
251
+ };
252
+ };
253
+ priority: number;
254
+ properties: {};
255
+ service: {
256
+ endpoints: {
257
+ port: number;
258
+ protocol: string;
259
+ tls: boolean;
260
+ }[];
261
+ };
262
+ };
263
+ get type(): string;
264
+ }
265
+ import { Service } from "../service.mjs";
@@ -253,6 +253,67 @@ export class KeaService extends Service {
253
253
  };
254
254
  priority: number;
255
255
  properties: {};
256
+ service: {
257
+ extends: string[];
258
+ };
259
+ services: {
260
+ "kea-ddns": {
261
+ endpoints: {
262
+ type: string;
263
+ port: number;
264
+ protocol: string;
265
+ tls: boolean;
266
+ }[];
267
+ };
268
+ "kea-control-agent": {
269
+ endpoints: {
270
+ type: string;
271
+ port: number;
272
+ pathname: string;
273
+ protocol: string;
274
+ tls: boolean;
275
+ }[];
276
+ };
277
+ "kea-ha-4": {
278
+ endpoints: {
279
+ type: string;
280
+ port: number;
281
+ pathname: string;
282
+ protocol: string;
283
+ tls: boolean;
284
+ }[];
285
+ };
286
+ "kea-ha-6": {
287
+ endpoints: {
288
+ type: string;
289
+ port: number;
290
+ pathname: string;
291
+ protocol: string;
292
+ tls: boolean;
293
+ }[];
294
+ };
295
+ "kea-control-dhcp4": {
296
+ endpoints: {
297
+ type: string;
298
+ family: string;
299
+ path: string;
300
+ }[];
301
+ };
302
+ "kea-control-dhcp6": {
303
+ endpoints: {
304
+ type: string;
305
+ family: string;
306
+ path: string;
307
+ }[];
308
+ };
309
+ "kea-control-ddns": {
310
+ endpoints: {
311
+ type: string;
312
+ family: string;
313
+ path: string;
314
+ }[];
315
+ };
316
+ };
256
317
  };
257
318
  get type(): string;
258
319
  preparePackages(dir: any): AsyncGenerator<{
@@ -252,6 +252,7 @@ export class OpenLDAPService extends Service {
252
252
  };
253
253
  priority: number;
254
254
  properties: {};
255
+ service: {};
255
256
  };
256
257
  get type(): string;
257
258
  preparePackages(dir: any): AsyncGenerator<{
@@ -252,6 +252,14 @@ export class SystemdJournalRemoteService extends Service {
252
252
  };
253
253
  priority: number;
254
254
  properties: {};
255
+ services: {
256
+ extends: string[];
257
+ endpoints: {
258
+ port: number;
259
+ protocol: string;
260
+ tls: boolean;
261
+ }[];
262
+ };
255
263
  };
256
264
  get type(): string;
257
265
  get systemdServices(): string;
@@ -258,6 +258,7 @@ export class SystemdJournalUploadService extends Service {
258
258
  writeable: boolean;
259
259
  };
260
260
  };
261
+ service: {};
261
262
  };
262
263
  get type(): string;
263
264
  get systemdServices(): string;
@@ -252,6 +252,7 @@ export class SystemdJournalService extends Service {
252
252
  };
253
253
  priority: number;
254
254
  properties: {};
255
+ service: {};
255
256
  };
256
257
  get type(): string;
257
258
  get systemdServices(): string;
@@ -252,6 +252,7 @@ export class SystemdResolvedService extends ExtraSourceService {
252
252
  };
253
253
  priority: number;
254
254
  properties: {};
255
+ service: {};
255
256
  };
256
257
  get systemdServices(): string;
257
258
  systemdConfigs(name: any): {
@@ -252,6 +252,7 @@ export class SystemdTimesyncdService extends ExtraSourceService {
252
252
  };
253
253
  priority: number;
254
254
  properties: {};
255
+ service: {};
255
256
  };
256
257
  get systemdServices(): string;
257
258
  systemdConfigs(name: any): {