@homeflare/distilled-proxmox 0.3.0 → 0.3.2

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 (50) hide show
  1. package/README.md +37 -10
  2. package/dist/config-not-found.test.d.ts +2 -0
  3. package/dist/config-not-found.test.d.ts.map +1 -0
  4. package/dist/config-not-found.test.js +125 -0
  5. package/dist/config-not-found.test.js.map +1 -0
  6. package/dist/errors.d.ts +2 -2
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js.map +1 -1
  9. package/dist/lxc-config-errors.test.d.ts +2 -0
  10. package/dist/lxc-config-errors.test.d.ts.map +1 -0
  11. package/dist/lxc-config-errors.test.js +48 -0
  12. package/dist/lxc-config-errors.test.js.map +1 -0
  13. package/dist/protocol-form.d.ts +18 -0
  14. package/dist/protocol-form.d.ts.map +1 -0
  15. package/dist/protocol-form.js +37 -0
  16. package/dist/protocol-form.js.map +1 -0
  17. package/dist/protocol-form.test.d.ts +2 -0
  18. package/dist/protocol-form.test.d.ts.map +1 -0
  19. package/dist/protocol-form.test.js +68 -0
  20. package/dist/protocol-form.test.js.map +1 -0
  21. package/dist/protocol.d.ts.map +1 -1
  22. package/dist/protocol.js +25 -2
  23. package/dist/protocol.js.map +1 -1
  24. package/dist/replication-firewall-errors.test.d.ts +2 -0
  25. package/dist/replication-firewall-errors.test.d.ts.map +1 -0
  26. package/dist/replication-firewall-errors.test.js +76 -0
  27. package/dist/replication-firewall-errors.test.js.map +1 -0
  28. package/dist/services/cluster.d.ts +50 -10
  29. package/dist/services/cluster.d.ts.map +1 -1
  30. package/dist/services/cluster.js +50 -10
  31. package/dist/services/cluster.js.map +1 -1
  32. package/dist/services/nodes.d.ts +25 -5
  33. package/dist/services/nodes.d.ts.map +1 -1
  34. package/dist/services/nodes.js +24 -5
  35. package/dist/services/nodes.js.map +1 -1
  36. package/dist/services/pools.d.ts +16 -6
  37. package/dist/services/pools.d.ts.map +1 -1
  38. package/dist/services/pools.js +18 -6
  39. package/dist/services/pools.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/config-not-found.test.ts +202 -0
  42. package/src/errors.ts +4 -12
  43. package/src/lxc-config-errors.test.ts +100 -0
  44. package/src/protocol-form.test.ts +102 -0
  45. package/src/protocol-form.ts +49 -0
  46. package/src/protocol.ts +30 -2
  47. package/src/replication-firewall-errors.test.ts +126 -0
  48. package/src/services/cluster.ts +97 -20
  49. package/src/services/nodes.ts +39 -10
  50. package/src/services/pools.ts +27 -12
