pmcf 2.1.1 → 2.1.3

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.1.1",
3
+ "version": "2.1.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -43,7 +43,7 @@
43
43
  "pkg-dir": "^8.0.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@types/node": "^22.13.16",
46
+ "@types/node": "^22.13.17",
47
47
  "ava": "^6.2.0",
48
48
  "c8": "^10.1.3",
49
49
  "documentation": "^14.0.3",
package/src/cluster.mjs CHANGED
@@ -77,7 +77,7 @@ export class Cluster extends Host {
77
77
  name,
78
78
  description: `${this.typeName} definitions for ${this.fullName}`,
79
79
  access: "private",
80
- dependencies: ["keepalived"]
80
+ dependencies: ["keepalived>=2.3.3"]
81
81
  }
82
82
  };
83
83
 
@@ -0,0 +1,49 @@
1
+ import { addType } from "./types.mjs";
2
+ import { Service, ServiceTypeDefinition } from "./service.mjs";
3
+
4
+ export const ExtraSourceServiceTypeDefinition = {
5
+ name: "extra-source-service",
6
+ owners: ServiceTypeDefinition.owners,
7
+ extends: ServiceTypeDefinition,
8
+ priority: 0.1,
9
+ properties: {
10
+ source: { type: "network", collection: true, writeable: true }
11
+ }
12
+ };
13
+
14
+ export class ExtraSourceService extends Service {
15
+ _source = [];
16
+
17
+ static {
18
+ addType(this);
19
+ }
20
+
21
+ static get typeDefinition() {
22
+ return ExtraSourceServiceTypeDefinition;
23
+ }
24
+
25
+ constructor(owner, data) {
26
+ super(owner, data);
27
+ this.read(data, ExtraSourceServiceTypeDefinition);
28
+ }
29
+
30
+ get type() {
31
+ return ExtraSourceServiceTypeDefinition.name;
32
+ }
33
+
34
+ set source(value) {
35
+ this._source.push(value);
36
+ }
37
+
38
+ get source() {
39
+ return this._source;
40
+ }
41
+
42
+ *findServices(filter) {
43
+ yield* this.owner.owner.findServices(filter);
44
+
45
+ for (const s of this.source) {
46
+ yield* s.findServices(filter);
47
+ }
48
+ }
49
+ }
@@ -11,6 +11,7 @@ import { writeLines } from "../utils.mjs";
11
11
  const DHCPServiceTypeDefinition = {
12
12
  name: "dhcp",
13
13
  owners: ServiceTypeDefinition.owners,
14
+ extends: ServiceTypeDefinition,
14
15
  priority: 0.1,
15
16
  properties: {}
16
17
  };
@@ -128,9 +129,8 @@ export class DHCPService extends Service {
128
129
  subnets.add(subnet);
129
130
  }
130
131
  }
131
-
132
132
  console.log([...subnets].map(s => s.address));
133
- */
133
+ */
134
134
 
135
135
  const hwmap = new Map();
136
136
  const hostNames = new Set();
@@ -14,14 +14,15 @@ import {
14
14
  ServiceTypeDefinition,
15
15
  serviceAddresses
16
16
  } from "../service.mjs";
17
+ import { ExtraSourceService, ExtraSourceServiceTypeDefinition } from "../extra-source-service.mjs";
17
18
  import { subnets } from "../subnet.mjs";
18
19
 
