pvectl 0.2.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.
Files changed (558) hide show
  1. checksums.yaml +7 -0
  2. data/.claude/rules/branch-before-changes.md +52 -0
  3. data/.claude/rules/documentation-updates.md +104 -0
  4. data/.claude/rules/git-workflow.md +84 -0
  5. data/.claude/rules/proxmox-api-docs.md +58 -0
  6. data/.claude/rules/rbs-signatures.md +80 -0
  7. data/.claude/rules/refactoring-as-design-option.md +35 -0
  8. data/.claude/scheduled_tasks.lock +1 -0
  9. data/.claude/settings.json +51 -0
  10. data/.mcp.json +8 -0
  11. data/.ruby-gemset +1 -0
  12. data/.ruby-version +1 -0
  13. data/CHANGELOG.md +138 -0
  14. data/CLAUDE.md +211 -0
  15. data/CODE_OF_CONDUCT.md +132 -0
  16. data/LICENSE.txt +21 -0
  17. data/README.md +143 -0
  18. data/Rakefile +8 -0
  19. data/docs/proxmox-api-update.sh +96 -0
  20. data/exe/pvectl +5 -0
  21. data/lib/pvectl/argv_preprocessor.rb +334 -0
  22. data/lib/pvectl/cli.rb +102 -0
  23. data/lib/pvectl/commands/apt.rb +389 -0
  24. data/lib/pvectl/commands/clone_container.rb +230 -0
  25. data/lib/pvectl/commands/clone_vm.rb +331 -0
  26. data/lib/pvectl/commands/cloudinit/command.rb +122 -0
  27. data/lib/pvectl/commands/cloudinit/dump.rb +94 -0
  28. data/lib/pvectl/commands/cloudinit/pending.rb +137 -0
  29. data/lib/pvectl/commands/cloudinit/regenerate.rb +79 -0
  30. data/lib/pvectl/commands/config/command.rb +65 -0
  31. data/lib/pvectl/commands/config/get_contexts.rb +68 -0
  32. data/lib/pvectl/commands/config/set_cluster.rb +103 -0
  33. data/lib/pvectl/commands/config/set_context.rb +136 -0
  34. data/lib/pvectl/commands/config/set_credentials.rb +181 -0
  35. data/lib/pvectl/commands/config/use_context.rb +69 -0
  36. data/lib/pvectl/commands/config/view.rb +67 -0
  37. data/lib/pvectl/commands/console.rb +93 -0
  38. data/lib/pvectl/commands/console_ct.rb +187 -0
  39. data/lib/pvectl/commands/console_vm.rb +187 -0
  40. data/lib/pvectl/commands/container_lifecycle_command.rb +77 -0
  41. data/lib/pvectl/commands/create_backup.rb +173 -0
  42. data/lib/pvectl/commands/create_container.rb +141 -0
  43. data/lib/pvectl/commands/create_resource_command.rb +244 -0
  44. data/lib/pvectl/commands/create_snapshot.rb +242 -0
  45. data/lib/pvectl/commands/create_vm.rb +267 -0
  46. data/lib/pvectl/commands/delete_backup.rb +139 -0
  47. data/lib/pvectl/commands/delete_command.rb +119 -0
  48. data/lib/pvectl/commands/delete_container.rb +30 -0
  49. data/lib/pvectl/commands/delete_snapshot.rb +248 -0
  50. data/lib/pvectl/commands/delete_vm.rb +127 -0
  51. data/lib/pvectl/commands/describe/command.rb +251 -0
  52. data/lib/pvectl/commands/edit_container.rb +56 -0
  53. data/lib/pvectl/commands/edit_dns.rb +149 -0
  54. data/lib/pvectl/commands/edit_hosts.rb +135 -0
  55. data/lib/pvectl/commands/edit_node.rb +54 -0
  56. data/lib/pvectl/commands/edit_resource_command.rb +180 -0
  57. data/lib/pvectl/commands/edit_vm.rb +154 -0
  58. data/lib/pvectl/commands/edit_volume.rb +189 -0
  59. data/lib/pvectl/commands/feature_command.rb +230 -0
  60. data/lib/pvectl/commands/feature_container.rb +21 -0
  61. data/lib/pvectl/commands/feature_vm.rb +94 -0
  62. data/lib/pvectl/commands/get/command.rb +360 -0
  63. data/lib/pvectl/commands/get/handlers/backups.rb +76 -0
  64. data/lib/pvectl/commands/get/handlers/capabilities.rb +107 -0
  65. data/lib/pvectl/commands/get/handlers/containers.rb +148 -0
  66. data/lib/pvectl/commands/get/handlers/disks.rb +107 -0
  67. data/lib/pvectl/commands/get/handlers/dns.rb +94 -0
  68. data/lib/pvectl/commands/get/handlers/hosts.rb +94 -0
  69. data/lib/pvectl/commands/get/handlers/nodes.rb +162 -0
  70. data/lib/pvectl/commands/get/handlers/services.rb +81 -0
  71. data/lib/pvectl/commands/get/handlers/snapshots.rb +97 -0
  72. data/lib/pvectl/commands/get/handlers/storage.rb +118 -0
  73. data/lib/pvectl/commands/get/handlers/subscription.rb +69 -0
  74. data/lib/pvectl/commands/get/handlers/tasks.rb +89 -0
  75. data/lib/pvectl/commands/get/handlers/templates.rb +175 -0
  76. data/lib/pvectl/commands/get/handlers/time.rb +118 -0
  77. data/lib/pvectl/commands/get/handlers/vms.rb +145 -0
  78. data/lib/pvectl/commands/get/handlers/volume.rb +134 -0
  79. data/lib/pvectl/commands/get/resource_handler.rb +63 -0
  80. data/lib/pvectl/commands/get/resource_registry.rb +18 -0
  81. data/lib/pvectl/commands/get/watch_loop.rb +129 -0
  82. data/lib/pvectl/commands/irreversible_command.rb +265 -0
  83. data/lib/pvectl/commands/logs/command.rb +275 -0
  84. data/lib/pvectl/commands/logs/handlers/journal.rb +46 -0
  85. data/lib/pvectl/commands/logs/handlers/syslog.rb +53 -0
  86. data/lib/pvectl/commands/logs/handlers/task_detail.rb +52 -0
  87. data/lib/pvectl/commands/logs/handlers/task_logs.rb +115 -0
  88. data/lib/pvectl/commands/logs/resource_handler.rb +46 -0
  89. data/lib/pvectl/commands/logs/resource_registry.rb +22 -0
  90. data/lib/pvectl/commands/migrate_command.rb +282 -0
  91. data/lib/pvectl/commands/migrate_container.rb +23 -0
  92. data/lib/pvectl/commands/migrate_vm.rb +122 -0
  93. data/lib/pvectl/commands/move_disk_command.rb +239 -0
  94. data/lib/pvectl/commands/move_disk_container.rb +21 -0
  95. data/lib/pvectl/commands/move_disk_vm.rb +127 -0
  96. data/lib/pvectl/commands/ping.rb +249 -0
  97. data/lib/pvectl/commands/pull.rb +342 -0
  98. data/lib/pvectl/commands/push.rb +352 -0
  99. data/lib/pvectl/commands/reset.rb +64 -0
  100. data/lib/pvectl/commands/resource_lifecycle_command.rb +277 -0
  101. data/lib/pvectl/commands/resource_registry.rb +73 -0
  102. data/lib/pvectl/commands/restart.rb +70 -0
  103. data/lib/pvectl/commands/restart_container.rb +18 -0
  104. data/lib/pvectl/commands/restore_backup.rb +236 -0
  105. data/lib/pvectl/commands/resume.rb +57 -0
  106. data/lib/pvectl/commands/rollback_snapshot.rb +228 -0
  107. data/lib/pvectl/commands/sendkey_vm.rb +205 -0
  108. data/lib/pvectl/commands/service.rb +293 -0
  109. data/lib/pvectl/commands/set_container.rb +50 -0
  110. data/lib/pvectl/commands/set_node.rb +52 -0
  111. data/lib/pvectl/commands/set_resource_command.rb +185 -0
  112. data/lib/pvectl/commands/set_vm.rb +136 -0
  113. data/lib/pvectl/commands/set_volume.rb +212 -0
  114. data/lib/pvectl/commands/shared_config_parsers.rb +126 -0
  115. data/lib/pvectl/commands/shared_flags.rb +155 -0
  116. data/lib/pvectl/commands/shutdown.rb +73 -0
  117. data/lib/pvectl/commands/shutdown_container.rb +18 -0
  118. data/lib/pvectl/commands/start.rb +79 -0
  119. data/lib/pvectl/commands/start_container.rb +18 -0
  120. data/lib/pvectl/commands/stop.rb +75 -0
  121. data/lib/pvectl/commands/stop_container.rb +18 -0
  122. data/lib/pvectl/commands/suspend.rb +64 -0
  123. data/lib/pvectl/commands/template_command.rb +205 -0
  124. data/lib/pvectl/commands/template_container.rb +27 -0
  125. data/lib/pvectl/commands/template_vm.rb +106 -0
  126. data/lib/pvectl/commands/top/command.rb +206 -0
  127. data/lib/pvectl/commands/top/handlers/containers.rb +61 -0
  128. data/lib/pvectl/commands/top/handlers/nodes.rb +61 -0
  129. data/lib/pvectl/commands/top/handlers/vms.rb +61 -0
  130. data/lib/pvectl/commands/top/resource_handler.rb +46 -0
  131. data/lib/pvectl/commands/top/resource_registry.rb +22 -0
  132. data/lib/pvectl/commands/unlink_disk_vm.rb +232 -0
  133. data/lib/pvectl/commands/vm_lifecycle_command.rb +77 -0
  134. data/lib/pvectl/commands/wakeonlan_node.rb +153 -0
  135. data/lib/pvectl/config/errors.rb +62 -0
  136. data/lib/pvectl/config/models/cluster.rb +180 -0
  137. data/lib/pvectl/config/models/context.rb +100 -0
  138. data/lib/pvectl/config/models/resolved_config.rb +171 -0
  139. data/lib/pvectl/config/models/user.rb +133 -0
  140. data/lib/pvectl/config/provider.rb +297 -0
  141. data/lib/pvectl/config/service.rb +300 -0
  142. data/lib/pvectl/config/store.rb +161 -0
  143. data/lib/pvectl/config/wizard.rb +309 -0
  144. data/lib/pvectl/config_serializer.rb +1034 -0
  145. data/lib/pvectl/connection/retry_handler.rb +161 -0
  146. data/lib/pvectl/connection.rb +157 -0
  147. data/lib/pvectl/console/terminal_session.rb +449 -0
  148. data/lib/pvectl/editor_session.rb +157 -0
  149. data/lib/pvectl/exit_codes.rb +43 -0
  150. data/lib/pvectl/formatters/base.rb +55 -0
  151. data/lib/pvectl/formatters/color_support.rb +90 -0
  152. data/lib/pvectl/formatters/json.rb +45 -0
  153. data/lib/pvectl/formatters/output_helper.rb +77 -0
  154. data/lib/pvectl/formatters/registry.rb +72 -0
  155. data/lib/pvectl/formatters/table.rb +235 -0
  156. data/lib/pvectl/formatters/wide.rb +93 -0
  157. data/lib/pvectl/formatters/yaml.rb +49 -0
  158. data/lib/pvectl/manifest_serializer.rb +142 -0
  159. data/lib/pvectl/models/apt_package.rb +107 -0
  160. data/lib/pvectl/models/backup.rb +173 -0
  161. data/lib/pvectl/models/base.rb +49 -0
  162. data/lib/pvectl/models/capability.rb +62 -0
  163. data/lib/pvectl/models/container.rb +205 -0
  164. data/lib/pvectl/models/container_operation_result.rb +27 -0
  165. data/lib/pvectl/models/dns_config.rb +54 -0
  166. data/lib/pvectl/models/hosts_file.rb +47 -0
  167. data/lib/pvectl/models/journal_entry.rb +16 -0
  168. data/lib/pvectl/models/network_interface.rb +85 -0
  169. data/lib/pvectl/models/node.rb +195 -0
  170. data/lib/pvectl/models/node_operation_result.rb +45 -0
  171. data/lib/pvectl/models/operation_result.rb +110 -0
  172. data/lib/pvectl/models/physical_disk.rb +193 -0
  173. data/lib/pvectl/models/service.rb +80 -0
  174. data/lib/pvectl/models/snapshot.rb +101 -0
  175. data/lib/pvectl/models/snapshot_description.rb +39 -0
  176. data/lib/pvectl/models/storage.rb +180 -0
  177. data/lib/pvectl/models/subscription.rb +87 -0
  178. data/lib/pvectl/models/syslog_entry.rb +17 -0
  179. data/lib/pvectl/models/task.rb +95 -0
  180. data/lib/pvectl/models/task_entry.rb +52 -0
  181. data/lib/pvectl/models/task_log_line.rb +17 -0
  182. data/lib/pvectl/models/time_config.rb +47 -0
  183. data/lib/pvectl/models/vm.rb +137 -0
  184. data/lib/pvectl/models/vm_operation_result.rb +27 -0
  185. data/lib/pvectl/models/volume.rb +133 -0
  186. data/lib/pvectl/models/volume_operation_result.rb +26 -0
  187. data/lib/pvectl/parsers/cloud_init_config.rb +92 -0
  188. data/lib/pvectl/parsers/disk_config.rb +97 -0
  189. data/lib/pvectl/parsers/lxc_mount_config.rb +98 -0
  190. data/lib/pvectl/parsers/lxc_net_config.rb +97 -0
  191. data/lib/pvectl/parsers/net_config.rb +95 -0
  192. data/lib/pvectl/parsers/smart_text.rb +42 -0
  193. data/lib/pvectl/plugin_loader.rb +157 -0
  194. data/lib/pvectl/presenters/apt_package.rb +99 -0
  195. data/lib/pvectl/presenters/backup.rb +128 -0
  196. data/lib/pvectl/presenters/base.rb +283 -0
  197. data/lib/pvectl/presenters/capability.rb +104 -0
  198. data/lib/pvectl/presenters/config/context.rb +80 -0
  199. data/lib/pvectl/presenters/container.rb +574 -0
  200. data/lib/pvectl/presenters/container_operation_result.rb +109 -0
  201. data/lib/pvectl/presenters/disk.rb +184 -0
  202. data/lib/pvectl/presenters/dns_config.rb +68 -0
  203. data/lib/pvectl/presenters/hosts_file.rb +61 -0
  204. data/lib/pvectl/presenters/journal_entry.rb +20 -0
  205. data/lib/pvectl/presenters/node.rb +762 -0
  206. data/lib/pvectl/presenters/node_operation_result.rb +50 -0
  207. data/lib/pvectl/presenters/operation_result.rb +61 -0
  208. data/lib/pvectl/presenters/service.rb +76 -0
  209. data/lib/pvectl/presenters/snapshot.rb +239 -0
  210. data/lib/pvectl/presenters/snapshot_operation_result.rb +125 -0
  211. data/lib/pvectl/presenters/storage.rb +329 -0
  212. data/lib/pvectl/presenters/subscription.rb +189 -0
  213. data/lib/pvectl/presenters/syslog_entry.rb +20 -0
  214. data/lib/pvectl/presenters/task_entry.rb +69 -0
  215. data/lib/pvectl/presenters/task_log_line.rb +20 -0
  216. data/lib/pvectl/presenters/template.rb +76 -0
  217. data/lib/pvectl/presenters/time_config.rb +86 -0
  218. data/lib/pvectl/presenters/top_container.rb +112 -0
  219. data/lib/pvectl/presenters/top_node.rb +115 -0
  220. data/lib/pvectl/presenters/top_presenter.rb +59 -0
  221. data/lib/pvectl/presenters/top_vm.rb +105 -0
  222. data/lib/pvectl/presenters/vm.rb +853 -0
  223. data/lib/pvectl/presenters/vm_operation_result.rb +109 -0
  224. data/lib/pvectl/presenters/volume.rb +136 -0
  225. data/lib/pvectl/presenters/volume_operation_result.rb +58 -0
  226. data/lib/pvectl/repositories/apt.rb +93 -0
  227. data/lib/pvectl/repositories/backup.rb +186 -0
  228. data/lib/pvectl/repositories/base.rb +110 -0
  229. data/lib/pvectl/repositories/capabilities.rb +96 -0
  230. data/lib/pvectl/repositories/container.rb +503 -0
  231. data/lib/pvectl/repositories/disk.rb +87 -0
  232. data/lib/pvectl/repositories/dns.rb +54 -0
  233. data/lib/pvectl/repositories/hosts.rb +63 -0
  234. data/lib/pvectl/repositories/journal.rb +23 -0
  235. data/lib/pvectl/repositories/node.rb +537 -0
  236. data/lib/pvectl/repositories/service.rb +139 -0
  237. data/lib/pvectl/repositories/snapshot.rb +133 -0
  238. data/lib/pvectl/repositories/storage.rb +302 -0
  239. data/lib/pvectl/repositories/subscription.rb +77 -0
  240. data/lib/pvectl/repositories/syslog.rb +25 -0
  241. data/lib/pvectl/repositories/task.rb +82 -0
  242. data/lib/pvectl/repositories/task_list.rb +30 -0
  243. data/lib/pvectl/repositories/task_log.rb +31 -0
  244. data/lib/pvectl/repositories/time_config.rb +53 -0
  245. data/lib/pvectl/repositories/vm.rb +616 -0
  246. data/lib/pvectl/repositories/volume.rb +306 -0
  247. data/lib/pvectl/selectors/base.rb +201 -0
  248. data/lib/pvectl/selectors/container.rb +116 -0
  249. data/lib/pvectl/selectors/disk.rb +59 -0
  250. data/lib/pvectl/selectors/vm.rb +116 -0
  251. data/lib/pvectl/selectors/volume.rb +59 -0
  252. data/lib/pvectl/services/backup.rb +209 -0
  253. data/lib/pvectl/services/clone_container.rb +260 -0
  254. data/lib/pvectl/services/clone_vm.rb +265 -0
  255. data/lib/pvectl/services/cloudinit.rb +96 -0
  256. data/lib/pvectl/services/console.rb +152 -0
  257. data/lib/pvectl/services/container_lifecycle.rb +124 -0
  258. data/lib/pvectl/services/create_container.rb +179 -0
  259. data/lib/pvectl/services/create_vm.rb +191 -0
  260. data/lib/pvectl/services/edit_container.rb +125 -0
  261. data/lib/pvectl/services/edit_dns.rb +159 -0
  262. data/lib/pvectl/services/edit_hosts.rb +78 -0
  263. data/lib/pvectl/services/edit_node.rb +147 -0
  264. data/lib/pvectl/services/edit_vm.rb +125 -0
  265. data/lib/pvectl/services/edit_volume.rb +224 -0
  266. data/lib/pvectl/services/get/resource_service.rb +98 -0
  267. data/lib/pvectl/services/move_disk.rb +132 -0
  268. data/lib/pvectl/services/pull_config.rb +94 -0
  269. data/lib/pvectl/services/push_config.rb +524 -0
  270. data/lib/pvectl/services/resize_volume.rb +253 -0
  271. data/lib/pvectl/services/resource_delete.rb +169 -0
  272. data/lib/pvectl/services/resource_migration.rb +170 -0
  273. data/lib/pvectl/services/sendkey.rb +108 -0
  274. data/lib/pvectl/services/service_lifecycle.rb +89 -0
  275. data/lib/pvectl/services/set_container.rb +128 -0
  276. data/lib/pvectl/services/set_node.rb +236 -0
  277. data/lib/pvectl/services/set_vm.rb +128 -0
  278. data/lib/pvectl/services/set_volume.rb +126 -0
  279. data/lib/pvectl/services/snapshot.rb +261 -0
  280. data/lib/pvectl/services/task_listing.rb +75 -0
  281. data/lib/pvectl/services/unlink_disk.rb +86 -0
  282. data/lib/pvectl/services/vm_lifecycle.rb +124 -0
  283. data/lib/pvectl/services/wakeonlan.rb +79 -0
  284. data/lib/pvectl/utils/resource_resolver.rb +80 -0
  285. data/lib/pvectl/version.rb +13 -0
  286. data/lib/pvectl/wizards/create_container.rb +105 -0
  287. data/lib/pvectl/wizards/create_vm.rb +98 -0
  288. data/lib/pvectl.rb +439 -0
  289. data/sig/external/gli.rbs +16 -0
  290. data/sig/external/proxmox_api.rbs +10 -0
  291. data/sig/pvectl/argv_preprocessor.rbs +53 -0
  292. data/sig/pvectl/cli.rbs +26 -0
  293. data/sig/pvectl/commands/apt.rbs +47 -0
  294. data/sig/pvectl/commands/clone_container.rbs +31 -0
  295. data/sig/pvectl/commands/clone_vm.rbs +33 -0
  296. data/sig/pvectl/commands/cloudinit/command.rbs +13 -0
  297. data/sig/pvectl/commands/cloudinit/dump.rbs +13 -0
  298. data/sig/pvectl/commands/cloudinit/pending.rbs +17 -0
  299. data/sig/pvectl/commands/cloudinit/regenerate.rbs +11 -0
  300. data/sig/pvectl/commands/config/command.rbs +9 -0
  301. data/sig/pvectl/commands/config/get_contexts.rbs +11 -0
  302. data/sig/pvectl/commands/config/set_cluster.rbs +11 -0
  303. data/sig/pvectl/commands/config/set_context.rbs +15 -0
  304. data/sig/pvectl/commands/config/set_credentials.rbs +15 -0
  305. data/sig/pvectl/commands/config/use_context.rbs +11 -0
  306. data/sig/pvectl/commands/config/view.rbs +11 -0
  307. data/sig/pvectl/commands/console.rbs +9 -0
  308. data/sig/pvectl/commands/console_ct.rbs +27 -0
  309. data/sig/pvectl/commands/console_vm.rbs +27 -0
  310. data/sig/pvectl/commands/container_lifecycle_command.rbs +25 -0
  311. data/sig/pvectl/commands/create_backup.rbs +29 -0
  312. data/sig/pvectl/commands/create_container.rbs +30 -0
  313. data/sig/pvectl/commands/create_resource_command.rbs +53 -0
  314. data/sig/pvectl/commands/create_snapshot.rbs +35 -0
  315. data/sig/pvectl/commands/create_vm.rbs +30 -0
  316. data/sig/pvectl/commands/delete_backup.rbs +25 -0
  317. data/sig/pvectl/commands/delete_command.rbs +45 -0
  318. data/sig/pvectl/commands/delete_container.rbs +11 -0
  319. data/sig/pvectl/commands/delete_snapshot.rbs +35 -0
  320. data/sig/pvectl/commands/delete_vm.rbs +13 -0
  321. data/sig/pvectl/commands/describe/command.rbs +27 -0
  322. data/sig/pvectl/commands/edit_container.rbs +17 -0
  323. data/sig/pvectl/commands/edit_dns.rbs +25 -0
  324. data/sig/pvectl/commands/edit_hosts.rbs +23 -0
  325. data/sig/pvectl/commands/edit_node.rbs +17 -0
  326. data/sig/pvectl/commands/edit_resource_command.rbs +35 -0
  327. data/sig/pvectl/commands/edit_vm.rbs +19 -0
  328. data/sig/pvectl/commands/edit_volume.rbs +24 -0
  329. data/sig/pvectl/commands/feature_command.rbs +43 -0
  330. data/sig/pvectl/commands/feature_container.rbs +10 -0
  331. data/sig/pvectl/commands/feature_vm.rbs +12 -0
  332. data/sig/pvectl/commands/get/command.rbs +42 -0
  333. data/sig/pvectl/commands/get/handlers/backups.rbs +23 -0
  334. data/sig/pvectl/commands/get/handlers/capabilities.rbs +29 -0
  335. data/sig/pvectl/commands/get/handlers/containers.rbs +35 -0
  336. data/sig/pvectl/commands/get/handlers/disks.rbs +27 -0
  337. data/sig/pvectl/commands/get/handlers/dns.rbs +25 -0
  338. data/sig/pvectl/commands/get/handlers/hosts.rbs +25 -0
  339. data/sig/pvectl/commands/get/handlers/nodes.rbs +33 -0
  340. data/sig/pvectl/commands/get/handlers/services.rbs +23 -0
  341. data/sig/pvectl/commands/get/handlers/snapshots.rbs +27 -0
  342. data/sig/pvectl/commands/get/handlers/storage.rbs +25 -0
  343. data/sig/pvectl/commands/get/handlers/subscription.rbs +25 -0
  344. data/sig/pvectl/commands/get/handlers/tasks.rbs +28 -0
  345. data/sig/pvectl/commands/get/handlers/templates.rbs +35 -0
  346. data/sig/pvectl/commands/get/handlers/time.rbs +29 -0
  347. data/sig/pvectl/commands/get/handlers/vms.rbs +35 -0
  348. data/sig/pvectl/commands/get/handlers/volume.rbs +27 -0
  349. data/sig/pvectl/commands/get/resource_handler.rbs +13 -0
  350. data/sig/pvectl/commands/get/resource_registry.rbs +8 -0
  351. data/sig/pvectl/commands/get/watch_loop.rbs +33 -0
  352. data/sig/pvectl/commands/irreversible_command.rbs +32 -0
  353. data/sig/pvectl/commands/logs/command.rbs +35 -0
  354. data/sig/pvectl/commands/logs/handlers/journal.rbs +21 -0
  355. data/sig/pvectl/commands/logs/handlers/syslog.rbs +21 -0
  356. data/sig/pvectl/commands/logs/handlers/task_detail.rbs +21 -0
  357. data/sig/pvectl/commands/logs/handlers/task_logs.rbs +35 -0
  358. data/sig/pvectl/commands/logs/resource_handler.rbs +11 -0
  359. data/sig/pvectl/commands/logs/resource_registry.rbs +8 -0
  360. data/sig/pvectl/commands/migrate_command.rbs +45 -0
  361. data/sig/pvectl/commands/migrate_container.rbs +11 -0
  362. data/sig/pvectl/commands/migrate_vm.rbs +13 -0
  363. data/sig/pvectl/commands/move_disk_command.rbs +43 -0
  364. data/sig/pvectl/commands/move_disk_container.rbs +11 -0
  365. data/sig/pvectl/commands/move_disk_vm.rbs +13 -0
  366. data/sig/pvectl/commands/ping.rbs +39 -0
  367. data/sig/pvectl/commands/pull.rbs +33 -0
  368. data/sig/pvectl/commands/push.rbs +32 -0
  369. data/sig/pvectl/commands/reset.rbs +11 -0
  370. data/sig/pvectl/commands/resource_lifecycle_command.rbs +55 -0
  371. data/sig/pvectl/commands/resource_registry.rbs +19 -0
  372. data/sig/pvectl/commands/restart.rbs +11 -0
  373. data/sig/pvectl/commands/restart_container.rbs +9 -0
  374. data/sig/pvectl/commands/restore_backup.rbs +27 -0
  375. data/sig/pvectl/commands/resume.rbs +11 -0
  376. data/sig/pvectl/commands/rollback_snapshot.rbs +31 -0
  377. data/sig/pvectl/commands/sendkey_vm.rbs +25 -0
  378. data/sig/pvectl/commands/service.rbs +38 -0
  379. data/sig/pvectl/commands/set_container.rbs +13 -0
  380. data/sig/pvectl/commands/set_node.rbs +13 -0
  381. data/sig/pvectl/commands/set_resource_command.rbs +25 -0
  382. data/sig/pvectl/commands/set_vm.rbs +15 -0
  383. data/sig/pvectl/commands/set_volume.rbs +24 -0
  384. data/sig/pvectl/commands/shared_config_parsers.rbs +19 -0
  385. data/sig/pvectl/commands/shared_flags.rbs +10 -0
  386. data/sig/pvectl/commands/shutdown.rbs +11 -0
  387. data/sig/pvectl/commands/shutdown_container.rbs +9 -0
  388. data/sig/pvectl/commands/start.rbs +11 -0
  389. data/sig/pvectl/commands/start_container.rbs +9 -0
  390. data/sig/pvectl/commands/stop.rbs +11 -0
  391. data/sig/pvectl/commands/stop_container.rbs +9 -0
  392. data/sig/pvectl/commands/suspend.rbs +11 -0
  393. data/sig/pvectl/commands/template_command.rbs +21 -0
  394. data/sig/pvectl/commands/template_container.rbs +10 -0
  395. data/sig/pvectl/commands/template_vm.rbs +12 -0
  396. data/sig/pvectl/commands/top/command.rbs +31 -0
  397. data/sig/pvectl/commands/top/handlers/containers.rbs +21 -0
  398. data/sig/pvectl/commands/top/handlers/nodes.rbs +21 -0
  399. data/sig/pvectl/commands/top/handlers/vms.rbs +21 -0
  400. data/sig/pvectl/commands/top/resource_handler.rbs +11 -0
  401. data/sig/pvectl/commands/top/resource_registry.rbs +8 -0
  402. data/sig/pvectl/commands/unlink_disk_vm.rbs +27 -0
  403. data/sig/pvectl/commands/vm_lifecycle_command.rbs +25 -0
  404. data/sig/pvectl/commands/wakeonlan_node.rbs +21 -0
  405. data/sig/pvectl/config/errors.rbs +24 -0
  406. data/sig/pvectl/config/models/cluster.rbs +39 -0
  407. data/sig/pvectl/config/models/context.rbs +23 -0
  408. data/sig/pvectl/config/models/resolved_config.rbs +51 -0
  409. data/sig/pvectl/config/models/user.rbs +31 -0
  410. data/sig/pvectl/config/provider.rbs +40 -0
  411. data/sig/pvectl/config/service.rbs +65 -0
  412. data/sig/pvectl/config/store.rbs +14 -0
  413. data/sig/pvectl/config/wizard.rbs +48 -0
  414. data/sig/pvectl/config_serializer.rbs +121 -0
  415. data/sig/pvectl/connection/retry_handler.rbs +31 -0
  416. data/sig/pvectl/connection.rbs +35 -0
  417. data/sig/pvectl/console/terminal_session.rbs +63 -0
  418. data/sig/pvectl/editor_session.rbs +33 -0
  419. data/sig/pvectl/exit_codes.rbs +19 -0
  420. data/sig/pvectl/formatters/base.rbs +13 -0
  421. data/sig/pvectl/formatters/color_support.rbs +13 -0
  422. data/sig/pvectl/formatters/json.rbs +7 -0
  423. data/sig/pvectl/formatters/output_helper.rbs +9 -0
  424. data/sig/pvectl/formatters/registry.rbs +13 -0
  425. data/sig/pvectl/formatters/table.rbs +25 -0
  426. data/sig/pvectl/formatters/wide.rbs +15 -0
  427. data/sig/pvectl/formatters/yaml.rbs +7 -0
  428. data/sig/pvectl/manifest_serializer.rbs +18 -0
  429. data/sig/pvectl/models/apt_package.rbs +26 -0
  430. data/sig/pvectl/models/backup.rbs +31 -0
  431. data/sig/pvectl/models/base.rbs +11 -0
  432. data/sig/pvectl/models/capability.rbs +16 -0
  433. data/sig/pvectl/models/container.rbs +44 -0
  434. data/sig/pvectl/models/container_operation_result.rbs +9 -0
  435. data/sig/pvectl/models/dns_config.rbs +15 -0
  436. data/sig/pvectl/models/hosts_file.rbs +13 -0
  437. data/sig/pvectl/models/journal_entry.rbs +10 -0
  438. data/sig/pvectl/models/network_interface.rbs +20 -0
  439. data/sig/pvectl/models/node.rbs +47 -0
  440. data/sig/pvectl/models/node_operation_result.rbs +12 -0
  441. data/sig/pvectl/models/operation_result.rbs +21 -0
  442. data/sig/pvectl/models/physical_disk.rbs +35 -0
  443. data/sig/pvectl/models/service.rbs +18 -0
  444. data/sig/pvectl/models/snapshot.rbs +21 -0
  445. data/sig/pvectl/models/snapshot_description.rbs +18 -0
  446. data/sig/pvectl/models/storage.rbs +39 -0
  447. data/sig/pvectl/models/subscription.rbs +24 -0
  448. data/sig/pvectl/models/syslog_entry.rbs +10 -0
  449. data/sig/pvectl/models/task.rbs +22 -0
  450. data/sig/pvectl/models/task_entry.rbs +24 -0
  451. data/sig/pvectl/models/task_log_line.rbs +10 -0
  452. data/sig/pvectl/models/time_config.rbs +12 -0
  453. data/sig/pvectl/models/vm.rbs +32 -0
  454. data/sig/pvectl/models/vm_operation_result.rbs +9 -0
  455. data/sig/pvectl/models/volume.rbs +29 -0
  456. data/sig/pvectl/models/volume_operation_result.rbs +9 -0
  457. data/sig/pvectl/parsers/cloud_init_config.rbs +15 -0
  458. data/sig/pvectl/parsers/disk_config.rbs +19 -0
  459. data/sig/pvectl/parsers/lxc_mount_config.rbs +19 -0
  460. data/sig/pvectl/parsers/lxc_net_config.rbs +19 -0
  461. data/sig/pvectl/parsers/net_config.rbs +19 -0
  462. data/sig/pvectl/parsers/smart_text.rbs +7 -0
  463. data/sig/pvectl/plugin_loader.rbs +25 -0
  464. data/sig/pvectl/presenters/apt_package.rbs +19 -0
  465. data/sig/pvectl/presenters/backup.rbs +25 -0
  466. data/sig/pvectl/presenters/base.rbs +41 -0
  467. data/sig/pvectl/presenters/capability.rbs +19 -0
  468. data/sig/pvectl/presenters/config/context.rbs +17 -0
  469. data/sig/pvectl/presenters/container.rbs +78 -0
  470. data/sig/pvectl/presenters/container_operation_result.rbs +19 -0
  471. data/sig/pvectl/presenters/disk.rbs +31 -0
  472. data/sig/pvectl/presenters/dns_config.rbs +13 -0
  473. data/sig/pvectl/presenters/hosts_file.rbs +13 -0
  474. data/sig/pvectl/presenters/journal_entry.rbs +11 -0
  475. data/sig/pvectl/presenters/node.rbs +118 -0
  476. data/sig/pvectl/presenters/node_operation_result.rbs +11 -0
  477. data/sig/pvectl/presenters/operation_result.rbs +17 -0
  478. data/sig/pvectl/presenters/service.rbs +15 -0
  479. data/sig/pvectl/presenters/snapshot.rbs +35 -0
  480. data/sig/pvectl/presenters/snapshot_operation_result.rbs +27 -0
  481. data/sig/pvectl/presenters/storage.rbs +59 -0
  482. data/sig/pvectl/presenters/subscription.rbs +36 -0
  483. data/sig/pvectl/presenters/syslog_entry.rbs +11 -0
  484. data/sig/pvectl/presenters/task_entry.rbs +21 -0
  485. data/sig/pvectl/presenters/task_log_line.rbs +11 -0
  486. data/sig/pvectl/presenters/template.rbs +15 -0
  487. data/sig/pvectl/presenters/time_config.rbs +19 -0
  488. data/sig/pvectl/presenters/top_container.rbs +17 -0
  489. data/sig/pvectl/presenters/top_node.rbs +17 -0
  490. data/sig/pvectl/presenters/top_presenter.rbs +13 -0
  491. data/sig/pvectl/presenters/top_vm.rbs +17 -0
  492. data/sig/pvectl/presenters/vm.rbs +91 -0
  493. data/sig/pvectl/presenters/vm_operation_result.rbs +19 -0
  494. data/sig/pvectl/presenters/volume.rbs +23 -0
  495. data/sig/pvectl/presenters/volume_operation_result.rbs +11 -0
  496. data/sig/pvectl/repositories/apt.rbs +17 -0
  497. data/sig/pvectl/repositories/backup.rbs +27 -0
  498. data/sig/pvectl/repositories/base.rbs +23 -0
  499. data/sig/pvectl/repositories/capabilities.rbs +20 -0
  500. data/sig/pvectl/repositories/container.rbs +63 -0
  501. data/sig/pvectl/repositories/disk.rbs +17 -0
  502. data/sig/pvectl/repositories/dns.rbs +13 -0
  503. data/sig/pvectl/repositories/hosts.rbs +13 -0
  504. data/sig/pvectl/repositories/journal.rbs +7 -0
  505. data/sig/pvectl/repositories/node.rbs +68 -0
  506. data/sig/pvectl/repositories/service.rbs +27 -0
  507. data/sig/pvectl/repositories/snapshot.rbs +19 -0
  508. data/sig/pvectl/repositories/storage.rbs +37 -0
  509. data/sig/pvectl/repositories/subscription.rbs +17 -0
  510. data/sig/pvectl/repositories/syslog.rbs +7 -0
  511. data/sig/pvectl/repositories/task.rbs +19 -0
  512. data/sig/pvectl/repositories/task_list.rbs +7 -0
  513. data/sig/pvectl/repositories/task_log.rbs +11 -0
  514. data/sig/pvectl/repositories/time_config.rbs +13 -0
  515. data/sig/pvectl/repositories/vm.rbs +85 -0
  516. data/sig/pvectl/repositories/volume.rbs +43 -0
  517. data/sig/pvectl/selectors/base.rbs +37 -0
  518. data/sig/pvectl/selectors/container.rbs +19 -0
  519. data/sig/pvectl/selectors/disk.rbs +13 -0
  520. data/sig/pvectl/selectors/vm.rbs +19 -0
  521. data/sig/pvectl/selectors/volume.rbs +13 -0
  522. data/sig/pvectl/services/backup.rbs +27 -0
  523. data/sig/pvectl/services/clone_container.rbs +35 -0
  524. data/sig/pvectl/services/clone_vm.rbs +35 -0
  525. data/sig/pvectl/services/cloudinit.rbs +19 -0
  526. data/sig/pvectl/services/console.rbs +23 -0
  527. data/sig/pvectl/services/container_lifecycle.rbs +26 -0
  528. data/sig/pvectl/services/create_container.rbs +64 -0
  529. data/sig/pvectl/services/create_vm.rbs +72 -0
  530. data/sig/pvectl/services/edit_container.rbs +17 -0
  531. data/sig/pvectl/services/edit_dns.rbs +23 -0
  532. data/sig/pvectl/services/edit_hosts.rbs +13 -0
  533. data/sig/pvectl/services/edit_node.rbs +21 -0
  534. data/sig/pvectl/services/edit_vm.rbs +17 -0
  535. data/sig/pvectl/services/edit_volume.rbs +18 -0
  536. data/sig/pvectl/services/get/resource_service.rbs +23 -0
  537. data/sig/pvectl/services/move_disk.rbs +21 -0
  538. data/sig/pvectl/services/pull_config.rbs +18 -0
  539. data/sig/pvectl/services/push_config.rbs +37 -0
  540. data/sig/pvectl/services/resize_volume.rbs +47 -0
  541. data/sig/pvectl/services/resource_delete.rbs +27 -0
  542. data/sig/pvectl/services/resource_migration.rbs +29 -0
  543. data/sig/pvectl/services/sendkey.rbs +19 -0
  544. data/sig/pvectl/services/service_lifecycle.rbs +17 -0
  545. data/sig/pvectl/services/set_container.rbs +14 -0
  546. data/sig/pvectl/services/set_node.rbs +23 -0
  547. data/sig/pvectl/services/set_vm.rbs +14 -0
  548. data/sig/pvectl/services/set_volume.rbs +12 -0
  549. data/sig/pvectl/services/snapshot.rbs +35 -0
  550. data/sig/pvectl/services/task_listing.rbs +13 -0
  551. data/sig/pvectl/services/unlink_disk.rbs +17 -0
  552. data/sig/pvectl/services/vm_lifecycle.rbs +26 -0
  553. data/sig/pvectl/services/wakeonlan.rbs +17 -0
  554. data/sig/pvectl/utils/resource_resolver.rbs +17 -0
  555. data/sig/pvectl/wizards/create_container.rbs +21 -0
  556. data/sig/pvectl/wizards/create_vm.rbs +21 -0
  557. data/sig/pvectl.rbs +9 -0
  558. metadata +675 -0
