cloudfall 0.2.0__py3-none-any.whl

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.
Files changed (165) hide show
  1. cloudfall/__init__.py +19 -0
  2. cloudfall/__main__.py +5 -0
  3. cloudfall/_bundled/schemas/v1/alert-rule.schema.json +63 -0
  4. cloudfall/_bundled/schemas/v1/application.schema.json +60 -0
  5. cloudfall/_bundled/schemas/v1/artifact.schema.json +71 -0
  6. cloudfall/_bundled/schemas/v1/backup-receipt.schema.json +58 -0
  7. cloudfall/_bundled/schemas/v1/common.schema.json +115 -0
  8. cloudfall/_bundled/schemas/v1/component.schema.json +234 -0
  9. cloudfall/_bundled/schemas/v1/deployment-receipt.schema.json +53 -0
  10. cloudfall/_bundled/schemas/v1/domain.schema.json +208 -0
  11. cloudfall/_bundled/schemas/v1/environment-receipt.schema.json +55 -0
  12. cloudfall/_bundled/schemas/v1/logging-stack.schema.json +473 -0
  13. cloudfall/_bundled/schemas/v1/observed-domain.schema.json +158 -0
  14. cloudfall/_bundled/schemas/v1/observed-server.schema.json +627 -0
  15. cloudfall/_bundled/schemas/v1/operator-policy.schema.json +97 -0
  16. cloudfall/_bundled/schemas/v1/operator-proposal.schema.json +253 -0
  17. cloudfall/_bundled/schemas/v1/release-receipt.schema.json +66 -0
  18. cloudfall/_bundled/schemas/v1/server-type.schema.json +289 -0
  19. cloudfall/_bundled/schemas/v1/server.schema.json +146 -0
  20. cloudfall/_bundled/schemas/v1/service.schema.json +222 -0
  21. cloudfall/_bundled/schemas/v1/ssh-public-key.schema.json +55 -0
  22. cloudfall/agent_tools.py +868 -0
  23. cloudfall/arguments.py +92 -0
  24. cloudfall/audit.py +905 -0
  25. cloudfall/authoring.py +341 -0
  26. cloudfall/cli.py +1748 -0
  27. cloudfall/commands.py +257 -0
  28. cloudfall/cutover.py +370 -0
  29. cloudfall/dashboard.py +407 -0
  30. cloudfall/dashboard_server.py +201 -0
  31. cloudfall/domain.py +1157 -0
  32. cloudfall/importer.py +906 -0
  33. cloudfall/inventory.py +2116 -0
  34. cloudfall/lifecycle.py +874 -0
  35. cloudfall/mcp_server.py +704 -0
  36. cloudfall/migrate.py +730 -0
  37. cloudfall/observation.py +143 -0
  38. cloudfall/operations.py +1228 -0
  39. cloudfall/operator.py +1099 -0
  40. cloudfall/project.py +841 -0
  41. cloudfall/py.typed +0 -0
  42. cloudfall/render_api.py +338 -0
  43. cloudfall/resources.py +67 -0
  44. cloudfall/secrets.py +262 -0
  45. cloudfall/service_evidence.py +659 -0
  46. cloudfall/validation.py +1340 -0
  47. cloudfall-0.2.0.dist-info/METADATA +408 -0
  48. cloudfall-0.2.0.dist-info/RECORD +165 -0
  49. cloudfall-0.2.0.dist-info/WHEEL +4 -0
  50. cloudfall-0.2.0.dist-info/entry_points.txt +4 -0
  51. cloudfall-0.2.0.dist-info/licenses/LICENSE +661 -0
  52. cloudfall_engine/__init__.py +5 -0
  53. cloudfall_engine/__main__.py +5 -0
  54. cloudfall_engine/_bundled/ansible/ansible.cfg +7 -0
  55. cloudfall_engine/_bundled/ansible/playbooks/backup.yml +86 -0
  56. cloudfall_engine/_bundled/ansible/playbooks/baseline.yml +35 -0
  57. cloudfall_engine/_bundled/ansible/playbooks/bootstrap.yml +24 -0
  58. cloudfall_engine/_bundled/ansible/playbooks/data.yml +28 -0
  59. cloudfall_engine/_bundled/ansible/playbooks/deploy.yml +35 -0
  60. cloudfall_engine/_bundled/ansible/playbooks/domains.yml +21 -0
  61. cloudfall_engine/_bundled/ansible/playbooks/health.yml +31 -0
  62. cloudfall_engine/_bundled/ansible/playbooks/inspect.yml +15 -0
  63. cloudfall_engine/_bundled/ansible/playbooks/logging.yml +35 -0
  64. cloudfall_engine/_bundled/ansible/playbooks/restart.yml +31 -0
  65. cloudfall_engine/_bundled/ansible/playbooks/rollback.yml +33 -0
  66. cloudfall_engine/_bundled/ansible/playbooks/services.yml +37 -0
  67. cloudfall_engine/_bundled/ansible/playbooks/time.yml +9 -0
  68. cloudfall_engine/_bundled/ansible/roles/cloudfall_access/defaults/main.yml +2 -0
  69. cloudfall_engine/_bundled/ansible/roles/cloudfall_access/handlers/main.yml +5 -0
  70. cloudfall_engine/_bundled/ansible/roles/cloudfall_access/meta/argument_specs.yml +34 -0
  71. cloudfall_engine/_bundled/ansible/roles/cloudfall_access/meta/main.yml +13 -0
  72. cloudfall_engine/_bundled/ansible/roles/cloudfall_access/tasks/main.yml +59 -0
  73. cloudfall_engine/_bundled/ansible/roles/cloudfall_bootstrap/defaults/main.yml +11 -0
  74. cloudfall_engine/_bundled/ansible/roles/cloudfall_bootstrap/meta/argument_specs.yml +52 -0
  75. cloudfall_engine/_bundled/ansible/roles/cloudfall_bootstrap/meta/main.yml +13 -0
  76. cloudfall_engine/_bundled/ansible/roles/cloudfall_bootstrap/tasks/main.yml +99 -0
  77. cloudfall_engine/_bundled/ansible/roles/cloudfall_data_migration/defaults/main.yml +15 -0
  78. cloudfall_engine/_bundled/ansible/roles/cloudfall_data_migration/meta/argument_specs.yml +36 -0
  79. cloudfall_engine/_bundled/ansible/roles/cloudfall_data_migration/meta/main.yml +13 -0
  80. cloudfall_engine/_bundled/ansible/roles/cloudfall_data_migration/tasks/main.yml +201 -0
  81. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/defaults/main.yml +10 -0
  82. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/meta/argument_specs.yml +125 -0
  83. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/meta/main.yml +13 -0
  84. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/tasks/health.yml +3 -0
  85. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/tasks/health_gate.yml +37 -0
  86. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/tasks/main.yml +285 -0
  87. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/tasks/restart.yml +17 -0
  88. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/tasks/rollback.yml +52 -0
  89. cloudfall_engine/_bundled/ansible/roles/cloudfall_deploy/templates/component.service.j2 +24 -0
  90. cloudfall_engine/_bundled/ansible/roles/cloudfall_firewall/defaults/main.yml +2 -0
  91. cloudfall_engine/_bundled/ansible/roles/cloudfall_firewall/handlers/main.yml +5 -0
  92. cloudfall_engine/_bundled/ansible/roles/cloudfall_firewall/meta/argument_specs.yml +33 -0
  93. cloudfall_engine/_bundled/ansible/roles/cloudfall_firewall/meta/main.yml +13 -0
  94. cloudfall_engine/_bundled/ansible/roles/cloudfall_firewall/tasks/main.yml +51 -0
  95. cloudfall_engine/_bundled/ansible/roles/cloudfall_firewall/templates/nftables.conf.j2 +31 -0
  96. cloudfall_engine/_bundled/ansible/roles/cloudfall_inspect/defaults/main.yml +6 -0
  97. cloudfall_engine/_bundled/ansible/roles/cloudfall_inspect/meta/argument_specs.yml +24 -0
  98. cloudfall_engine/_bundled/ansible/roles/cloudfall_inspect/meta/main.yml +13 -0
  99. cloudfall_engine/_bundled/ansible/roles/cloudfall_inspect/tasks/main.yml +643 -0
  100. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/defaults/main.yml +6 -0
  101. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/handlers/main.yml +29 -0
  102. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/meta/argument_specs.yml +227 -0
  103. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/meta/main.yml +11 -0
  104. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/tasks/main.yml +487 -0
  105. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/alertmanager-defaults.j2 +2 -0
  106. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/alertmanager.yaml.j2 +33 -0
  107. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/grafana.ini.j2 +20 -0
  108. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/loki-datasource.yml.j2 +11 -0
  109. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/loki-systemd-override.conf.j2 +3 -0
  110. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/loki.yaml.j2 +49 -0
  111. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/nginx-loki-gateway.conf.j2 +45 -0
  112. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/prometheus-datasource.yml.j2 +11 -0
  113. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/prometheus-defaults.j2 +2 -0
  114. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/prometheus-rules.yaml.j2 +20 -0
  115. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_backend/templates/prometheus.yaml.j2 +24 -0
  116. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_collector/defaults/main.yml +7 -0
  117. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_collector/handlers/main.yml +6 -0
  118. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_collector/meta/argument_specs.yml +122 -0
  119. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_collector/meta/main.yml +11 -0
  120. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_collector/tasks/main.yml +224 -0
  121. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_collector/templates/alloy-systemd-override.conf.j2 +3 -0
  122. cloudfall_engine/_bundled/ansible/roles/cloudfall_logging_collector/templates/config.alloy.j2 +127 -0
  123. cloudfall_engine/_bundled/ansible/roles/cloudfall_nginx_site/defaults/main.yml +4 -0
  124. cloudfall_engine/_bundled/ansible/roles/cloudfall_nginx_site/handlers/main.yml +5 -0
  125. cloudfall_engine/_bundled/ansible/roles/cloudfall_nginx_site/meta/argument_specs.yml +69 -0
  126. cloudfall_engine/_bundled/ansible/roles/cloudfall_nginx_site/meta/main.yml +13 -0
  127. cloudfall_engine/_bundled/ansible/roles/cloudfall_nginx_site/tasks/main.yml +212 -0
  128. cloudfall_engine/_bundled/ansible/roles/cloudfall_nginx_site/templates/domain-site.conf.j2 +54 -0
  129. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/defaults/main.yml +6 -0
  130. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/handlers/main.yml +9 -0
  131. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/meta/argument_specs.yml +91 -0
  132. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/meta/main.yml +13 -0
  133. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/tasks/main.yml +295 -0
  134. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/templates/backup.service.j2 +11 -0
  135. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/templates/backup.sh.j2 +17 -0
  136. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/templates/backup.timer.j2 +10 -0
  137. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/templates/cloudfall.conf.j2 +3 -0
  138. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/templates/restore-check.service.j2 +11 -0
  139. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/templates/restore-check.sh.j2 +27 -0
  140. cloudfall_engine/_bundled/ansible/roles/cloudfall_postgresql/templates/restore-check.timer.j2 +10 -0
  141. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/defaults/main.yml +2 -0
  142. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/handlers/main.yml +6 -0
  143. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/meta/argument_specs.yml +68 -0
  144. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/meta/main.yml +13 -0
  145. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/tasks/main.yml +148 -0
  146. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/templates/backup.service.j2 +11 -0
  147. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/templates/backup.sh.j2 +14 -0
  148. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/templates/backup.timer.j2 +10 -0
  149. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/templates/cloudfall.conf.j2 +6 -0
  150. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/templates/restore-check.service.j2 +11 -0
  151. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/templates/restore-check.sh.j2 +15 -0
  152. cloudfall_engine/_bundled/ansible/roles/cloudfall_redis/templates/restore-check.timer.j2 +10 -0
  153. cloudfall_engine/_bundled/ansible/roles/cloudfall_time/defaults/main.yml +2 -0
  154. cloudfall_engine/_bundled/ansible/roles/cloudfall_time/meta/argument_specs.yml +10 -0
  155. cloudfall_engine/_bundled/ansible/roles/cloudfall_time/meta/main.yml +13 -0
  156. cloudfall_engine/_bundled/ansible/roles/cloudfall_time/tasks/main.yml +119 -0
  157. cloudfall_engine/_bundled/ansible/roles/cloudfall_unattended_upgrades/defaults/main.yml +3 -0
  158. cloudfall_engine/_bundled/ansible/roles/cloudfall_unattended_upgrades/meta/argument_specs.yml +8 -0
  159. cloudfall_engine/_bundled/ansible/roles/cloudfall_unattended_upgrades/meta/main.yml +13 -0
  160. cloudfall_engine/_bundled/ansible/roles/cloudfall_unattended_upgrades/tasks/main.yml +37 -0
  161. cloudfall_engine/ansible_inventory.py +253 -0
  162. cloudfall_engine/artifact.py +258 -0
  163. cloudfall_engine/cli.py +273 -0
  164. cloudfall_engine/playbook.py +175 -0
  165. cloudfall_engine/py.typed +0 -0