19
20
  const DNSServiceTypeDefinition = {
20
21
  name: "dns",
21
22
  owners: ServiceTypeDefinition.owners,
23
+ extends: ExtraSourceServiceTypeDefinition,
22
24
  priority: 0.1,
23
25
  properties: {
24
- source: { type: "network", collection: true, writeable: true },
25
26
  trusted: { type: "network", collection: true, writeable: true },
26
27
  protected: { type: "network", collection: true, writeable: true },
27
28
  open: { type: "network", collection: true, writeable: true },
@@ -62,14 +63,13 @@ function addressesStatement(prefix, objects, generateEmpty = false) {
62
63
  return [];
63
64
  }
64
65
 
65
- export class DNSService extends Service {
66
+ export class DNSService extends ExtraSourceService {
66
67
  allowedUpdates = [];
67
68
  recordTTL = "1W";
68
69
  hasSVRRecords = true;
69
70
  hasCatalog = true;
70
71
  hasLinkLocalAdresses = true;
71
72
  notify = true;
72
- _source = [];
73
73
  _trusted = [];
74
74
  _protected = [];
75
75
  _open = [];
@@ -126,14 +126,6 @@ export class DNSService extends Service {
126
126
  return this._open;
127
127
  }
128
128
 
129
- set source(value) {
130
- this._source.push(value);
131
- }
132
-
133
- get source() {
134
- return this._source;
135
- }
136
-
137
129
  set exclude(value) {
138
130
  this._exclude.add(value);
139
131
  }
@@ -142,14 +134,6 @@ export class DNSService extends Service {
142
134
  return this._exclude;
143
135
  }
144
136
 
145
- *findServices(filter) {
146
- yield* this.owner.owner.findServices(filter);
147
-
148
- for (const s of this.source) {
149
- yield* s.findServices(filter);
150
- }
151
- }
152
-
153
137
  get systemdConfig() {
154
138
  return [
155
139
  "Resolve",
@@ -1,24 +1,18 @@
1
1
  import { addType } from "../types.mjs";
2
- import {
3
- Service,
4
- ServiceTypeDefinition,
5
- serviceAddresses
6
- } from "../service.mjs";
2
+ import { ServiceTypeDefinition, serviceAddresses } from "../service.mjs";
3
+ import { ExtraSourceService, ExtraSourceServiceTypeDefinition } from "../extra-source-service.mjs";
7
4
 
8
5
  const NTPServiceTypeDefinition = {
9
6
  name: "ntp",
10
7
  owners: ServiceTypeDefinition.owners,
8
+ extends: ExtraSourceServiceTypeDefinition,
11
9
  priority: 0.1,
12
- properties: {
13
- source: { type: "network", collection: true, writeable: true }
14
- }
10
+ properties: {}
15
11
  };
16
12
 
17
13
  const NTP_SERVICE_FILTER = { type: NTPServiceTypeDefinition.name };
18
14
 
19
- export class NTPService extends Service {
20
- _source = [];
21
-
15
+ export class NTPService extends ExtraSourceService {
22
16
  static {
23
17
  addType(this);
24
18
  }
@@ -36,22 +30,6 @@ export class NTPService extends Service {
36
30
  return NTPServiceTypeDefinition.name;
37
31
  }
38
32
 
39
- set source(value) {
40
- this._source.push(value);
41
- }
42
-
43
- get source() {
44
- return this._source;
45
- }
46
-
47
- *findServices(filter) {
48
- yield* this.owner.owner.findServices(filter);
49
-
50
- for (const s of this.source) {
51
- yield* s.findServices(filter);
52
- }
53
- }
54
-
55
33
  get systemdConfig() {
56
34
  return [
57
35
  "Time",
@@ -63,7 +41,7 @@ export class NTPService extends Service {
63
41
  priority: "<20"
64
42
  },
65
43
  "domainName",
66
- ()=>true
44
+ () => true
67
45
  ).join(" ")
68
46
  }
69
47
  ];
@@ -0,0 +1,158 @@
1
+ export namespace ExtraSourceServiceTypeDefinition {
2
+ export let name: string;
3
+ export let owners: string[];
4
+ export { ServiceTypeDefinition as extends };
5
+ export let priority: number;
6
+ export namespace properties {
7
+ namespace source {
8
+ let type: string;
9
+ let collection: boolean;
10
+ let writeable: boolean;
11
+ }
12
+ }
13
+ }
14
+ export class ExtraSourceService extends Service {
15
+ static get typeDefinition(): {
16
+ name: string;
17
+ owners: string[];
18
+ extends: {
19
+ name: string;
20
+ owners: string[];
21
+ priority: number;
22
+ extends: {
23
+ name: string;
24
+ owners: any[];
25
+ properties: {
26
+ owner: {
27
+ type: string;
28
+ collection: boolean;
29
+ writeable: boolean;
30
+ };
31
+ type: {
32
+ type: string;
33
+ collection: boolean;
34
+ writeable: boolean;
35
+ };
36
+ name: {
37
+ type: string;
38
+ collection: boolean;
39
+ identifier: boolean;
40
+ writeable: boolean;
41
+ };
42
+ description: {
43
+ type: string;
44
+ collection: boolean;
45
+ writeable: boolean;
46
+ };
47
+ priority: {
48
+ type: string;
49
+ collection: boolean;
50
+ writeable: boolean;
51
+ };
52
+ directory: {
53
+ type: string;
54
+ collection: boolean;
55
+ writeable: boolean;
56
+ };
57
+ packaging: {
58
+ type: string;
59
+ collection: boolean;
60
+ writeable: boolean;
61
+ };
62
+ tags: {
63
+ type: string;
64
+ collection: boolean;
65
+ writeable: boolean;
66
+ };
67
+ };
68
+ };
69
+ factoryFor(value: any): typeof Service | typeof import("./module.mjs").DNSService | typeof import("./module.mjs").NTPService | typeof import("./module.mjs").DHCPService;
70
+ properties: {
71
+ ipAddresses: {
72
+ type: string;
73
+ collection: boolean;
74
+ writeable: boolean;
75
+ };
76
+ port: {
77
+ type: string;
78
+ collection: boolean;
79
+ writeable: boolean;
80
+ };
81
+ protocol: {
82
+ type: string;
83
+ collection: boolean;
84
+ writeable: boolean;
85
+ };
86
+ alias: {
87
+ type: string;
88
+ collection: boolean;
89
+ writeable: boolean;
90
+ };
91
+ type: {
92
+ type: string;
93
+ collection: boolean;
94
+ writeable: boolean;
95
+ };
96
+ weight: {
97
+ type: string;
98
+ collection: boolean;
99
+ writeable: boolean;
100
+ };
101
+ srvPrefix: {
102
+ type: string;
103
+ collection: boolean;
104
+ writeable: boolean;
105
+ };
106
+ tls: {
107
+ type: string;
108
+ collection: boolean;
109
+ writeable: boolean;
110
+ };
111
+ systemd: {
112
+ type: string;
113
+ collection: boolean;
114
+ writeable: boolean;
115
+ };
116
+ hostName: {
117
+ type: string;
118
+ collection: boolean;
119
+ writeable: boolean;
120
+ };
121
+ cidrAddresses: {
122
+ type: string;
123
+ collection: boolean;
124
+ writeable: boolean;
125
+ };
126
+ cidrAddress: {
127
+ type: string;
128
+ collection: boolean;
129
+ writeable: boolean;
130
+ };
131
+ rawAddresses: {
132
+ type: string;
133
+ collection: boolean;
134
+ writeable: boolean;
135
+ };
136
+ rawAddress: {
137
+ type: string;
138
+ collection: boolean;
139
+ writeable: boolean;
140
+ };
141
+ };
142
+ };
143
+ priority: number;
144
+ properties: {
145
+ source: {
146
+ type: string;
147
+ collection: boolean;
148
+ writeable: boolean;
149
+ };
150
+ };
151
+ };
152
+ _source: any[];
153
+ get type(): string;
154
+ set source(value: any[]);
155
+ get source(): any[];
156
+ }
157
+ import { ServiceTypeDefinition } from "./service.mjs";
158
+ import { Service } from "./service.mjs";
@@ -2,6 +2,131 @@ export class DHCPService extends Service {
2
2
  static get typeDefinition(): {
3
3
  name: string;
4
4
  owners: string[];
5
+ extends: {
6
+ name: string;
7
+ owners: string[];
8
+ priority: number;
9
+ extends: {
10
+ name: string;
11
+ owners: any[];
12
+ properties: {
13
+ owner: {
14
+ type: string;
15
+ collection: boolean;
16
+ writeable: boolean;
17
+ };
18
+ type: {
19
+ type: string;
20
+ collection: boolean;
21
+ writeable: boolean;
22
+ };
23
+ name: {
24
+ type: string;
25
+ collection: boolean;
26
+ identifier: boolean;
27
+ writeable: boolean;
28
+ };
29
+ description: {
30
+ type: string;
31
+ collection: boolean;
32
+ writeable: boolean;
33
+ };
34
+ priority: {
35
+ type: string;
36
+ collection: boolean;
37
+ writeable: boolean;
38
+ };
39
+ directory: {
40
+ type: string;
41
+ collection: boolean;
42
+ writeable: boolean;
43
+ };
44
+ packaging: {
45
+ type: string;
46
+ collection: boolean;
47
+ writeable: boolean;
48
+ };
49
+ tags: {
50
+ type: string;
51
+ collection: boolean;
52
+ writeable: boolean;
53
+ };
54
+ };
55
+ };
56
+ factoryFor(value: any): typeof Service | typeof import("./dns.mjs").DNSService | typeof import("./ntp.mjs").NTPService | typeof DHCPService;
57
+ properties: {
58
+ ipAddresses: {
59
+ type: string;
60
+ collection: boolean;
61
+ writeable: boolean;
62
+ };
63
+ port: {
64
+ type: string;
65
+ collection: boolean;
66
+ writeable: boolean;
67
+ };
68
+ protocol: {
69
+ type: string;
70
+ collection: boolean;
71
+ writeable: boolean;
72
+ };
73
+ alias: {
74
+ type: string;
75
+ collection: boolean;
76
+ writeable: boolean;
77
+ };
78
+ type: {
79
+ type: string;
80
+ collection: boolean;
81
+ writeable: boolean;
82
+ };
83
+ weight: {
84
+ type: string;
85
+ collection: boolean;
86
+ writeable: boolean;
87
+ };
88
+ srvPrefix: {
89
+ type: string;
90
+ collection: boolean;
91
+ writeable: boolean;
92
+ };
93
+ tls: {
94
+ type: string;
95
+ collection: boolean;
96
+ writeable: boolean;
97
+ };
98
+ systemd: {
99
+ type: string;
100
+ collection: boolean;
101
+ writeable: boolean;
102
+ };
103
+ hostName: {
104
+ type: string;
105
+ collection: boolean;
106
+ writeable: boolean;
107
+ };
108
+ cidrAddresses: {
109
+ type: string;
110
+ collection: boolean;
111
+ writeable: boolean;
112
+ };
113
+ cidrAddress: {
114
+ type: string;
115
+ collection: boolean;
116
+ writeable: boolean;
117
+ };
118
+ rawAddresses: {
119
+ type: string;
120
+ collection: boolean;
121
+ writeable: boolean;
122
+ };
123
+ rawAddress: {
124
+ type: string;
125
+ collection: boolean;
126
+ writeable: boolean;
127
+ };
128
+ };
129
+ };
5
130
  priority: number;
6
131
  properties: {};
7
132
  };
@@ -1,16 +1,148 @@
1
1
  export function reverseAddress(address: any): any;
2
2
  export function reverseArpaAddress(address: any): string;
3
- export class DNSService extends Service {
3
+ export class DNSService extends ExtraSourceService {
4
4
  static get typeDefinition(): {
5
5
  name: string;
6
6
  owners: string[];
7
+ extends: {
8
+ name: string;
9
+ owners: string[];
10
+ extends: {
11
+ name: string;
12
+ owners: string[];
13
+ priority: number;
14
+ extends: {
15
+ name: string;
16
+ owners: any[];
17
+ properties: {
18
+ owner: {
19
+ type: string;
20
+ collection: boolean;
21
+ writeable: boolean;
22
+ };
23
+ type: {
24
+ type: string;
25
+ collection: boolean;
26
+ writeable: boolean;
27
+ };
28
+ name: {
29
+ type: string;
30
+ collection: boolean;
31
+ identifier: boolean;
32
+ writeable: boolean;
33
+ };
34
+ description: {
35
+ type: string;
36
+ collection: boolean;
37
+ writeable: boolean;
38
+ };
39
+ priority: {
40
+ type: string;
41
+ collection: boolean;
42
+ writeable: boolean;
43
+ };
44
+ directory: {
45
+ type: string;
46
+ collection: boolean;
47
+ writeable: boolean;
48
+ };
49
+ packaging: {
50
+ type: string;
51
+ collection: boolean;
52
+ writeable: boolean;
53
+ };
54
+ tags: {
55
+ type: string;
56
+ collection: boolean;
57
+ writeable: boolean;
58
+ };
59
+ };
60
+ };
61
+ factoryFor(value: any): typeof Service | typeof DNSService | typeof import("./ntp.mjs").NTPService | typeof import("./dhcp.mjs").DHCPService;
62
+ properties: {
63
+ ipAddresses: {
64
+ type: string;
65
+ collection: boolean;
66
+ writeable: boolean;
67
+ };
68
+ port: {
69
+ type: string;
70
+ collection: boolean;
71
+ writeable: boolean;
72
+ };
73
+ protocol: {
74
+ type: string;
75
+ collection: boolean;
76
+ writeable: boolean;
77
+ };
78
+ alias: {
79
+ type: string;
80
+ collection: boolean;
81
+ writeable: boolean;
82
+ };
83
+ type: {
84
+ type: string;
85
+ collection: boolean;
86
+ writeable: boolean;
87
+ };
88
+ weight: {
89
+ type: string;
90
+ collection: boolean;
91
+ writeable: boolean;
92
+ };
93
+ srvPrefix: {
94
+ type: string;
95
+ collection: boolean;
96
+ writeable: boolean;
97
+ };
98
+ tls: {
99
+ type: string;
100
+ collection: boolean;
101
+ writeable: boolean;
102
+ };
103
+ systemd: {
104
+ type: string;
105
+ collection: boolean;
106
+ writeable: boolean;
107
+ };
108
+ hostName: {
109
+ type: string;
110
+ collection: boolean;
111
+ writeable: boolean;
112
+ };
113
+ cidrAddresses: {
114
+ type: string;
115
+ collection: boolean;
116
+ writeable: boolean;
117
+ };
118
+ cidrAddress: {
119
+ type: string;
120
+ collection: boolean;
121
+ writeable: boolean;
122
+ };
123
+ rawAddresses: {
124
+ type: string;
125
+ collection: boolean;
126
+ writeable: boolean;
127
+ };
128
+ rawAddress: {
129
+ type: string;
130
+ collection: boolean;
131
+ writeable: boolean;
132
+ };
133
+ };
134
+ };
135
+ priority: number;
136
+ properties: {
137
+ source: {
138
+ type: string;
139
+ collection: boolean;
140
+ writeable: boolean;
141
+ };
142
+ };
143
+ };
7
144
  priority: number;
8
145
  properties: {
9
- source: {
10
- type: string;
11
- collection: boolean;
12
- writeable: boolean;
13
- };
14
146
  trusted: {
15
147
  type: string;
16
148
  collection: boolean;
@@ -94,7 +226,6 @@ export class DNSService extends Service {
94
226
  hasCatalog: boolean;
95
227
  hasLinkLocalAdresses: boolean;
96
228
  notify: boolean;
97
- _source: any[];
98
229
  _trusted: any[];
99
230
  _protected: any[];
100
231
  _open: any[];
@@ -104,7 +235,6 @@ export class DNSService extends Service {
104
235
  retry: number;
105
236
  expire: number;
106
237
  minimum: number;
107
- get type(): string;
108
238
  get soaUpdates(): number[];
109
239
  set protected(value: any[]);
110
240
  get protected(): any[];
@@ -112,8 +242,6 @@ export class DNSService extends Service {
112
242
  get trusted(): any[];
113
243
  set open(value: any[]);
114
244
  get open(): any[];
115
- set source(value: any[]);
116
- get source(): any[];
117
245
  set exclude(value: Set<any>);
118
246
  get exclude(): Set<any>;
119
247
  get systemdConfig(): (string | {
@@ -135,4 +263,5 @@ export class DNSService extends Service {
135
263
  };
136
264
  }, void, unknown>;
137
265
  }
266
+ import { ExtraSourceService } from "../extra-source-service.mjs";
138
267
  import { Service } from "../service.mjs";
@@ -1,22 +1,149 @@
1
- export class NTPService extends Service {
1
+ export class NTPService extends ExtraSourceService {
2
2
  static get typeDefinition(): {
3
3
  name: string;
4
4
  owners: string[];
5
- priority: number;
6
- properties: {
7
- source: {
8
- type: string;
9
- collection: boolean;
10
- writeable: boolean;
5
+ extends: {
6
+ name: string;
7
+ owners: string[];
8
+ extends: {
9
+ name: string;
10
+ owners: string[];
11
+ priority: number;
12
+ extends: {
13
+ name: string;
14
+ owners: any[];
15
+ properties: {
16
+ owner: {
17
+ type: string;
18
+ collection: boolean;
19
+ writeable: boolean;
20
+ };
21
+ type: {
22
+ type: string;
23
+ collection: boolean;
24
+ writeable: boolean;
25
+ };
26
+ name: {
27
+ type: string;
28
+ collection: boolean;
29
+ identifier: boolean;
30
+ writeable: boolean;
31
+ };
32
+ description: {
33
+ type: string;
34
+ collection: boolean;
35
+ writeable: boolean;
36
+ };
37
+ priority: {
38
+ type: string;
39
+ collection: boolean;
40
+ writeable: boolean;
41
+ };
42
+ directory: {
43
+ type: string;
44
+ collection: boolean;
45
+ writeable: boolean;
46
+ };
47
+ packaging: {
48
+ type: string;
49
+ collection: boolean;
50
+ writeable: boolean;
51
+ };
52
+ tags: {
53
+ type: string;
54
+ collection: boolean;
55
+ writeable: boolean;
56
+ };
57
+ };
58
+ };
59
+ factoryFor(value: any): typeof import("../service.mjs").Service | typeof import("./dns.mjs").DNSService | typeof NTPService | typeof import("./dhcp.mjs").DHCPService;
60
+ properties: {
61
+ ipAddresses: {
62
+ type: string;
63
+ collection: boolean;
64
+ writeable: boolean;
65
+ };
66
+ port: {
67
+ type: string;
68
+ collection: boolean;
69
+ writeable: boolean;
70
+ };
71
+ protocol: {
72
+ type: string;
73
+ collection: boolean;
74
+ writeable: boolean;
75
+ };
76
+ alias: {
77
+ type: string;
78
+ collection: boolean;
79
+ writeable: boolean;
80
+ };
81
+ type: {
82
+ type: string;
83
+ collection: boolean;
84
+ writeable: boolean;
85
+ };
86
+ weight: {
87
+ type: string;
88
+ collection: boolean;
89
+ writeable: boolean;
90
+ };
91
+ srvPrefix: {
92
+ type: string;
93
+ collection: boolean;
94
+ writeable: boolean;
95
+ };
96
+ tls: {
97
+ type: string;
98
+ collection: boolean;
99
+ writeable: boolean;
100
+ };
101
+ systemd: {
102
+ type: string;
103
+ collection: boolean;
104
+ writeable: boolean;
105
+ };
106
+ hostName: {
107
+ type: string;
108
+ collection: boolean;
109
+ writeable: boolean;
110
+ };
111
+ cidrAddresses: {
112
+ type: string;
113
+ collection: boolean;
114
+ writeable: boolean;
115
+ };
116
+ cidrAddress: {
117
+ type: string;
118
+ collection: boolean;
119
+ writeable: boolean;
120
+ };
121
+ rawAddresses: {
122
+ type: string;
123
+ collection: boolean;
124
+ writeable: boolean;
125
+ };
126
+ rawAddress: {
127
+ type: string;
128
+ collection: boolean;
129
+ writeable: boolean;
130
+ };
131
+ };
132
+ };
133
+ priority: number;
134
+ properties: {
135
+ source: {
136
+ type: string;
137
+ collection: boolean;
138
+ writeable: boolean;
139
+ };
11
140
  };
12
141
  };
142
+ priority: number;
143
+ properties: {};
13
144
  };
14
- _source: any[];
15
- get type(): string;
16
- set source(value: any[]);
17
- get source(): any[];
18
145
  get systemdConfig(): (string | {
19
146
  NTP: string;
20
147
  })[];
21
148
  }
22
- import { Service } from "../service.mjs";
149
+ import { ExtraSourceService } from "../extra-source-service.mjs";