@@ -0,0 +1,13 @@
1
+ module Pvectl
2
+ module Services
3
+ class EditHosts
4
+ def initialize: (hosts_repository: untyped, ?editor_session: untyped?, ?options: Hash[Symbol, untyped]) -> void
5
+
6
+ def execute: (node_name: String) -> Models::NodeOperationResult?
7
+
8
+ private
9
+
10
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::NodeOperationResult
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ module Pvectl
2
+ module Services
3
+ class EditNode
4
+ READONLY_KEYS: Array[Symbol]
5
+
6
+ def initialize: (node_repository: untyped, ?editor_session: untyped?, ?options: Hash[Symbol, untyped]) -> void
7
+
8
+ def execute: (node_name: String) -> Models::NodeOperationResult?
9
+
10
+ private
11
+
12
+ def compute_diff: (Hash[Symbol, untyped] original, Hash[Symbol, untyped] edited) -> Hash[Symbol, untyped]
13
+
14
+ def build_update_params: (Hash[Symbol, untyped] changes, Hash[Symbol, untyped] original_config) -> Hash[Symbol, untyped]
15
+
16
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::NodeOperationResult
17
+
18
+ def not_found_result: (String node_name) -> Models::NodeOperationResult
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ module Pvectl
2
+ module Services
3
+ class EditVm
4
+ def initialize: (vm_repository: untyped, ?editor_session: untyped?, ?options: Hash[Symbol, untyped]) -> void
5
+
6
+ def execute: (vmid: Integer) -> Models::VmOperationResult?
7
+
8
+ private
9
+
10
+ def build_update_params: (Hash[Symbol, untyped] changes, Hash[Symbol, untyped] original_config) -> Hash[Symbol, untyped]
11
+
12
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::VmOperationResult
13
+
14
+ def not_found_result: (Integer vmid) -> Models::VmOperationResult
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ module Pvectl
2
+ module Services
3
+ class EditVolume
4
+ def initialize: (repository: untyped, resource_type: Symbol, ?editor_session: untyped?, ?options: Hash[Symbol, untyped]) -> void
5
+ def execute: (id: Integer, disk: String, node: String) -> Models::VolumeOperationResult?
6
+
7
+ private
8
+ def parse_disk_config: (String disk_value) -> Hash[String, String]
9
+ def build_yaml_content: (Hash[String, String] editable, String disk, Integer id, String node) -> String
10
+ def parse_edited_yaml: (String edited) -> Hash[String, untyped]
11
+ def no_changes?: (Hash[Symbol, untyped] changes) -> bool
12
+ def compute_diff: (Hash[String, String] original, Hash[String, untyped] edited) -> Hash[Symbol, untyped]
13
+ def apply_changes: (Integer id, String disk, String node, String original_disk_value, Hash[Symbol, untyped] changes) -> void
14
+ def rebuild_disk_config: (String current_value, Hash[String, String] updates, ?Array[String] removed_keys) -> String
15
+ def build_result: (Integer id, String disk, String node, **untyped attrs) -> Models::VolumeOperationResult
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ module Pvectl
2
+ module Services
3
+ module Get
4
+ class ResourceService
5
+ def initialize: (handler: untyped, ?format: String, ?color_enabled: bool) -> void
6
+
7
+ def list: (?node: String?, ?name: String?, ?args: Array[String], ?storage: String?, ?vmid: Array[String]?, ?selector: Selectors::Base?, **untyped) -> String
8
+
9
+ def describe: (name: String, ?node: String?, ?args: Array[String], ?vmid: Array[String]?) -> String
10
+
11
+ private
12
+
13
+ attr_reader handler: untyped
14
+ attr_reader format: String
15
+ attr_reader color_enabled: bool
16
+
17
+ def format_output: (Array[untyped] models, untyped presenter) -> String
18
+
19
+ def format_output_describe: (untyped model, untyped presenter) -> String
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ module Pvectl
2
+ module Services
3
+ class MoveDisk
4
+ DEFAULT_TIMEOUT: Integer
5
+
6
+ def initialize: (vm_repository: untyped, container_repository: untyped, task_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
7
+
8
+ def execute: (Symbol resource_type, Models::Vm | Models::Container resource, disk: String, target_storage: String) -> (Models::VmOperationResult | Models::ContainerOperationResult)
9
+
10
+ private
11
+
12
+ def move_single: (Models::Vm | Models::Container resource, String disk, String target_storage) -> (Models::VmOperationResult | Models::ContainerOperationResult)
13
+
14
+ def invoke_repository: (Models::Vm | Models::Container resource, String disk, String target_storage) -> String
15
+
16
+ def build_result: (Models::Vm | Models::Container resource, **untyped attrs) -> (Models::VmOperationResult | Models::ContainerOperationResult)
17
+
18
+ def timeout: () -> Integer
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ module Pvectl
2
+ module Services
3
+ class PullConfig
4
+ @vm_repository: untyped
5
+ @container_repository: untyped
6
+
7
+ def initialize: (vm_repository: untyped, container_repository: untyped) -> void
8
+ def execute: (type: Symbol, ?ids: Array[Integer], ?all: bool, ?node: String?, ?selector: untyped?) -> Hash[Symbol, untyped]
9
+
10
+ private
11
+
12
+ def repository_for: (Symbol type) -> untyped
13
+ def pull_single: (untyped repo, untyped resource, Symbol type) -> Hash[Symbol, untyped]
14
+ def build_metadata: (untyped resource, Symbol type) -> Hash[Symbol, untyped]
15
+ def type_label: (Symbol type) -> String
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,37 @@
1
+ module Pvectl
2
+ module Services
3
+ class PushConfig
4
+ DEFAULT_TASK_TIMEOUT: Integer
5
+
6
+ @vm_repository: untyped
7
+ @container_repository: untyped
8
+ @task_repository: untyped
9
+
10
+ def initialize: (vm_repository: untyped, container_repository: untyped, ?task_repository: untyped) -> void
11
+ def prepare: (String yaml_string) -> Hash[Symbol, untyped]
12
+ def prepare_batch: (Array[Hash[Symbol, untyped]] yaml_contents, ?filter_type: Symbol?) -> Hash[Symbol, untyped]
13
+ def apply: (Array[Hash[Symbol, untyped]] plans) -> Hash[Symbol, untyped]
14
+
15
+ private
16
+
17
+ def prepare_create: (Symbol type, Hash[Symbol, untyped] metadata, Hash[Symbol, untyped] flat_config, untyped repo, ?vmid: Integer?, ?auto_id: bool) -> Hash[Symbol, untyped]
18
+ def allocate_vmid: (untyped repo, Symbol type) -> Integer
19
+ def repository_for: (Symbol type) -> untyped
20
+ def build_update_params: (Hash[Symbol, untyped] diff, Hash[Symbol, untyped] original_config, Symbol type) -> Hash[Symbol, untyped]
21
+ def apply_resize_ops: (untyped repo, Hash[Symbol, untyped] plan) -> Array[String]
22
+ def wait_for_task: (untyped upid) -> untyped
23
+ def vm_disk_key?: (Symbol | String key) -> bool
24
+ def create_disk_key?: (Symbol | String key, Symbol type) -> bool
25
+ def transform_disks_for_create: (Hash[Symbol, untyped] flat_config, Symbol type) -> Hash[Symbol, untyped]
26
+ def disk_value_for_create: (String value) -> String
27
+ def size_to_gib: (String size_str) -> String
28
+ def extract_disk_size: (String disk_value) -> String?
29
+ def disk_value_without_size: (String value) -> String
30
+ def replace_disk_size: (String value, String size) -> String
31
+ def collect_readonly_keys: (Hash[Symbol, untyped] flat_config, Symbol type) -> Array[Symbol]
32
+ def each_leaf_section: (Hash[Symbol, untyped] sections) { (Hash[Symbol, untyped]) -> void } -> void
33
+ def type_label: (Symbol type) -> String
34
+ def extract_api_error: (untyped exception) -> String
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,47 @@
1
+ module Pvectl
2
+ module Services
3
+ class ResizeVolume
4
+ class VolumeNotFoundError < StandardError
5
+ end
6
+
7
+ class SizeTooSmallError < StandardError
8
+ end
9
+
10
+ class ParsedSize < Struct[untyped]
11
+ attr_reader relative: bool
12
+ attr_reader value: String
13
+ attr_reader raw: String
14
+
15
+ def relative?: () -> bool
16
+ end
17
+
18
+ SIZE_PATTERN: Regexp
19
+
20
+ UNIT_MULTIPLIERS: Hash[String, (Integer | Float)]
21
+
22
+ def self.parse_size: (String? size_str) -> ParsedSize
23
+
24
+ def initialize: (repository: untyped) -> void
25
+
26
+ def preflight: (Integer id, String disk, ParsedSize parsed_size, node: String) -> Hash[Symbol, String]
27
+
28
+ def perform: (Integer id, String disk, String raw_size, node: String) -> Models::OperationResult
29
+
30
+ private
31
+
32
+ def extract_disk_size: (Hash[Symbol, untyped] config, String disk, Integer id) -> String
33
+
34
+ def calculate_new_size: (String current_size, ParsedSize parsed_size) -> String
35
+
36
+ def validate_new_size!: (String current_size, String new_size, ParsedSize parsed_size) -> void
37
+
38
+ def parse_size_components: (String size) -> [Float, String]
39
+
40
+ def convert_to_unit: (Float value, String from_unit, String to_unit) -> Float
41
+
42
+ def format_size: (Float value, String suffix) -> String
43
+
44
+ def size_to_bytes: (String size) -> Float
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ module Pvectl
2
+ module Services
3
+ class ResourceDelete
4
+ DEFAULT_TIMEOUT: Integer
5
+
6
+ def initialize: (vm_repository: untyped, container_repository: untyped, task_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
7
+
8
+ def execute: (Symbol resource_type, Array[Models::Vm | Models::Container] resources) -> Array[Models::VmOperationResult | Models::ContainerOperationResult]
9
+
10
+ private
11
+
12
+ def delete_single: (Models::Vm | Models::Container resource) -> (Models::VmOperationResult | Models::ContainerOperationResult)
13
+
14
+ def running_error: (Models::Vm | Models::Container resource) -> (Models::VmOperationResult | Models::ContainerOperationResult)
15
+
16
+ def stop_resource: (Models::Vm | Models::Container resource) -> (Models::VmOperationResult | Models::ContainerOperationResult)
17
+
18
+ def perform_delete: (Models::Vm | Models::Container resource) -> (Models::VmOperationResult | Models::ContainerOperationResult)
19
+
20
+ def build_result: (Models::Vm | Models::Container resource, **untyped attrs) -> (Models::VmOperationResult | Models::ContainerOperationResult)
21
+
22
+ def repository_for: (Symbol type) -> untyped
23
+
24
+ def timeout: () -> Integer
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ module Pvectl
2
+ module Services
3
+ class ResourceMigration
4
+ DEFAULT_TIMEOUT: Integer
5
+
6
+ def initialize: (vm_repository: untyped, container_repository: untyped, task_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
7
+
8
+ def execute: (Symbol resource_type, Array[Models::Vm | Models::Container] resources, target: String) -> Array[Models::VmOperationResult | Models::ContainerOperationResult]
9
+
10
+ private
11
+
12
+ def partition_by_target: (Array[Models::Vm | Models::Container] resources, String target) -> [Array[Models::Vm | Models::Container], Array[Models::Vm | Models::Container]]
13
+
14
+ def report_skipped: (Array[Models::Vm | Models::Container] skipped, String target) -> void
15
+
16
+ def all_on_target_results: (String target) -> Array[untyped]
17
+
18
+ def migrate_single: (Models::Vm | Models::Container resource, String target) -> (Models::VmOperationResult | Models::ContainerOperationResult)
19
+
20
+ def build_migrate_params: (String target) -> Hash[Symbol, untyped]
21
+
22
+ def build_result: (Models::Vm | Models::Container resource, **untyped attrs) -> (Models::VmOperationResult | Models::ContainerOperationResult)
23
+
24
+ def repository_for: (Symbol type) -> untyped
25
+
26
+ def timeout: () -> Integer
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ module Pvectl
2
+ module Services
3
+ class Sendkey
4
+ def initialize: (vm_repository: untyped) -> void
5
+
6
+ def execute: (vmid: Integer | String, key: String, ?node: String?) -> Models::VmOperationResult
7
+
8
+ private
9
+
10
+ def not_found_result: (Integer vmid) -> Models::VmOperationResult
11
+
12
+ def not_running_result: (Models::Vm vm, String node, String key) -> Models::VmOperationResult
13
+
14
+ def success_result: (Models::Vm vm, String node, String key) -> Models::VmOperationResult
15
+
16
+ def failure_result: (Models::Vm? vm, String? node, String key, String message) -> Models::VmOperationResult
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ module Pvectl
2
+ module Services
3
+ class ServiceLifecycle
4
+ OPERATIONS: Array[Symbol]
5
+
6
+ def initialize: (service_repository: Repositories::Service) -> void
7
+
8
+ def execute: (operation: Symbol, node: String, service: String) -> Models::NodeOperationResult
9
+
10
+ private
11
+
12
+ def validate_operation!: (Symbol operation) -> void
13
+
14
+ def build_result: (operation: Symbol, node: String, service: String, **untyped attrs) -> Models::NodeOperationResult
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ module Pvectl
2
+ module Services
3
+ class SetContainer
4
+ def initialize: (container_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
5
+ def execute: (ctid: Integer, params: Hash[Symbol | String, untyped]) -> Models::ContainerOperationResult?
6
+
7
+ private
8
+ def compute_diff: (Hash[Symbol, untyped] config, Hash[Symbol | String, untyped] params) -> Hash[Symbol, untyped]
9
+ def build_update_params: (Hash[Symbol, untyped] changes, Hash[Symbol, untyped] original_config) -> Hash[Symbol, untyped]
10
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::ContainerOperationResult
11
+ def not_found_result: (Integer ctid) -> Models::ContainerOperationResult
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ module Pvectl
2
+ module Services
3
+ class SetNode
4
+ TIMEZONE_KEY: Symbol
5
+
6
+ def initialize: (node_repository: untyped, ?time_repository: untyped?, ?options: Hash[Symbol, untyped]) -> void
7
+ def execute: (node_name: String, params: Hash[Symbol | String, untyped]) -> Models::NodeOperationResult?
8
+
9
+ private
10
+ def split_timezone: (Hash[Symbol | String, untyped] params) -> [Hash[Symbol | String, untyped], String?]
11
+ def current_timezone: (String node_name) -> String?
12
+ def compute_timezone_change: (String? current, String? requested) -> Hash[Symbol, String]?
13
+ def merge_timezone_into_diff: (Hash[Symbol, untyped] changes, Hash[Symbol, String] tz_change) -> void
14
+ def compute_diff: (Hash[Symbol, untyped] config, Hash[Symbol | String, untyped] params) -> Hash[Symbol, untyped]
15
+ def no_changes?: (Hash[Symbol, untyped] changes) -> bool
16
+ def apply_config_changes: (String node_name, Hash[Symbol, untyped] changes, Hash[Symbol, untyped] original_config) -> void
17
+ def config_changes_empty?: (Hash[Symbol, untyped] changes, Hash[Symbol, String]? tz_change) -> bool
18
+ def build_update_params: (Hash[Symbol, untyped] changes, Hash[Symbol, untyped] original_config) -> Hash[Symbol, untyped]
19
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::NodeOperationResult
20
+ def not_found_result: (String node_name) -> Models::NodeOperationResult
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ module Pvectl
2
+ module Services
3
+ class SetVm
4
+ def initialize: (vm_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
5
+ def execute: (vmid: Integer, params: Hash[Symbol | String, untyped]) -> Models::VmOperationResult?
6
+
7
+ private
8
+ def compute_diff: (Hash[Symbol, untyped] config, Hash[Symbol | String, untyped] params) -> Hash[Symbol, untyped]
9
+ def build_update_params: (Hash[Symbol, untyped] changes, Hash[Symbol, untyped] original_config) -> Hash[Symbol, untyped]
10
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::VmOperationResult
11
+ def not_found_result: (Integer vmid) -> Models::VmOperationResult
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ module Pvectl
2
+ module Services
3
+ class SetVolume
4
+ def initialize: (repository: untyped, resource_type: Symbol) -> void
5
+ def execute: (id: Integer, disk: String, params: Hash[String | Symbol, untyped], node: String) -> Models::VolumeOperationResult
6
+
7
+ private
8
+ def rebuild_disk_config: (String current_value, Hash[String | Symbol, untyped] updates) -> String
9
+ def build_result: (Integer id, String disk, String node, **untyped attrs) -> Models::VolumeOperationResult
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,35 @@
1
+ module Pvectl
2
+ module Services
3
+ class Snapshot
4
+ DEFAULT_TIMEOUT: Integer
5
+
6
+ def initialize: (snapshot_repo: untyped, resource_resolver: untyped, task_repo: untyped, ?options: Hash[Symbol, untyped]) -> void
7
+
8
+ def list: (Array[Integer] vmids, ?node: String?) -> Array[Models::Snapshot]
9
+
10
+ def describe: (Array[Integer] vmids, String name, ?node: String?) -> Models::SnapshotDescription
11
+
12
+ def create: (Array[Integer] vmids, name: String, ?description: String?, ?vmstate: bool, ?node: String?) -> Array[Models::OperationResult]
13
+
14
+ def delete: (Array[Integer] vmids, String snapname, ?force: bool, ?node: String?) -> Array[Models::OperationResult]
15
+
16
+ def delete_all: (Array[Integer] vmids, ?node: String?, ?force: bool) -> Array[Models::OperationResult]
17
+
18
+ def rollback: (Integer vmid, String snapname, ?start: bool) -> Models::OperationResult
19
+
20
+ private
21
+
22
+ def resolve_resources: (Array[Integer] vmids) -> Array[Hash[Symbol, untyped]]
23
+
24
+ def filter_by_node: (Array[Hash[Symbol, untyped]] resources, String? node) -> Array[Hash[Symbol, untyped]]
25
+
26
+ def build_describe_entries: (Array[Hash[Symbol, untyped]] resources, String name) -> Array[Models::SnapshotDescription::Entry]
27
+
28
+ def execute_multi: (Array[Hash[Symbol, untyped]] resources, Symbol operation) { (Hash[Symbol, untyped]) -> String } -> Array[Models::OperationResult]
29
+
30
+ def execute_single: (Hash[Symbol, untyped] resource, Symbol operation) { () -> String } -> Models::OperationResult
31
+
32
+ def timeout: () -> Integer
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,13 @@
1
+ module Pvectl
2
+ module Services
3
+ class TaskListing
4
+ def initialize: (task_list_repository: untyped, node_repository: untyped) -> void
5
+
6
+ def list: (?node: String?, ?vmid: Integer?, ?limit: Integer, ?since: String?, ?until_time: String?, ?type_filter: String?, ?status_filter: String?) -> Array[Models::TaskEntry]
7
+
8
+ private
9
+
10
+ def list_all_nodes: (vmid: Integer?, limit: Integer, since: String?, until_time: String?, type_filter: String?, status_filter: String?) -> Array[Models::TaskEntry]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ module Pvectl
2
+ module Services
3
+ class UnlinkDisk
4
+ def initialize: (repository: untyped) -> void
5
+
6
+ def execute: (vmid: Integer, node: String, disk_ids: Array[String] | String, ?force: bool) -> Models::VmOperationResult
7
+
8
+ private
9
+
10
+ def build_result: (Integer vmid, String node, Array[String] | String disk_ids, bool force, **untyped attrs) -> Models::VmOperationResult
11
+
12
+ def fetch_vm: (Integer vmid) -> Models::Vm?
13
+
14
+ def format_disk_ids: (Array[String] | String disk_ids) -> String
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ module Pvectl
2
+ module Services
3
+ class VmLifecycle
4
+ SYNC_OPERATIONS: Array[Symbol]
5
+ ASYNC_OPERATIONS: Array[Symbol]
6
+ ALL_OPERATIONS: Array[Symbol]
7
+ DEFAULT_TIMEOUT: Integer
8
+
9
+ def initialize: (untyped vm_repository, untyped task_repository, ?Hash[Symbol, untyped] options) -> void
10
+
11
+ def execute: (Symbol operation, Array[Models::Vm] vms) -> Array[Models::VmOperationResult]
12
+
13
+ private
14
+
15
+ def execute_single: (Symbol operation, Models::Vm vm) -> Models::VmOperationResult
16
+
17
+ def call_api: (Symbol operation, Models::Vm vm) -> String
18
+
19
+ def sync_mode?: (Symbol operation) -> bool
20
+
21
+ def timeout: () -> Integer
22
+
23
+ def validate_operation!: (Symbol operation) -> void
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ module Pvectl
2
+ module Services
3
+ class Wakeonlan
4
+ def initialize: (node_repository: Repositories::Node) -> void
5
+
6
+ def execute: (node_name: String) -> Models::NodeOperationResult
7
+
8
+ private
9
+
10
+ def build_result: (Models::Node node, **untyped attrs) -> Models::NodeOperationResult
11
+
12
+ def not_found_result: (String node_name) -> Models::NodeOperationResult
13
+
14
+ def success_message: (String? mac) -> String
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Pvectl
2
+ module Utils
3
+ class ResourceResolver
4
+ def initialize: (Connection connection) -> void
5
+
6
+ def resolve: (Integer | String vmid) -> Hash[Symbol, untyped]?
7
+
8
+ def resolve_multiple: (Array[Integer | String] vmids) -> Array[Hash[Symbol, untyped]]
9
+
10
+ def resolve_all: () -> Array[Hash[Symbol, untyped]]
11
+
12
+ private
13
+
14
+ def load_resources: () -> void
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module Pvectl
2
+ module Wizards
3
+ class CreateContainer
4
+ def initialize: (Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options, ?prompt: untyped) -> void
5
+
6
+ def run: () -> Hash[Symbol, untyped]?
7
+
8
+ private
9
+
10
+ def create_default_prompt: () -> untyped
11
+
12
+ def collect_params: () -> Hash[Symbol, untyped]
13
+
14
+ def collect_rootfs: () -> Hash[Symbol, String]
15
+
16
+ def collect_mountpoints: () -> Array[Hash[Symbol, String]]?
17
+
18
+ def collect_nets: () -> Array[Hash[Symbol, String]]?
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Pvectl
2
+ module Wizards
3
+ class CreateVm
4
+ OS_TYPES: Array[String]
5
+
6
+ def initialize: (Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options, ?prompt: untyped) -> void
7
+
8
+ def run: () -> Hash[Symbol, untyped]?
9
+
10
+ private
11
+
12
+ def create_default_prompt: () -> untyped
13
+
14
+ def collect_params: () -> Hash[Symbol, untyped]
15
+
16
+ def collect_disks: () -> Array[Hash[Symbol, String]]?
17
+
18
+ def collect_nets: () -> Array[Hash[Symbol, String]]?
19
+ end
20
+ end
21
+ end
data/sig/pvectl.rbs ADDED
@@ -0,0 +1,9 @@
1
+ module Pvectl
2
+ VERSION: String
3
+
4
+ class Error < StandardError
5
+ end
6
+
7
+ class ResourceNotFoundError < Error
8
+ end
9
+ end