@synteq/cli 0.1.5 → 0.1.6

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 (201) hide show
  1. package/dist/api/client.d.ts +28 -37
  2. package/dist/api/client.js +42 -49
  3. package/dist/api/client.js.map +1 -1
  4. package/dist/api/types.d.ts +10 -22
  5. package/dist/commands/api.js +4 -4
  6. package/dist/commands/api.js.map +1 -1
  7. package/dist/commands/catalog.js +1 -1
  8. package/dist/commands/catalog.js.map +1 -1
  9. package/dist/commands/config/set-api-url.js +37 -2
  10. package/dist/commands/config/set-api-url.js.map +1 -1
  11. package/dist/commands/gpu/activity.d.ts +1 -0
  12. package/dist/commands/gpu/activity.js +6 -0
  13. package/dist/commands/gpu/activity.js.map +1 -1
  14. package/dist/commands/gpu/bandwidth.d.ts +1 -0
  15. package/dist/commands/gpu/bandwidth.js +4 -0
  16. package/dist/commands/gpu/bandwidth.js.map +1 -1
  17. package/dist/commands/gpu/boot-order.d.ts +1 -0
  18. package/dist/commands/gpu/boot-order.js +5 -0
  19. package/dist/commands/gpu/boot-order.js.map +1 -1
  20. package/dist/commands/gpu/console.d.ts +1 -0
  21. package/dist/commands/gpu/console.js +5 -0
  22. package/dist/commands/gpu/console.js.map +1 -1
  23. package/dist/commands/gpu/details.d.ts +2 -0
  24. package/dist/commands/gpu/details.js +9 -0
  25. package/dist/commands/gpu/details.js.map +1 -1
  26. package/dist/commands/gpu/ip/add.d.ts +1 -0
  27. package/dist/commands/gpu/ip/add.js +6 -0
  28. package/dist/commands/gpu/ip/add.js.map +1 -1
  29. package/dist/commands/gpu/ip/list.d.ts +1 -0
  30. package/dist/commands/gpu/ip/list.js +4 -0
  31. package/dist/commands/gpu/ip/list.js.map +1 -1
  32. package/dist/commands/gpu/order.js +2 -0
  33. package/dist/commands/gpu/order.js.map +1 -1
  34. package/dist/commands/gpu/power.d.ts +1 -0
  35. package/dist/commands/gpu/power.js +6 -0
  36. package/dist/commands/gpu/power.js.map +1 -1
  37. package/dist/commands/gpu/reinstall.d.ts +1 -0
  38. package/dist/commands/gpu/reinstall.js +7 -0
  39. package/dist/commands/gpu/reinstall.js.map +1 -1
  40. package/dist/commands/gpu/resize.d.ts +1 -0
  41. package/dist/commands/gpu/resize.js +6 -0
  42. package/dist/commands/gpu/resize.js.map +1 -1
  43. package/dist/commands/gpu/stats.d.ts +1 -0
  44. package/dist/commands/gpu/stats.js +5 -0
  45. package/dist/commands/gpu/stats.js.map +1 -1
  46. package/dist/commands/instant-metal/activity.d.ts +1 -0
  47. package/dist/commands/instant-metal/activity.js +6 -0
  48. package/dist/commands/instant-metal/activity.js.map +1 -1
  49. package/dist/commands/instant-metal/bandwidth.d.ts +1 -0
  50. package/dist/commands/instant-metal/bandwidth.js +4 -0
  51. package/dist/commands/instant-metal/bandwidth.js.map +1 -1
  52. package/dist/commands/instant-metal/boot-order.d.ts +1 -0
  53. package/dist/commands/instant-metal/boot-order.js +5 -0
  54. package/dist/commands/instant-metal/boot-order.js.map +1 -1
  55. package/dist/commands/instant-metal/console.d.ts +1 -0
  56. package/dist/commands/instant-metal/console.js +5 -0
  57. package/dist/commands/instant-metal/console.js.map +1 -1
  58. package/dist/commands/instant-metal/details.d.ts +2 -0
  59. package/dist/commands/instant-metal/details.js +9 -0
  60. package/dist/commands/instant-metal/details.js.map +1 -1
  61. package/dist/commands/instant-metal/ip/add.d.ts +1 -0
  62. package/dist/commands/instant-metal/ip/add.js +6 -0
  63. package/dist/commands/instant-metal/ip/add.js.map +1 -1
  64. package/dist/commands/instant-metal/ip/list.d.ts +1 -0
  65. package/dist/commands/instant-metal/ip/list.js +4 -0
  66. package/dist/commands/instant-metal/ip/list.js.map +1 -1
  67. package/dist/commands/instant-metal/order.js +2 -0
  68. package/dist/commands/instant-metal/order.js.map +1 -1
  69. package/dist/commands/instant-metal/power.d.ts +1 -0
  70. package/dist/commands/instant-metal/power.js +6 -0
  71. package/dist/commands/instant-metal/power.js.map +1 -1
  72. package/dist/commands/instant-metal/reinstall.d.ts +1 -0
  73. package/dist/commands/instant-metal/reinstall.js +7 -0
  74. package/dist/commands/instant-metal/reinstall.js.map +1 -1
  75. package/dist/commands/instant-metal/resize.d.ts +1 -0
  76. package/dist/commands/instant-metal/resize.js +6 -0
  77. package/dist/commands/instant-metal/resize.js.map +1 -1
  78. package/dist/commands/instant-metal/stats.d.ts +1 -0
  79. package/dist/commands/instant-metal/stats.js +5 -0
  80. package/dist/commands/instant-metal/stats.js.map +1 -1
  81. package/dist/commands/order/gpu.js +2 -0
  82. package/dist/commands/order/gpu.js.map +1 -1
  83. package/dist/commands/order/instant-metal.js +2 -0
  84. package/dist/commands/order/instant-metal.js.map +1 -1
  85. package/dist/commands/order/storage.js +1 -1
  86. package/dist/commands/order/storage.js.map +1 -1
  87. package/dist/commands/order/vps.js +2 -0
  88. package/dist/commands/order/vps.js.map +1 -1
  89. package/dist/commands/os-images.js +1 -1
  90. package/dist/commands/os-images.js.map +1 -1
  91. package/dist/commands/resources.js +22 -21
  92. package/dist/commands/resources.js.map +1 -1
  93. package/dist/commands/storage/attach.d.ts +1 -1
  94. package/dist/commands/storage/attach.js +11 -11
  95. package/dist/commands/storage/attach.js.map +1 -1
  96. package/dist/commands/storage/detach.js +2 -2
  97. package/dist/commands/storage/detach.js.map +1 -1
  98. package/dist/commands/storage/list.js +1 -1
  99. package/dist/commands/storage/list.js.map +1 -1
  100. package/dist/commands/storage/order.d.ts +1 -1
  101. package/dist/commands/storage/order.js +10 -10
  102. package/dist/commands/storage/order.js.map +1 -1
  103. package/dist/commands/vds/activity.d.ts +1 -0
  104. package/dist/commands/vds/activity.js +6 -0
  105. package/dist/commands/vds/activity.js.map +1 -1
  106. package/dist/commands/vds/bandwidth.d.ts +1 -0
  107. package/dist/commands/vds/bandwidth.js +4 -0
  108. package/dist/commands/vds/bandwidth.js.map +1 -1
  109. package/dist/commands/vds/boot-order.d.ts +1 -0
  110. package/dist/commands/vds/boot-order.js +5 -0
  111. package/dist/commands/vds/boot-order.js.map +1 -1
  112. package/dist/commands/vds/console.d.ts +1 -0
  113. package/dist/commands/vds/console.js +5 -0
  114. package/dist/commands/vds/console.js.map +1 -1
  115. package/dist/commands/vds/details.d.ts +2 -0
  116. package/dist/commands/vds/details.js +9 -0
  117. package/dist/commands/vds/details.js.map +1 -1
  118. package/dist/commands/vds/ip/add.d.ts +1 -0
  119. package/dist/commands/vds/ip/add.js +6 -0
  120. package/dist/commands/vds/ip/add.js.map +1 -1
  121. package/dist/commands/vds/ip/list.d.ts +1 -0
  122. package/dist/commands/vds/ip/list.js +4 -0
  123. package/dist/commands/vds/ip/list.js.map +1 -1
  124. package/dist/commands/vds/order.d.ts +1 -0
  125. package/dist/commands/vds/order.js +11 -3
  126. package/dist/commands/vds/order.js.map +1 -1
  127. package/dist/commands/vds/power.d.ts +1 -0
  128. package/dist/commands/vds/power.js +6 -0
  129. package/dist/commands/vds/power.js.map +1 -1
  130. package/dist/commands/vds/reinstall.d.ts +1 -0
  131. package/dist/commands/vds/reinstall.js +7 -0
  132. package/dist/commands/vds/reinstall.js.map +1 -1
  133. package/dist/commands/vds/resize.d.ts +1 -0
  134. package/dist/commands/vds/resize.js +6 -0
  135. package/dist/commands/vds/resize.js.map +1 -1
  136. package/dist/commands/vds/stats.d.ts +1 -0
  137. package/dist/commands/vds/stats.js +5 -0
  138. package/dist/commands/vds/stats.js.map +1 -1
  139. package/dist/commands/vps/activity.js +4 -4
  140. package/dist/commands/vps/activity.js.map +1 -1
  141. package/dist/commands/vps/bandwidth.js +5 -5
  142. package/dist/commands/vps/bandwidth.js.map +1 -1
  143. package/dist/commands/vps/boot-order.js +5 -5
  144. package/dist/commands/vps/boot-order.js.map +1 -1
  145. package/dist/commands/vps/console.js +9 -9
  146. package/dist/commands/vps/console.js.map +1 -1
  147. package/dist/commands/vps/details.d.ts +4 -0
  148. package/dist/commands/vps/details.js +20 -9
  149. package/dist/commands/vps/details.js.map +1 -1
  150. package/dist/commands/vps/ip/add.js +10 -9
  151. package/dist/commands/vps/ip/add.js.map +1 -1
  152. package/dist/commands/vps/ip/list.js +6 -6
  153. package/dist/commands/vps/ip/list.js.map +1 -1
  154. package/dist/commands/vps/list.js +4 -4
  155. package/dist/commands/vps/list.js.map +1 -1
  156. package/dist/commands/vps/order.d.ts +3 -2
  157. package/dist/commands/vps/order.js +25 -16
  158. package/dist/commands/vps/order.js.map +1 -1
  159. package/dist/commands/vps/power.js +14 -13
  160. package/dist/commands/vps/power.js.map +1 -1
  161. package/dist/commands/vps/reinstall.js +14 -14
  162. package/dist/commands/vps/reinstall.js.map +1 -1
  163. package/dist/commands/vps/resize.js +10 -9
  164. package/dist/commands/vps/resize.js.map +1 -1
  165. package/dist/commands/vps/stats.js +7 -7
  166. package/dist/commands/vps/stats.js.map +1 -1
  167. package/dist/help.js +0 -1
  168. package/dist/help.js.map +1 -1
  169. package/dist/tui/screens/Dashboard.js +1 -1
  170. package/dist/tui/screens/Dashboard.js.map +1 -1
  171. package/dist/tui/screens/Order.js +307 -78
  172. package/dist/tui/screens/Order.js.map +1 -1
  173. package/dist/tui/screens/Resources.js +31 -60
  174. package/dist/tui/screens/Resources.js.map +1 -1
  175. package/dist/ui/image-resolve.js +1 -1
  176. package/dist/ui/image-resolve.js.map +1 -1
  177. package/dist/ui/payment.d.ts +1 -1
  178. package/dist/ui/resource-detail.d.ts +3 -0
  179. package/dist/ui/{vps-detail.js → resource-detail.js} +8 -8
  180. package/dist/ui/resource-detail.js.map +1 -0
  181. package/dist/ui/resource-resolve.d.ts +4 -0
  182. package/dist/ui/resource-resolve.js +24 -0
  183. package/dist/ui/resource-resolve.js.map +1 -0
  184. package/dist/ui/wait.d.ts +1 -1
  185. package/dist/ui/wait.js +4 -4
  186. package/dist/ui/wait.js.map +1 -1
  187. package/package.json +1 -4
  188. package/dist/commands/bare-metal/index.d.ts +0 -4
  189. package/dist/commands/bare-metal/index.js +0 -5
  190. package/dist/commands/bare-metal/index.js.map +0 -1
  191. package/dist/commands/bare-metal/list.d.ts +0 -9
  192. package/dist/commands/bare-metal/list.js +0 -38
  193. package/dist/commands/bare-metal/list.js.map +0 -1
  194. package/dist/commands/bare-metal/order.d.ts +0 -6
  195. package/dist/commands/bare-metal/order.js +0 -27
  196. package/dist/commands/bare-metal/order.js.map +0 -1
  197. package/dist/ui/vps-detail.d.ts +0 -3
  198. package/dist/ui/vps-detail.js.map +0 -1
  199. package/dist/ui/vps-resolve.d.ts +0 -4
  200. package/dist/ui/vps-resolve.js +0 -24
  201. package/dist/ui/vps-resolve.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import ResourceIpList from "../../vps/ip/list.js";
