@homeflare/distilled-proxmox 0.2.0 → 0.3.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/delete-query-binding.test.d.ts +2 -0
- package/dist/delete-query-binding.test.d.ts.map +1 -0
- package/dist/delete-query-binding.test.js +49 -0
- package/dist/delete-query-binding.test.js.map +1 -0
- package/dist/errors.d.ts +12 -5
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +12 -5
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/not-found-errors.test.d.ts +2 -0
- package/dist/not-found-errors.test.d.ts.map +1 -0
- package/dist/not-found-errors.test.js +59 -0
- package/dist/not-found-errors.test.js.map +1 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +9 -7
- package/dist/protocol.js.map +1 -1
- package/dist/services/access.d.ts +22 -2
- package/dist/services/access.d.ts.map +1 -1
- package/dist/services/access.js +17 -9
- package/dist/services/access.js.map +1 -1
- package/dist/services/cluster.d.ts.map +1 -1
- package/dist/services/cluster.js +30 -77
- package/dist/services/cluster.js.map +1 -1
- package/dist/services/nodes.d.ts +22 -2
- package/dist/services/nodes.d.ts.map +1 -1
- package/dist/services/nodes.js +60 -72
- package/dist/services/nodes.js.map +1 -1
- package/dist/services/pools.d.ts.map +1 -1
- package/dist/services/pools.js +2 -7
- package/dist/services/pools.js.map +1 -1
- package/dist/services/storage.d.ts +11 -1
- package/dist/services/storage.d.ts.map +1 -1
- package/dist/services/storage.js +8 -1
- package/dist/services/storage.js.map +1 -1
- package/package.json +1 -7
- package/src/delete-query-binding.test.ts +65 -0
- package/src/errors.ts +12 -5
- package/src/index.ts +0 -1
- package/src/not-found-errors.test.ts +112 -0
- package/src/protocol.ts +9 -7
- package/src/services/access.ts +25 -11
- package/src/services/cluster.ts +30 -79
- package/src/services/nodes.ts +71 -74
- package/src/services/pools.ts +2 -9
- package/src/services/storage.ts +12 -2
- package/dist/task.d.ts +0 -51
- package/dist/task.d.ts.map +0 -1
- package/dist/task.js +0 -60
- package/dist/task.js.map +0 -1
- package/src/task.ts +0 -87
package/dist/services/nodes.js
CHANGED
|
@@ -5,6 +5,25 @@ import * as C from "@distilled.cloud/core/category";
|
|
|
5
5
|
import * as T from "../traits.js";
|
|
6
6
|
import { ProxmoxProtocol, } from "../protocol.js";
|
|
7
7
|
import * as Retry from "../retry.js";
|
|
8
|
+
/** The Ceph filesystem does not exist. PVE's `destroyfs` dies synchronously with `no such cephfs '<name>'` when the named filesystem is already gone (an async task is never even queued, so this surfaces directly from the DELETE call, not from polling its UPID). This shape states the honest status (404) while matching the wire's real one — 500, the same class PVE answers for a missing user/group/storage/pool. Traced to source, not paraphrased (correcting an earlier draft of this patch, which carried forward the kit's own paraphrase, 'no such cephfs' with no filesystem name — the kit comments it cited, `ceph-fs-wire.ts:203-206` and `ceph-fs.ts:230-233`, never claimed to quote the wire text verbatim either): `pve-manager` (commit f6997e698c7933ea8e62319e2bf1bf7262daa56a, "bump version to 9.2.11") `PVE/API2/Ceph/FS.pm:327`, inside the `DELETE .../ceph/fs/{name}` handler's `code => sub`: `die "no such cephfs '$fs_name'\n" if !$fs;` — reached only when `$fs_name` (the `name` path label) is not found in `PVE::Ceph::Tools::ls_fs()`'s list. No live DELETE was run to confirm this byte-for-byte (per this pass's read-only-GET constraint); the regex is anchored on the verified-from-source prefix and object-kind qualifier only, deliberately not asserting the exact trailing punctuation/newline. */
|
|
9
|
+
export class CephFsNotFound extends /*@__PURE__*/ /*@__PURE__*/ T.applyErrorMatchers(
|
|
10
|
+
/*@__PURE__*/ S.TaggedError()("CephFsNotFound", {
|
|
11
|
+
message: S.String,
|
|
12
|
+
}).pipe(C.withBadRequestError), [{ status: 500, message: { matches: "^no such cephfs '[^']*'" } }]) {
|
|
13
|
+
}
|
|
14
|
+
/** The Ceph pool does not exist. PVE shells out to `ceph osd pool get` and reports its failure verbatim as HTTP 500 with `{"data":null,"message":"error with 'osd pool get': mon_cmd failed - unrecognized pool '<name>'\n"}` — a generic command failure, not a parsed field, but distinctively named ('unrecognized pool'), unlike ZfsPool's equivalent 'exit code 1' shape (deliberately left untyped — see zfs-pool-read-failure.test.ts: that message names no object kind at all, so typing it would risk folding an unrelated zpool-command failure into 'absent'). This shape states the honest status (404) while matching the wire's real one. Call site traced to source: `pve-manager` (git.proxmox.com/git/pve-manager.git, commit f6997e698c7933ea8e62319e2bf1bf7262daa56a, "bump version to 9.2.11" — the SDK's own pinned version, matching `pve-docs`'s own repoid for this snapshot) `PVE/API2/Ceph/Pool.pm` (~line 850), inside the `status` GET handler: `$rados->mon_command({ prefix => 'osd pool get', pool => "$pool", var => 'all' })`. `mon_cmd failed - unrecognized pool '<name>'` is Ceph's/librados's own wire text for a missing pool, not a PVE-authored string, so it was not independently re-derived from Perl source (there is none to read — it crosses into Ceph's own C++ `mon_command` implementation, out of scope for this pass). Measured: `taslabs-net/homeflare-kit`'s `packages/alchemy/src/proxmox/ceph-pool-write.test.ts:5-14`, live cluster TB4 `n2`, `GET /nodes/{node}/ceph/pool/{name}/status`, 2026-09-24, read-role, read-only probe. */
|
|
15
|
+
export class CephPoolNotFound extends /*@__PURE__*/ /*@__PURE__*/ T.applyErrorMatchers(
|
|
16
|
+
/*@__PURE__*/ S.TaggedError()("CephPoolNotFound", {
|
|
17
|
+
message: S.String,
|
|
18
|
+
}).pipe(C.withBadRequestError), [
|
|
19
|
+
{
|
|
20
|
+
status: 500,
|
|
21
|
+
message: {
|
|
22
|
+
matches: "^error with 'osd pool get': mon_cmd failed - unrecognized pool",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
]) {
|
|
26
|
+
}
|
|
8
27
|
/** PVE forwarded this call to another cluster member and could not reach it (pveproxy/pvedaemon's own connection-failure status, not a standard HTTP code). Transient — the target node may be mid-reboot or between cluster-membership changes. */
|
|
9
28
|
export class ClusterNodeUnreachable extends /*@__PURE__*/ /*@__PURE__*/ T.applyErrorMatchers(
|
|
10
29
|
/*@__PURE__*/ S.TaggedError()("ClusterNodeUnreachable", {
|
|
@@ -1534,13 +1553,12 @@ export const CreateNodeWakeonlanResponse = /*@__PURE__*/ S.suspend(() => S.Strin
|
|
|
1534
1553
|
export const DeleteNodeCephFsRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1535
1554
|
node: S.String.pipe(T.Label()),
|
|
1536
1555
|
name: S.String.pipe(T.Label()),
|
|
1537
|
-
remove_pools: S.optional(S.String.pipe(T.
|
|
1538
|
-
remove_storages: S.optional(S.String.pipe(T.
|
|
1556
|
+
remove_pools: S.optional(S.String.pipe(T.Query("remove-pools"))),
|
|
1557
|
+
remove_storages: S.optional(S.String.pipe(T.Query("remove-storages"))),
|
|
1539
1558
|
}).pipe(T.Http({
|
|
1540
1559
|
method: "DELETE",
|
|
1541
1560
|
uri: "/nodes/{node}/ceph/fs/{name}",
|
|
1542
1561
|
code: 200,
|
|
1543
|
-
contentType: "form-urlencoded",
|
|
1544
1562
|
}))).annotate({
|
|
1545
1563
|
identifier: "DeleteNodeCephFsRequest",
|
|
1546
1564
|
});
|
|
@@ -1585,12 +1603,11 @@ export const DeleteNodeCephMonResponse = /*@__PURE__*/ S.suspend(() => S.String.
|
|
|
1585
1603
|
export const DeleteNodeCephOsdRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1586
1604
|
node: S.String.pipe(T.Label()),
|
|
1587
1605
|
osdid: S.String.pipe(T.Label()),
|
|
1588
|
-
cleanup: S.optional(S.String),
|
|
1606
|
+
cleanup: S.optional(S.String.pipe(T.Query())),
|
|
1589
1607
|
}).pipe(T.Http({
|
|
1590
1608
|
method: "DELETE",
|
|
1591
1609
|
uri: "/nodes/{node}/ceph/osd/{osdid}",
|
|
1592
1610
|
code: 200,
|
|
1593
|
-
contentType: "form-urlencoded",
|
|
1594
1611
|
}))).annotate({
|
|
1595
1612
|
identifier: "DeleteNodeCephOsdRequest",
|
|
1596
1613
|
});
|
|
@@ -1600,14 +1617,13 @@ export const DeleteNodeCephOsdResponse = /*@__PURE__*/ S.suspend(() => S.String.
|
|
|
1600
1617
|
export const DeleteNodeCephPoolRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1601
1618
|
node: S.String.pipe(T.Label()),
|
|
1602
1619
|
name: S.String.pipe(T.Label()),
|
|
1603
|
-
force: S.optional(S.String),
|
|
1604
|
-
remove_ecprofile: S.optional(S.String),
|
|
1605
|
-
remove_storages: S.optional(S.String),
|
|
1620
|
+
force: S.optional(S.String.pipe(T.Query())),
|
|
1621
|
+
remove_ecprofile: S.optional(S.String.pipe(T.Query())),
|
|
1622
|
+
remove_storages: S.optional(S.String.pipe(T.Query())),
|
|
1606
1623
|
}).pipe(T.Http({
|
|
1607
1624
|
method: "DELETE",
|
|
1608
1625
|
uri: "/nodes/{node}/ceph/pool/{name}",
|
|
1609
1626
|
code: 200,
|
|
1610
|
-
contentType: "form-urlencoded",
|
|
1611
1627
|
}))).annotate({
|
|
1612
1628
|
identifier: "DeleteNodeCephPoolRequest",
|
|
1613
1629
|
});
|
|
@@ -1630,12 +1646,11 @@ export const DeleteNodeCertificateAcmeCertificateResponse =
|
|
|
1630
1646
|
});
|
|
1631
1647
|
export const DeleteNodeCertificateCustomRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1632
1648
|
node: S.String.pipe(T.Label()),
|
|
1633
|
-
restart: S.optional(S.String),
|
|
1649
|
+
restart: S.optional(S.String.pipe(T.Query())),
|
|
1634
1650
|
}).pipe(T.Http({
|
|
1635
1651
|
method: "DELETE",
|
|
1636
1652
|
uri: "/nodes/{node}/certificates/custom",
|
|
1637
1653
|
code: 200,
|
|
1638
|
-
contentType: "form-urlencoded",
|
|
1639
1654
|
}))).annotate({
|
|
1640
1655
|
identifier: "DeleteNodeCertificateCustomRequest",
|
|
1641
1656
|
});
|
|
@@ -1645,13 +1660,12 @@ export const DeleteNodeCertificateCustomResponse = /*@__PURE__*/ S.suspend(() =>
|
|
|
1645
1660
|
export const DeleteNodeDiskDirectoryRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1646
1661
|
node: S.String.pipe(T.Label()),
|
|
1647
1662
|
name: S.String.pipe(T.Label()),
|
|
1648
|
-
cleanup_config: S.optional(S.String.pipe(T.
|
|
1649
|
-
cleanup_disks: S.optional(S.String.pipe(T.
|
|
1663
|
+
cleanup_config: S.optional(S.String.pipe(T.Query("cleanup-config"))),
|
|
1664
|
+
cleanup_disks: S.optional(S.String.pipe(T.Query("cleanup-disks"))),
|
|
1650
1665
|
}).pipe(T.Http({
|
|
1651
1666
|
method: "DELETE",
|
|
1652
1667
|
uri: "/nodes/{node}/disks/directory/{name}",
|
|
1653
1668
|
code: 200,
|
|
1654
|
-
contentType: "form-urlencoded",
|
|
1655
1669
|
}))).annotate({
|
|
1656
1670
|
identifier: "DeleteNodeDiskDirectoryRequest",
|
|
1657
1671
|
});
|
|
@@ -1661,13 +1675,12 @@ export const DeleteNodeDiskDirectoryResponse = /*@__PURE__*/ S.suspend(() => S.S
|
|
|
1661
1675
|
export const DeleteNodeDiskLvmRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1662
1676
|
node: S.String.pipe(T.Label()),
|
|
1663
1677
|
name: S.String.pipe(T.Label()),
|
|
1664
|
-
cleanup_config: S.optional(S.String.pipe(T.
|
|
1665
|
-
cleanup_disks: S.optional(S.String.pipe(T.
|
|
1678
|
+
cleanup_config: S.optional(S.String.pipe(T.Query("cleanup-config"))),
|
|
1679
|
+
cleanup_disks: S.optional(S.String.pipe(T.Query("cleanup-disks"))),
|
|
1666
1680
|
}).pipe(T.Http({
|
|
1667
1681
|
method: "DELETE",
|
|
1668
1682
|
uri: "/nodes/{node}/disks/lvm/{name}",
|
|
1669
1683
|
code: 200,
|
|
1670
|
-
contentType: "form-urlencoded",
|
|
1671
1684
|
}))).annotate({
|
|
1672
1685
|
identifier: "DeleteNodeDiskLvmRequest",
|
|
1673
1686
|
});
|
|
@@ -1677,14 +1690,13 @@ export const DeleteNodeDiskLvmResponse = /*@__PURE__*/ S.suspend(() => S.String.
|
|
|
1677
1690
|
export const DeleteNodeDiskLvmthinRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1678
1691
|
node: S.String.pipe(T.Label()),
|
|
1679
1692
|
name: S.String.pipe(T.Label()),
|
|
1680
|
-
cleanup_config: S.optional(S.String.pipe(T.
|
|
1681
|
-
cleanup_disks: S.optional(S.String.pipe(T.
|
|
1682
|
-
volume_group: S.String.pipe(T.
|
|
1693
|
+
cleanup_config: S.optional(S.String.pipe(T.Query("cleanup-config"))),
|
|
1694
|
+
cleanup_disks: S.optional(S.String.pipe(T.Query("cleanup-disks"))),
|
|
1695
|
+
volume_group: S.String.pipe(T.Query("volume-group")),
|
|
1683
1696
|
}).pipe(T.Http({
|
|
1684
1697
|
method: "DELETE",
|
|
1685
1698
|
uri: "/nodes/{node}/disks/lvmthin/{name}",
|
|
1686
1699
|
code: 200,
|
|
1687
|
-
contentType: "form-urlencoded",
|
|
1688
1700
|
}))).annotate({
|
|
1689
1701
|
identifier: "DeleteNodeDiskLvmthinRequest",
|
|
1690
1702
|
});
|
|
@@ -1694,13 +1706,12 @@ export const DeleteNodeDiskLvmthinResponse = /*@__PURE__*/ S.suspend(() => S.Str
|
|
|
1694
1706
|
export const DeleteNodeDiskZfsRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1695
1707
|
node: S.String.pipe(T.Label()),
|
|
1696
1708
|
name: S.String.pipe(T.Label()),
|
|
1697
|
-
cleanup_config: S.optional(S.String.pipe(T.
|
|
1698
|
-
cleanup_disks: S.optional(S.String.pipe(T.
|
|
1709
|
+
cleanup_config: S.optional(S.String.pipe(T.Query("cleanup-config"))),
|
|
1710
|
+
cleanup_disks: S.optional(S.String.pipe(T.Query("cleanup-disks"))),
|
|
1699
1711
|
}).pipe(T.Http({
|
|
1700
1712
|
method: "DELETE",
|
|
1701
1713
|
uri: "/nodes/{node}/disks/zfs/{name}",
|
|
1702
1714
|
code: 200,
|
|
1703
|
-
contentType: "form-urlencoded",
|
|
1704
1715
|
}))).annotate({
|
|
1705
1716
|
identifier: "DeleteNodeDiskZfsRequest",
|
|
1706
1717
|
});
|
|
@@ -1710,12 +1721,11 @@ export const DeleteNodeDiskZfsResponse = /*@__PURE__*/ S.suspend(() => S.String.
|
|
|
1710
1721
|
export const DeleteNodeFirewallRuleRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1711
1722
|
node: S.String.pipe(T.Label()),
|
|
1712
1723
|
pos: S.String.pipe(T.Label()),
|
|
1713
|
-
digest: S.optional(S.String),
|
|
1724
|
+
digest: S.optional(S.String.pipe(T.Query())),
|
|
1714
1725
|
}).pipe(T.Http({
|
|
1715
1726
|
method: "DELETE",
|
|
1716
1727
|
uri: "/nodes/{node}/firewall/rules/{pos}",
|
|
1717
1728
|
code: 200,
|
|
1718
|
-
contentType: "form-urlencoded",
|
|
1719
1729
|
}))).annotate({
|
|
1720
1730
|
identifier: "DeleteNodeFirewallRuleRequest",
|
|
1721
1731
|
});
|
|
@@ -1725,15 +1735,10 @@ export const DeleteNodeFirewallRuleResponse = /*@__PURE__*/ S.suspend(() => S.St
|
|
|
1725
1735
|
export const DeleteNodeLxcRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1726
1736
|
node: S.String.pipe(T.Label()),
|
|
1727
1737
|
vmid: S.String.pipe(T.Label()),
|
|
1728
|
-
destroy_unreferenced_disks: S.optional(S.String.pipe(T.
|
|
1729
|
-
force: S.optional(S.String),
|
|
1730
|
-
purge: S.optional(S.String),
|
|
1731
|
-
}).pipe(T.Http({
|
|
1732
|
-
method: "DELETE",
|
|
1733
|
-
uri: "/nodes/{node}/lxc/{vmid}",
|
|
1734
|
-
code: 200,
|
|
1735
|
-
contentType: "form-urlencoded",
|
|
1736
|
-
}))).annotate({
|
|
1738
|
+
destroy_unreferenced_disks: S.optional(S.String.pipe(T.Query("destroy-unreferenced-disks"))),
|
|
1739
|
+
force: S.optional(S.String.pipe(T.Query())),
|
|
1740
|
+
purge: S.optional(S.String.pipe(T.Query())),
|
|
1741
|
+
}).pipe(T.Http({ method: "DELETE", uri: "/nodes/{node}/lxc/{vmid}", code: 200 }))).annotate({
|
|
1737
1742
|
identifier: "DeleteNodeLxcRequest",
|
|
1738
1743
|
});
|
|
1739
1744
|
export const DeleteNodeLxcResponse = /*@__PURE__*/ S.suspend(() => S.String.pipe(T.RawResponseRoot())).annotate({
|
|
@@ -1743,12 +1748,11 @@ export const DeleteNodeLxcFirewallAliasRequest = /*@__PURE__*/ S.suspend(() => S
|
|
|
1743
1748
|
node: S.String.pipe(T.Label()),
|
|
1744
1749
|
vmid: S.String.pipe(T.Label()),
|
|
1745
1750
|
name: S.String.pipe(T.Label()),
|
|
1746
|
-
digest: S.optional(S.String),
|
|
1751
|
+
digest: S.optional(S.String.pipe(T.Query())),
|
|
1747
1752
|
}).pipe(T.Http({
|
|
1748
1753
|
method: "DELETE",
|
|
1749
1754
|
uri: "/nodes/{node}/lxc/{vmid}/firewall/aliases/{name}",
|
|
1750
1755
|
code: 200,
|
|
1751
|
-
contentType: "form-urlencoded",
|
|
1752
1756
|
}))).annotate({
|
|
1753
1757
|
identifier: "DeleteNodeLxcFirewallAliasRequest",
|
|
1754
1758
|
});
|
|
@@ -1759,12 +1763,11 @@ export const DeleteNodeLxcFirewallIpsetRequest = /*@__PURE__*/ S.suspend(() => S
|
|
|
1759
1763
|
node: S.String.pipe(T.Label()),
|
|
1760
1764
|
vmid: S.String.pipe(T.Label()),
|
|
1761
1765
|
name: S.String.pipe(T.Label()),
|
|
1762
|
-
force: S.optional(S.String),
|
|
1766
|
+
force: S.optional(S.String.pipe(T.Query())),
|
|
1763
1767
|
}).pipe(T.Http({
|
|
1764
1768
|
method: "DELETE",
|
|
1765
1769
|
uri: "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}",
|
|
1766
1770
|
code: 200,
|
|
1767
|
-
contentType: "form-urlencoded",
|
|
1768
1771
|
}))).annotate({
|
|
1769
1772
|
identifier: "DeleteNodeLxcFirewallIpsetRequest",
|
|
1770
1773
|
});
|
|
@@ -1776,12 +1779,11 @@ export const DeleteNodeLxcFirewallIpset2Request = /*@__PURE__*/ S.suspend(() =>
|
|
|
1776
1779
|
vmid: S.String.pipe(T.Label()),
|
|
1777
1780
|
name: S.String.pipe(T.Label()),
|
|
1778
1781
|
cidr: S.String.pipe(T.Label()),
|
|
1779
|
-
digest: S.optional(S.String),
|
|
1782
|
+
digest: S.optional(S.String.pipe(T.Query())),
|
|
1780
1783
|
}).pipe(T.Http({
|
|
1781
1784
|
method: "DELETE",
|
|
1782
1785
|
uri: "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}/{cidr}",
|
|
1783
1786
|
code: 200,
|
|
1784
|
-
contentType: "form-urlencoded",
|
|
1785
1787
|
}))).annotate({
|
|
1786
1788
|
identifier: "DeleteNodeLxcFirewallIpset2Request",
|
|
1787
1789
|
});
|
|
@@ -1792,12 +1794,11 @@ export const DeleteNodeLxcFirewallRuleRequest = /*@__PURE__*/ S.suspend(() => S.
|
|
|
1792
1794
|
node: S.String.pipe(T.Label()),
|
|
1793
1795
|
vmid: S.String.pipe(T.Label()),
|
|
1794
1796
|
pos: S.String.pipe(T.Label()),
|
|
1795
|
-
digest: S.optional(S.String),
|
|
1797
|
+
digest: S.optional(S.String.pipe(T.Query())),
|
|
1796
1798
|
}).pipe(T.Http({
|
|
1797
1799
|
method: "DELETE",
|
|
1798
1800
|
uri: "/nodes/{node}/lxc/{vmid}/firewall/rules/{pos}",
|
|
1799
1801
|
code: 200,
|
|
1800
|
-
contentType: "form-urlencoded",
|
|
1801
1802
|
}))).annotate({
|
|
1802
1803
|
identifier: "DeleteNodeLxcFirewallRuleRequest",
|
|
1803
1804
|
});
|
|
@@ -1808,12 +1809,11 @@ export const DeleteNodeLxcSnapshotRequest = /*@__PURE__*/ S.suspend(() => S.Stru
|
|
|
1808
1809
|
node: S.String.pipe(T.Label()),
|
|
1809
1810
|
vmid: S.String.pipe(T.Label()),
|
|
1810
1811
|
snapname: S.String.pipe(T.Label()),
|
|
1811
|
-
force: S.optional(S.String),
|
|
1812
|
+
force: S.optional(S.String.pipe(T.Query())),
|
|
1812
1813
|
}).pipe(T.Http({
|
|
1813
1814
|
method: "DELETE",
|
|
1814
1815
|
uri: "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}",
|
|
1815
1816
|
code: 200,
|
|
1816
|
-
contentType: "form-urlencoded",
|
|
1817
1817
|
}))).annotate({
|
|
1818
1818
|
identifier: "DeleteNodeLxcSnapshotRequest",
|
|
1819
1819
|
});
|
|
@@ -1844,15 +1844,10 @@ export const DeleteNodeNetwork2Response = /*@__PURE__*/ S.suspend(() => S.Struct
|
|
|
1844
1844
|
export const DeleteNodeQemuRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1845
1845
|
node: S.String.pipe(T.Label()),
|
|
1846
1846
|
vmid: S.String.pipe(T.Label()),
|
|
1847
|
-
destroy_unreferenced_disks: S.optional(S.String.pipe(T.
|
|
1848
|
-
purge: S.optional(S.String),
|
|
1849
|
-
skiplock: S.optional(S.String),
|
|
1850
|
-
}).pipe(T.Http({
|
|
1851
|
-
method: "DELETE",
|
|
1852
|
-
uri: "/nodes/{node}/qemu/{vmid}",
|
|
1853
|
-
code: 200,
|
|
1854
|
-
contentType: "form-urlencoded",
|
|
1855
|
-
}))).annotate({
|
|
1847
|
+
destroy_unreferenced_disks: S.optional(S.String.pipe(T.Query("destroy-unreferenced-disks"))),
|
|
1848
|
+
purge: S.optional(S.String.pipe(T.Query())),
|
|
1849
|
+
skiplock: S.optional(S.String.pipe(T.Query())),
|
|
1850
|
+
}).pipe(T.Http({ method: "DELETE", uri: "/nodes/{node}/qemu/{vmid}", code: 200 }))).annotate({
|
|
1856
1851
|
identifier: "DeleteNodeQemuRequest",
|
|
1857
1852
|
});
|
|
1858
1853
|
export const DeleteNodeQemuResponse = /*@__PURE__*/ S.suspend(() => S.String.pipe(T.RawResponseRoot())).annotate({
|
|
@@ -1862,12 +1857,11 @@ export const DeleteNodeQemuFirewallAliasRequest = /*@__PURE__*/ S.suspend(() =>
|
|
|
1862
1857
|
node: S.String.pipe(T.Label()),
|
|
1863
1858
|
vmid: S.String.pipe(T.Label()),
|
|
1864
1859
|
name: S.String.pipe(T.Label()),
|
|
1865
|
-
digest: S.optional(S.String),
|
|
1860
|
+
digest: S.optional(S.String.pipe(T.Query())),
|
|
1866
1861
|
}).pipe(T.Http({
|
|
1867
1862
|
method: "DELETE",
|
|
1868
1863
|
uri: "/nodes/{node}/qemu/{vmid}/firewall/aliases/{name}",
|
|
1869
1864
|
code: 200,
|
|
1870
|
-
contentType: "form-urlencoded",
|
|
1871
1865
|
}))).annotate({
|
|
1872
1866
|
identifier: "DeleteNodeQemuFirewallAliasRequest",
|
|
1873
1867
|
});
|
|
@@ -1878,12 +1872,11 @@ export const DeleteNodeQemuFirewallIpsetRequest = /*@__PURE__*/ S.suspend(() =>
|
|
|
1878
1872
|
node: S.String.pipe(T.Label()),
|
|
1879
1873
|
vmid: S.String.pipe(T.Label()),
|
|
1880
1874
|
name: S.String.pipe(T.Label()),
|
|
1881
|
-
force: S.optional(S.String),
|
|
1875
|
+
force: S.optional(S.String.pipe(T.Query())),
|
|
1882
1876
|
}).pipe(T.Http({
|
|
1883
1877
|
method: "DELETE",
|
|
1884
1878
|
uri: "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}",
|
|
1885
1879
|
code: 200,
|
|
1886
|
-
contentType: "form-urlencoded",
|
|
1887
1880
|
}))).annotate({
|
|
1888
1881
|
identifier: "DeleteNodeQemuFirewallIpsetRequest",
|
|
1889
1882
|
});
|
|
@@ -1895,12 +1888,11 @@ export const DeleteNodeQemuFirewallIpset2Request = /*@__PURE__*/ S.suspend(() =>
|
|
|
1895
1888
|
vmid: S.String.pipe(T.Label()),
|
|
1896
1889
|
name: S.String.pipe(T.Label()),
|
|
1897
1890
|
cidr: S.String.pipe(T.Label()),
|
|
1898
|
-
digest: S.optional(S.String),
|
|
1891
|
+
digest: S.optional(S.String.pipe(T.Query())),
|
|
1899
1892
|
}).pipe(T.Http({
|
|
1900
1893
|
method: "DELETE",
|
|
1901
1894
|
uri: "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}/{cidr}",
|
|
1902
1895
|
code: 200,
|
|
1903
|
-
contentType: "form-urlencoded",
|
|
1904
1896
|
}))).annotate({
|
|
1905
1897
|
identifier: "DeleteNodeQemuFirewallIpset2Request",
|
|
1906
1898
|
});
|
|
@@ -1911,12 +1903,11 @@ export const DeleteNodeQemuFirewallRuleRequest = /*@__PURE__*/ S.suspend(() => S
|
|
|
1911
1903
|
node: S.String.pipe(T.Label()),
|
|
1912
1904
|
vmid: S.String.pipe(T.Label()),
|
|
1913
1905
|
pos: S.String.pipe(T.Label()),
|
|
1914
|
-
digest: S.optional(S.String),
|
|
1906
|
+
digest: S.optional(S.String.pipe(T.Query())),
|
|
1915
1907
|
}).pipe(T.Http({
|
|
1916
1908
|
method: "DELETE",
|
|
1917
1909
|
uri: "/nodes/{node}/qemu/{vmid}/firewall/rules/{pos}",
|
|
1918
1910
|
code: 200,
|
|
1919
|
-
contentType: "form-urlencoded",
|
|
1920
1911
|
}))).annotate({
|
|
1921
1912
|
identifier: "DeleteNodeQemuFirewallRuleRequest",
|
|
1922
1913
|
});
|
|
@@ -1927,12 +1918,11 @@ export const DeleteNodeQemuSnapshotRequest = /*@__PURE__*/ S.suspend(() => S.Str
|
|
|
1927
1918
|
node: S.String.pipe(T.Label()),
|
|
1928
1919
|
vmid: S.String.pipe(T.Label()),
|
|
1929
1920
|
snapname: S.String.pipe(T.Label()),
|
|
1930
|
-
force: S.optional(S.String),
|
|
1921
|
+
force: S.optional(S.String.pipe(T.Query())),
|
|
1931
1922
|
}).pipe(T.Http({
|
|
1932
1923
|
method: "DELETE",
|
|
1933
1924
|
uri: "/nodes/{node}/qemu/{vmid}/snapshot/{snapname}",
|
|
1934
1925
|
code: 200,
|
|
1935
|
-
contentType: "form-urlencoded",
|
|
1936
1926
|
}))).annotate({
|
|
1937
1927
|
identifier: "DeleteNodeQemuSnapshotRequest",
|
|
1938
1928
|
});
|
|
@@ -1943,12 +1933,11 @@ export const DeleteNodeStorageContentRequest = /*@__PURE__*/ S.suspend(() => S.S
|
|
|
1943
1933
|
node: S.String.pipe(T.Label()),
|
|
1944
1934
|
storage: S.String.pipe(T.Label()),
|
|
1945
1935
|
volume: S.String.pipe(T.Label()),
|
|
1946
|
-
delay: S.optional(S.String),
|
|
1936
|
+
delay: S.optional(S.String.pipe(T.Query())),
|
|
1947
1937
|
}).pipe(T.Http({
|
|
1948
1938
|
method: "DELETE",
|
|
1949
1939
|
uri: "/nodes/{node}/storage/{storage}/content/{volume}",
|
|
1950
1940
|
code: 200,
|
|
1951
|
-
contentType: "form-urlencoded",
|
|
1952
1941
|
}))).annotate({
|
|
1953
1942
|
identifier: "DeleteNodeStorageContentRequest",
|
|
1954
1943
|
});
|
|
@@ -1959,14 +1948,13 @@ export const DeleteNodeStoragePrunebackupsRequestType = S.String;
|
|
|
1959
1948
|
export const DeleteNodeStoragePrunebackupsRequest = /*@__PURE__*/ S.suspend(() => S.Struct({
|
|
1960
1949
|
node: S.String.pipe(T.Label()),
|
|
1961
1950
|
storage: S.String.pipe(T.Label()),
|
|
1962
|
-
prune_backups: S.optional(S.String.pipe(T.
|
|
1963
|
-
type: S.optional(DeleteNodeStoragePrunebackupsRequestType),
|
|
1964
|
-
vmid: S.optional(S.String),
|
|
1951
|
+
prune_backups: S.optional(S.String.pipe(T.Query("prune-backups"))),
|
|
1952
|
+
type: S.optional(DeleteNodeStoragePrunebackupsRequestType.pipe(T.Query())),
|
|
1953
|
+
vmid: S.optional(S.String.pipe(T.Query())),
|
|
1965
1954
|
}).pipe(T.Http({
|
|
1966
1955
|
method: "DELETE",
|
|
1967
1956
|
uri: "/nodes/{node}/storage/{storage}/prunebackups",
|
|
1968
1957
|
code: 200,
|
|
1969
|
-
contentType: "form-urlencoded",
|
|
1970
1958
|
}))).annotate({
|
|
1971
1959
|
identifier: "DeleteNodeStoragePrunebackupsRequest",
|
|
1972
1960
|
});
|
|
@@ -7947,7 +7935,7 @@ export const createNodeWakeonlan = /*@__PURE__*/ API.make(() => ({
|
|
|
7947
7935
|
export const deleteNodeCephFs = /*@__PURE__*/ API.make(() => ({
|
|
7948
7936
|
input: DeleteNodeCephFsRequest,
|
|
7949
7937
|
output: DeleteNodeCephFsResponse,
|
|
7950
|
-
errors: [],
|
|
7938
|
+
errors: [CephFsNotFound],
|
|
7951
7939
|
protocol: ProxmoxProtocol,
|
|
7952
7940
|
retry: Retry.Retry,
|
|
7953
7941
|
}));
|
|
@@ -8323,7 +8311,7 @@ export const getNodeCephPool = /*@__PURE__*/ API.make(() => ({
|
|
|
8323
8311
|
export const getNodeCephPoolStatus = /*@__PURE__*/ API.make(() => ({
|
|
8324
8312
|
input: GetNodeCephPoolStatusRequest,
|
|
8325
8313
|
output: GetNodeCephPoolStatusResponse,
|
|
8326
|
-
errors: [],
|
|
8314
|
+
errors: [CephPoolNotFound],
|
|
8327
8315
|
protocol: ProxmoxProtocol,
|
|
8328
8316
|
retry: Retry.Retry,
|
|
8329
8317
|
}));
|