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,17 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class Subscription < Base
4
+ def list: (?node: String?) -> Array[Models::Subscription]
5
+
6
+ def get: (String node) -> Models::Subscription
7
+
8
+ private
9
+
10
+ def online_node_names: () -> Array[String]
11
+
12
+ def fetch_for: (String node_name) -> Models::Subscription
13
+
14
+ def build_model: (Hash[Symbol, untyped]? data, String node_name) -> Models::Subscription
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class Syslog < Base
4
+ def list: (node: String, ?limit: Integer, ?since: String?, ?until_time: String?, ?service: String?) -> Array[Models::SyslogEntry]
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class Task < Base
4
+ def find: (String upid) -> Models::Task
5
+
6
+ def wait: (String upid, ?timeout: Integer, ?interval: Integer) -> Models::Task
7
+
8
+ def list: () -> bot
9
+
10
+ def get: (String | Integer id) -> Models::Task
11
+
12
+ private
13
+
14
+ def build_model: (Hash[Symbol, untyped] data) -> Models::Task
15
+
16
+ def extract_node_from_upid: (String upid) -> String
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class TaskList < Base
4
+ def list: (node: String, ?vmid: Integer?, ?limit: Integer, ?since: Integer?, ?until_time: Integer?, ?type_filter: String?, ?status_filter: String?) -> Array[Models::TaskEntry]
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class TaskLog < Base
4
+ def list: (upid: String, ?start: Integer, ?limit: Integer) -> Array[Models::TaskLogLine]
5
+
6
+ private
7
+
8
+ def extract_node_from_upid: (String upid) -> String
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class TimeConfig < Base
4
+ def fetch: (String node_name) -> Models::TimeConfig
5
+
6
+ def set_timezone: (String node_name, String timezone) -> nil
7
+
8
+ private
9
+
10
+ def build_model: (Hash[Symbol, untyped] data) -> Models::TimeConfig
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,85 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class Vm < Base
4
+ def list: (?node: String?) -> Array[Models::Vm]
5
+
6
+ def get: (Integer | String vmid) -> Models::Vm?
7
+
8
+ def describe: (Integer | String vmid) -> Models::Vm?
9
+
10
+ def start: (Integer | String vmid, String node) -> String
11
+
12
+ def stop: (Integer | String vmid, String node) -> String
13
+
14
+ def shutdown: (Integer | String vmid, String node) -> String
15
+
16
+ def restart: (Integer | String vmid, String node) -> String
17
+
18
+ def reset: (Integer | String vmid, String node) -> String
19
+
20
+ def suspend: (Integer | String vmid, String node) -> String
21
+
22
+ def resume: (Integer | String vmid, String node) -> String
23
+
24
+ def termproxy: (Integer | String vmid, String node) -> Hash[Symbol, untyped]
25
+
26
+ def delete: (Integer | String vmid, String node, ?destroy_disks: bool, ?purge: bool, ?force: bool) -> String
27
+
28
+ def clone: (Integer | String vmid, String node, Integer new_vmid, ?Hash[Symbol, untyped] options) -> String
29
+
30
+ def convert_to_template: (Integer | String vmid, String node, ?disk: String?) -> void
31
+
32
+ def create: (String node, Integer vmid, ?Hash[Symbol, untyped] params) -> String
33
+
34
+ def update: (Integer | String vmid, String node, ?Hash[Symbol, untyped] params) -> nil
35
+
36
+ def resize: (Integer | String vmid, String node, disk: String, size: String) -> nil
37
+
38
+ def sendkey: (Integer | String vmid, String node, String key) -> nil
39
+
40
+ def unlink_disks: (String node, Integer | String vmid, Array[String] | String disk_ids, ?force: bool) -> nil
41
+
42
+ def fetch_config: (String node, Integer vmid) -> Hash[Symbol, untyped]
43
+
44
+ def migrate: (Integer vmid, String node, ?Hash[Symbol, untyped] params) -> String
45
+
46
+ def move_disk: (Integer | String vmid, String node, String disk, String target_storage, ?format: String?, ?delete: bool, ?bwlimit: Integer?) -> String
47
+
48
+ def feature_available?: (Integer | String vmid, String node, String feature, ?snapname: String?) -> Hash[Symbol, untyped]
49
+
50
+ def next_available_vmid: () -> Integer
51
+
52
+ def cloudinit_regenerate: (String node, Integer | String vmid) -> nil
53
+
54
+ def cloudinit_pending: (String node, Integer | String vmid) -> Array[Hash[Symbol, untyped]]
55
+
56
+ def cloudinit_dump: (String node, Integer | String vmid, String type) -> String
57
+
58
+ private
59
+
60
+ def build_model: (Hash[Symbol, untyped] data) -> Models::Vm
61
+
62
+ def post_status: (Integer | String vmid, String node, String action) -> String
63
+
64
+ def find_vm_basic_data: (Integer vmid) -> Hash[Symbol, untyped]?
65
+
66
+ def fetch_status: (String node, Integer vmid) -> Hash[Symbol, untyped]
67
+
68
+ def fetch_snapshots: (String node, Integer vmid) -> Array[Hash[Symbol, untyped]]
69
+
70
+ def fetch_agent_ips: (String node, Integer vmid) -> Array[Hash[Symbol, untyped]]?
71
+
72
+ def fetch_pending: (String node, Integer vmid) -> Array[Hash[Symbol, untyped]]
73
+
74
+ def fetch_firewall: (String node, Integer vmid) -> Hash[Symbol, untyped]
75
+
76
+ def fetch_tasks: (String node, Integer vmid, ?limit: Integer) -> Array[Models::TaskEntry]
77
+
78
+ def normalize_hash_response: (Hash[Symbol, untyped] response) -> Hash[Symbol, untyped]
79
+
80
+ def normalize_response: (Array[untyped] | Hash[Symbol, untyped] response) -> Array[Hash[Symbol, untyped]]
81
+
82
+ def build_describe_model: (Hash[Symbol, untyped] basic_data, Hash[Symbol, untyped] describe_data) -> Models::Vm
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,43 @@
1
+ module Pvectl
2
+ module Repositories
3
+ class Volume < Base
4
+ VM_DISK_PATTERN: Regexp
5
+
6
+ CT_DISK_PATTERN: Regexp
7
+
8
+ def initialize: (untyped connection, ?vm_repo: Repositories::Vm?, ?container_repo: Repositories::Container?) -> void
9
+
10
+ def list_from_config: (resource_type: String, ids: Array[Integer | String], ?node: String?) -> Array[Models::Volume]
11
+
12
+ def list_from_storage: (storage: String, ?node: String?) -> Array[Models::Volume]
13
+
14
+ def find: (resource_type: String, id: Integer | String, disk_name: String, ?node: String?) -> Models::Volume?
15
+
16
+ private
17
+
18
+ def repo_for: (String type) -> (Repositories::Vm | Repositories::Container)?
19
+
20
+ def vm_repo: () -> Repositories::Vm
21
+
22
+ def container_repo: () -> Repositories::Container
23
+
24
+ def normalize_resource_type: (String type) -> String
25
+
26
+ def extract_volumes: (Hash[Symbol, untyped] config, String resource_type, Integer resource_id, String node) -> Array[Models::Volume]
27
+
28
+ def parse_config_value: (String name, String value, String resource_type, Integer resource_id, String node) -> Models::Volume
29
+
30
+ def fetch_storage_volumes: (String node_name, String storage) -> Array[Models::Volume]
31
+
32
+ def build_storage_volume: (Hash[Symbol, untyped] data, String node, String storage) -> Models::Volume
33
+
34
+ def extract_resource_from_volume_id: (String? volume_id, String? content) -> [String?, Integer?]
35
+
36
+ def format_bytes_to_size: (Integer? bytes) -> String?
37
+
38
+ def online_nodes: () -> Array[String]
39
+
40
+ def parse_int: (String? value) -> Integer?
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,37 @@
1
+ module Pvectl
2
+ module Selectors
3
+ class Base
4
+ attr_reader conditions: Array[Hash[Symbol, untyped]]
5
+
6
+ def self.parse: (String selector_string) -> instance
7
+
8
+ def self.parse_all: (Array[String] selector_strings) -> instance
9
+
10
+ def initialize: (?Array[Hash[Symbol, untyped]] conditions) -> void
11
+
12
+ def empty?: () -> bool
13
+
14
+ def apply: (Array[untyped] collection) -> Array[untyped]
15
+
16
+ def matches?: (untyped item) -> bool
17
+
18
+ public
19
+
20
+ def match_condition?: (untyped item, Hash[Symbol, untyped] condition) -> bool
21
+
22
+ def extract_value: (untyped item, String field) -> untyped
23
+
24
+ def compare_value: (untyped actual, Symbol operator, untyped expected) -> bool
25
+
26
+ def wildcard_match?: (String value, String pattern) -> bool
27
+
28
+ private
29
+
30
+ def self.parse_conditions: (String? selector_string) -> Array[Hash[Symbol, untyped]]
31
+
32
+ def self.split_selectors: (String str) -> Array[String]
33
+
34
+ def self.parse_single_condition: (String condition_str) -> Hash[Symbol, untyped]
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,19 @@
1
+ module Pvectl
2
+ module Selectors
3
+ class Container < Base
4
+ SUPPORTED_FIELDS: Array[String]
5
+
6
+ def apply: (Array[untyped] containers) -> Array[untyped]
7
+
8
+ public
9
+
10
+ def extract_value: (untyped container, String field) -> String?
11
+
12
+ def match_condition?: (untyped container, Hash[Symbol, untyped] condition) -> bool
13
+
14
+ private
15
+
16
+ def match_tags_condition?: (untyped container, Hash[Symbol, untyped] condition) -> bool
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ module Pvectl
2
+ module Selectors
3
+ class Disk < Base
4
+ SUPPORTED_FIELDS: Array[String]
5
+
6
+ def apply: (Array[untyped] disks) -> Array[untyped]
7
+
8
+ private
9
+
10
+ def extract_value: (untyped disk, String field) -> String?
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ module Pvectl
2
+ module Selectors
3
+ class Vm < Base
4
+ SUPPORTED_FIELDS: Array[String]
5
+
6
+ def apply: (Array[untyped] vms) -> Array[untyped]
7
+
8
+ public
9
+
10
+ def extract_value: (untyped vm, String field) -> String?
11
+
12
+ def match_condition?: (untyped vm, Hash[Symbol, untyped] condition) -> bool
13
+
14
+ private
15
+
16
+ def match_tags_condition?: (untyped vm, Hash[Symbol, untyped] condition) -> bool
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ module Pvectl
2
+ module Selectors
3
+ class Volume < Base
4
+ SUPPORTED_FIELDS: Array[String]
5
+
6
+ def apply: (Array[Models::Volume] volumes) -> Array[Models::Volume]
7
+
8
+ private
9
+
10
+ def extract_value: (Models::Volume vol, String field) -> String?
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,27 @@
1
+ module Pvectl
2
+ module Services
3
+ class Backup
4
+ DEFAULT_TIMEOUT: Integer
5
+
6
+ def initialize: (backup_repo: untyped, resource_resolver: untyped, task_repo: untyped, ?options: Hash[Symbol, untyped]) -> void
7
+
8
+ def list: (?vmid: Integer?, ?storage: String?) -> Array[Models::Backup]
9
+
10
+ def create: (Array[Integer] vmids, storage: String, ?mode: String, ?compress: String, ?notes: String?, ?protected: bool) -> Array[Models::OperationResult]
11
+
12
+ def delete: (String volid) -> Models::OperationResult
13
+
14
+ def restore: (String volid, vmid: Integer, ?storage: String?, ?force: bool, ?start: bool, ?unique: bool) -> Models::OperationResult
15
+
16
+ private
17
+
18
+ def execute_multi: (Array[Hash[Symbol, untyped]] resources, Symbol operation) { (Hash[Symbol, untyped]) -> String } -> Array[Models::OperationResult]
19
+
20
+ def execute_single: (Hash[Symbol, untyped] resource, Symbol operation) { () -> String } -> Models::OperationResult
21
+
22
+ def timeout: () -> Integer
23
+
24
+ def find_node_for_volid: (String volid) -> String
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,35 @@
1
+ module Pvectl
2
+ module Services
3
+ class CloneContainer
4
+ DEFAULT_TIMEOUT: Integer
5
+
6
+ START_TIMEOUT: Integer
7
+
8
+ def initialize: (container_repository: untyped, task_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
9
+
10
+ def execute: (ctid: Integer, ?node: String?, ?new_ctid: Integer?, ?hostname: String?, ?target_node: String?, ?storage: String?, ?linked: bool, ?pool: String?, ?description: String?, ?config_params: Hash[Symbol, untyped]) -> Models::ContainerOperationResult
11
+
12
+ private
13
+
14
+ def generate_hostname: (Models::Container source_ct) -> String
15
+
16
+ def build_clone_options: (hostname: String, target_node: String?, storage: String?, linked: bool, pool: String?, description: String?) -> Hash[Symbol, untyped]
17
+
18
+ def apply_config_update: (Models::Container source_ct, Integer new_ctid, String node, Hash[Symbol, untyped] config_params, Hash[Symbol, untyped] resource_info) -> Models::ContainerOperationResult
19
+
20
+ def build_ct_config_api_params: (Hash[Symbol, untyped] config_params) -> Hash[Symbol, untyped]
21
+
22
+ def add_mountpoint_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, String]] mountpoints) -> void
23
+
24
+ def add_net_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, String]] nets) -> void
25
+
26
+ def start_container: (Integer ctid, String node) -> void
27
+
28
+ def timeout: () -> Integer
29
+
30
+ def container_not_found_error: (Integer ctid) -> Models::ContainerOperationResult
31
+
32
+ def linked_clone_error: (Models::Container source_ct) -> Models::ContainerOperationResult
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
1
+ module Pvectl
2
+ module Services
3
+ class CloneVm
4
+ DEFAULT_TIMEOUT: Integer
5
+
6
+ START_TIMEOUT: Integer
7
+
8
+ def initialize: (vm_repository: untyped, task_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
9
+
10
+ def execute: (vmid: Integer, ?node: String?, ?new_vmid: Integer?, ?name: String?, ?target_node: String?, ?storage: String?, ?linked: bool, ?pool: String?, ?description: String?, ?config_params: Hash[Symbol, untyped]) -> Models::VmOperationResult
11
+
12
+ private
13
+
14
+ def generate_name: (Models::Vm source_vm) -> String
15
+
16
+ def build_clone_options: (name: String, target_node: String?, storage: String?, linked: bool, pool: String?, description: String?) -> Hash[Symbol, untyped]
17
+
18
+ def apply_config_update: (Models::Vm source_vm, Integer new_vmid, String node, Hash[Symbol, untyped] config_params, Hash[Symbol, untyped] resource_info) -> Models::VmOperationResult
19
+
20
+ def build_config_api_params: (Hash[Symbol, untyped] config_params) -> Hash[Symbol, untyped]
21
+
22
+ def add_disk_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, String]] disks) -> void
23
+
24
+ def add_net_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, String]] nets) -> void
25
+
26
+ def start_vm: (Integer vmid, String node) -> void
27
+
28
+ def timeout: () -> Integer
29
+
30
+ def vm_not_found_error: (Integer vmid) -> Models::VmOperationResult
31
+
32
+ def linked_clone_error: (Models::Vm source_vm) -> Models::VmOperationResult
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,19 @@
1
+ module Pvectl
2
+ module Services
3
+ class Cloudinit
4
+ VALID_DUMP_TYPES: Array[String]
5
+
6
+ def initialize: (vm_repository: untyped, resource_resolver: untyped) -> void
7
+
8
+ def regenerate: (Integer vmid, ?node: String?) -> Hash[Symbol, untyped]
9
+
10
+ def pending: (Integer vmid, ?node: String?) -> Array[Hash[Symbol, untyped]]
11
+
12
+ def dump: (Integer vmid, String type, ?node: String?) -> String
13
+
14
+ private
15
+
16
+ def resolve_node!: (Integer vmid) -> String
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ module Pvectl
2
+ module Services
3
+ class Console
4
+ class ResourceNotRunningError < Pvectl::Error
5
+ end
6
+
7
+ class AuthenticationError < Pvectl::Error
8
+ end
9
+
10
+ def build_websocket_url: (server: String, node: String, resource_path: String, port: Integer, ticket: String) -> String
11
+
12
+ def validate_resource_running!: (Models::Vm | Models::Container resource) -> void
13
+
14
+ def run: (resource: Models::Vm | Models::Container, resource_path: String, server: String, username: String, password: String, verify_ssl: bool) -> void
15
+
16
+ private
17
+
18
+ def authenticate_with_client: (untyped client, String username, String password) -> Hash[Symbol, String]
19
+
20
+ def open_termproxy: (untyped client, Hash[Symbol, String] auth, node: String, resource_path: String) -> Hash[Symbol, untyped]
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,26 @@
1
+ module Pvectl
2
+ module Services
3
+ class ContainerLifecycle
4
+ SYNC_OPERATIONS: Array[Symbol]
5
+ ASYNC_OPERATIONS: Array[Symbol]
6
+ ALL_OPERATIONS: Array[Symbol]
7
+ DEFAULT_TIMEOUT: Integer
8
+
9
+ def initialize: (untyped container_repository, untyped task_repository, ?Hash[Symbol, untyped] options) -> void
10
+
11
+ def execute: (Symbol operation, Array[Models::Container] containers) -> Array[Models::ContainerOperationResult]
12
+
13
+ private
14
+
15
+ def execute_single: (Symbol operation, Models::Container container) -> Models::ContainerOperationResult
16
+
17
+ def call_api: (Symbol operation, Models::Container container) -> 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,64 @@
1
+ module Pvectl
2
+ module Services
3
+ class CreateContainer
4
+ DEFAULT_TIMEOUT: Integer
5
+ START_TIMEOUT: Integer
6
+
7
+ def initialize: (container_repository: untyped, task_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
8
+
9
+ def execute: (
10
+ ?ctid: Integer?,
11
+ hostname: String,
12
+ node: String,
13
+ ostemplate: String,
14
+ ?cores: Integer?,
15
+ ?memory: Integer?,
16
+ ?swap: Integer?,
17
+ ?rootfs: Hash[Symbol, untyped]?,
18
+ ?mountpoints: Array[Hash[Symbol, untyped]]?,
19
+ ?nets: Array[Hash[Symbol, untyped]]?,
20
+ ?privileged: bool?,
21
+ ?features: String?,
22
+ ?password: String?,
23
+ ?ssh_public_keys: String?,
24
+ ?onboot: bool?,
25
+ ?startup: String?,
26
+ ?description: String?,
27
+ ?tags: String?,
28
+ ?pool: String?
29
+ ) -> Models::ContainerOperationResult
30
+
31
+ private
32
+
33
+ def build_params: (
34
+ hostname: String,
35
+ ostemplate: String,
36
+ cores: Integer?,
37
+ memory: Integer?,
38
+ swap: Integer?,
39
+ rootfs: Hash[Symbol, untyped]?,
40
+ mountpoints: Array[Hash[Symbol, untyped]]?,
41
+ nets: Array[Hash[Symbol, untyped]]?,
42
+ privileged: bool?,
43
+ features: String?,
44
+ password: String?,
45
+ ssh_public_keys: String?,
46
+ onboot: bool?,
47
+ startup: String?,
48
+ description: String?,
49
+ tags: String?,
50
+ pool: String?
51
+ ) -> Hash[Symbol, untyped]
52
+
53
+ def add_mountpoint_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, untyped]] mountpoints) -> void
54
+
55
+ def add_net_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, untyped]] nets) -> void
56
+
57
+ def start_container: (Integer ctid, String node) -> void
58
+
59
+ def timeout: () -> Integer
60
+
61
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::ContainerOperationResult
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,72 @@
1
+ module Pvectl
2
+ module Services
3
+ class CreateVm
4
+ DEFAULT_TIMEOUT: Integer
5
+ START_TIMEOUT: Integer
6
+
7
+ def initialize: (vm_repository: untyped, task_repository: untyped, ?options: Hash[Symbol, untyped]) -> void
8
+
9
+ def execute: (
10
+ ?vmid: Integer?,
11
+ name: String,
12
+ node: String,
13
+ ?cores: Integer?,
14
+ ?sockets: Integer?,
15
+ ?cpu_type: String?,
16
+ ?numa: bool?,
17
+ ?memory: Integer?,
18
+ ?balloon: Integer?,
19
+ ?disks: Array[Hash[Symbol, untyped]]?,
20
+ ?scsihw: String?,
21
+ ?cdrom: String?,
22
+ ?nets: Array[Hash[Symbol, untyped]]?,
23
+ ?bios: String?,
24
+ ?boot_order: String?,
25
+ ?machine: String?,
26
+ ?efidisk: String?,
27
+ ?cloud_init: Hash[Symbol, untyped]?,
28
+ ?agent: bool?,
29
+ ?ostype: String?,
30
+ ?description: String?,
31
+ ?tags: String?,
32
+ ?pool: String?
33
+ ) -> Models::VmOperationResult
34
+
35
+ private
36
+
37
+ def build_params: (
38
+ name: String,
39
+ cores: Integer?,
40
+ sockets: Integer?,
41
+ cpu_type: String?,
42
+ numa: bool?,
43
+ memory: Integer?,
44
+ balloon: Integer?,
45
+ disks: Array[Hash[Symbol, untyped]]?,
46
+ scsihw: String?,
47
+ cdrom: String?,
48
+ nets: Array[Hash[Symbol, untyped]]?,
49
+ bios: String?,
50
+ boot_order: String?,
51
+ machine: String?,
52
+ efidisk: String?,
53
+ cloud_init: Hash[Symbol, untyped]?,
54
+ agent: bool?,
55
+ ostype: String?,
56
+ description: String?,
57
+ tags: String?,
58
+ pool: String?
59
+ ) -> Hash[Symbol, untyped]
60
+
61
+ def add_disk_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, untyped]] disks) -> void
62
+
63
+ def add_net_params: (Hash[Symbol, untyped] params, Array[Hash[Symbol, untyped]] nets) -> void
64
+
65
+ def start_vm: (Integer vmid, String node) -> void
66
+
67
+ def timeout: () -> Integer
68
+
69
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::VmOperationResult
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,17 @@
1
+ module Pvectl
2
+ module Services
3
+ class EditContainer
4
+ def initialize: (container_repository: untyped, ?editor_session: untyped?, ?options: Hash[Symbol, untyped]) -> void
5
+
6
+ def execute: (ctid: Integer) -> Models::ContainerOperationResult?
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::ContainerOperationResult
13
+
14
+ def not_found_result: (Integer ctid) -> Models::ContainerOperationResult
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ module Pvectl
2
+ module Services
3
+ class EditDns
4
+ EDITABLE_KEYS: Array[Symbol]
5
+
6
+ def initialize: (dns_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 build_editable: (Models::DnsConfig dns) -> Hash[String, String]
13
+
14
+ def validate!: (Hash[Symbol, untyped] edited) -> void
15
+
16
+ def compute_diff: (Hash[Symbol, untyped] original, Hash[Symbol, untyped] edited) -> Hash[Symbol, untyped]
17
+
18
+ def build_update_params: (Hash[Symbol, untyped] edited) -> Hash[Symbol, untyped]
19
+
20
+ def build_result: (Hash[Symbol, untyped] resource_info, **untyped attrs) -> Models::NodeOperationResult
21
+ end
22
+ end
23
+ end