2
2
  export default class InstantMetalIpList extends ResourceIpList {
3
3
  static description: string;
4
+ static examples: string[];
4
5
  static args: {
5
6
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
7
  };
@@ -1,6 +1,10 @@
1
1
  import ResourceIpList from "../../vps/ip/list.js";
2
2
  export default class InstantMetalIpList extends ResourceIpList {
3
3
  static description = "List an Instant Metal instance's IP addresses and extra-IP add-ons.";
4
+ static examples = [
5
+ "<%= config.bin %> instant-metal ip list 019e...",
6
+ "<%= config.bin %> instant-metal ip list 019e... -o json # {ips, addons, pending_addons}",
7
+ ];
4
8
  static args = ResourceIpList.args;
5
9
  static flags = ResourceIpList.flags;
6
10
  static baseFlags = ResourceIpList.baseFlags;
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/instant-metal/ip/list.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAC,WAAW,GAAG,qEAAqE,CAAC;IAC3F,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/instant-metal/ip/list.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAC,WAAW,GAAG,qEAAqE,CAAC;IAC3F,MAAM,CAAC,QAAQ,GAAG;QACd,iDAAiD;QACjD,8FAA8F;KAC/F,CAAC;IACJ,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC"}
@@ -4,6 +4,8 @@ export default class InstantMetalOrder extends ResourceOrder {
4
4
  static examples = [
5
5
  "<%= config.bin %> instant-metal order # interactive wizard, pre-filtered to Instant Metal",
6
6
  "<%= config.bin %> instant-metal order --project <id> --plan <id> --location <id> --image <id> --payment-method <id>",
7
+ "<%= config.bin %> instant-metal order --plan <id> --location <id> --image <id> --payment-method <id> --billing-cycle yearly",
8
+ " # plan must have the yearly cycle enabled",
7
9
  ];
8
10
  async run() {
9
11
  this.argv.push("--category", "dedicated");
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/order.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,WAAW,GAAG,kGAAkG,CAAC;IACxH,MAAM,CAAC,QAAQ,GAAG;QAChB,kHAAkH;QAClH,qHAAqH;KACtH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/order.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,WAAW,GAAG,kGAAkG,CAAC;IACxH,MAAM,CAAC,QAAQ,GAAG;QAChB,kHAAkH;QAClH,qHAAqH;QACrH,6HAA6H;QAC7H,wGAAwG;KACzG,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import ResourcePower from "../vps/power.js";
2
2
  export default class InstantMetalPower extends ResourcePower {
3
3
  static description: string;
4
+ static examples: string[];
4
5
  static args: {
5
6
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
7
  action: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
@@ -1,6 +1,12 @@
1
1
  import ResourcePower from "../vps/power.js";
2
2
  export default class InstantMetalPower extends ResourcePower {
3
3
  static description = "Power an Instant Metal instance on/off, reboot, shutdown, or cycle.";
4
+ static examples = [
5
+ "<%= config.bin %> instant-metal power 019e... on",
6
+ "<%= config.bin %> instant-metal power 019e... shutdown --wait # block until stopped; prompts first",
7
+ "<%= config.bin %> instant-metal power 019e... stop --yes # no prompt (required when piped)",
8
+ "<%= config.bin %> instant-metal power 019e... cycle --yes --wait --timeout 300 -o json",
9
+ ];
4
10
  static args = ResourcePower.args;
5
11
  static flags = ResourcePower.flags;
6
12
  static baseFlags = ResourcePower.baseFlags;
@@ -1 +1 @@
1
- {"version":3,"file":"power.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/power.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,WAAW,GAAG,qEAAqE,CAAC;IAC3F,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IACnC,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"power.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/power.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,WAAW,GAAG,qEAAqE,CAAC;IAC3F,MAAM,CAAC,QAAQ,GAAG;QACd,kDAAkD;QAClD,6GAA6G;QAC7G,0GAA0G;QAC1G,wFAAwF;KACzF,CAAC;IACJ,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IACnC,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import ResourceReinstall from "../vps/reinstall.js";
2
2
  export default class InstantMetalReinstall extends ResourceReinstall {
3
3
  static description: string;
4
+ static examples: string[];
4
5
  static args: {
5
6
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
7
  };
@@ -1,6 +1,13 @@
1
1
  import ResourceReinstall from "../vps/reinstall.js";
2
2
  export default class InstantMetalReinstall extends ResourceReinstall {
3
3
  static description = "Reinstall an Instant Metal instance with a new OS image (erases all data).";
4
+ static examples = [
5
+ "<%= config.bin %> instant-metal reinstall 019e... --image 019f... # confirms, then prompts (masked) for a root password",
6
+ "cat pass.txt | <%= config.bin %> instant-metal reinstall 019e... --image 019f... --password-stdin --yes",
7
+ "<%= config.bin %> instant-metal reinstall 019e... --image 019f... --ssh-key 019g... --wait --yes",
8
+ "<%= config.bin %> instant-metal reinstall 019e... --image 019f... --ssh-public-key 'ssh-ed25519 AAAA... user@host'",
9
+ "<%= config.bin %> instant-metal reinstall 019e... --image 019f... --ssh-key 019g... --ciuser ubuntu",
10
+ ];
4
11
  static args = ResourceReinstall.args;
5
12
  static flags = ResourceReinstall.flags;
6
13
  static baseFlags = ResourceReinstall.baseFlags;
@@ -1 +1 @@
1
- {"version":3,"file":"reinstall.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/reinstall.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,iBAAiB;IAClE,MAAM,CAAC,WAAW,GAAG,4EAA4E,CAAC;IAClG,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;IACrC,MAAM,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;IACvC,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"reinstall.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/reinstall.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,iBAAiB;IAClE,MAAM,CAAC,WAAW,GAAG,4EAA4E,CAAC;IAClG,MAAM,CAAC,QAAQ,GAAG;QACd,sIAAsI;QACtI,yGAAyG;QACzG,kGAAkG;QAClG,oHAAoH;QACpH,qGAAqG;KACtG,CAAC;IACJ,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;IACrC,MAAM,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;IACvC,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import ResourceResize from "../vps/resize.js";
2
2
  export default class InstantMetalResize extends ResourceResize {
3
3
  static description: string;
4
+ static examples: string[];
4
5
  static args: {
5
6
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
7
  };
@@ -1,6 +1,12 @@
1
1
  import ResourceResize from "../vps/resize.js";
2
2
  export default class InstantMetalResize extends ResourceResize {
3
3
  static description = "Resize an Instant Metal instance (change CPU / RAM / disk / bandwidth in place).";
4
+ static examples = [
5
+ "<%= config.bin %> instant-metal resize 019e... --ram 8 --yes # bump RAM to 8 GB; keep CPU/disk",
6
+ "<%= config.bin %> instant-metal resize 019e... --plan <planId> --payment-method <id> --yes",
7
+ "<%= config.bin %> instant-metal resize 019e... --cpu 4 --ram 8 --disk 120 # TTY: quote + confirm interactively",
8
+ "<%= config.bin %> instant-metal resize 019e... --disk 200 --apply-credits -o json",
9
+ ];
4
10
  static args = ResourceResize.args;
5
11
  static flags = ResourceResize.flags;
6
12
  static baseFlags = ResourceResize.baseFlags;
@@ -1 +1 @@
1
- {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/resize.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAC,WAAW,GAAG,kFAAkF,CAAC;IACxG,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/resize.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc;IAC5D,MAAM,CAAC,WAAW,GAAG,kFAAkF,CAAC;IACxG,MAAM,CAAC,QAAQ,GAAG;QACd,mHAAmH;QACnH,4FAA4F;QAC5F,sHAAsH;QACtH,mFAAmF;KACpF,CAAC;IACJ,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import ResourceStats from "../vps/stats.js";
2
2
  export default class InstantMetalStats extends ResourceStats {
3
3
  static description: string;
4
+ static examples: string[];
4
5
  static args: {
5
6
  id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
7
  };
@@ -1,6 +1,11 @@
1
1
  import ResourceStats from "../vps/stats.js";
2
2
  export default class InstantMetalStats extends ResourceStats {
3
3
  static description = "Show live CPU / memory / disk / uptime + network I/O for an Instant Metal instance.";
4
+ static examples = [
5
+ "<%= config.bin %> instant-metal stats 019e...",
6
+ "<%= config.bin %> instant-metal stats 019e... --timeframe day # sparklines over the last day",
7
+ "<%= config.bin %> instant-metal stats 019e... -o json # raw RRD array for scripting",
8
+ ];
4
9
  static args = ResourceStats.args;
5
10
  static flags = ResourceStats.flags;
6
11
  static baseFlags = ResourceStats.baseFlags;
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/stats.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,WAAW,GAAG,qFAAqF,CAAC;IAC3G,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IACnC,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/commands/instant-metal/stats.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,WAAW,GAAG,qFAAqF,CAAC;IAC3G,MAAM,CAAC,QAAQ,GAAG;QACd,+CAA+C;QAC/C,iGAAiG;QACjG,gGAAgG;KACjG,CAAC;IACJ,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IACnC,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC"}
@@ -4,6 +4,8 @@ export default class OrderGpu extends ResourceOrder {
4
4
  static examples = [
5
5
  "<%= config.bin %> order gpu # interactive wizard, pre-filtered to GPU",
6
6
  "<%= config.bin %> order gpu --project <id> --plan <id> --location <id> --image <id> --ssh-key <id> --payment-method <id>",
7
+ "<%= config.bin %> order gpu --plan <id> --location <id> --image <id> --ssh-key <id> --payment-method <id> --billing-cycle quarterly",
8
+ " # plan must have the quarterly cycle enabled",
7
9
  ];
8
10
  async run() {
9
11
  this.argv.push("--category", "gpu_cloud");
@@ -1 +1 @@
1
- {"version":3,"file":"gpu.js","sourceRoot":"","sources":["../../../src/commands/order/gpu.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IACjD,MAAM,CAAC,WAAW,GAChB,uFAAuF,CAAC;IAC1F,MAAM,CAAC,QAAQ,GAAG;QAChB,kHAAkH;QAClH,0HAA0H;KAC3H,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
1
+ {"version":3,"file":"gpu.js","sourceRoot":"","sources":["../../../src/commands/order/gpu.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IACjD,MAAM,CAAC,WAAW,GAChB,uFAAuF,CAAC;IAC1F,MAAM,CAAC,QAAQ,GAAG;QAChB,kHAAkH;QAClH,0HAA0H;QAC1H,qIAAqI;QACrI,qHAAqH;KACtH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
@@ -5,6 +5,8 @@ export default class OrderInstantMetal extends ResourceOrder {
5
5
  static examples = [
6
6
  "<%= config.bin %> order instant-metal # interactive wizard, Instant Metal plans",
7
7
  "<%= config.bin %> order instant-metal --project <id> --plan <id> --location <id> --image <id> --ssh-key <id> --payment-method <id>",
8
+ "<%= config.bin %> order instant-metal --plan <id> --location <id> --image <id> --ssh-key <id> --payment-method <id> --billing-cycle yearly",
9
+ " # plan must have the yearly cycle enabled",
8
10
  ];
9
11
  async run() {
10
12
  this.argv.push("--category", "dedicated");
@@ -1 +1 @@
1
- {"version":3,"file":"instant-metal.js","sourceRoot":"","sources":["../../../src/commands/order/instant-metal.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrC,MAAM,CAAC,WAAW,GAChB,kFAAkF,CAAC;IACrF,MAAM,CAAC,QAAQ,GAAG;QAChB,kHAAkH;QAClH,oIAAoI;KACrI,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
1
+ {"version":3,"file":"instant-metal.js","sourceRoot":"","sources":["../../../src/commands/order/instant-metal.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,aAAa;IAC1D,MAAM,CAAC,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrC,MAAM,CAAC,WAAW,GAChB,kFAAkF,CAAC;IACrF,MAAM,CAAC,QAAQ,GAAG;QAChB,kHAAkH;QAClH,oIAAoI;QACpI,4IAA4I;QAC5I,kHAAkH;KACnH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
@@ -5,7 +5,7 @@ export default class OrderStorage extends StorageOrder {
5
5
  static examples = [
6
6
  "<%= config.bin %> order storage # interactive wizard",
7
7
  "<%= config.bin %> order storage --name backups --size 500 --location <id> --payment-method <id>",
8
- "<%= config.bin %> order storage --name scratch --size 2000 --location <id> --attach-vps <vps-id> --apply-credits",
8
+ "<%= config.bin %> order storage --name scratch --size 2000 --location <id> --attach-resource <resource-id> --apply-credits",
9
9
  ];
10
10
  }
11
11
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/commands/order/storage.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,MAAM,CAAC,WAAW,GAChB,mEAAmE,CAAC;IACtE,MAAM,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC;IACnC,MAAM,CAAC,QAAQ,GAAG;QAChB,6FAA6F;QAC7F,iGAAiG;QACjG,kHAAkH;KACnH,CAAC"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/commands/order/storage.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,MAAM,CAAC,WAAW,GAChB,mEAAmE,CAAC;IACtE,MAAM,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC;IACnC,MAAM,CAAC,QAAQ,GAAG;QAChB,6FAA6F;QAC7F,iGAAiG;QACjG,4HAA4H;KAC7H,CAAC"}
@@ -5,6 +5,8 @@ export default class OrderVps extends ResourceOrder {
5
5
  static examples = [
6
6
  "<%= config.bin %> order vps # interactive: custom-spec wizard",
7
7
  "<%= config.bin %> order vps --cpu 4 --ram 8 --disk 80 --location <id> --image <id> --ssh-key <id> --payment-method <id>",
8
+ "<%= config.bin %> order vps --plan <id> --location <id> --image <id> --ssh-key <id> --payment-method <id> --billing-cycle yearly",
9
+ " # plan must have the yearly cycle enabled",
8
10
  ];
9
11
  async run() {
10
12
  this.argv.push("--category", "vps");
@@ -1 +1 @@
1
- {"version":3,"file":"vps.js","sourceRoot":"","sources":["../../../src/commands/order/vps.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IACjD,MAAM,CAAC,WAAW,GAChB,4FAA4F,CAAC;IAC/F,MAAM,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,MAAM,CAAC,QAAQ,GAAG;QAChB,0GAA0G;QAC1G,yHAAyH;KAC1H,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
1
+ {"version":3,"file":"vps.js","sourceRoot":"","sources":["../../../src/commands/order/vps.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IACjD,MAAM,CAAC,WAAW,GAChB,4FAA4F,CAAC;IAC/F,MAAM,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,MAAM,CAAC,QAAQ,GAAG;QAChB,0GAA0G;QAC1G,yHAAyH;QACzH,kIAAkI;QAClI,kHAAkH;KACnH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC"}
@@ -19,7 +19,7 @@ export default class OsImages extends BaseCommand {
19
19
  await this.initClients();
20
20
  const { flags } = await this.parse(OsImages);
21
21
  try {
22
- const images = (await this.clients.api.vpsOrders.catalog()).images;
22
+ const images = (await this.clients.api.orders.catalog()).images;
23
23
  this.emit(images, () => {
24
24
  if (images.length === 0) {
25
25
  this.log("No OS images available.");
@@ -1 +1 @@
1
- {"version":3,"file":"os-images.js","sourceRoot":"","sources":["../../src/commands/os-images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,WAAW,GAChB,yFAAyF,CAAC;IAC5F,MAAM,CAAC,OAAO,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,GAAG;QAChB,6BAA6B;QAC7B,mFAAmF;QACnF,qCAAqC;KACtC,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;YACxB,WAAW,EACT,+GAA+G;YACjH,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACrB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,GAAG,CACN,WAAW,CACT,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EACpB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAChB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,OAAO;iBACV,CAAC,CACH,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"os-images.js","sourceRoot":"","sources":["../../src/commands/os-images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,WAAW,GAChB,yFAAyF,CAAC;IAC5F,MAAM,CAAC,OAAO,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,GAAG;QAChB,6BAA6B;QAC7B,mFAAmF;QACnF,qCAAqC;KACtC,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC;YACxB,WAAW,EACT,+GAA+G;YACjH,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACrB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,GAAG,CACN,WAAW,CACT,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EACpB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAChB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,OAAO;iBACV,CAAC,CACH,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
@@ -3,19 +3,20 @@ import { BaseCommand } from "../base/command.js";
3
3
  import { renderTable, shortId } from "../ui/table.js";
4
4
  import { ApiError, AuthExpiredError, NetworkError } from "../api/errors.js";
5
5
  import { statusColor } from "../ui/glyphs.js";
6
+ const VIRTUALIZED_KINDS = ["vps", "vds", "gpu_cloud", "instant_metal"];
6
7
  export default class Resources extends BaseCommand {
7
8
  static aliases = ["resource"];
8
- static description = "List every resource across all kinds (vps, metal, transit, storage).";
9
+ static description = "List every resource across all kinds (vps, vds, gpu_cloud, instant_metal, transit, storage).";
9
10
  static examples = [
10
11
  "<%= config.bin %> resources",
11
- "<%= config.bin %> resources --kind vps,metal",
12
+ "<%= config.bin %> resources --kind vps,gpu_cloud",
12
13
  "<%= config.bin %> resources --project 019e... --kind storage",
13
14
  "<%= config.bin %> resources -o json",
14
15
  ];
15
16
  static flags = {
16
17
  project: Flags.string({ description: "Scope to a project id." }),
17
18
  kind: Flags.string({
18
- description: "Restrict to one or more kinds: vps, metal, transit, storage (repeatable or comma-separated).",
19
+ description: "Restrict to one or more kinds: vps, vds, gpu_cloud, instant_metal, transit, storage (repeatable or comma-separated).",
19
20
  multiple: true,
20
21
  }),
21
22
  };
@@ -27,11 +28,15 @@ export default class Resources extends BaseCommand {
27
28
  .map((s) => s.trim().toLowerCase())
28
29
  .filter(Boolean));
29
30
  const wants = (k) => requested.size === 0 || requested.has(k);
31
+ // /resources returns every virtualized kind in one call; fetch once if
32
+ // ANY virtualized kind is wanted, then filter per-row by v.kind.
33
+ const wantsAnyVirtualized = VIRTUALIZED_KINDS.some((k) => wants(k));
30
34
  const { api } = this.clients;
31
35
  const errors = [];
32
- const [vps, metal, transit, storage] = await Promise.all([
33
- wants("vps") ? api.vps.list(flags.project).catch((e) => recordErr(e, "vps")) : [],
34
- wants("metal") ? api.baremetal.list(flags.project).catch((e) => recordErr(e, "metal")) : [],
36
+ const [vps, transit, storage] = await Promise.all([
37
+ wantsAnyVirtualized
38
+ ? api.virtualized.list(flags.project).catch((e) => recordErr(e, "virtualized"))
39
+ : [],
35
40
  wants("transit") ? api.transit.list(flags.project).catch((e) => recordErr(e, "transit")) : [],
36
41
  wants("storage") ? api.storage.list(flags.project).catch((e) => recordErr(e, "storage")) : [],
37
42
  ]);
@@ -46,26 +51,22 @@ export default class Resources extends BaseCommand {
46
51
  return [];
47
52
  }
48
53
  const rows = [
49
- ...vps.map((v) => ({
50
- // Trust the server-stamped kind (vps / vds / gpu_cloud / instant_metal).
51
- // Hard-coding "vps" here mislabeled every VDS/GPU/instant-metal row
52
- // in the unified list and violated the "never branch on category"
53
- // rule downstream.
54
- kind: (v.kind ?? "vps"),
54
+ ...vps
55
+ // Trust the server-stamped kind (vps / vds / gpu_cloud / instant_metal)
56
+ // and filter per-row when --kind narrows the virtualized subset. Old
57
+ // code fell back to "vps" when the field was missing, silently
58
+ // relabelling any un-stamped row.
59
+ .filter((v) => v.kind !== undefined &&
60
+ VIRTUALIZED_KINDS.includes(v.kind) &&
61
+ wants(v.kind))
62
+ .map((v) => ({
63
+ kind: v.kind,
55
64
  id: v.id,
56
65
  name: v.hostname,
57
66
  status: v.status,
58
67
  location: v.location?.city ?? v.location?.name ?? "",
59
68
  project_name: v.project_name ?? "",
60
69
  })),
61
- ...metal.map((m) => ({
62
- kind: "metal",
63
- id: m.id,
64
- name: m.hostname ?? m.reference,
65
- status: m.is_active ? "active" : "inactive",
66
- location: m.location_city ?? m.location_name ?? "",
67
- project_name: m.project_name ?? "",
68
- })),
69
70
  ...transit.map((t) => ({
70
71
  kind: "transit",
71
72
  id: t.id,
@@ -79,7 +80,7 @@ export default class Resources extends BaseCommand {
79
80
  id: s.id,
80
81
  name: s.name,
81
82
  status: s.status,
82
- location: s.vps_hostname ?? "",
83
+ location: s.attached_resource_hostname ?? "",
83
84
  project_name: s.project_name ?? "",
84
85
  })),
85
86
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export default class StorageAttach extends BaseCommand {
6
6
  volume: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
7
  };
8
8
  static flags: {
9
- vps: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ resource: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
10
  };
11
11
  run(): Promise<void>;
12
12
  }
@@ -1,19 +1,19 @@
1
1
  import { Args, Flags } from "@oclif/core";
2
2
  import { BaseCommand } from "../../base/command.js";
3
3
  import { resolveVolume } from "../../ui/volume-resolve.js";
4
- import { resolveVpsRef } from "../../ui/vps-resolve.js";
4
+ import { resolveResourceRef } from "../../ui/resource-resolve.js";
5
5
  export default class StorageAttach extends BaseCommand {
6
6
  static description = [
7
- "Attach a block volume to a VPS.",
7
+ "Attach a block volume to a virtualized resource (VPS, VDS, GPU Cloud, or Instant Metal).",
8
8
  "",
9
9
  "The volume must be detached and live on the same cluster/location as",
10
- "the target VPS. Re-attaching a volume re-binds its existing disk, so",
10
+ "the target resource. Re-attaching a volume re-binds its existing disk, so",
11
11
  "data is preserved across detach/attach cycles.",
12
12
  ].join("\n");
13
13
  static examples = [
14
- "<%= config.bin %> storage attach backups --vps web-01 # by volume name + VPS hostname",
15
- "<%= config.bin %> storage attach 019e... --vps 019f...",
16
- "<%= config.bin %> storage attach 019e... --vps 019f... -o json # emits {status, volume_id, resource_id, disk_slot}",
14
+ "<%= config.bin %> storage attach backups --resource web-01 # by volume name + resource hostname",
15
+ "<%= config.bin %> storage attach 019e... --resource 019f...",
16
+ "<%= config.bin %> storage attach 019e... --resource 019f... -o json # emits {status, volume_id, resource_id, disk_slot}",
17
17
  ];
18
18
  static args = {
19
19
  volume: Args.string({
@@ -22,8 +22,8 @@ export default class StorageAttach extends BaseCommand {
22
22
  }),
23
23
  };
24
24
  static flags = {
25
- vps: Flags.string({
26
- description: "Target VPS — short id from `vps list`, full UUID, hostname, or IP. Must be on the volume's cluster.",
25
+ resource: Flags.string({
26
+ description: "Target resource — short id from `vps list` / `vds list` / `gpu list` / `instant-metal list`, full UUID, hostname, or IP. Must be on the volume's cluster.",
27
27
  required: true,
28
28
  }),
29
29
  };
@@ -32,10 +32,10 @@ export default class StorageAttach extends BaseCommand {
32
32
  const { args, flags } = await this.parse(StorageAttach);
33
33
  try {
34
34
  const volume = await resolveVolume(this.clients.api, args.volume);
35
- const vps = await resolveVpsRef(this.clients.api, flags.vps);
36
- const result = await this.clients.api.storage.attach(volume.id, vps.id);
35
+ const resource = await resolveResourceRef(this.clients.api, flags.resource);
36
+ const result = await this.clients.api.storage.attach(volume.id, resource.id);
37
37
  this.emit(result, () => {
38
- this.log(`Attached ${volume.name} → ${vps.hostname}`);
38
+ this.log(`Attached ${volume.name} → ${resource.hostname}`);
39
39
  if (result.disk_slot)
40
40
  this.log(`Disk slot: ${result.disk_slot}`);
41
41
  });
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/commands/storage/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,GAAG;QACnB,iCAAiC;QACjC,EAAE;QACF,sEAAsE;QACtE,sEAAsE;QACtE,gDAAgD;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,qGAAqG;QACrG,wDAAwD;QACxD,yHAAyH;KAC1H,CAAC;IACF,MAAM,CAAC,IAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EACT,8EAA8E;YAChF,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,WAAW,EACT,qGAAqG;YACvG,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACtD,IAAI,MAAM,CAAC,SAAS;oBAAE,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/commands/storage/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,GAAG;QACnB,0FAA0F;QAC1F,EAAE;QACF,sEAAsE;QACtE,2EAA2E;QAC3E,gDAAgD;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,2GAA2G;QAC3G,6DAA6D;QAC7D,0HAA0H;KAC3H,CAAC;IACF,MAAM,CAAC,IAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EACT,8EAA8E;YAChF,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,WAAW,EACT,2JAA2J;YAC7J,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3D,IAAI,MAAM,CAAC,SAAS;oBAAE,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
@@ -5,7 +5,7 @@ import { isInteractive } from "../../ui/wizard.js";
5
5
  import { resolveVolume } from "../../ui/volume-resolve.js";
6
6
  export default class StorageDetach extends BaseCommand {
7
7
  static description = [
8
- "Detach a block volume from its current VPS.",
8
+ "Detach a block volume from its current resource.",
9
9
  "",
10
10
  "Disruptive if the guest still has the disk mounted — asks for",
11
11
  "confirmation on a TTY (default No). When stdout is piped, pass --yes",
@@ -38,7 +38,7 @@ export default class StorageDetach extends BaseCommand {
38
38
  exit: 1,
39
39
  });
40
40
  }
41
- const target = volume.vps_hostname ? ` from ${volume.vps_hostname}` : "";
41
+ const target = volume.attached_resource_hostname ? ` from ${volume.attached_resource_hostname}` : "";
42
42
  const outcome = await confirmDestructive({
43
43
  message: `Detach ${volume.name} (${volume.size_gb} GB)${target}?`,
44
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"detach.js","sourceRoot":"","sources":["../../../src/commands/storage/detach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,GAAG;QACnB,6CAA6C;QAC7C,EAAE;QACF,+DAA+D;QAC/D,sEAAsE;QACtE,oEAAoE;KACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,uEAAuE;QACvE,+FAA+F;KAChG,CAAC;IACF,MAAM,CAAC,IAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EACT,4DAA4D;YAC9D,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kEAAkE;SAChF,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAElE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;oBACrB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,mDAAmD,CAAC,EAAE;wBAClF,IAAI,EAAE,CAAC;qBACR,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC;oBACvC,OAAO,EAAE,UAAU,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,OAAO,MAAM,GAAG;iBAClE,CAAC,CAAC;gBACH,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"detach.js","sourceRoot":"","sources":["../../../src/commands/storage/detach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,GAAG;QACnB,kDAAkD;QAClD,EAAE;QACF,+DAA+D;QAC/D,sEAAsE;QACtE,oEAAoE;KACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,uEAAuE;QACvE,+FAA+F;KAChG,CAAC;IACF,MAAM,CAAC,IAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EACT,4DAA4D;YAC9D,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kEAAkE;SAChF,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAElE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;oBACrB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,mDAAmD,CAAC,EAAE;wBAClF,IAAI,EAAE,CAAC;qBACR,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrG,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC;oBACvC,OAAO,EAAE,UAAU,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,OAAO,MAAM,GAAG;iBAClE,CAAC,CAAC;gBACH,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
@@ -28,7 +28,7 @@ export default class StorageList extends BaseCommand {
28
28
  v.name,
29
29
  formatSize(v.size_gb),
30
30
  statusColor(v.status),
31
- v.vps_hostname ?? (v.vps_id ? shortId(v.vps_id) : ""),
31
+ v.attached_resource_hostname ?? (v.attached_resource_id ? shortId(v.attached_resource_id) : ""),
32
32
  v.project_name ?? "",
33
33
  ])));
34
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/storage/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,WAAW,GAAG,6BAA6B,CAAC;IACnD,MAAM,CAAC,QAAQ,GAAG;QAChB,gCAAgC;QAChC,kDAAkD;QAClD,wCAAwC;KACzC,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;KACjE,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE,CACxC,EAAE,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;gBACjE,IAAI,CAAC,GAAG,CACN,WAAW,CACT,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,EAC1D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACb,CAAC,CAAC,IAAI;oBACN,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;oBACrB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;oBACrB,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,CAAC,CAAC,YAAY,IAAI,EAAE;iBACrB,CAAC,CACH,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/storage/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,WAAW,GAAG,6BAA6B,CAAC;IACnD,MAAM,CAAC,QAAQ,GAAG;QAChB,gCAAgC;QAChC,kDAAkD;QAClD,wCAAwC;KACzC,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;KACjE,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE,CACxC,EAAE,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;gBACjE,IAAI,CAAC,GAAG,CACN,WAAW,CACT,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,EAC1D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACb,CAAC,CAAC,IAAI;oBACN,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;oBACrB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;oBACrB,CAAC,CAAC,0BAA0B,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/F,CAAC,CAAC,YAAY,IAAI,EAAE;iBACrB,CAAC,CACH,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
@@ -6,7 +6,7 @@ export default class StorageOrder extends BaseCommand {
6
6
  name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
7
  size: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
8
  location: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- "attach-vps": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "attach-resource": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  "payment-method": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  "apply-credits": import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  "no-interactive": import("@oclif/core/interfaces").BooleanFlag<boolean>;
@@ -10,7 +10,7 @@ export default class StorageOrder extends BaseCommand {
10
10
  static examples = [
11
11
  "<%= config.bin %> storage order # interactive wizard; defaults to active project",
12
12
  "<%= config.bin %> storage order --name backups --size 500 --location 019e... --payment-method 019e...",
13
- "<%= config.bin %> storage order --name scratch --size 2000 --location 019e... --attach-vps 019e... --apply-credits",
13
+ "<%= config.bin %> storage order --name scratch --size 2000 --location 019e... --attach-resource 019e... --apply-credits",
14
14
  "<%= config.bin %> storage order --no-interactive --name logs --size 100 --location 019e... --apply-credits -o json",
15
15
  " # bills active project; pass --project <id> to override",
16
16
  ];
@@ -18,7 +18,7 @@ export default class StorageOrder extends BaseCommand {
18
18
  name: Flags.string({ description: "Volume name (1..64 chars)." }),
19
19
  size: Flags.integer({ description: "Size in GB (1..10000)." }),
20
20
  location: Flags.string({ description: "Location id." }),
21
- "attach-vps": Flags.string({ description: "Attach to this VPS id on creation." }),
21
+ "attach-resource": Flags.string({ description: "Attach to this resource id (VPS/VDS/GPU/Instant Metal) on creation." }),
22
22
  "payment-method": Flags.string({ description: "Saved payment method id." }),
23
23
  "apply-credits": Flags.boolean({ description: "Apply team credit balance first." }),
24
24
  "no-interactive": Flags.boolean({
@@ -64,7 +64,7 @@ export default class StorageOrder extends BaseCommand {
64
64
  name: flags.name,
65
65
  size_gb: flags.size,
66
66
  location_id: flags.location,
67
- attach_resource_id: flags["attach-vps"],
67
+ attach_resource_id: flags["attach-resource"],
68
68
  payment_method_id: payment.payment_method_id,
69
69
  apply_credits: payment.apply_credits || undefined,
70
70
  };
@@ -151,11 +151,11 @@ export default class StorageOrder extends BaseCommand {
151
151
  disabled: l.in_stock ? undefined : "out of stock",
152
152
  })));
153
153
  }
154
- let attachVps = flags["attach-vps"];
155
- if (!attachVps) {
154
+ let attachResource = flags["attach-resource"];
155
+ if (!attachResource) {
156
156
  let candidates = [];
157
157
  try {
158
- const list = await this.clients.api.vps.list(projectId);
158
+ const list = await this.clients.api.virtualized.list(projectId);
159
159
  candidates = list
160
160
  .filter((v) => !v.location_id || v.location_id === locationId)
161
161
  .map((v) => ({ id: v.id, hostname: v.hostname }));
@@ -168,8 +168,8 @@ export default class StorageOrder extends BaseCommand {
168
168
  name: `${v.hostname} ${v.id.slice(0, 8)}`,
169
169
  })),
170
170
  ];
171
- const pick = await pickFromCatalog("Attach to a VPS in this project + location?", choices);
172
- attachVps = pick === "__none__" ? undefined : pick;
171
+ const pick = await pickFromCatalog("Attach to a resource in this project + location?", choices);
172
+ attachResource = pick === "__none__" ? undefined : pick;
173
173
  }
174
174
  const priceNum = Number(catalog.price_per_gb);
175
175
  const displayUnits = useTb ? size / 1024 : size;
@@ -201,7 +201,7 @@ export default class StorageOrder extends BaseCommand {
201
201
  "Location",
202
202
  catalog.locations.find((l) => l.id === locationId)?.city ?? shortId(locationId),
203
203
  ],
204
- ["Attach to", attachVps ? shortId(attachVps) : "(unattached)"],
204
+ ["Attach to", attachResource ? shortId(attachResource) : "(unattached)"],
205
205
  ["Payment", payment.summary],
206
206
  ["Monthly cost", monthly],
207
207
  ];
@@ -216,7 +216,7 @@ export default class StorageOrder extends BaseCommand {
216
216
  name,
217
217
  size_gb: size,
218
218
  location_id: locationId,
219
- attach_resource_id: attachVps,
219
+ attach_resource_id: attachResource,
220
220
  payment_method_id: payment.payment_method_id,
221
221
  apply_credits: payment.apply_credits || undefined,
222
222
  },