@@ -0,0 +1,627 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://cloudfall.internal/schemas/v1/observed-server.schema.json",
4
+ "title": "Cloudfall observed server snapshot",
5
+ "$defs": {
6
+ "nullableString": {
7
+ "type": [
8
+ "string",
9
+ "null"
10
+ ]
11
+ },
12
+ "timerName": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "maxLength": 255,
16
+ "pattern": "^[A-Za-z0-9@_.:\\\\-]+\\.timer$"
17
+ },
18
+ "observedServiceName": {
19
+ "type": "string",
20
+ "minLength": 1,
21
+ "maxLength": 255,
22
+ "pattern": "^[A-Za-z0-9@_.:\\\\-]+\\.service$"
23
+ },
24
+ "nullableInteger": {
25
+ "type": [
26
+ "integer",
27
+ "null"
28
+ ]
29
+ },
30
+ "blockDevice": {
31
+ "type": "object",
32
+ "properties": {
33
+ "name": {
34
+ "type": "string"
35
+ },
36
+ "path": {
37
+ "type": "string"
38
+ },
39
+ "type": {
40
+ "type": "string"
41
+ },
42
+ "size": {
43
+ "type": "integer",
44
+ "minimum": 0
45
+ },
46
+ "fstype": {
47
+ "$ref": "#/$defs/nullableString"
48
+ },
49
+ "mountpoint": {
50
+ "$ref": "#/$defs/nullableString"
51
+ },
52
+ "pkname": {
53
+ "$ref": "#/$defs/nullableString"
54
+ },
55
+ "model": {
56
+ "$ref": "#/$defs/nullableString"
57
+ },
58
+ "serial": {
59
+ "$ref": "#/$defs/nullableString"
60
+ },
61
+ "rota": {
62
+ "type": [
63
+ "boolean",
64
+ "null"
65
+ ]
66
+ },
67
+ "children": {
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/$defs/blockDevice"
71
+ }
72
+ }
73
+ },
74
+ "required": [
75
+ "name",
76
+ "path",
77
+ "type",
78
+ "size",
79
+ "fstype",
80
+ "mountpoint",
81
+ "pkname",
82
+ "model",
83
+ "serial",
84
+ "rota"
85
+ ],
86
+ "additionalProperties": false
87
+ },
88
+ "smartDevice": {
89
+ "type": "object",
90
+ "properties": {
91
+ "path": {
92
+ "$ref": "common.schema.json#/$defs/absolutePath"
93
+ },
94
+ "model": {
95
+ "type": "string",
96
+ "minLength": 1
97
+ },
98
+ "serial": {
99
+ "type": "string",
100
+ "minLength": 1
101
+ },
102
+ "firmware": {
103
+ "type": "string",
104
+ "minLength": 1
105
+ },
106
+ "smartctlExitCode": {
107
+ "type": "integer",
108
+ "minimum": 0,
109
+ "maximum": 255
110
+ },
111
+ "overallHealth": {
112
+ "enum": [
113
+ "passed",
114
+ "failed"
115
+ ]
116
+ },
117
+ "criticalWarning": {
118
+ "type": "string",
119
+ "pattern": "^0x[0-9A-Fa-f]+$"
120
+ },
121
+ "reliabilityDegraded": {
122
+ "type": "boolean"
123
+ },
124
+ "temperatureCelsius": {
125
+ "type": "integer"
126
+ },
127
+ "availableSparePercent": {
128
+ "type": "integer",
129
+ "minimum": 0,
130
+ "maximum": 100
131
+ },
132
+ "availableSpareThresholdPercent": {
133
+ "type": "integer",
134
+ "minimum": 0,
135
+ "maximum": 100
136
+ },
137
+ "percentageUsed": {
138
+ "type": "integer",
139
+ "minimum": 0
140
+ },
141
+ "dataUnitsRead": {
142
+ "type": "integer",
143
+ "minimum": 0
144
+ },
145
+ "dataUnitsWritten": {
146
+ "type": "integer",
147
+ "minimum": 0
148
+ },
149
+ "powerCycles": {
150
+ "type": "integer",
151
+ "minimum": 0
152
+ },
153
+ "powerOnHours": {
154
+ "type": "integer",
155
+ "minimum": 0
156
+ },
157
+ "unsafeShutdowns": {
158
+ "type": "integer",
159
+ "minimum": 0
160
+ },
161
+ "mediaAndDataIntegrityErrors": {
162
+ "type": "integer",
163
+ "minimum": 0
164
+ },
165
+ "errorInformationLogEntries": {
166
+ "type": "integer",
167
+ "minimum": 0
168
+ }
169
+ },
170
+ "required": [
171
+ "path",
172
+ "model",
173
+ "serial",
174
+ "firmware",
175
+ "smartctlExitCode",
176
+ "overallHealth",
177
+ "criticalWarning",
178
+ "reliabilityDegraded",
179
+ "temperatureCelsius",
180
+ "availableSparePercent",
181
+ "availableSpareThresholdPercent",
182
+ "percentageUsed",
183
+ "dataUnitsRead",
184
+ "dataUnitsWritten",
185
+ "powerCycles",
186
+ "powerOnHours",
187
+ "unsafeShutdowns",
188
+ "mediaAndDataIntegrityErrors",
189
+ "errorInformationLogEntries"
190
+ ],
191
+ "additionalProperties": false
192
+ }
193
+ },
194
+ "type": "object",
195
+ "properties": {
196
+ "apiVersion": {
197
+ "$ref": "common.schema.json#/$defs/apiVersion"
198
+ },
199
+ "kind": {
200
+ "const": "ObservedServer"
201
+ },
202
+ "metadata": {
203
+ "$ref": "common.schema.json#/$defs/metadata"
204
+ },
205
+ "spec": {
206
+ "type": "object",
207
+ "properties": {
208
+ "server": {
209
+ "$ref": "common.schema.json#/$defs/resourceId"
210
+ },
211
+ "serverType": {
212
+ "$ref": "common.schema.json#/$defs/resourceId"
213
+ },
214
+ "observedAt": {
215
+ "type": "string",
216
+ "format": "date-time"
217
+ },
218
+ "collectorVersion": {
219
+ "type": "string",
220
+ "minLength": 1
221
+ },
222
+ "os": {
223
+ "type": "object",
224
+ "properties": {
225
+ "distribution": {
226
+ "type": "string"
227
+ },
228
+ "version": {
229
+ "type": "string"
230
+ },
231
+ "majorVersion": {
232
+ "type": "string"
233
+ },
234
+ "release": {
235
+ "type": "string"
236
+ },
237
+ "kernel": {
238
+ "type": "string"
239
+ },
240
+ "architecture": {
241
+ "type": "string"
242
+ },
243
+ "serviceManager": {
244
+ "type": "string"
245
+ }
246
+ },
247
+ "required": [
248
+ "distribution",
249
+ "version",
250
+ "majorVersion",
251
+ "release",
252
+ "kernel",
253
+ "architecture",
254
+ "serviceManager"
255
+ ],
256
+ "additionalProperties": false
257
+ },
258
+ "hardware": {
259
+ "type": "object",
260
+ "properties": {
261
+ "processorCount": {
262
+ "type": "integer",
263
+ "minimum": 0
264
+ },
265
+ "processorCores": {
266
+ "type": "integer",
267
+ "minimum": 0
268
+ },
269
+ "processorVcpus": {
270
+ "type": "integer",
271
+ "minimum": 0
272
+ },
273
+ "memoryBytes": {
274
+ "type": "integer",
275
+ "minimum": 0
276
+ }
277
+ },
278
+ "required": [
279
+ "processorCount",
280
+ "processorCores",
281
+ "processorVcpus",
282
+ "memoryBytes"
283
+ ],
284
+ "additionalProperties": false
285
+ },
286
+ "storage": {
287
+ "type": "object",
288
+ "properties": {
289
+ "blockDevices": {
290
+ "type": "array",
291
+ "items": {
292
+ "$ref": "#/$defs/blockDevice"
293
+ }
294
+ },
295
+ "filesystems": {
296
+ "type": "array",
297
+ "items": {
298
+ "type": "object",
299
+ "properties": {
300
+ "target": {
301
+ "type": "string"
302
+ },
303
+ "source": {
304
+ "type": "string"
305
+ },
306
+ "fstype": {
307
+ "type": "string"
308
+ },
309
+ "options": {
310
+ "type": "string"
311
+ },
312
+ "size": {
313
+ "$ref": "#/$defs/nullableInteger"
314
+ },
315
+ "used": {
316
+ "$ref": "#/$defs/nullableInteger"
317
+ },
318
+ "avail": {
319
+ "$ref": "#/$defs/nullableInteger"
320
+ }
321
+ },
322
+ "required": [
323
+ "target",
324
+ "source",
325
+ "fstype",
326
+ "options",
327
+ "size",
328
+ "used",
329
+ "avail"
330
+ ],
331
+ "additionalProperties": false
332
+ }
333
+ },
334
+ "softwareRaid": {
335
+ "type": "object",
336
+ "properties": {
337
+ "mdstat": {
338
+ "type": "string"
339
+ },
340
+ "mdadmScan": {
341
+ "type": "string"
342
+ }
343
+ },
344
+ "required": [
345
+ "mdstat",
346
+ "mdadmScan"
347
+ ],
348
+ "additionalProperties": false
349
+ },
350
+ "smart": {
351
+ "type": "object",
352
+ "properties": {
353
+ "available": {
354
+ "type": "boolean"
355
+ },
356
+ "smartctlVersion": {
357
+ "$ref": "#/$defs/nullableString"
358
+ },
359
+ "devices": {
360
+ "type": "array",
361
+ "items": {
362
+ "$ref": "#/$defs/smartDevice"
363
+ }
364
+ }
365
+ },
366
+ "required": [
367
+ "available",
368
+ "smartctlVersion",
369
+ "devices"
370
+ ],
371
+ "additionalProperties": false
372
+ }
373
+ },
374
+ "required": [
375
+ "blockDevices",
376
+ "filesystems",
377
+ "softwareRaid",
378
+ "smart"
379
+ ],
380
+ "additionalProperties": false
381
+ },
382
+ "packages": {
383
+ "type": "array",
384
+ "items": {
385
+ "type": "object",
386
+ "properties": {
387
+ "name": {
388
+ "$ref": "common.schema.json#/$defs/packageName"
389
+ },
390
+ "version": {
391
+ "type": "string"
392
+ },
393
+ "source": {
394
+ "type": "string"
395
+ },
396
+ "arch": {
397
+ "type": "string"
398
+ }
399
+ },
400
+ "required": [
401
+ "name",
402
+ "version",
403
+ "source",
404
+ "arch"
405
+ ],
406
+ "additionalProperties": false
407
+ }
408
+ },
409
+ "services": {
410
+ "type": "object",
411
+ "propertyNames": {
412
+ "$ref": "#/$defs/observedServiceName"
413
+ },
414
+ "additionalProperties": {
415
+ "type": "object",
416
+ "properties": {
417
+ "name": {
418
+ "$ref": "#/$defs/observedServiceName"
419
+ },
420
+ "state": {
421
+ "type": "string"
422
+ },
423
+ "status": {
424
+ "type": "string"
425
+ },
426
+ "source": {
427
+ "type": "string"
428
+ }
429
+ },
430
+ "required": [
431
+ "name",
432
+ "state",
433
+ "status",
434
+ "source"
435
+ ],
436
+ "additionalProperties": false
437
+ }
438
+ },
439
+ "network": {
440
+ "type": "object",
441
+ "properties": {
442
+ "listeningSockets": {
443
+ "type": "string"
444
+ }
445
+ },
446
+ "required": [
447
+ "listeningSockets"
448
+ ],
449
+ "additionalProperties": false
450
+ },
451
+ "timers": {
452
+ "type": "object",
453
+ "propertyNames": {
454
+ "$ref": "#/$defs/timerName"
455
+ },
456
+ "additionalProperties": {
457
+ "type": "object",
458
+ "properties": {
459
+ "name": {
460
+ "$ref": "#/$defs/timerName"
461
+ },
462
+ "state": {
463
+ "type": "string"
464
+ },
465
+ "status": {
466
+ "type": "string"
467
+ },
468
+ "source": {
469
+ "type": "string"
470
+ }
471
+ },
472
+ "required": [
473
+ "name",
474
+ "state",
475
+ "status",
476
+ "source"
477
+ ],
478
+ "additionalProperties": false
479
+ }
480
+ },
481
+ "firewall": {
482
+ "type": "object",
483
+ "properties": {
484
+ "nftAvailable": {
485
+ "type": "boolean"
486
+ },
487
+ "managedTableJson": {
488
+ "$ref": "#/$defs/nullableString"
489
+ }
490
+ },
491
+ "required": [
492
+ "nftAvailable",
493
+ "managedTableJson"
494
+ ],
495
+ "additionalProperties": false
496
+ },
497
+ "componentEnvironment": {
498
+ "type": "array",
499
+ "items": {
500
+ "type": "object",
501
+ "properties": {
502
+ "component": {
503
+ "$ref": "common.schema.json#/$defs/resourceId"
504
+ },
505
+ "path": {
506
+ "$ref": "common.schema.json#/$defs/absolutePath"
507
+ },
508
+ "exists": {
509
+ "type": "boolean"
510
+ },
511
+ "sha256": {
512
+ "anyOf": [
513
+ {
514
+ "$ref": "common.schema.json#/$defs/sha256"
515
+ },
516
+ {
517
+ "type": "null"
518
+ }
519
+ ]
520
+ }
521
+ },
522
+ "required": [
523
+ "component",
524
+ "path",
525
+ "exists",
526
+ "sha256"
527
+ ],
528
+ "additionalProperties": false
529
+ }
530
+ },
531
+ "alerting": {
532
+ "type": "object",
533
+ "properties": {
534
+ "prometheusAvailable": {
535
+ "type": "boolean"
536
+ },
537
+ "rulesJson": {
538
+ "$ref": "#/$defs/nullableString"
539
+ },
540
+ "alertsJson": {
541
+ "$ref": "#/$defs/nullableString"
542
+ }
543
+ },
544
+ "required": [
545
+ "prometheusAvailable",
546
+ "rulesJson",
547
+ "alertsJson"
548
+ ],
549
+ "additionalProperties": false
550
+ },
551
+ "configuration": {
552
+ "type": "array",
553
+ "items": {
554
+ "type": "object",
555
+ "properties": {
556
+ "path": {
557
+ "$ref": "common.schema.json#/$defs/absolutePath"
558
+ },
559
+ "capture": {
560
+ "enum": [
561
+ "metadata",
562
+ "hash"
563
+ ]
564
+ },
565
+ "exists": {
566
+ "type": "boolean"
567
+ },
568
+ "owner": {
569
+ "$ref": "#/$defs/nullableString"
570
+ },
571
+ "group": {
572
+ "$ref": "#/$defs/nullableString"
573
+ },
574
+ "mode": {
575
+ "$ref": "#/$defs/nullableString"
576
+ },
577
+ "size": {
578
+ "$ref": "#/$defs/nullableInteger"
579
+ },
580
+ "sha256": {
581
+ "type": [
582
+ "string",
583
+ "null"
584
+ ],
585
+ "pattern": "^[a-f0-9]{64}$"
586
+ }
587
+ },
588
+ "required": [
589
+ "path",
590
+ "capture",
591
+ "exists",
592
+ "owner",
593
+ "group",
594
+ "mode",
595
+ "size",
596
+ "sha256"
597
+ ],
598
+ "additionalProperties": false
599
+ }
600
+ }
601
+ },
602
+ "required": [
603
+ "server",
604
+ "serverType",
605
+ "observedAt",
606
+ "collectorVersion",
607
+ "os",
608
+ "hardware",
609
+ "storage",
610
+ "packages",
611
+ "services",
612
+ "timers",
613
+ "firewall",
614
+ "network",
615
+ "configuration"
616
+ ],
617
+ "additionalProperties": false
618
+ }
619
+ },
620
+ "required": [
621
+ "apiVersion",
622
+ "kind",
623
+ "metadata",
624
+ "spec"
625
+ ],
626
+ "additionalProperties": false
627
+ }