@@ -0,0 +1,76 @@
1
+ /** Exact vendor exceptions at the real protocol boundary; source provenance is in patches. */
2
+ import { expect, test } from "bun:test";
3
+ import * as Effect from "effect/Effect";
4
+ import * as HttpClient from "effect/unstable/http/HttpClient";
5
+ import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
6
+ import { credentials } from "./credentials.js";
7
+ import * as Retry from "./retry.js";
8
+ import * as cluster from "./services/cluster.js";
9
+ const call = (op, status, body) => Effect.runPromise(op.pipe(Retry.none, Effect.provide(credentials({
10
+ baseUrl: "https://pve.test:8006",
11
+ tokenId: "test@pve!test",
12
+ secret: "fake",
13
+ })), Effect.provideService(HttpClient.HttpClient, HttpClient.make((request) => Effect.succeed(HttpClientResponse.fromWeb(request, Response.json(body, { status }))))), Effect.flip));
14
+ for (const [op, message] of [
15
+ [
16
+ cluster.getClusterReplication({ id: "900-0" }),
17
+ "no such replication job '900-0'\n",
18
+ ],
19
+ [cluster.putClusterReplication({ id: "900-0" }), "no such job '900-0'\n"],
20
+ [cluster.deleteClusterReplication({ id: "900-0" }), "no such job '900-0'\n"],
21
+ ]) {
22
+ test(`replication ${message.trim()} is typed only on its vendor status`, async () => {
23
+ expect(await call(op, 500, { data: null, message })).toMatchObject({
24
+ _tag: "ReplicationJobNotFound",
25
+ });
26
+ expect(await call(op, 403, { data: null, message })).toMatchObject({
27
+ _tag: "Forbidden",
28
+ });
29
+ for (const other of [
30
+ undefined,
31
+ "no such job 'unrelated'\n",
32
+ message + "other failure",
33
+ "got timeout\n",
34
+ ]) {
35
+ expect(await call(op, 500, { data: null, message: other })).toMatchObject({ _tag: "InternalServerError" });
36
+ }
37
+ });
38
+ }
39
+ const missingAlias = {
40
+ data: null,
41
+ message: "Parameter verification failed.\n",
42
+ errors: { name: "no such alias" },
43
+ };
44
+ for (const op of [
45
+ cluster.getClusterFirewallAlias({ name: "test" }),
46
+ cluster.putClusterFirewallAlias({ name: "test", cidr: "192.0.2.1" }),
47
+ ]) {
48
+ test("alias requires the sole exact errors.name detail", async () => {
49
+ expect(await call(op, 400, missingAlias)).toMatchObject({
50
+ _tag: "FirewallAliasNotFound",
51
+ });
52
+ expect(await call(op, 403, missingAlias)).toMatchObject({
53
+ _tag: "Forbidden",
54
+ });
55
+ for (const errors of [
56
+ { name: "no such alias", cidr: "invalid" },
57
+ { other: "no such alias" },
58
+ { name: "invalid alias" },
59
+ ]) {
60
+ expect(await call(op, 400, { ...missingAlias, errors })).toMatchObject({
61
+ _tag: "ParameterVerificationFailed",
62
+ });
63
+ }
64
+ expect(await call(op, 400, { ...missingAlias, message: "unrelated validation" })).toMatchObject({ _tag: "ParameterVerificationFailed" });
65
+ });
66
+ }
67
+ test("absence patches do not classify unrelated operations", async () => {
68
+ expect(await call(cluster.createClusterFirewallAlias({ name: "test", cidr: "192.0.2.1" }), 400, missingAlias)).toMatchObject({ _tag: "ParameterVerificationFailed" });
69
+ expect(await call(cluster.deleteClusterFirewallAlias({ name: "test" }), 400, missingAlias)).toMatchObject({ _tag: "ParameterVerificationFailed" });
70
+ expect(await call(cluster.createClusterReplication({
71
+ id: "900-0",
72
+ target: "pve-b",
73
+ type: "local",
74
+ }), 500, { message: "no such job '900-0'\n" })).toMatchObject({ _tag: "InternalServerError" });
75
+ });
76
+ //# sourceMappingURL=replication-firewall-errors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-firewall-errors.test.js","sourceRoot":"","sources":["../src/replication-firewall-errors.test.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,46 @@ import * as S from "@distilled.cloud/core/schema";
2
2
  import * as API from "@distilled.cloud/core/api";
3
3
  import { type ProxmoxOpError, type ProxmoxOpContext } from "../protocol.ts";
4
4
  export type { ProxmoxOpError, ProxmoxOpContext };
