@homeflare/alchemy 0.14.0 → 0.15.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/dist/openbao/index.d.ts +10 -3
- package/dist/openbao/index.d.ts.map +1 -1
- package/dist/proxmox/acl.d.ts.map +1 -1
- package/dist/proxmox/backup-job.d.ts.map +1 -1
- package/dist/proxmox/constraint-guard.d.ts +28 -0
- package/dist/proxmox/constraint-guard.d.ts.map +1 -0
- package/dist/proxmox/constraints.d.ts +71 -0
- package/dist/proxmox/constraints.d.ts.map +1 -0
- package/dist/proxmox/firewall-alias.d.ts.map +1 -1
- package/dist/proxmox/generated/constraints/index.d.ts +19 -0
- package/dist/proxmox/generated/constraints/index.d.ts.map +1 -0
- package/dist/proxmox/generated/constraints/pbs-config.d.ts +18 -0
- package/dist/proxmox/generated/constraints/pbs-config.d.ts.map +1 -0
- package/dist/proxmox/generated/constraints/pve-access.d.ts +18 -0
- package/dist/proxmox/generated/constraints/pve-access.d.ts.map +1 -0
- package/dist/proxmox/generated/constraints/pve-cluster.d.ts +18 -0
- package/dist/proxmox/generated/constraints/pve-cluster.d.ts.map +1 -0
- package/dist/proxmox/generated/constraints/pve-pools.d.ts +18 -0
- package/dist/proxmox/generated/constraints/pve-pools.d.ts.map +1 -0
- package/dist/proxmox/generated/constraints/pve-storage.d.ts +18 -0
- package/dist/proxmox/generated/constraints/pve-storage.d.ts.map +1 -0
- package/dist/proxmox/group.d.ts.map +1 -1
- package/dist/proxmox/ha-resource.d.ts.map +1 -1
- package/dist/proxmox/ha-rule.d.ts.map +1 -1
- package/dist/proxmox/index.d.ts +6 -1
- package/dist/proxmox/index.d.ts.map +1 -1
- package/dist/proxmox/index.js +816 -257
- package/dist/proxmox/index.js.map +33 -24
- package/dist/proxmox/notification-matcher.d.ts.map +1 -1
- package/dist/proxmox/pbs-datastore-endpoint.d.ts +22 -0
- package/dist/proxmox/pbs-datastore-endpoint.d.ts.map +1 -0
- package/dist/proxmox/pbs-datastore.d.ts.map +1 -1
- package/dist/proxmox/pbs-notification-matcher.d.ts.map +1 -1
- package/dist/proxmox/pbs-prune-job.d.ts.map +1 -1
- package/dist/proxmox/pbs-sync-job-form.d.ts.map +1 -1
- package/dist/proxmox/pbs-verify-job.d.ts.map +1 -1
- package/dist/proxmox/pool.d.ts.map +1 -1
- package/dist/proxmox/provision-baseline.d.ts +30 -5
- package/dist/proxmox/provision-baseline.d.ts.map +1 -1
- package/dist/proxmox/replication-job.d.ts.map +1 -1
- package/dist/proxmox/resource-spec.d.ts +120 -0
- package/dist/proxmox/resource-spec.d.ts.map +1 -0
- package/dist/proxmox/resource.d.ts +10 -91
- package/dist/proxmox/resource.d.ts.map +1 -1
- package/dist/proxmox/role.d.ts.map +1 -1
- package/dist/proxmox/sdn-vnet.d.ts.map +1 -1
- package/dist/proxmox/sdn-zone.d.ts.map +1 -1
- package/dist/proxmox/storage.d.ts.map +1 -1
- package/dist/proxmox/user.d.ts.map +1 -1
- package/docs/provision-baseline.md +34 -7
- package/docs/proxmox-lxc.md +40 -0
- package/package.json +1 -1
- package/src/openbao/index-types.test.ts +87 -0
- package/src/openbao/index.ts +15 -3
- package/src/proxmox/acl.ts +2 -0
- package/src/proxmox/backup-job.ts +2 -0
- package/src/proxmox/constraint-guard.ts +53 -0
- package/src/proxmox/constraints.test.ts +260 -0
- package/src/proxmox/constraints.ts +135 -0
- package/src/proxmox/firewall-alias.ts +5 -0
- package/src/proxmox/generated/constraints/index.ts +31 -0
- package/src/proxmox/generated/constraints/pbs-config.ts +141 -0
- package/src/proxmox/generated/constraints/pve-access.ts +57 -0
- package/src/proxmox/generated/constraints/pve-cluster.ts +174 -0
- package/src/proxmox/generated/constraints/pve-pools.ts +26 -0
- package/src/proxmox/generated/constraints/pve-storage.ts +75 -0
- package/src/proxmox/group.ts +2 -0
- package/src/proxmox/ha-resource.ts +5 -0
- package/src/proxmox/ha-rule.ts +2 -0
- package/src/proxmox/index.ts +12 -0
- package/src/proxmox/lxc-interior.test.ts +61 -0
- package/src/proxmox/notification-matcher.ts +5 -0
- package/src/proxmox/pbs-datastore-endpoint.ts +29 -0
- package/src/proxmox/pbs-datastore.ts +8 -1
- package/src/proxmox/pbs-notification-matcher.ts +5 -0
- package/src/proxmox/pbs-prune-job.ts +2 -0
- package/src/proxmox/pbs-sync-job-form.ts +2 -0
- package/src/proxmox/pbs-verify-job.ts +2 -0
- package/src/proxmox/pool.ts +2 -0
- package/src/proxmox/provision-baseline.test.ts +38 -0
- package/src/proxmox/provision-baseline.ts +73 -14
- package/src/proxmox/provision-bootstrap.test.ts +51 -0
- package/src/proxmox/replication-job.ts +5 -0
- package/src/proxmox/resource-spec.ts +117 -0
- package/src/proxmox/resource.ts +50 -91
- package/src/proxmox/role.ts +2 -0
- package/src/proxmox/sdn-vnet.ts +2 -0
- package/src/proxmox/sdn-zone.ts +2 -0
- package/src/proxmox/storage.ts +2 -0
- package/src/proxmox/user.ts +2 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated proxmox-backup-server parameter constraints for `/config` — DO NOT EDIT BY HAND.
|
|
3
|
+
*
|
|
4
|
+
* Run: bun codegen/constraints.ts
|
|
5
|
+
* Manifest entry: `pbs-apidoc` — proxmox-backup-server 4.2.6-1 (running 4.2.3)
|
|
6
|
+
* sha256 274ab9f6fc075aea, read on a PBS host from
|
|
7
|
+
* /usr/share/doc/proxmox-backup/html/api-viewer/apidoc.js
|
|
8
|
+
*
|
|
9
|
+
* 10 of this product's 144 POST/PUT endpoints are tabled across all areas: the ones
|
|
10
|
+
* this package writes to, named in its own source. Every other vendor write endpoint is UNTABLED
|
|
11
|
+
* and therefore unchecked at plan time.
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ A `patternSource` with no `pattern` beside it is a rule that could NOT be carried into a
|
|
14
|
+
* JavaScript RegExp faithfully (codegen/pattern.ts). It is recorded and NOT enforced.
|
|
15
|
+
*/
|
|
16
|
+
import type { EndpointConstraints } from '../../constraints.ts';
|
|
17
|
+
|
|
18
|
+
export const PBS_CONFIG_CONSTRAINTS: Readonly<Record<string, EndpointConstraints>> = {
|
|
19
|
+
"pbs:POST /config/datastore": {
|
|
20
|
+
"backing-device": {"pattern":"^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$","patternSource":"/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/","type":"string"},
|
|
21
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
22
|
+
"keep-daily": {"minimum":1,"type":"integer"},
|
|
23
|
+
"keep-hourly": {"minimum":1,"type":"integer"},
|
|
24
|
+
"keep-last": {"minimum":1,"type":"integer"},
|
|
25
|
+
"keep-monthly": {"minimum":1,"type":"integer"},
|
|
26
|
+
"keep-weekly": {"minimum":1,"type":"integer"},
|
|
27
|
+
"keep-yearly": {"minimum":1,"type":"integer"},
|
|
28
|
+
"name": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
29
|
+
"notification-mode": {"default":"notification-system","enum":["legacy-sendmail","notification-system"],"type":"string"},
|
|
30
|
+
"notify-user": {"maxLength":64,"minLength":3,"pattern":"^(?:[^\\s:/\\x00-\\x1f\\x7f]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[^\\s:/[:cntrl:]]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
31
|
+
"path": {"maxLength":4096,"minLength":1,"required":true,"type":"string"},
|
|
32
|
+
},
|
|
33
|
+
"pbs:POST /config/notifications/matchers": {
|
|
34
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
35
|
+
"mode": {"default":"all","enum":["all","any"],"type":"string"},
|
|
36
|
+
"name": {"maxLength":32,"minLength":2,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
37
|
+
"origin": {"enum":["user-created","builtin","modified-builtin"],"type":"string"},
|
|
38
|
+
},
|
|
39
|
+
"pbs:POST /config/prune": {
|
|
40
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
41
|
+
"id": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
42
|
+
"keep-daily": {"minimum":1,"type":"integer"},
|
|
43
|
+
"keep-hourly": {"minimum":1,"type":"integer"},
|
|
44
|
+
"keep-last": {"minimum":1,"type":"integer"},
|
|
45
|
+
"keep-monthly": {"minimum":1,"type":"integer"},
|
|
46
|
+
"keep-weekly": {"minimum":1,"type":"integer"},
|
|
47
|
+
"keep-yearly": {"minimum":1,"type":"integer"},
|
|
48
|
+
"max-depth": {"maximum":7,"minimum":0,"type":"integer"},
|
|
49
|
+
"ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
50
|
+
"schedule": {"required":true,"type":"string"},
|
|
51
|
+
"store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
52
|
+
},
|
|
53
|
+
"pbs:POST /config/sync": {
|
|
54
|
+
"active-encryption-key": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
55
|
+
"burst-in": {"maxLength":64,"minLength":1,"type":"string"},
|
|
56
|
+
"burst-out": {"maxLength":64,"minLength":1,"type":"string"},
|
|
57
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
58
|
+
"id": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
59
|
+
"max-depth": {"maximum":7,"minimum":0,"type":"integer"},
|
|
60
|
+
"ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
61
|
+
"owner": {"maxLength":64,"minLength":3,"pattern":"^(?:(?:[^\\s:/\\x00-\\x1f\\x7f]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)|(?:[^\\s:/\\x00-\\x1f\\x7f]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)!(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))$","patternSource":"/^(?:(?:[^\\s:/[:cntrl:]]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)|(?:[^\\s:/[:cntrl:]]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)!(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))$/","type":"string"},
|
|
62
|
+
"rate-in": {"maxLength":64,"minLength":1,"type":"string"},
|
|
63
|
+
"rate-out": {"maxLength":64,"minLength":1,"type":"string"},
|
|
64
|
+
"remote": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
65
|
+
"remote-ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
66
|
+
"remote-store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
67
|
+
"store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
68
|
+
"sync-direction": {"default":"pull","enum":["pull","push"],"type":"string"},
|
|
69
|
+
"transfer-last": {"minimum":1,"type":"integer"},
|
|
70
|
+
"worker-threads": {"default":"1","maximum":32,"minimum":1,"type":"integer"},
|
|
71
|
+
},
|
|
72
|
+
"pbs:POST /config/verify": {
|
|
73
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
74
|
+
"id": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
75
|
+
"max-depth": {"default":"7","maximum":7,"minimum":0,"type":"integer"},
|
|
76
|
+
"ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
77
|
+
"outdated-after": {"minimum":0,"type":"integer"},
|
|
78
|
+
"read-threads": {"default":"1","maximum":32,"minimum":1,"type":"integer"},
|
|
79
|
+
"store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","required":true,"type":"string"},
|
|
80
|
+
"verify-threads": {"default":"4","maximum":32,"minimum":1,"type":"integer"},
|
|
81
|
+
},
|
|
82
|
+
"pbs:PUT /config/datastore/{name}": {
|
|
83
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
84
|
+
"digest": {"pattern":"^[a-f0-9]{64}$","patternSource":"/^[a-f0-9]{64}$/","type":"string"},
|
|
85
|
+
"keep-daily": {"minimum":1,"type":"integer"},
|
|
86
|
+
"keep-hourly": {"minimum":1,"type":"integer"},
|
|
87
|
+
"keep-last": {"minimum":1,"type":"integer"},
|
|
88
|
+
"keep-monthly": {"minimum":1,"type":"integer"},
|
|
89
|
+
"keep-weekly": {"minimum":1,"type":"integer"},
|
|
90
|
+
"keep-yearly": {"minimum":1,"type":"integer"},
|
|
91
|
+
"notification-mode": {"default":"notification-system","enum":["legacy-sendmail","notification-system"],"type":"string"},
|
|
92
|
+
"notify-user": {"maxLength":64,"minLength":3,"pattern":"^(?:[^\\s:/\\x00-\\x1f\\x7f]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[^\\s:/[:cntrl:]]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
93
|
+
},
|
|
94
|
+
"pbs:PUT /config/notifications/matchers/{name}": {
|
|
95
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
96
|
+
"digest": {"pattern":"^[a-f0-9]{64}$","patternSource":"/^[a-f0-9]{64}$/","type":"string"},
|
|
97
|
+
"mode": {"default":"all","enum":["all","any"],"type":"string"},
|
|
98
|
+
},
|
|
99
|
+
"pbs:PUT /config/prune/{id}": {
|
|
100
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
101
|
+
"digest": {"pattern":"^[a-f0-9]{64}$","patternSource":"/^[a-f0-9]{64}$/","type":"string"},
|
|
102
|
+
"keep-daily": {"minimum":1,"type":"integer"},
|
|
103
|
+
"keep-hourly": {"minimum":1,"type":"integer"},
|
|
104
|
+
"keep-last": {"minimum":1,"type":"integer"},
|
|
105
|
+
"keep-monthly": {"minimum":1,"type":"integer"},
|
|
106
|
+
"keep-weekly": {"minimum":1,"type":"integer"},
|
|
107
|
+
"keep-yearly": {"minimum":1,"type":"integer"},
|
|
108
|
+
"max-depth": {"maximum":7,"minimum":0,"type":"integer"},
|
|
109
|
+
"ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
110
|
+
"store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
111
|
+
},
|
|
112
|
+
"pbs:PUT /config/sync/{id}": {
|
|
113
|
+
"active-encryption-key": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
114
|
+
"burst-in": {"maxLength":64,"minLength":1,"type":"string"},
|
|
115
|
+
"burst-out": {"maxLength":64,"minLength":1,"type":"string"},
|
|
116
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
117
|
+
"digest": {"pattern":"^[a-f0-9]{64}$","patternSource":"/^[a-f0-9]{64}$/","type":"string"},
|
|
118
|
+
"max-depth": {"maximum":7,"minimum":0,"type":"integer"},
|
|
119
|
+
"ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
120
|
+
"owner": {"maxLength":64,"minLength":3,"pattern":"^(?:(?:[^\\s:/\\x00-\\x1f\\x7f]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)|(?:[^\\s:/\\x00-\\x1f\\x7f]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)!(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))$","patternSource":"/^(?:(?:[^\\s:/[:cntrl:]]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)|(?:[^\\s:/[:cntrl:]]+)@(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)!(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))$/","type":"string"},
|
|
121
|
+
"rate-in": {"maxLength":64,"minLength":1,"type":"string"},
|
|
122
|
+
"rate-out": {"maxLength":64,"minLength":1,"type":"string"},
|
|
123
|
+
"remote": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
124
|
+
"remote-ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
125
|
+
"remote-store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
126
|
+
"store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
127
|
+
"sync-direction": {"default":"pull","enum":["pull","push"],"type":"string"},
|
|
128
|
+
"transfer-last": {"minimum":1,"type":"integer"},
|
|
129
|
+
"worker-threads": {"default":"1","maximum":32,"minimum":1,"type":"integer"},
|
|
130
|
+
},
|
|
131
|
+
"pbs:PUT /config/verify/{id}": {
|
|
132
|
+
"comment": {"maxLength":128,"pattern":"^[^\\x00-\\x1f\\x7f]*$","patternSource":"/^[[:^cntrl:]]*$/","type":"string"},
|
|
133
|
+
"digest": {"pattern":"^[a-f0-9]{64}$","patternSource":"/^[a-f0-9]{64}$/","type":"string"},
|
|
134
|
+
"max-depth": {"default":"7","maximum":7,"minimum":0,"type":"integer"},
|
|
135
|
+
"ns": {"maxLength":256,"pattern":"^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$","patternSource":"/^(?:(?:(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)/){0,7}(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*))?$/","type":"string"},
|
|
136
|
+
"outdated-after": {"minimum":0,"type":"integer"},
|
|
137
|
+
"read-threads": {"default":"1","maximum":32,"minimum":1,"type":"integer"},
|
|
138
|
+
"store": {"maxLength":32,"minLength":3,"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$","patternSource":"/^(?:[A-Za-z0-9_][A-Za-z0-9._\\-]*)$/","type":"string"},
|
|
139
|
+
"verify-threads": {"default":"4","maximum":32,"minimum":1,"type":"integer"},
|
|
140
|
+
},
|
|
141
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated pve-manager parameter constraints for `/access` — DO NOT EDIT BY HAND.
|
|
3
|
+
*
|
|
4
|
+
* Run: bun codegen/constraints.ts
|
|
5
|
+
* Manifest entry: `pve-apidoc` — pve-manager 9.2.11/f6997e698c7933ea
|
|
6
|
+
* sha256 9def8f13611184ee, read on a PVE cluster node from
|
|
7
|
+
* /usr/share/pve-docs/api-viewer/apidoc.js
|
|
8
|
+
*
|
|
9
|
+
* 27 of this product's 258 POST/PUT endpoints are tabled across all areas: the ones
|
|
10
|
+
* this package writes to, named in its own source. Every other vendor write endpoint is UNTABLED
|
|
11
|
+
* and therefore unchecked at plan time.
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ A `patternSource` with no `pattern` beside it is a rule that could NOT be carried into a
|
|
14
|
+
* JavaScript RegExp faithfully (codegen/pattern.ts). It is recorded and NOT enforced.
|
|
15
|
+
*/
|
|
16
|
+
import type { EndpointConstraints } from '../../constraints.ts';
|
|
17
|
+
|
|
18
|
+
export const PVE_ACCESS_CONSTRAINTS: Readonly<Record<string, EndpointConstraints>> = {
|
|
19
|
+
"pve:POST /access/groups": {
|
|
20
|
+
"groupid": {"format":"pve-groupid","required":true,"type":"string"},
|
|
21
|
+
},
|
|
22
|
+
"pve:POST /access/roles": {
|
|
23
|
+
"privs": {"format":"pve-priv-list","type":"string"},
|
|
24
|
+
"roleid": {"format":"pve-roleid","required":true,"type":"string"},
|
|
25
|
+
},
|
|
26
|
+
"pve:POST /access/users": {
|
|
27
|
+
"comment": {"maxLength":2048,"type":"string"},
|
|
28
|
+
"email": {"format":"email-opt","maxLength":254,"type":"string"},
|
|
29
|
+
"expire": {"minimum":0,"type":"integer"},
|
|
30
|
+
"firstname": {"maxLength":1024,"type":"string"},
|
|
31
|
+
"groups": {"format":"pve-groupid-list","type":"string"},
|
|
32
|
+
"keys": {"pattern":"[0-9a-zA-Z!=]{0,4096}","patternSource":"[0-9a-zA-Z!=]{0,4096}","type":"string"},
|
|
33
|
+
"lastname": {"maxLength":1024,"type":"string"},
|
|
34
|
+
"password": {"maxLength":64,"minLength":8,"type":"string"},
|
|
35
|
+
"userid": {"format":"pve-userid","maxLength":64,"required":true,"type":"string"},
|
|
36
|
+
},
|
|
37
|
+
"pve:PUT /access/acl": {
|
|
38
|
+
"groups": {"format":"pve-groupid-list","type":"string"},
|
|
39
|
+
"path": {"required":true,"type":"string"},
|
|
40
|
+
"roles": {"format":"pve-roleid-list","required":true,"type":"string"},
|
|
41
|
+
"tokens": {"format":"pve-tokenid-list","type":"string"},
|
|
42
|
+
"users": {"format":"pve-userid-list","type":"string"},
|
|
43
|
+
},
|
|
44
|
+
"pve:PUT /access/groups/{groupid}": {},
|
|
45
|
+
"pve:PUT /access/roles/{roleid}": {
|
|
46
|
+
"privs": {"format":"pve-priv-list","type":"string"},
|
|
47
|
+
},
|
|
48
|
+
"pve:PUT /access/users/{userid}": {
|
|
49
|
+
"comment": {"maxLength":2048,"type":"string"},
|
|
50
|
+
"email": {"format":"email-opt","maxLength":254,"type":"string"},
|
|
51
|
+
"expire": {"minimum":0,"type":"integer"},
|
|
52
|
+
"firstname": {"maxLength":1024,"type":"string"},
|
|
53
|
+
"groups": {"format":"pve-groupid-list","type":"string"},
|
|
54
|
+
"keys": {"pattern":"[0-9a-zA-Z!=]{0,4096}","patternSource":"[0-9a-zA-Z!=]{0,4096}","type":"string"},
|
|
55
|
+
"lastname": {"maxLength":1024,"type":"string"},
|
|
56
|
+
},
|
|
57
|
+
};
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated pve-manager parameter constraints for `/cluster` — DO NOT EDIT BY HAND.
|
|
3
|
+
*
|
|
4
|
+
* Run: bun codegen/constraints.ts
|
|
5
|
+
* Manifest entry: `pve-apidoc` — pve-manager 9.2.11/f6997e698c7933ea
|
|
6
|
+
* sha256 9def8f13611184ee, read on a PVE cluster node from
|
|
7
|
+
* /usr/share/pve-docs/api-viewer/apidoc.js
|
|
8
|
+
*
|
|
9
|
+
* 27 of this product's 258 POST/PUT endpoints are tabled across all areas: the ones
|
|
10
|
+
* this package writes to, named in its own source. Every other vendor write endpoint is UNTABLED
|
|
11
|
+
* and therefore unchecked at plan time.
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ A `patternSource` with no `pattern` beside it is a rule that could NOT be carried into a
|
|
14
|
+
* JavaScript RegExp faithfully (codegen/pattern.ts). It is recorded and NOT enforced.
|
|
15
|
+
*/
|
|
16
|
+
import type { EndpointConstraints } from '../../constraints.ts';
|
|
17
|
+
|
|
18
|
+
export const PVE_CLUSTER_CONSTRAINTS: Readonly<Record<string, EndpointConstraints>> = {
|
|
19
|
+
"pve:POST /cluster/backup": {
|
|
20
|
+
"bwlimit": {"default":"0","minimum":0,"type":"integer"},
|
|
21
|
+
"comment": {"maxLength":512,"type":"string"},
|
|
22
|
+
"compress": {"default":"0","enum":["0","1","gzip","lzo","zstd"],"type":"string"},
|
|
23
|
+
"dow": {"default":"mon,tue,wed,thu,fri,sat,sun","format":"pve-day-of-week-list","type":"string"},
|
|
24
|
+
"exclude": {"format":"pve-vmid-list","type":"string"},
|
|
25
|
+
"fleecing": {"format":"backup-fleecing","type":"string"},
|
|
26
|
+
"id": {"format":"pve-configid","type":"string"},
|
|
27
|
+
"ionice": {"default":"7","maximum":8,"minimum":0,"type":"integer"},
|
|
28
|
+
"lockwait": {"default":"180","minimum":0,"type":"integer"},
|
|
29
|
+
"mailnotification": {"default":"always","enum":["always","failure"],"type":"string"},
|
|
30
|
+
"mailto": {"format":"email-or-username-list","type":"string"},
|
|
31
|
+
"mode": {"default":"snapshot","enum":["snapshot","suspend","stop"],"type":"string"},
|
|
32
|
+
"node": {"format":"pve-node","type":"string"},
|
|
33
|
+
"notes-template": {"maxLength":1024,"type":"string"},
|
|
34
|
+
"notification-mode": {"default":"auto","enum":["auto","legacy-sendmail","notification-system"],"type":"string"},
|
|
35
|
+
"pbs-change-detection-mode": {"enum":["legacy","data","metadata"],"type":"string"},
|
|
36
|
+
"performance": {"format":"backup-performance","type":"string"},
|
|
37
|
+
"prune-backups": {"default":"keep-all=1","format":"prune-backups","type":"string"},
|
|
38
|
+
"schedule": {"format":"pve-calendar-event","maxLength":128,"type":"string"},
|
|
39
|
+
"starttime": {"pattern":"\\d{1,2}:\\d{1,2}","patternSource":"\\d{1,2}:\\d{1,2}","type":"string"},
|
|
40
|
+
"stopwait": {"default":"10","minimum":0,"type":"integer"},
|
|
41
|
+
"storage": {"format":"pve-storage-id","type":"string"},
|
|
42
|
+
"vmid": {"format":"pve-vmid-list","type":"string"},
|
|
43
|
+
},
|
|
44
|
+
"pve:POST /cluster/firewall/aliases": {
|
|
45
|
+
"cidr": {"format":"IPorCIDR","required":true,"type":"string"},
|
|
46
|
+
"comment": {"format":"pve-fw-comment-spec","type":"string"},
|
|
47
|
+
"name": {"maxLength":64,"minLength":2,"pattern":"[A-Za-z][A-Za-z0-9\\-\\_]+","patternSource":"[A-Za-z][A-Za-z0-9\\-\\_]+","required":true,"type":"string"},
|
|
48
|
+
},
|
|
49
|
+
"pve:POST /cluster/ha/resources": {
|
|
50
|
+
"comment": {"maxLength":4096,"type":"string"},
|
|
51
|
+
"group": {"format":"pve-configid","type":"string"},
|
|
52
|
+
"max_relocate": {"default":"1","minimum":0,"type":"integer"},
|
|
53
|
+
"max_restart": {"default":"1","minimum":0,"type":"integer"},
|
|
54
|
+
"sid": {"format":"pve-ha-resource-or-vm-id","required":true,"type":"string"},
|
|
55
|
+
"state": {"default":"started","enum":["started","stopped","enabled","disabled","ignored"],"type":"string"},
|
|
56
|
+
"type": {"enum":["ct","vm"],"type":"string"},
|
|
57
|
+
},
|
|
58
|
+
"pve:POST /cluster/ha/rules": {},
|
|
59
|
+
"pve:POST /cluster/notifications/matchers": {
|
|
60
|
+
"mode": {"default":"all","enum":["all","any"],"type":"string"},
|
|
61
|
+
"name": {"format":"pve-configid","required":true,"type":"string"},
|
|
62
|
+
},
|
|
63
|
+
"pve:POST /cluster/replication": {
|
|
64
|
+
"comment": {"maxLength":4096,"type":"string"},
|
|
65
|
+
"id": {"format":"pve-replication-job-id","pattern":"[1-9][0-9]{2,8}-\\d{1,9}","patternSource":"[1-9][0-9]{2,8}-\\d{1,9}","required":true,"type":"string"},
|
|
66
|
+
"rate": {"minimum":1,"type":"number"},
|
|
67
|
+
"remove_job": {"enum":["local","full"],"type":"string"},
|
|
68
|
+
"schedule": {"default":"*/15","format":"pve-calendar-event","maxLength":128,"type":"string"},
|
|
69
|
+
"source": {"format":"pve-node","type":"string"},
|
|
70
|
+
"target": {"format":"pve-node","required":true,"type":"string"},
|
|
71
|
+
"type": {"enum":["local"],"required":true,"type":"string"},
|
|
72
|
+
},
|
|
73
|
+
"pve:POST /cluster/sdn/vnets": {
|
|
74
|
+
"alias": {"maxLength":256,"patternSource":"(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})","type":"string"},
|
|
75
|
+
"tag": {"maximum":16777215,"minimum":1,"type":"integer"},
|
|
76
|
+
"type": {"enum":["vnet"],"type":"string"},
|
|
77
|
+
"vnet": {"maxLength":8,"minLength":2,"pattern":"[a-zA-Z][a-zA-Z0-9]*[a-zA-Z0-9]","patternSource":"[a-zA-Z][a-zA-Z0-9]*[a-zA-Z0-9]","required":true,"type":"string"},
|
|
78
|
+
"zone": {"required":true,"type":"string"},
|
|
79
|
+
},
|
|
80
|
+
"pve:POST /cluster/sdn/zones": {
|
|
81
|
+
"dhcp": {"enum":["dnsmasq"],"type":"string"},
|
|
82
|
+
"dnszone": {"format":"dns-name","type":"string"},
|
|
83
|
+
"exitnodes": {"format":"pve-node-list","type":"string"},
|
|
84
|
+
"exitnodes-primary": {"format":"pve-node","type":"string"},
|
|
85
|
+
"fabric": {"format":"pve-sdn-fabric-id","type":"string"},
|
|
86
|
+
"mac": {"format":"mac-addr","type":"string"},
|
|
87
|
+
"nodes": {"format":"pve-node-list","type":"string"},
|
|
88
|
+
"peers": {"format":"ip-list","type":"string"},
|
|
89
|
+
"rt-import": {"format":"pve-sdn-bgp-rt-list","type":"string"},
|
|
90
|
+
"tag": {"minimum":0,"type":"integer"},
|
|
91
|
+
"type": {"enum":["evpn","faucet","qinq","simple","vlan","vxlan"],"format":"pve-configid","required":true,"type":"string"},
|
|
92
|
+
"vlan-protocol": {"default":"802.1q","enum":["802.1q","802.1ad"],"type":"string"},
|
|
93
|
+
"vrf-vxlan": {"maximum":16777215,"minimum":1,"type":"integer"},
|
|
94
|
+
"vxlan-port": {"default":"4789","maximum":65536,"minimum":1,"type":"integer"},
|
|
95
|
+
"zone": {"maxLength":8,"minLength":2,"pattern":"[a-zA-Z][a-zA-Z0-9]*[a-zA-Z0-9]","patternSource":"[a-zA-Z][a-zA-Z0-9]*[a-zA-Z0-9]","required":true,"type":"string"},
|
|
96
|
+
},
|
|
97
|
+
"pve:PUT /cluster/backup/{id}": {
|
|
98
|
+
"bwlimit": {"default":"0","minimum":0,"type":"integer"},
|
|
99
|
+
"comment": {"maxLength":512,"type":"string"},
|
|
100
|
+
"compress": {"default":"0","enum":["0","1","gzip","lzo","zstd"],"type":"string"},
|
|
101
|
+
"delete": {"format":"pve-configid-list","type":"string"},
|
|
102
|
+
"dow": {"format":"pve-day-of-week-list","type":"string"},
|
|
103
|
+
"exclude": {"format":"pve-vmid-list","type":"string"},
|
|
104
|
+
"fleecing": {"format":"backup-fleecing","type":"string"},
|
|
105
|
+
"ionice": {"default":"7","maximum":8,"minimum":0,"type":"integer"},
|
|
106
|
+
"lockwait": {"default":"180","minimum":0,"type":"integer"},
|
|
107
|
+
"mailnotification": {"default":"always","enum":["always","failure"],"type":"string"},
|
|
108
|
+
"mailto": {"format":"email-or-username-list","type":"string"},
|
|
109
|
+
"mode": {"default":"snapshot","enum":["snapshot","suspend","stop"],"type":"string"},
|
|
110
|
+
"node": {"format":"pve-node","type":"string"},
|
|
111
|
+
"notes-template": {"maxLength":1024,"type":"string"},
|
|
112
|
+
"notification-mode": {"default":"auto","enum":["auto","legacy-sendmail","notification-system"],"type":"string"},
|
|
113
|
+
"pbs-change-detection-mode": {"enum":["legacy","data","metadata"],"type":"string"},
|
|
114
|
+
"performance": {"format":"backup-performance","type":"string"},
|
|
115
|
+
"prune-backups": {"default":"keep-all=1","format":"prune-backups","type":"string"},
|
|
116
|
+
"schedule": {"format":"pve-calendar-event","maxLength":128,"type":"string"},
|
|
117
|
+
"starttime": {"pattern":"\\d{1,2}:\\d{1,2}","patternSource":"\\d{1,2}:\\d{1,2}","type":"string"},
|
|
118
|
+
"stopwait": {"default":"10","minimum":0,"type":"integer"},
|
|
119
|
+
"storage": {"format":"pve-storage-id","type":"string"},
|
|
120
|
+
"vmid": {"format":"pve-vmid-list","type":"string"},
|
|
121
|
+
},
|
|
122
|
+
"pve:PUT /cluster/firewall/aliases/{name}": {
|
|
123
|
+
"cidr": {"format":"IPorCIDR","required":true,"type":"string"},
|
|
124
|
+
"comment": {"format":"pve-fw-comment-spec","type":"string"},
|
|
125
|
+
"digest": {"maxLength":64,"type":"string"},
|
|
126
|
+
"rename": {"maxLength":64,"minLength":2,"pattern":"[A-Za-z][A-Za-z0-9\\-\\_]+","patternSource":"[A-Za-z][A-Za-z0-9\\-\\_]+","type":"string"},
|
|
127
|
+
},
|
|
128
|
+
"pve:PUT /cluster/ha/resources/{sid}": {
|
|
129
|
+
"comment": {"maxLength":4096,"type":"string"},
|
|
130
|
+
"delete": {"format":"pve-configid-list","maxLength":4096,"type":"string"},
|
|
131
|
+
"digest": {"maxLength":64,"type":"string"},
|
|
132
|
+
"group": {"format":"pve-configid","type":"string"},
|
|
133
|
+
"max_relocate": {"default":"1","minimum":0,"type":"integer"},
|
|
134
|
+
"max_restart": {"default":"1","minimum":0,"type":"integer"},
|
|
135
|
+
"state": {"default":"started","enum":["started","stopped","enabled","disabled","ignored"],"type":"string"},
|
|
136
|
+
},
|
|
137
|
+
"pve:PUT /cluster/ha/rules/{rule}": {},
|
|
138
|
+
"pve:PUT /cluster/notifications/matchers/{name}": {
|
|
139
|
+
"digest": {"maxLength":64,"type":"string"},
|
|
140
|
+
"mode": {"default":"all","enum":["all","any"],"type":"string"},
|
|
141
|
+
},
|
|
142
|
+
"pve:PUT /cluster/replication/{id}": {
|
|
143
|
+
"comment": {"maxLength":4096,"type":"string"},
|
|
144
|
+
"delete": {"format":"pve-configid-list","maxLength":4096,"type":"string"},
|
|
145
|
+
"digest": {"maxLength":64,"type":"string"},
|
|
146
|
+
"rate": {"minimum":1,"type":"number"},
|
|
147
|
+
"remove_job": {"enum":["local","full"],"type":"string"},
|
|
148
|
+
"schedule": {"default":"*/15","format":"pve-calendar-event","maxLength":128,"type":"string"},
|
|
149
|
+
"source": {"format":"pve-node","type":"string"},
|
|
150
|
+
},
|
|
151
|
+
"pve:PUT /cluster/sdn/vnets/{vnet}": {
|
|
152
|
+
"alias": {"maxLength":256,"patternSource":"(?^i:[\\(\\)-_.\\w\\d\\s]{0,256})","type":"string"},
|
|
153
|
+
"delete": {"format":"pve-configid-list","maxLength":4096,"type":"string"},
|
|
154
|
+
"digest": {"maxLength":64,"type":"string"},
|
|
155
|
+
"tag": {"maximum":16777215,"minimum":1,"type":"integer"},
|
|
156
|
+
},
|
|
157
|
+
"pve:PUT /cluster/sdn/zones/{zone}": {
|
|
158
|
+
"delete": {"format":"pve-configid-list","maxLength":4096,"type":"string"},
|
|
159
|
+
"dhcp": {"enum":["dnsmasq"],"type":"string"},
|
|
160
|
+
"digest": {"maxLength":64,"type":"string"},
|
|
161
|
+
"dnszone": {"format":"dns-name","type":"string"},
|
|
162
|
+
"exitnodes": {"format":"pve-node-list","type":"string"},
|
|
163
|
+
"exitnodes-primary": {"format":"pve-node","type":"string"},
|
|
164
|
+
"fabric": {"format":"pve-sdn-fabric-id","type":"string"},
|
|
165
|
+
"mac": {"format":"mac-addr","type":"string"},
|
|
166
|
+
"nodes": {"format":"pve-node-list","type":"string"},
|
|
167
|
+
"peers": {"format":"ip-list","type":"string"},
|
|
168
|
+
"rt-import": {"format":"pve-sdn-bgp-rt-list","type":"string"},
|
|
169
|
+
"tag": {"minimum":0,"type":"integer"},
|
|
170
|
+
"vlan-protocol": {"default":"802.1q","enum":["802.1q","802.1ad"],"type":"string"},
|
|
171
|
+
"vrf-vxlan": {"maximum":16777215,"minimum":1,"type":"integer"},
|
|
172
|
+
"vxlan-port": {"default":"4789","maximum":65536,"minimum":1,"type":"integer"},
|
|
173
|
+
},
|
|
174
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated pve-manager parameter constraints for `/pools` — DO NOT EDIT BY HAND.
|
|
3
|
+
*
|
|
4
|
+
* Run: bun codegen/constraints.ts
|
|
5
|
+
* Manifest entry: `pve-apidoc` — pve-manager 9.2.11/f6997e698c7933ea
|
|
6
|
+
* sha256 9def8f13611184ee, read on a PVE cluster node from
|
|
7
|
+
* /usr/share/pve-docs/api-viewer/apidoc.js
|
|
8
|
+
*
|
|
9
|
+
* 27 of this product's 258 POST/PUT endpoints are tabled across all areas: the ones
|
|
10
|
+
* this package writes to, named in its own source. Every other vendor write endpoint is UNTABLED
|
|
11
|
+
* and therefore unchecked at plan time.
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ A `patternSource` with no `pattern` beside it is a rule that could NOT be carried into a
|
|
14
|
+
* JavaScript RegExp faithfully (codegen/pattern.ts). It is recorded and NOT enforced.
|
|
15
|
+
*/
|
|
16
|
+
import type { EndpointConstraints } from '../../constraints.ts';
|
|
17
|
+
|
|
18
|
+
export const PVE_POOLS_CONSTRAINTS: Readonly<Record<string, EndpointConstraints>> = {
|
|
19
|
+
"pve:POST /pools": {
|
|
20
|
+
"poolid": {"format":"pve-poolid","required":true,"type":"string"},
|
|
21
|
+
},
|
|
22
|
+
"pve:PUT /pools/{poolid}": {
|
|
23
|
+
"storage": {"format":"pve-storage-id-list","type":"string"},
|
|
24
|
+
"vms": {"format":"pve-vmid-list","type":"string"},
|
|
25
|
+
},
|
|
26
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated pve-manager parameter constraints for `/storage` — DO NOT EDIT BY HAND.
|
|
3
|
+
*
|
|
4
|
+
* Run: bun codegen/constraints.ts
|
|
5
|
+
* Manifest entry: `pve-apidoc` — pve-manager 9.2.11/f6997e698c7933ea
|
|
6
|
+
* sha256 9def8f13611184ee, read on a PVE cluster node from
|
|
7
|
+
* /usr/share/pve-docs/api-viewer/apidoc.js
|
|
8
|
+
*
|
|
9
|
+
* 27 of this product's 258 POST/PUT endpoints are tabled across all areas: the ones
|
|
10
|
+
* this package writes to, named in its own source. Every other vendor write endpoint is UNTABLED
|
|
11
|
+
* and therefore unchecked at plan time.
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ A `patternSource` with no `pattern` beside it is a rule that could NOT be carried into a
|
|
14
|
+
* JavaScript RegExp faithfully (codegen/pattern.ts). It is recorded and NOT enforced.
|
|
15
|
+
*/
|
|
16
|
+
import type { EndpointConstraints } from '../../constraints.ts';
|
|
17
|
+
|
|
18
|
+
export const PVE_STORAGE_CONSTRAINTS: Readonly<Record<string, EndpointConstraints>> = {
|
|
19
|
+
"pve:POST /storage": {
|
|
20
|
+
"base": {"format":"pve-volume-id","type":"string"},
|
|
21
|
+
"blocksize": {"format":"pve-storage-zfs-blocksize","type":"string"},
|
|
22
|
+
"content": {"format":"pve-storage-content-list","type":"string"},
|
|
23
|
+
"content-dirs": {"format":"pve-dir-override-list","type":"string"},
|
|
24
|
+
"domain": {"maxLength":256,"type":"string"},
|
|
25
|
+
"export": {"format":"pve-storage-path","type":"string"},
|
|
26
|
+
"fingerprint": {"pattern":"([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}","patternSource":"([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}","type":"string"},
|
|
27
|
+
"format": {"enum":["raw","qcow2","subvol","vmdk"],"type":"string"},
|
|
28
|
+
"fs-name": {"format":"pve-configid","type":"string"},
|
|
29
|
+
"max-protected-backups": {"default":"Unlimited for users with Datastore.Allocate privilege, 5 for other users","minimum":-1,"type":"integer"},
|
|
30
|
+
"monhost": {"format":"pve-storage-portal-dns-list","type":"string"},
|
|
31
|
+
"mountpoint": {"format":"pve-storage-path","type":"string"},
|
|
32
|
+
"nodes": {"format":"pve-node-list","type":"string"},
|
|
33
|
+
"options": {"format":"pve-storage-options","type":"string"},
|
|
34
|
+
"password": {"maxLength":256,"type":"string"},
|
|
35
|
+
"path": {"format":"pve-storage-path","type":"string"},
|
|
36
|
+
"port": {"maximum":65535,"minimum":1,"type":"integer"},
|
|
37
|
+
"portal": {"format":"pve-storage-portal-dns","type":"string"},
|
|
38
|
+
"preallocation": {"default":"metadata","enum":["off","metadata","falloc","full"],"type":"string"},
|
|
39
|
+
"prune-backups": {"format":"prune-backups","type":"string"},
|
|
40
|
+
"saferemove-stepsize": {"default":"32","enum":["1","2","4","8","16","32"],"type":"integer"},
|
|
41
|
+
"server": {"format":"pve-storage-server","type":"string"},
|
|
42
|
+
"smbversion": {"default":"default","enum":["default","2.0","2.1","3","3.0","3.11"],"type":"string"},
|
|
43
|
+
"storage": {"format":"pve-storage-id","required":true,"type":"string"},
|
|
44
|
+
"subdir": {"format":"pve-storage-path","type":"string"},
|
|
45
|
+
"thinpool": {"format":"pve-storage-vgname","type":"string"},
|
|
46
|
+
"type": {"enum":["btrfs","cephfs","cifs","dir","esxi","iscsi","iscsidirect","lvm","lvmthin","nfs","pbs","rbd","zfs","zfspool"],"required":true,"type":"string"},
|
|
47
|
+
"vgname": {"format":"pve-storage-vgname","type":"string"},
|
|
48
|
+
"zfs-base-path": {"format":"pve-storage-path","type":"string"},
|
|
49
|
+
},
|
|
50
|
+
"pve:PUT /storage/{storage}": {
|
|
51
|
+
"blocksize": {"format":"pve-storage-zfs-blocksize","type":"string"},
|
|
52
|
+
"content": {"format":"pve-storage-content-list","type":"string"},
|
|
53
|
+
"content-dirs": {"format":"pve-dir-override-list","type":"string"},
|
|
54
|
+
"delete": {"format":"pve-configid-list","maxLength":4096,"type":"string"},
|
|
55
|
+
"digest": {"maxLength":64,"type":"string"},
|
|
56
|
+
"domain": {"maxLength":256,"type":"string"},
|
|
57
|
+
"fingerprint": {"pattern":"([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}","patternSource":"([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}","type":"string"},
|
|
58
|
+
"format": {"enum":["raw","qcow2","subvol","vmdk"],"type":"string"},
|
|
59
|
+
"fs-name": {"format":"pve-configid","type":"string"},
|
|
60
|
+
"max-protected-backups": {"default":"Unlimited for users with Datastore.Allocate privilege, 5 for other users","minimum":-1,"type":"integer"},
|
|
61
|
+
"monhost": {"format":"pve-storage-portal-dns-list","type":"string"},
|
|
62
|
+
"mountpoint": {"format":"pve-storage-path","type":"string"},
|
|
63
|
+
"nodes": {"format":"pve-node-list","type":"string"},
|
|
64
|
+
"options": {"format":"pve-storage-options","type":"string"},
|
|
65
|
+
"password": {"maxLength":256,"type":"string"},
|
|
66
|
+
"port": {"maximum":65535,"minimum":1,"type":"integer"},
|
|
67
|
+
"preallocation": {"default":"metadata","enum":["off","metadata","falloc","full"],"type":"string"},
|
|
68
|
+
"prune-backups": {"format":"prune-backups","type":"string"},
|
|
69
|
+
"saferemove-stepsize": {"default":"32","enum":["1","2","4","8","16","32"],"type":"integer"},
|
|
70
|
+
"server": {"format":"pve-storage-server","type":"string"},
|
|
71
|
+
"smbversion": {"default":"default","enum":["default","2.0","2.1","3","3.0","3.11"],"type":"string"},
|
|
72
|
+
"subdir": {"format":"pve-storage-path","type":"string"},
|
|
73
|
+
"zfs-base-path": {"format":"pve-storage-path","type":"string"},
|
|
74
|
+
},
|
|
75
|
+
};
|
package/src/proxmox/group.ts
CHANGED
|
@@ -176,6 +176,8 @@ const handlers = pveHandlers<GroupProps, GroupAttributes>({
|
|
|
176
176
|
* `resource.ts` states once in the ⛔ on adoption: a field deliberately out of `matches` is a
|
|
177
177
|
* field this resource does not manage.
|
|
178
178
|
*/
|
|
179
|
+
/** The vendor rules these forms are checked against at plan time — resource-spec.ts. */
|
|
180
|
+
endpoint: { create: 'pve:POST /access/groups', update: 'pve:PUT /access/groups/{groupid}' },
|
|
179
181
|
matches: (attributes, props) => attributes.comment === storedComment(props.comment),
|
|
180
182
|
path: (props) => `access/groups/${props.groupid}`,
|
|
181
183
|
/**
|
|
@@ -137,6 +137,11 @@ const handlers = pveHandlers<HaResourceProps, HaResourceAttributes>({
|
|
|
137
137
|
* ⚠️ `sid` AND `type` ARE NOT COMPARED EITHER: sid is the path, so a change there is a different
|
|
138
138
|
* object, and type is create-only — it is read back from the prefix, never edited.
|
|
139
139
|
*/
|
|
140
|
+
/** The vendor rules these forms are checked against at plan time — resource-spec.ts. */
|
|
141
|
+
endpoint: {
|
|
142
|
+
create: 'pve:POST /cluster/ha/resources',
|
|
143
|
+
update: 'pve:PUT /cluster/ha/resources/{sid}',
|
|
144
|
+
},
|
|
140
145
|
matches: (attributes, props) =>
|
|
141
146
|
attributes.state === (props.state ?? 'started') &&
|
|
142
147
|
attributes.comment === (props.comment ?? '') &&
|
package/src/proxmox/ha-rule.ts
CHANGED
|
@@ -206,6 +206,8 @@ const handlers = pveHandlers<HaRuleProps, HaRuleAttributes>({
|
|
|
206
206
|
* ⚠️ THE COMMENT IS COMPARED AS PVE WILL STORE IT, not as it was declared — `commentText` and
|
|
207
207
|
* its ⛔ explain why a `%XX` in a comment does not survive the round trip.
|
|
208
208
|
*/
|
|
209
|
+
/** The vendor rules these forms are checked against at plan time — resource-spec.ts. */
|
|
210
|
+
endpoint: { create: 'pve:POST /cluster/ha/rules', update: 'pve:PUT /cluster/ha/rules/{rule}' },
|
|
209
211
|
matches: (attributes, props) =>
|
|
210
212
|
attributes.resources === csv(props.resources) &&
|
|
211
213
|
attributes.affinity === props.affinity &&
|
package/src/proxmox/index.ts
CHANGED
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
* ★ THE NOTIFICATION FAMILIES JOINED 2026-09-22: PBS targets and matchers, the PVE matcher, the
|
|
19
19
|
* `FromEnv` shape their write-only values take, and the Alertmanager body template
|
|
20
20
|
* (docs/pbs-notifications.md; the template alone: docs/pbs-alertmanager-body.md).
|
|
21
|
+
* ★ THE VENDOR CONSTRAINT READER JOINED 2026-09-22 (codegen/README.md). `constraintsFor` and
|
|
22
|
+
* `violations` are exported so a CONSUMING stack can assert its own declarations offline — the
|
|
23
|
+
* `deploy:pbs` that failed on a 128-character comment had no way to ask that question.
|
|
21
24
|
* ★ Anything else unlisted is still reachable by path if you genuinely need
|
|
22
25
|
* it — that is a deliberate, visible act rather than an accident of barrelling.
|
|
23
26
|
*/
|
|
@@ -30,6 +33,13 @@ export { ProxmoxCephFlagProvider } from './ceph-flag.ts';
|
|
|
30
33
|
export { ProxmoxCephFsProvider } from './ceph-fs.ts';
|
|
31
34
|
export { ProxmoxCephOsdProvider } from './ceph-osd.ts';
|
|
32
35
|
export { ProxmoxCephPool, ProxmoxCephPoolProvider } from './ceph-pool.ts';
|
|
36
|
+
export { constraintsFor, formViolations } from './constraint-guard.ts';
|
|
37
|
+
export {
|
|
38
|
+
type EndpointConstraints,
|
|
39
|
+
type EndpointKey,
|
|
40
|
+
type ParamConstraint,
|
|
41
|
+
violations,
|
|
42
|
+
} from './constraints.ts';
|
|
33
43
|
export { ProxmoxFirewallAliasProvider } from './firewall-alias.ts';
|
|
34
44
|
export { ProxmoxGroup, ProxmoxGroupProvider } from './group.ts';
|
|
35
45
|
export { ProxmoxHaResource, ProxmoxHaResourceProvider } from './ha-resource.ts';
|
|
@@ -63,7 +73,9 @@ export { ProxmoxPool, ProxmoxPoolProvider } from './pool.ts';
|
|
|
63
73
|
export {
|
|
64
74
|
PROVISION_DEFAULTS,
|
|
65
75
|
PROVISION_PRIVILEGES,
|
|
76
|
+
type CoreProvisionNames,
|
|
66
77
|
type ProvisionBaseline,
|
|
78
|
+
type ProvisionComments,
|
|
67
79
|
type ProvisionLane,
|
|
68
80
|
type ProvisionNames,
|
|
69
81
|
type ResolvedProvisionNames,
|