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
data/lib/pvectl.rb ADDED
@@ -0,0 +1,439 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "pvectl/version"
4
+ require_relative "pvectl/exit_codes"
5
+ require_relative "pvectl/config_serializer"
6
+ require_relative "pvectl/manifest_serializer"
7
+ require_relative "pvectl/editor_session"
8
+
9
+ # Main module for the pvectl application - CLI tool for managing Proxmox clusters.
10
+ #
11
+ # Pvectl provides a kubectl-style command line interface for managing
12
+ # virtual machines, containers, nodes, storage, and backups in Proxmox VE.
13
+ #
14
+ # @example Usage in code
15
+ # Pvectl::CLI.run(ARGV)
16
+ #
17
+ # @see Pvectl::CLI Main CLI class
18
+ # @see Pvectl::ExitCodes Application exit codes
19
+ #
20
+ module Pvectl
21
+ # Base error class for all pvectl-specific exceptions.
22
+ #
23
+ # All custom errors in the application should inherit from this class,
24
+ # which allows for easy catching of all pvectl errors.
25
+ #
26
+ # @example Creating a custom error
27
+ # class ConnectionError < Pvectl::Error; end
28
+ #
29
+ # @example Catching pvectl errors
30
+ # begin
31
+ # # pvectl operations
32
+ # rescue Pvectl::Error => e
33
+ # puts "pvectl error: #{e.message}"
34
+ # end
35
+ #
36
+ class Error < StandardError; end
37
+
38
+ # Raised when a requested resource is not found.
39
+ #
40
+ # @example
41
+ # raise Pvectl::ResourceNotFoundError, "Node not found: pve1"
42
+ #
43
+ class ResourceNotFoundError < Error; end
44
+ end
45
+
46
+ require_relative "pvectl/argv_preprocessor"
47
+
48
+ # Configuration management
49
+ require_relative "pvectl/config/errors"
50
+ require_relative "pvectl/config/models/cluster"
51
+ require_relative "pvectl/config/models/user"
52
+ require_relative "pvectl/config/models/context"
53
+ require_relative "pvectl/config/models/resolved_config"
54
+ require_relative "pvectl/config/provider"
55
+ require_relative "pvectl/config/store"
56
+ require_relative "pvectl/config/wizard"
57
+ require_relative "pvectl/config/service"
58
+
59
+ # Formatters
60
+ require_relative "pvectl/formatters/base"
61
+ require_relative "pvectl/formatters/color_support"
62
+ require_relative "pvectl/formatters/table"
63
+ require_relative "pvectl/formatters/wide"
64
+ require_relative "pvectl/formatters/json"
65
+ require_relative "pvectl/formatters/yaml"
66
+ require_relative "pvectl/formatters/registry"
67
+ require_relative "pvectl/formatters/output_helper"
68
+
69
+ # Models
70
+ require_relative "pvectl/models/base"
71
+ require_relative "pvectl/models/apt_package"
72
+ require_relative "pvectl/models/network_interface"
73
+ require_relative "pvectl/models/physical_disk"
74
+ require_relative "pvectl/models/service"
75
+ require_relative "pvectl/models/vm"
76
+ require_relative "pvectl/models/node"
77
+ require_relative "pvectl/models/storage"
78
+ require_relative "pvectl/models/snapshot"
79
+ require_relative "pvectl/models/snapshot_description"
80
+ require_relative "pvectl/models/backup"
81
+ require_relative "pvectl/models/container"
82
+ require_relative "pvectl/models/task"
83
+ require_relative "pvectl/models/operation_result"
84
+ require_relative "pvectl/models/vm_operation_result"
85
+ require_relative "pvectl/models/container_operation_result"
86
+ require_relative "pvectl/models/node_operation_result"
87
+ require_relative "pvectl/models/volume_operation_result"
88
+ require_relative "pvectl/models/task_entry"
89
+ require_relative "pvectl/models/syslog_entry"
90
+ require_relative "pvectl/models/journal_entry"
91
+ require_relative "pvectl/models/task_log_line"
92
+ require_relative "pvectl/models/volume"
93
+ require_relative "pvectl/models/dns_config"
94
+ require_relative "pvectl/models/time_config"
95
+ require_relative "pvectl/models/hosts_file"
96
+ require_relative "pvectl/models/capability"
97
+ require_relative "pvectl/models/subscription"
98
+
99
+ # Repositories
100
+ require_relative "pvectl/repositories/base"
101
+ require_relative "pvectl/repositories/apt"
102
+ require_relative "pvectl/repositories/vm"
103
+ require_relative "pvectl/repositories/node"
104
+ require_relative "pvectl/repositories/storage"
105
+ require_relative "pvectl/repositories/container"
106
+ require_relative "pvectl/repositories/task"
107
+ require_relative "pvectl/repositories/snapshot"
108
+ require_relative "pvectl/repositories/backup"
109
+ require_relative "pvectl/repositories/task_list"
110
+ require_relative "pvectl/repositories/syslog"
111
+ require_relative "pvectl/repositories/journal"
112
+ require_relative "pvectl/repositories/task_log"
113
+ require_relative "pvectl/repositories/disk"
114
+ require_relative "pvectl/repositories/volume"
115
+ require_relative "pvectl/repositories/dns"
116
+ require_relative "pvectl/repositories/service"
117
+ require_relative "pvectl/repositories/time_config"
118
+ require_relative "pvectl/repositories/hosts"
119
+ require_relative "pvectl/repositories/capabilities"
120
+ require_relative "pvectl/repositories/subscription"
121
+
122
+ # Presenters
123
+ require_relative "pvectl/presenters/base"
124
+ require_relative "pvectl/presenters/apt_package"
125
+ require_relative "pvectl/presenters/config/context"
126
+ require_relative "pvectl/presenters/vm"
127
+ require_relative "pvectl/presenters/node"
128
+ require_relative "pvectl/presenters/top_presenter"
129
+ require_relative "pvectl/presenters/top_node"
130
+ require_relative "pvectl/presenters/top_vm"
131
+ require_relative "pvectl/presenters/storage"
132
+ require_relative "pvectl/presenters/container"
133
+ require_relative "pvectl/presenters/top_container"
134
+ require_relative "pvectl/presenters/operation_result"
135
+ require_relative "pvectl/presenters/vm_operation_result"
136
+ require_relative "pvectl/presenters/container_operation_result"
137
+ require_relative "pvectl/presenters/node_operation_result"
138
+ require_relative "pvectl/presenters/volume_operation_result"
139
+ require_relative "pvectl/presenters/snapshot"
140
+ require_relative "pvectl/presenters/snapshot_operation_result"
141
+ require_relative "pvectl/presenters/backup"
142
+ require_relative "pvectl/presenters/template"
143
+ require_relative "pvectl/presenters/task_entry"
144
+ require_relative "pvectl/presenters/syslog_entry"
145
+ require_relative "pvectl/presenters/journal_entry"
146
+ require_relative "pvectl/presenters/task_log_line"
147
+ require_relative "pvectl/presenters/disk"
148
+ require_relative "pvectl/presenters/volume"
149
+ require_relative "pvectl/presenters/dns_config"
150
+ require_relative "pvectl/presenters/service"
151
+ require_relative "pvectl/presenters/time_config"
152
+ require_relative "pvectl/presenters/hosts_file"
153
+ require_relative "pvectl/presenters/capability"
154
+ require_relative "pvectl/presenters/subscription"
155
+
156
+ # Selectors
157
+ require_relative "pvectl/selectors/base"
158
+ require_relative "pvectl/selectors/vm"
159
+ require_relative "pvectl/selectors/container"
160
+ require_relative "pvectl/selectors/disk"
161
+ require_relative "pvectl/selectors/volume"
162
+
163
+ # Console
164
+ require_relative "pvectl/console/terminal_session"
165
+
166
+ # Connection
167
+ require_relative "pvectl/connection/retry_handler"
168
+ require_relative "pvectl/connection"
169
+
170
+ # Utils
171
+ require_relative "pvectl/utils/resource_resolver"
172
+
173
+ # Parsers
174
+ require_relative "pvectl/parsers/disk_config"
175
+ require_relative "pvectl/parsers/net_config"
176
+ require_relative "pvectl/parsers/cloud_init_config"
177
+ require_relative "pvectl/parsers/lxc_mount_config"
178
+ require_relative "pvectl/parsers/lxc_net_config"
179
+ require_relative "pvectl/parsers/smart_text"
180
+
181
+ # Commands
182
+ require_relative "pvectl/commands/config/use_context"
183
+ require_relative "pvectl/commands/config/get_contexts"
184
+ require_relative "pvectl/commands/config/set_context"
185
+ require_relative "pvectl/commands/config/set_cluster"
186
+ require_relative "pvectl/commands/config/set_credentials"
187
+ require_relative "pvectl/commands/config/view"
188
+ require_relative "pvectl/commands/config/command"
189
+ require_relative "pvectl/commands/cloudinit/regenerate"
190
+ require_relative "pvectl/commands/cloudinit/pending"
191
+ require_relative "pvectl/commands/cloudinit/dump"
192
+ require_relative "pvectl/commands/cloudinit/command"
193
+ require_relative "pvectl/commands/ping"
194
+ require_relative "pvectl/commands/apt"
195
+
196
+ # Services - Get
197
+ require_relative "pvectl/services/get/resource_service"
198
+
199
+ # Services - Lifecycle
200
+ require_relative "pvectl/services/vm_lifecycle"
201
+ require_relative "pvectl/services/container_lifecycle"
202
+
203
+ # Services - Snapshot
204
+ require_relative "pvectl/services/snapshot"
205
+
206
+ # Services - Cloudinit
207
+ require_relative "pvectl/services/cloudinit"
208
+
209
+ # Services - Backup
210
+ require_relative "pvectl/services/backup"
211
+
212
+ # Services - Resource Delete
213
+ require_relative "pvectl/services/resource_delete"
214
+
215
+ # Services - Clone VM
216
+ require_relative "pvectl/services/clone_vm"
217
+
218
+ # Services - Create VM
219
+ require_relative "pvectl/services/create_vm"
220
+
221
+ # Services - Create Container
222
+ require_relative "pvectl/services/create_container"
223
+
224
+ # Services - Edit VM
225
+ require_relative "pvectl/services/edit_vm"
226
+
227
+ # Services - Edit Container
228
+ require_relative "pvectl/services/edit_container"
229
+
230
+ # Services - Edit Node
231
+ require_relative "pvectl/services/edit_node"
232
+
233
+ # Services - Edit DNS
234
+ require_relative "pvectl/services/edit_dns"
235
+
236
+ # Services - Edit Hosts
237
+ require_relative "pvectl/services/edit_hosts"
238
+
239
+ # Services - Edit Volume
240
+ require_relative "pvectl/services/edit_volume"
241
+
242
+ # Services - Set VM
243
+ require_relative "pvectl/services/set_vm"
244
+
245
+ # Services - Set Container
246
+ require_relative "pvectl/services/set_container"
247
+
248
+ # Services - Set Node
249
+ require_relative "pvectl/services/set_node"
250
+
251
+ # Services - Resize Volume
252
+ require_relative "pvectl/services/resize_volume"
253
+
254
+ # Services - Sendkey
255
+ require_relative "pvectl/services/sendkey"
256
+
257
+ # Services - Unlink Disk
258
+ require_relative "pvectl/services/unlink_disk"
259
+
260
+ # Services - Set Volume
261
+ require_relative "pvectl/services/set_volume"
262
+
263
+ # Services - Clone Container
264
+ require_relative "pvectl/services/clone_container"
265
+
266
+ # Services - Resource Migration
267
+ require_relative "pvectl/services/resource_migration"
268
+
269
+ # Services - Move Disk
270
+ require_relative "pvectl/services/move_disk"
271
+
272
+ # Services - Console
273
+ require_relative "pvectl/services/console"
274
+
275
+ # Services - Task Listing
276
+ require_relative "pvectl/services/task_listing"
277
+
278
+ # Services - Pull Config
279
+ require_relative "pvectl/services/pull_config"
280
+
281
+ # Services - Push Config
282
+ require_relative "pvectl/services/push_config"
283
+
284
+ # Services - Service Lifecycle (systemd services on nodes)
285
+ require_relative "pvectl/services/service_lifecycle"
286
+
287
+ # Services - Wakeonlan
288
+ require_relative "pvectl/services/wakeonlan"
289
+
290
+ # Commands - Base
291
+ require_relative "pvectl/commands/resource_registry"
292
+ require_relative "pvectl/commands/shared_flags"
293
+ require_relative "pvectl/commands/shared_config_parsers"
294
+
295
+ # Commands - Get
296
+ require_relative "pvectl/commands/get/resource_handler"
297
+ require_relative "pvectl/commands/get/resource_registry"
298
+ require_relative "pvectl/commands/get/watch_loop"
299
+ require_relative "pvectl/commands/get/command"
300
+ require_relative "pvectl/commands/get/handlers/vms"
301
+ require_relative "pvectl/commands/get/handlers/nodes"
302
+ require_relative "pvectl/commands/get/handlers/storage"
303
+ require_relative "pvectl/commands/get/handlers/containers"
304
+ require_relative "pvectl/commands/get/handlers/snapshots"
305
+ require_relative "pvectl/commands/get/handlers/backups"
306
+ require_relative "pvectl/commands/get/handlers/tasks"
307
+ require_relative "pvectl/commands/get/handlers/templates"
308
+ require_relative "pvectl/commands/get/handlers/disks"
309
+ require_relative "pvectl/commands/get/handlers/volume"
310
+ require_relative "pvectl/commands/get/handlers/dns"
311
+ require_relative "pvectl/commands/get/handlers/services"
312
+ require_relative "pvectl/commands/get/handlers/time"
313
+ require_relative "pvectl/commands/get/handlers/hosts"
314
+ require_relative "pvectl/commands/get/handlers/capabilities"
315
+ require_relative "pvectl/commands/get/handlers/subscription"
316
+
317
+ # Commands - Describe
318
+ require_relative "pvectl/commands/describe/command"
319
+
320
+ # Commands - Top
321
+ require_relative "pvectl/commands/top/resource_registry"
322
+ require_relative "pvectl/commands/top/resource_handler"
323
+ require_relative "pvectl/commands/top/command"
324
+ require_relative "pvectl/commands/top/handlers/nodes"
325
+ require_relative "pvectl/commands/top/handlers/vms"
326
+ require_relative "pvectl/commands/top/handlers/containers"
327
+
328
+ # Commands - Logs
329
+ require_relative "pvectl/commands/logs/resource_registry"
330
+ require_relative "pvectl/commands/logs/resource_handler"
331
+ require_relative "pvectl/commands/logs/command"
332
+ require_relative "pvectl/commands/logs/handlers/task_logs"
333
+ require_relative "pvectl/commands/logs/handlers/syslog"
334
+ require_relative "pvectl/commands/logs/handlers/journal"
335
+ require_relative "pvectl/commands/logs/handlers/task_detail"
336
+
337
+ # Commands - Lifecycle
338
+ require_relative "pvectl/commands/resource_lifecycle_command"
339
+ require_relative "pvectl/commands/vm_lifecycle_command"
340
+ require_relative "pvectl/commands/container_lifecycle_command"
341
+ require_relative "pvectl/commands/irreversible_command"
342
+ require_relative "pvectl/commands/delete_command"
343
+ require_relative "pvectl/commands/delete_vm"
344
+ require_relative "pvectl/commands/delete_container"
345
+ require_relative "pvectl/commands/template_command"
346
+ require_relative "pvectl/commands/template_vm"
347
+ require_relative "pvectl/commands/template_container"
348
+ require_relative "pvectl/commands/start"
349
+ require_relative "pvectl/commands/stop"
350
+ require_relative "pvectl/commands/shutdown"
351
+ require_relative "pvectl/commands/restart"
352
+ require_relative "pvectl/commands/reset"
353
+ require_relative "pvectl/commands/suspend"
354
+ require_relative "pvectl/commands/resume"
355
+ require_relative "pvectl/commands/start_container"
356
+ require_relative "pvectl/commands/stop_container"
357
+ require_relative "pvectl/commands/shutdown_container"
358
+ require_relative "pvectl/commands/restart_container"
359
+
360
+ # Commands - Create
361
+ require_relative "pvectl/commands/create_snapshot"
362
+ require_relative "pvectl/commands/create_backup"
363
+ require_relative "pvectl/commands/create_resource_command"
364
+ require_relative "pvectl/commands/create_vm"
365
+ require_relative "pvectl/commands/create_container"
366
+
367
+ # Commands - Edit
368
+ require_relative "pvectl/commands/edit_resource_command"
369
+ require_relative "pvectl/commands/edit_vm"
370
+ require_relative "pvectl/commands/edit_container"
371
+ require_relative "pvectl/commands/edit_node"
372
+ require_relative "pvectl/commands/edit_volume"
373
+ require_relative "pvectl/commands/edit_dns"
374
+ require_relative "pvectl/commands/edit_hosts"
375
+
376
+ # Commands - Set
377
+ require_relative "pvectl/commands/set_resource_command"
378
+ require_relative "pvectl/commands/set_vm"
379
+ require_relative "pvectl/commands/set_container"
380
+ require_relative "pvectl/commands/set_node"
381
+ require_relative "pvectl/commands/set_volume"
382
+
383
+ # Commands - Delete
384
+ require_relative "pvectl/commands/delete_snapshot"
385
+ require_relative "pvectl/commands/delete_backup"
386
+
387
+ # Commands - Rollback
388
+ require_relative "pvectl/commands/rollback_snapshot"
389
+
390
+ # Commands - Restore
391
+ require_relative "pvectl/commands/restore_backup"
392
+
393
+ # Commands - Clone
394
+ require_relative "pvectl/commands/clone_vm"
395
+ require_relative "pvectl/commands/clone_container"
396
+
397
+ # Commands - Migrate
398
+ require_relative "pvectl/commands/migrate_command"
399
+ require_relative "pvectl/commands/migrate_vm"
400
+ require_relative "pvectl/commands/migrate_container"
401
+ require_relative "pvectl/commands/move_disk_command"
402
+ require_relative "pvectl/commands/move_disk_vm"
403
+ require_relative "pvectl/commands/move_disk_container"
404
+
405
+ # Commands - Feature
406
+ require_relative "pvectl/commands/feature_command"
407
+ require_relative "pvectl/commands/feature_vm"
408
+ require_relative "pvectl/commands/feature_container"
409
+
410
+ # Commands - Console
411
+ require_relative "pvectl/commands/console_vm"
412
+ require_relative "pvectl/commands/console_ct"
413
+ require_relative "pvectl/commands/console"
414
+
415
+ # Sendkey
416
+ require_relative "pvectl/commands/sendkey_vm"
417
+
418
+ # Commands - Pull
419
+ require_relative "pvectl/commands/pull"
420
+
421
+ # Commands - Push
422
+ require_relative "pvectl/commands/push"
423
+
424
+ # Commands - Service (systemd lifecycle on nodes)
425
+ require_relative "pvectl/commands/service"
426
+
427
+ # Commands - Wakeonlan
428
+ require_relative "pvectl/commands/wakeonlan_node"
429
+
430
+ # Commands - Unlink
431
+ require_relative "pvectl/commands/unlink_disk_vm"
432
+
433
+ # Wizards
434
+ require_relative "pvectl/wizards/create_vm"
435
+ require_relative "pvectl/wizards/create_container"
436
+
437
+ require_relative "pvectl/plugin_loader"
438
+
439
+ require_relative "pvectl/cli"
@@ -0,0 +1,16 @@
1
+ module GLI
2
+ class App
3
+ def desc: (String description) -> void
4
+ def long_desc: (String description) -> void
5
+ def command: (*Symbol names) { (Command) -> void } -> void
6
+ def flag: (Symbol | Array[Symbol] names, ?desc: String, ?default_value: untyped, ?type: untyped, ?must_match: untyped) -> void
7
+ def switch: (Symbol | Array[Symbol] names, ?desc: String, ?negatable: bool, ?default_value: bool) -> void
8
+ def action: () { (Hash[Symbol, untyped], Hash[Symbol, untyped], Array[String]) -> void } -> void
9
+ def arg_name: (String name, ?Symbol optionality) -> void
10
+ def skips_pre: () -> void
11
+ def skips_post: () -> void
12
+ end
13
+
14
+ class Command < App
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ module ProxmoxAPI
2
+ class ApiClient
3
+ def initialize: (String uri, ?Hash[Symbol, untyped] options) -> void
4
+ def []: (String path) -> untyped
5
+ def get: (?params: Hash[Symbol, untyped]) -> untyped
6
+ def post: (?Hash[Symbol, untyped] params) -> untyped
7
+ def put: (?Hash[Symbol, untyped] params) -> untyped
8
+ def delete: (?Hash[Symbol, untyped] params) -> untyped
9
+ end
10
+ end
@@ -0,0 +1,53 @@
1
+ module Pvectl
2
+ class ArgvPreprocessor
3
+ MAX_ARGUMENTS: Integer
4
+
5
+ MAX_ARGUMENT_LENGTH: Integer
6
+
7
+ PASSTHROUGH_FLAGS: Array[String]
8
+
9
+ class DuplicateFlagError < Pvectl::Error
10
+ def initialize: (Symbol flag_name, (String | bool) existing_value, (String | bool) new_value) -> void
11
+ end
12
+
13
+ def self.process: (Array[String] argv, ?cli_app: untyped) -> Array[String]
14
+
15
+ def initialize: (Array[String] argv, ?cli_app: untyped) -> void
16
+
17
+ def call: () -> Array[String]
18
+
19
+ private
20
+
21
+ @argv: Array[String]
22
+
23
+ @cli_app: untyped
24
+
25
+ def validate_input_limits!: () -> void
26
+
27
+ def passthrough_mode?: () -> bool
28
+
29
+ def reorder_all_flags: () -> Array[String]
30
+
31
+ def extract_global_flags: (Array[String] args) -> [Array[String], Array[String]]
32
+
33
+ def find_global_flag: (String arg) -> [Symbol, bool]?
34
+
35
+ def flag_matches?: (untyped gli_flag, String flag_part) -> bool
36
+
37
+ def flag_display_name: (untyped gli_flag) -> Symbol
38
+
39
+ def store_global_flag: (Hash[Symbol, String | bool] store, Symbol name, String | bool value) -> void
40
+
41
+ def validate_value!: (String | bool value, Symbol flag_name) -> void
42
+
43
+ def identify_command: (Array[String] args) -> [String?, Array[String], Array[String]]
44
+
45
+ def find_gli_command: (String name) -> untyped
46
+
47
+ def find_gli_subcommand: (untyped cmd, String name) -> untyped
48
+
49
+ def reorder_command_flags: (Array[String] args, untyped cmd) -> Array[String]
50
+
51
+ def find_command_flag: (String arg, untyped cmd) -> bool?
52
+ end
53
+ end
@@ -0,0 +1,26 @@
1
+ module Pvectl
2
+ class CLI
3
+ # GLI::App methods provided via extend
4
+ def self.program_desc: (String desc) -> void
5
+
6
+ def self.version: (String version) -> void
7
+
8
+ def self.subcommand_option_handling: (Symbol mode) -> void
9
+
10
+ def self.desc: (String description) -> void
11
+
12
+ def self.arg_name: (String name) -> void
13
+
14
+ def self.default_value: (untyped value) -> void
15
+
16
+ def self.flag: (Array[Symbol] names, **untyped options) -> void
17
+
18
+ def self.switch: (Array[Symbol] names, **untyped options) -> void
19
+
20
+ def self.on_error: () { (Exception) -> void } -> void
21
+
22
+ def self.run: (Array[String] argv) -> Integer
23
+
24
+ def self.trap: (String signal) { () -> void } -> void
25
+ end
26
+ end
@@ -0,0 +1,47 @@
1
+ module Pvectl
2
+ module Commands
3
+ class Apt
4
+ def self.register: (untyped cli) -> void
5
+
6
+ def self.register_list: (untyped parent) -> void
7
+
8
+ def self.register_update: (untyped parent) -> void
9
+
10
+ def self.register_changelog: (untyped parent) -> void
11
+
12
+ def self.register_versions: (untyped parent) -> void
13
+
14
+ def self.execute: (Symbol operation, Array[String] args, Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options) -> Integer
15
+
16
+ def initialize: (Symbol operation, Array[String] args, Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options, ?output: untyped) -> void
17
+
18
+ def execute: () -> Integer
19
+
20
+ private
21
+
22
+ def load_config: () -> void
23
+
24
+ def resolve_node: () -> String?
25
+
26
+ def repository: () -> Repositories::Apt
27
+
28
+ def run_list: (String node) -> Integer
29
+
30
+ def run_update: (String node) -> Integer
31
+
32
+ def run_changelog: (String node) -> Integer
33
+
34
+ def run_versions: (String node) -> Integer
35
+
36
+ def render_packages: (Array[Models::AptPackage] packages) -> void
37
+
38
+ def render_operation_result: (Models::NodeOperationResult result) -> void
39
+
40
+ def build_update_result: (String node, String upid) -> Models::NodeOperationResult
41
+
42
+ def usage_error: (String message) -> Integer
43
+
44
+ def config_error: (String message) -> Integer
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,31 @@
1
+ module Pvectl
2
+ module Commands
3
+ class CloneContainer
4
+ include SharedConfigParsers
5
+
6
+ def self.execute: (Array[String] args, Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options) -> Integer
7
+
8
+ def initialize: (Array[String] args, Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options) -> void
9
+
10
+ def execute: () -> Integer
11
+
12
+ private
13
+
14
+ def perform_clone: (Integer ctid, Hash[Symbol, untyped] config_params) -> Integer
15
+
16
+ def print_progress: (untyped result) -> void
17
+
18
+ def load_config: () -> void
19
+
20
+ def service_options: () -> Hash[Symbol, untyped]
21
+
22
+ def output_result: (untyped result) -> void
23
+
24
+ def display_clone_summary: (Integer ctid, Hash[Symbol, untyped] config_params) -> Symbol?
25
+
26
+ def display_config_changes: (Hash[Symbol, untyped] params) -> void
27
+
28
+ def usage_error: (String message) -> Integer
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ module Pvectl
2
+ module Commands
3
+ class CloneVm
4
+ include SharedConfigParsers
5
+
6
+ def self.register: (untyped cli) -> void
7
+
8
+ def self.execute: (Array[String] args, Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options) -> Integer
9
+
10
+ def initialize: (Array[String] args, Hash[Symbol, untyped] options, Hash[Symbol, untyped] global_options) -> void
11
+
12
+ def execute: () -> Integer
13
+
14
+ private
15
+
16
+ def perform_clone: (Integer vmid, Hash[Symbol, untyped] config_params) -> Integer
17
+
18
+ def print_progress: (untyped result) -> void
19
+
20
+ def load_config: () -> void
21
+
22
+ def service_options: () -> Hash[Symbol, untyped]
23
+
24
+ def output_result: (untyped result) -> void
25
+
26
+ def display_clone_summary: (Integer vmid, Hash[Symbol, untyped] config_params) -> Symbol?
27
+
28
+ def display_config_changes: (Hash[Symbol, untyped] params) -> void
29
+
30
+ def usage_error: (String message) -> Integer
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ module Pvectl
2
+ module Commands
3
+ module Cloudinit
4
+ def self.register: (untyped cli) -> void
5
+
6
+ def self.with_service: (Hash[Symbol, untyped] global_options) { (Pvectl::Services::Cloudinit) -> void } -> Integer
7
+
8
+ def self.usage_error: (String message) -> Integer
9
+
10
+ def self.unknown_resource_type: (String resource_type) -> Integer
11
+ end
12
+ end
13
+ end