5
+ declare const BackupJobNotFound_base: S.Class<BackupJobNotFound, S.TaggedStruct<"BackupJobNotFound", {
6
+ readonly message: any;
7
+ }>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
8
+ "@distilled.cloud/error/categories": {
9
+ BadRequestError: true;
10
+ };
11
+ });
12
+ /** The backup job does not exist. pve-manager 9.2.11, f6997e698c7933ea8e62319e2bf1bf7262daa56a, PVE/API2/Backup.pm:406,458,755 raises a 400 parameter exception with exactly errors.id = No such job '<id>'. The Proxmox protocol extracts that sole precise detail for matching; unrelated or multi-field validation errors never become absence. Update uses a different exception and is deliberately not attached. */
13
+ export declare class BackupJobNotFound extends /*@__PURE__*/ BackupJobNotFound_base {
14
+ }
15
+ declare const FirewallAliasNotFound_base: S.Class<FirewallAliasNotFound, S.TaggedStruct<"FirewallAliasNotFound", {
16
+ readonly message: any;
17
+ }>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
18
+ "@distilled.cloud/error/categories": {
19
+ BadRequestError: true;
20
+ };
21
+ });
22
+ /** Installed pve-firewall 6.0.5 PVE/API2/Firewall/Aliases.pm:203-204,252, read-only 2026-09-24; SHA256 aa4d71ea897515ca71caa8e04abd142aedf8077058649f793605f014be84db0e. GET and PUT raise HTTP400 Parameter verification failed with the sole field errors.name = no such alias. DELETE is intrinsically idempotent and has no missing-alias exception. Other validation failures remain ParameterVerificationFailed. */
23
+ export declare class FirewallAliasNotFound extends /*@__PURE__*/ FirewallAliasNotFound_base {
24
+ }
25
+ declare const MetricServerNotFound_base: S.Class<MetricServerNotFound, S.TaggedStruct<"MetricServerNotFound", {
26
+ readonly message: any;
27
+ }>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
28
+ "@distilled.cloud/error/categories": {
29
+ BadRequestError: true;
30
+ };
31
+ });
32
+ /** The metrics server does not exist. pve-manager 9.2.11, f6997e698c7933ea8e62319e2bf1bf7262daa56a, PVE/API2/Cluster/MetricServer.pm:136 throws status server entry '<id>' does not exist on GET, and line 228 throws no such server '<id>' on PUT. Both are wire 500. DELETE dereferences the plugin config without an explicit absence check and is not declared to return this tag. */
33
+ export declare class MetricServerNotFound extends /*@__PURE__*/ MetricServerNotFound_base {
34
+ }
35
+ declare const ReplicationJobNotFound_base: S.Class<ReplicationJobNotFound, S.TaggedStruct<"ReplicationJobNotFound", {
36
+ readonly message: any;
37
+ }>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
38
+ "@distilled.cloud/error/categories": {
39
+ BadRequestError: true;
40
+ };
41
+ });
42
+ /** pve-manager 9.2.11 f6997e698c7933ea8e62319e2bf1bf7262daa56a PVE/API2/ReplicationConfig.pm:107,226,305. GET raises no such replication job; PUT and non-force DELETE raise no such job. Exact structured job IDs only. DELETE normally marks remove_job=full for background cleanup; an absent job is already removed. */
43
+ export declare class ReplicationJobNotFound extends /*@__PURE__*/ ReplicationJobNotFound_base {
44
+ }
5
45
  export interface CreateClusterAcmeAccountRequest {
6
46
  /** Contact email addresses. */
7
47
  contact: string;
@@ -5271,7 +5311,7 @@ export declare const deleteClusterAcmeAccount: API.OperationMethod<DeleteCluster
5271
5311
  export type DeleteClusterAcmePluginError = ProxmoxOpError;
5272
5312
  /** Delete ACME plugin configuration. (root-privileged endpoint) */
5273
5313
  export declare const deleteClusterAcmePlugin: API.OperationMethod<DeleteClusterAcmePluginRequest, DeleteClusterAcmePluginResponse, DeleteClusterAcmePluginError, ProxmoxOpContext>;
5274
- export type DeleteClusterBackupError = ProxmoxOpError;
5314
+ export type DeleteClusterBackupError = BackupJobNotFound | ProxmoxOpError;
5275
5315
  /** Delete vzdump backup job definition. (root-privileged endpoint) */
5276
5316
  export declare const deleteClusterBackup: API.OperationMethod<DeleteClusterBackupRequest, DeleteClusterBackupResponse, DeleteClusterBackupError, ProxmoxOpContext>;
5277
5317
  export type DeleteClusterConfigNodeError = ProxmoxOpError;
@@ -5337,7 +5377,7 @@ export declare const deleteClusterNotificationMatcher: API.OperationMethod<Delet
5337
5377
  export type DeleteClusterQemuCustomCpuModelError = ProxmoxOpError;
5338
5378
  /** Delete a custom CPU model definition. (root-privileged endpoint) */
5339
5379
  export declare const deleteClusterQemuCustomCpuModel: API.OperationMethod<DeleteClusterQemuCustomCpuModelRequest, DeleteClusterQemuCustomCpuModelResponse, DeleteClusterQemuCustomCpuModelError, ProxmoxOpContext>;
5340
- export type DeleteClusterReplicationError = ProxmoxOpError;
5380
+ export type DeleteClusterReplicationError = ReplicationJobNotFound | ProxmoxOpError;
5341
5381
  /** Mark replication job for removal. (root-privileged endpoint) */
5342
5382
  export declare const deleteClusterReplication: API.OperationMethod<DeleteClusterReplicationRequest, DeleteClusterReplicationResponse, DeleteClusterReplicationError, ProxmoxOpContext>;
5343
5383
  export type DeleteClusterSdnControllerError = ProxmoxOpError;
@@ -5394,10 +5434,10 @@ export declare const getClusterAcmePlugin: API.OperationMethod<GetClusterAcmePlu
5394
5434
  export type GetClusterAcmeTosError = ProxmoxOpError;
5395
5435
  /** Retrieve ACME TermsOfService URL from CA. Deprecated, please use /cluster/acme/meta. */
5396
5436
  export declare const getClusterAcmeTos: API.OperationMethod<GetClusterAcmeTosRequest, GetClusterAcmeTosResponse, GetClusterAcmeTosError, ProxmoxOpContext>;
5397
- export type GetClusterBackupError = ProxmoxOpError;
5437
+ export type GetClusterBackupError = BackupJobNotFound | ProxmoxOpError;
5398
5438
  /** Read vzdump backup job definition. */
5399
5439
  export declare const getClusterBackup: API.OperationMethod<GetClusterBackupRequest, GetClusterBackupResponse, GetClusterBackupError, ProxmoxOpContext>;
5400
- export type GetClusterBackupIncludedVolumesError = ProxmoxOpError;
5440
+ export type GetClusterBackupIncludedVolumesError = BackupJobNotFound | ProxmoxOpError;
5401
5441
  /** Returns included guests and the backup status of their disks. Optimized to be used in ExtJS tree views. (root-privileged endpoint) */
5402
5442
  export declare const getClusterBackupIncludedVolumes: API.OperationMethod<GetClusterBackupIncludedVolumesRequest, GetClusterBackupIncludedVolumesResponse, GetClusterBackupIncludedVolumesError, ProxmoxOpContext>;
5403
5443
  export type GetClusterCephFlagError = ProxmoxOpError;
@@ -5421,7 +5461,7 @@ export declare const getClusterConfigQdevice: API.OperationMethod<GetClusterConf
5421
5461
  export type GetClusterConfigTotemError = ProxmoxOpError;
5422
5462
  /** Get corosync totem protocol settings. */
5423
5463
  export declare const getClusterConfigTotem: API.OperationMethod<GetClusterConfigTotemRequest, GetClusterConfigTotemResponse, GetClusterConfigTotemError, ProxmoxOpContext>;
5424
- export type GetClusterFirewallAliasError = ProxmoxOpError;
5464
+ export type GetClusterFirewallAliasError = FirewallAliasNotFound | ProxmoxOpError;
5425
5465
  /** Read alias. */
5426
5466
  export declare const getClusterFirewallAlias: API.OperationMethod<GetClusterFirewallAliasRequest, GetClusterFirewallAliasResponse, GetClusterFirewallAliasError, ProxmoxOpContext>;
5427
5467
  export type GetClusterFirewallGroupError = ProxmoxOpError;
@@ -5469,7 +5509,7 @@ export declare const getClusterMappingUsb: API.OperationMethod<GetClusterMapping
5469
5509
  export type GetClusterMetricsExportError = ProxmoxOpError;
5470
5510
  /** Retrieve metrics of the cluster. */
5471
5511
  export declare const getClusterMetricsExport: API.OperationMethod<GetClusterMetricsExportRequest, GetClusterMetricsExportResponse, GetClusterMetricsExportError, ProxmoxOpContext>;
5472
- export type GetClusterMetricsServerError = ProxmoxOpError;
5512
+ export type GetClusterMetricsServerError = MetricServerNotFound | ProxmoxOpError;
5473
5513
  /** Read metric server configuration. */
5474
5514
  export declare const getClusterMetricsServer: API.OperationMethod<GetClusterMetricsServerRequest, GetClusterMetricsServerResponse, GetClusterMetricsServerError, ProxmoxOpContext>;
5475
5515
  export type GetClusterNextidError = ProxmoxOpError;
@@ -5496,7 +5536,7 @@ export declare const getClusterOptions: API.OperationMethod<GetClusterOptionsReq
5496
5536
  export type GetClusterQemuCustomCpuModelError = ProxmoxOpError;
5497
5537
  /** Retrieve details about a specific custom CPU model. */
5498
5538
  export declare const getClusterQemuCustomCpuModel: API.OperationMethod<GetClusterQemuCustomCpuModelRequest, GetClusterQemuCustomCpuModelResponse, GetClusterQemuCustomCpuModelError, ProxmoxOpContext>;
5499
- export type GetClusterReplicationError = ProxmoxOpError;
5539
+ export type GetClusterReplicationError = ReplicationJobNotFound | ProxmoxOpError;
5500
5540
  /** Read replication job configuration. */
5501
5541
  export declare const getClusterReplication: API.OperationMethod<GetClusterReplicationRequest, GetClusterReplicationResponse, GetClusterReplicationError, ProxmoxOpContext>;
5502
5542
  export type GetClusterSdnControllerError = ProxmoxOpError;
@@ -5799,7 +5839,7 @@ export declare const putClusterCephFlags: API.OperationMethod<PutClusterCephFlag
5799
5839
  export type PutClusterCephHealthMuteError = ProxmoxOpError;
5800
5840
  /** Mute or unmute a Ceph health check. A muted check no longer counts towards the cluster status, but stays visible and keeps being evaluated. (root-privileged endpoint) */
5801
5841
  export declare const putClusterCephHealthMute: API.OperationMethod<PutClusterCephHealthMuteRequest, PutClusterCephHealthMuteResponse, PutClusterCephHealthMuteError, ProxmoxOpContext>;
5802
- export type PutClusterFirewallAliasError = ProxmoxOpError;
5842
+ export type PutClusterFirewallAliasError = FirewallAliasNotFound | ProxmoxOpError;
5803
5843
  /** Update IP or Network alias. (root-privileged endpoint) */
5804
5844
  export declare const putClusterFirewallAlias: API.OperationMethod<PutClusterFirewallAliasRequest, PutClusterFirewallAliasResponse, PutClusterFirewallAliasError, ProxmoxOpContext>;
5805
5845
  export type PutClusterFirewallGroupError = ProxmoxOpError;
@@ -5835,7 +5875,7 @@ export declare const putClusterMappingPci: API.OperationMethod<PutClusterMapping
5835
5875
  export type PutClusterMappingUsbError = ProxmoxOpError;
5836
5876
  /** Update a hardware mapping. (root-privileged endpoint) */
5837
5877
  export declare const putClusterMappingUsb: API.OperationMethod<PutClusterMappingUsbRequest, PutClusterMappingUsbResponse, PutClusterMappingUsbError, ProxmoxOpContext>;
5838
- export type PutClusterMetricsServerError = ProxmoxOpError;
5878
+ export type PutClusterMetricsServerError = MetricServerNotFound | ProxmoxOpError;
5839
5879
  /** Update metric server configuration. (root-privileged endpoint) */
5840
5880
  export declare const putClusterMetricsServer: API.OperationMethod<PutClusterMetricsServerRequest, PutClusterMetricsServerResponse, PutClusterMetricsServerError, ProxmoxOpContext>;
5841
5881
  export type PutClusterNotificationEndpointGotifyError = ProxmoxOpError;
@@ -5859,7 +5899,7 @@ export declare const putClusterOptions: API.OperationMethod<PutClusterOptionsReq
5859
5899
  export type PutClusterQemuCustomCpuModelError = ProxmoxOpError;
5860
5900
  /** Update a custom CPU model definition. (root-privileged endpoint) */
5861
5901
  export declare const putClusterQemuCustomCpuModel: API.OperationMethod<PutClusterQemuCustomCpuModelRequest, PutClusterQemuCustomCpuModelResponse, PutClusterQemuCustomCpuModelError, ProxmoxOpContext>;
5862
- export type PutClusterReplicationError = ProxmoxOpError;
5902
+ export type PutClusterReplicationError = ReplicationJobNotFound | ProxmoxOpError;
5863
5903
  /** Update replication job configuration. (root-privileged endpoint) */
5864
5904
  export declare const putClusterReplication: API.OperationMethod<PutClusterReplicationRequest, PutClusterReplicationResponse, PutClusterReplicationError, ProxmoxOpContext>;
5865
5905
  export type PutClusterSdnError = ProxmoxOpError;