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.
- checksums.yaml +7 -0
- data/.claude/rules/branch-before-changes.md +52 -0
- data/.claude/rules/documentation-updates.md +104 -0
- data/.claude/rules/git-workflow.md +84 -0
- data/.claude/rules/proxmox-api-docs.md +58 -0
- data/.claude/rules/rbs-signatures.md +80 -0
- data/.claude/rules/refactoring-as-design-option.md +35 -0
- data/.claude/scheduled_tasks.lock +1 -0
- data/.claude/settings.json +51 -0
- data/.mcp.json +8 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +138 -0
- data/CLAUDE.md +211 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/README.md +143 -0
- data/Rakefile +8 -0
- data/docs/proxmox-api-update.sh +96 -0
- data/exe/pvectl +5 -0
- data/lib/pvectl/argv_preprocessor.rb +334 -0
- data/lib/pvectl/cli.rb +102 -0
- data/lib/pvectl/commands/apt.rb +389 -0
- data/lib/pvectl/commands/clone_container.rb +230 -0
- data/lib/pvectl/commands/clone_vm.rb +331 -0
- data/lib/pvectl/commands/cloudinit/command.rb +122 -0
- data/lib/pvectl/commands/cloudinit/dump.rb +94 -0
- data/lib/pvectl/commands/cloudinit/pending.rb +137 -0
- data/lib/pvectl/commands/cloudinit/regenerate.rb +79 -0
- data/lib/pvectl/commands/config/command.rb +65 -0
- data/lib/pvectl/commands/config/get_contexts.rb +68 -0
- data/lib/pvectl/commands/config/set_cluster.rb +103 -0
- data/lib/pvectl/commands/config/set_context.rb +136 -0
- data/lib/pvectl/commands/config/set_credentials.rb +181 -0
- data/lib/pvectl/commands/config/use_context.rb +69 -0
- data/lib/pvectl/commands/config/view.rb +67 -0
- data/lib/pvectl/commands/console.rb +93 -0
- data/lib/pvectl/commands/console_ct.rb +187 -0
- data/lib/pvectl/commands/console_vm.rb +187 -0
- data/lib/pvectl/commands/container_lifecycle_command.rb +77 -0
- data/lib/pvectl/commands/create_backup.rb +173 -0
- data/lib/pvectl/commands/create_container.rb +141 -0
- data/lib/pvectl/commands/create_resource_command.rb +244 -0
- data/lib/pvectl/commands/create_snapshot.rb +242 -0
- data/lib/pvectl/commands/create_vm.rb +267 -0
- data/lib/pvectl/commands/delete_backup.rb +139 -0
- data/lib/pvectl/commands/delete_command.rb +119 -0
- data/lib/pvectl/commands/delete_container.rb +30 -0
- data/lib/pvectl/commands/delete_snapshot.rb +248 -0
- data/lib/pvectl/commands/delete_vm.rb +127 -0
- data/lib/pvectl/commands/describe/command.rb +251 -0
- data/lib/pvectl/commands/edit_container.rb +56 -0
- data/lib/pvectl/commands/edit_dns.rb +149 -0
- data/lib/pvectl/commands/edit_hosts.rb +135 -0
- data/lib/pvectl/commands/edit_node.rb +54 -0
- data/lib/pvectl/commands/edit_resource_command.rb +180 -0
- data/lib/pvectl/commands/edit_vm.rb +154 -0
- data/lib/pvectl/commands/edit_volume.rb +189 -0
- data/lib/pvectl/commands/feature_command.rb +230 -0
- data/lib/pvectl/commands/feature_container.rb +21 -0
- data/lib/pvectl/commands/feature_vm.rb +94 -0
- data/lib/pvectl/commands/get/command.rb +360 -0
- data/lib/pvectl/commands/get/handlers/backups.rb +76 -0
- data/lib/pvectl/commands/get/handlers/capabilities.rb +107 -0
- data/lib/pvectl/commands/get/handlers/containers.rb +148 -0
- data/lib/pvectl/commands/get/handlers/disks.rb +107 -0
- data/lib/pvectl/commands/get/handlers/dns.rb +94 -0
- data/lib/pvectl/commands/get/handlers/hosts.rb +94 -0
- data/lib/pvectl/commands/get/handlers/nodes.rb +162 -0
- data/lib/pvectl/commands/get/handlers/services.rb +81 -0
- data/lib/pvectl/commands/get/handlers/snapshots.rb +97 -0
- data/lib/pvectl/commands/get/handlers/storage.rb +118 -0
- data/lib/pvectl/commands/get/handlers/subscription.rb +69 -0
- data/lib/pvectl/commands/get/handlers/tasks.rb +89 -0
- data/lib/pvectl/commands/get/handlers/templates.rb +175 -0
- data/lib/pvectl/commands/get/handlers/time.rb +118 -0
- data/lib/pvectl/commands/get/handlers/vms.rb +145 -0
- data/lib/pvectl/commands/get/handlers/volume.rb +134 -0
- data/lib/pvectl/commands/get/resource_handler.rb +63 -0
- data/lib/pvectl/commands/get/resource_registry.rb +18 -0
- data/lib/pvectl/commands/get/watch_loop.rb +129 -0
- data/lib/pvectl/commands/irreversible_command.rb +265 -0
- data/lib/pvectl/commands/logs/command.rb +275 -0
- data/lib/pvectl/commands/logs/handlers/journal.rb +46 -0
- data/lib/pvectl/commands/logs/handlers/syslog.rb +53 -0
- data/lib/pvectl/commands/logs/handlers/task_detail.rb +52 -0
- data/lib/pvectl/commands/logs/handlers/task_logs.rb +115 -0
- data/lib/pvectl/commands/logs/resource_handler.rb +46 -0
- data/lib/pvectl/commands/logs/resource_registry.rb +22 -0
- data/lib/pvectl/commands/migrate_command.rb +282 -0
- data/lib/pvectl/commands/migrate_container.rb +23 -0
- data/lib/pvectl/commands/migrate_vm.rb +122 -0
- data/lib/pvectl/commands/move_disk_command.rb +239 -0
- data/lib/pvectl/commands/move_disk_container.rb +21 -0
- data/lib/pvectl/commands/move_disk_vm.rb +127 -0
- data/lib/pvectl/commands/ping.rb +249 -0
- data/lib/pvectl/commands/pull.rb +342 -0
- data/lib/pvectl/commands/push.rb +352 -0
- data/lib/pvectl/commands/reset.rb +64 -0
- data/lib/pvectl/commands/resource_lifecycle_command.rb +277 -0
- data/lib/pvectl/commands/resource_registry.rb +73 -0
- data/lib/pvectl/commands/restart.rb +70 -0
- data/lib/pvectl/commands/restart_container.rb +18 -0
- data/lib/pvectl/commands/restore_backup.rb +236 -0
- data/lib/pvectl/commands/resume.rb +57 -0
- data/lib/pvectl/commands/rollback_snapshot.rb +228 -0
- data/lib/pvectl/commands/sendkey_vm.rb +205 -0
- data/lib/pvectl/commands/service.rb +293 -0
- data/lib/pvectl/commands/set_container.rb +50 -0
- data/lib/pvectl/commands/set_node.rb +52 -0
- data/lib/pvectl/commands/set_resource_command.rb +185 -0
- data/lib/pvectl/commands/set_vm.rb +136 -0
- data/lib/pvectl/commands/set_volume.rb +212 -0
- data/lib/pvectl/commands/shared_config_parsers.rb +126 -0
- data/lib/pvectl/commands/shared_flags.rb +155 -0
- data/lib/pvectl/commands/shutdown.rb +73 -0
- data/lib/pvectl/commands/shutdown_container.rb +18 -0
- data/lib/pvectl/commands/start.rb +79 -0
- data/lib/pvectl/commands/start_container.rb +18 -0
- data/lib/pvectl/commands/stop.rb +75 -0
- data/lib/pvectl/commands/stop_container.rb +18 -0
- data/lib/pvectl/commands/suspend.rb +64 -0
- data/lib/pvectl/commands/template_command.rb +205 -0
- data/lib/pvectl/commands/template_container.rb +27 -0
- data/lib/pvectl/commands/template_vm.rb +106 -0
- data/lib/pvectl/commands/top/command.rb +206 -0
- data/lib/pvectl/commands/top/handlers/containers.rb +61 -0
- data/lib/pvectl/commands/top/handlers/nodes.rb +61 -0
- data/lib/pvectl/commands/top/handlers/vms.rb +61 -0
- data/lib/pvectl/commands/top/resource_handler.rb +46 -0
- data/lib/pvectl/commands/top/resource_registry.rb +22 -0
- data/lib/pvectl/commands/unlink_disk_vm.rb +232 -0
- data/lib/pvectl/commands/vm_lifecycle_command.rb +77 -0
- data/lib/pvectl/commands/wakeonlan_node.rb +153 -0
- data/lib/pvectl/config/errors.rb +62 -0
- data/lib/pvectl/config/models/cluster.rb +180 -0
- data/lib/pvectl/config/models/context.rb +100 -0
- data/lib/pvectl/config/models/resolved_config.rb +171 -0
- data/lib/pvectl/config/models/user.rb +133 -0
- data/lib/pvectl/config/provider.rb +297 -0
- data/lib/pvectl/config/service.rb +300 -0
- data/lib/pvectl/config/store.rb +161 -0
- data/lib/pvectl/config/wizard.rb +309 -0
- data/lib/pvectl/config_serializer.rb +1034 -0
- data/lib/pvectl/connection/retry_handler.rb +161 -0
- data/lib/pvectl/connection.rb +157 -0
- data/lib/pvectl/console/terminal_session.rb +449 -0
- data/lib/pvectl/editor_session.rb +157 -0
- data/lib/pvectl/exit_codes.rb +43 -0
- data/lib/pvectl/formatters/base.rb +55 -0
- data/lib/pvectl/formatters/color_support.rb +90 -0
- data/lib/pvectl/formatters/json.rb +45 -0
- data/lib/pvectl/formatters/output_helper.rb +77 -0
- data/lib/pvectl/formatters/registry.rb +72 -0
- data/lib/pvectl/formatters/table.rb +235 -0
- data/lib/pvectl/formatters/wide.rb +93 -0
- data/lib/pvectl/formatters/yaml.rb +49 -0
- data/lib/pvectl/manifest_serializer.rb +142 -0
- data/lib/pvectl/models/apt_package.rb +107 -0
- data/lib/pvectl/models/backup.rb +173 -0
- data/lib/pvectl/models/base.rb +49 -0
- data/lib/pvectl/models/capability.rb +62 -0
- data/lib/pvectl/models/container.rb +205 -0
- data/lib/pvectl/models/container_operation_result.rb +27 -0
- data/lib/pvectl/models/dns_config.rb +54 -0
- data/lib/pvectl/models/hosts_file.rb +47 -0
- data/lib/pvectl/models/journal_entry.rb +16 -0
- data/lib/pvectl/models/network_interface.rb +85 -0
- data/lib/pvectl/models/node.rb +195 -0
- data/lib/pvectl/models/node_operation_result.rb +45 -0
- data/lib/pvectl/models/operation_result.rb +110 -0
- data/lib/pvectl/models/physical_disk.rb +193 -0
- data/lib/pvectl/models/service.rb +80 -0
- data/lib/pvectl/models/snapshot.rb +101 -0
- data/lib/pvectl/models/snapshot_description.rb +39 -0
- data/lib/pvectl/models/storage.rb +180 -0
- data/lib/pvectl/models/subscription.rb +87 -0
- data/lib/pvectl/models/syslog_entry.rb +17 -0
- data/lib/pvectl/models/task.rb +95 -0
- data/lib/pvectl/models/task_entry.rb +52 -0
- data/lib/pvectl/models/task_log_line.rb +17 -0
- data/lib/pvectl/models/time_config.rb +47 -0
- data/lib/pvectl/models/vm.rb +137 -0
- data/lib/pvectl/models/vm_operation_result.rb +27 -0
- data/lib/pvectl/models/volume.rb +133 -0
- data/lib/pvectl/models/volume_operation_result.rb +26 -0
- data/lib/pvectl/parsers/cloud_init_config.rb +92 -0
- data/lib/pvectl/parsers/disk_config.rb +97 -0
- data/lib/pvectl/parsers/lxc_mount_config.rb +98 -0
- data/lib/pvectl/parsers/lxc_net_config.rb +97 -0
- data/lib/pvectl/parsers/net_config.rb +95 -0
- data/lib/pvectl/parsers/smart_text.rb +42 -0
- data/lib/pvectl/plugin_loader.rb +157 -0
- data/lib/pvectl/presenters/apt_package.rb +99 -0
- data/lib/pvectl/presenters/backup.rb +128 -0
- data/lib/pvectl/presenters/base.rb +283 -0
- data/lib/pvectl/presenters/capability.rb +104 -0
- data/lib/pvectl/presenters/config/context.rb +80 -0
- data/lib/pvectl/presenters/container.rb +574 -0
- data/lib/pvectl/presenters/container_operation_result.rb +109 -0
- data/lib/pvectl/presenters/disk.rb +184 -0
- data/lib/pvectl/presenters/dns_config.rb +68 -0
- data/lib/pvectl/presenters/hosts_file.rb +61 -0
- data/lib/pvectl/presenters/journal_entry.rb +20 -0
- data/lib/pvectl/presenters/node.rb +762 -0
- data/lib/pvectl/presenters/node_operation_result.rb +50 -0
- data/lib/pvectl/presenters/operation_result.rb +61 -0
- data/lib/pvectl/presenters/service.rb +76 -0
- data/lib/pvectl/presenters/snapshot.rb +239 -0
- data/lib/pvectl/presenters/snapshot_operation_result.rb +125 -0
- data/lib/pvectl/presenters/storage.rb +329 -0
- data/lib/pvectl/presenters/subscription.rb +189 -0
- data/lib/pvectl/presenters/syslog_entry.rb +20 -0
- data/lib/pvectl/presenters/task_entry.rb +69 -0
- data/lib/pvectl/presenters/task_log_line.rb +20 -0
- data/lib/pvectl/presenters/template.rb +76 -0
- data/lib/pvectl/presenters/time_config.rb +86 -0
- data/lib/pvectl/presenters/top_container.rb +112 -0
- data/lib/pvectl/presenters/top_node.rb +115 -0
- data/lib/pvectl/presenters/top_presenter.rb +59 -0
- data/lib/pvectl/presenters/top_vm.rb +105 -0
- data/lib/pvectl/presenters/vm.rb +853 -0
- data/lib/pvectl/presenters/vm_operation_result.rb +109 -0
- data/lib/pvectl/presenters/volume.rb +136 -0
- data/lib/pvectl/presenters/volume_operation_result.rb +58 -0
- data/lib/pvectl/repositories/apt.rb +93 -0
- data/lib/pvectl/repositories/backup.rb +186 -0
- data/lib/pvectl/repositories/base.rb +110 -0
- data/lib/pvectl/repositories/capabilities.rb +96 -0
- data/lib/pvectl/repositories/container.rb +503 -0
- data/lib/pvectl/repositories/disk.rb +87 -0
- data/lib/pvectl/repositories/dns.rb +54 -0
- data/lib/pvectl/repositories/hosts.rb +63 -0
- data/lib/pvectl/repositories/journal.rb +23 -0
- data/lib/pvectl/repositories/node.rb +537 -0
- data/lib/pvectl/repositories/service.rb +139 -0
- data/lib/pvectl/repositories/snapshot.rb +133 -0
- data/lib/pvectl/repositories/storage.rb +302 -0
- data/lib/pvectl/repositories/subscription.rb +77 -0
- data/lib/pvectl/repositories/syslog.rb +25 -0
- data/lib/pvectl/repositories/task.rb +82 -0
- data/lib/pvectl/repositories/task_list.rb +30 -0
- data/lib/pvectl/repositories/task_log.rb +31 -0
- data/lib/pvectl/repositories/time_config.rb +53 -0
- data/lib/pvectl/repositories/vm.rb +616 -0
- data/lib/pvectl/repositories/volume.rb +306 -0
- data/lib/pvectl/selectors/base.rb +201 -0
- data/lib/pvectl/selectors/container.rb +116 -0
- data/lib/pvectl/selectors/disk.rb +59 -0
- data/lib/pvectl/selectors/vm.rb +116 -0
- data/lib/pvectl/selectors/volume.rb +59 -0
- data/lib/pvectl/services/backup.rb +209 -0
- data/lib/pvectl/services/clone_container.rb +260 -0
- data/lib/pvectl/services/clone_vm.rb +265 -0
- data/lib/pvectl/services/cloudinit.rb +96 -0
- data/lib/pvectl/services/console.rb +152 -0
- data/lib/pvectl/services/container_lifecycle.rb +124 -0
- data/lib/pvectl/services/create_container.rb +179 -0
- data/lib/pvectl/services/create_vm.rb +191 -0
- data/lib/pvectl/services/edit_container.rb +125 -0
- data/lib/pvectl/services/edit_dns.rb +159 -0
- data/lib/pvectl/services/edit_hosts.rb +78 -0
- data/lib/pvectl/services/edit_node.rb +147 -0
- data/lib/pvectl/services/edit_vm.rb +125 -0
- data/lib/pvectl/services/edit_volume.rb +224 -0
- data/lib/pvectl/services/get/resource_service.rb +98 -0
- data/lib/pvectl/services/move_disk.rb +132 -0
- data/lib/pvectl/services/pull_config.rb +94 -0
- data/lib/pvectl/services/push_config.rb +524 -0
- data/lib/pvectl/services/resize_volume.rb +253 -0
- data/lib/pvectl/services/resource_delete.rb +169 -0
- data/lib/pvectl/services/resource_migration.rb +170 -0
- data/lib/pvectl/services/sendkey.rb +108 -0
- data/lib/pvectl/services/service_lifecycle.rb +89 -0
- data/lib/pvectl/services/set_container.rb +128 -0
- data/lib/pvectl/services/set_node.rb +236 -0
- data/lib/pvectl/services/set_vm.rb +128 -0
- data/lib/pvectl/services/set_volume.rb +126 -0
- data/lib/pvectl/services/snapshot.rb +261 -0
- data/lib/pvectl/services/task_listing.rb +75 -0
- data/lib/pvectl/services/unlink_disk.rb +86 -0
- data/lib/pvectl/services/vm_lifecycle.rb +124 -0
- data/lib/pvectl/services/wakeonlan.rb +79 -0
- data/lib/pvectl/utils/resource_resolver.rb +80 -0
- data/lib/pvectl/version.rb +13 -0
- data/lib/pvectl/wizards/create_container.rb +105 -0
- data/lib/pvectl/wizards/create_vm.rb +98 -0
- data/lib/pvectl.rb +439 -0
- data/sig/external/gli.rbs +16 -0
- data/sig/external/proxmox_api.rbs +10 -0
- data/sig/pvectl/argv_preprocessor.rbs +53 -0
- data/sig/pvectl/cli.rbs +26 -0
- data/sig/pvectl/commands/apt.rbs +47 -0
- data/sig/pvectl/commands/clone_container.rbs +31 -0
- data/sig/pvectl/commands/clone_vm.rbs +33 -0
- data/sig/pvectl/commands/cloudinit/command.rbs +13 -0
- data/sig/pvectl/commands/cloudinit/dump.rbs +13 -0
- data/sig/pvectl/commands/cloudinit/pending.rbs +17 -0
- data/sig/pvectl/commands/cloudinit/regenerate.rbs +11 -0
- data/sig/pvectl/commands/config/command.rbs +9 -0
- data/sig/pvectl/commands/config/get_contexts.rbs +11 -0
- data/sig/pvectl/commands/config/set_cluster.rbs +11 -0
- data/sig/pvectl/commands/config/set_context.rbs +15 -0
- data/sig/pvectl/commands/config/set_credentials.rbs +15 -0
- data/sig/pvectl/commands/config/use_context.rbs +11 -0
- data/sig/pvectl/commands/config/view.rbs +11 -0
- data/sig/pvectl/commands/console.rbs +9 -0
- data/sig/pvectl/commands/console_ct.rbs +27 -0
- data/sig/pvectl/commands/console_vm.rbs +27 -0
- data/sig/pvectl/commands/container_lifecycle_command.rbs +25 -0
- data/sig/pvectl/commands/create_backup.rbs +29 -0
- data/sig/pvectl/commands/create_container.rbs +30 -0
- data/sig/pvectl/commands/create_resource_command.rbs +53 -0
- data/sig/pvectl/commands/create_snapshot.rbs +35 -0
- data/sig/pvectl/commands/create_vm.rbs +30 -0
- data/sig/pvectl/commands/delete_backup.rbs +25 -0
- data/sig/pvectl/commands/delete_command.rbs +45 -0
- data/sig/pvectl/commands/delete_container.rbs +11 -0
- data/sig/pvectl/commands/delete_snapshot.rbs +35 -0
- data/sig/pvectl/commands/delete_vm.rbs +13 -0
- data/sig/pvectl/commands/describe/command.rbs +27 -0
- data/sig/pvectl/commands/edit_container.rbs +17 -0
- data/sig/pvectl/commands/edit_dns.rbs +25 -0
- data/sig/pvectl/commands/edit_hosts.rbs +23 -0
- data/sig/pvectl/commands/edit_node.rbs +17 -0
- data/sig/pvectl/commands/edit_resource_command.rbs +35 -0
- data/sig/pvectl/commands/edit_vm.rbs +19 -0
- data/sig/pvectl/commands/edit_volume.rbs +24 -0
- data/sig/pvectl/commands/feature_command.rbs +43 -0
- data/sig/pvectl/commands/feature_container.rbs +10 -0
- data/sig/pvectl/commands/feature_vm.rbs +12 -0
- data/sig/pvectl/commands/get/command.rbs +42 -0
- data/sig/pvectl/commands/get/handlers/backups.rbs +23 -0
- data/sig/pvectl/commands/get/handlers/capabilities.rbs +29 -0
- data/sig/pvectl/commands/get/handlers/containers.rbs +35 -0
- data/sig/pvectl/commands/get/handlers/disks.rbs +27 -0
- data/sig/pvectl/commands/get/handlers/dns.rbs +25 -0
- data/sig/pvectl/commands/get/handlers/hosts.rbs +25 -0
- data/sig/pvectl/commands/get/handlers/nodes.rbs +33 -0
- data/sig/pvectl/commands/get/handlers/services.rbs +23 -0
- data/sig/pvectl/commands/get/handlers/snapshots.rbs +27 -0
- data/sig/pvectl/commands/get/handlers/storage.rbs +25 -0
- data/sig/pvectl/commands/get/handlers/subscription.rbs +25 -0
- data/sig/pvectl/commands/get/handlers/tasks.rbs +28 -0
- data/sig/pvectl/commands/get/handlers/templates.rbs +35 -0
- data/sig/pvectl/commands/get/handlers/time.rbs +29 -0
- data/sig/pvectl/commands/get/handlers/vms.rbs +35 -0
- data/sig/pvectl/commands/get/handlers/volume.rbs +27 -0
- data/sig/pvectl/commands/get/resource_handler.rbs +13 -0
- data/sig/pvectl/commands/get/resource_registry.rbs +8 -0
- data/sig/pvectl/commands/get/watch_loop.rbs +33 -0
- data/sig/pvectl/commands/irreversible_command.rbs +32 -0
- data/sig/pvectl/commands/logs/command.rbs +35 -0
- data/sig/pvectl/commands/logs/handlers/journal.rbs +21 -0
- data/sig/pvectl/commands/logs/handlers/syslog.rbs +21 -0
- data/sig/pvectl/commands/logs/handlers/task_detail.rbs +21 -0
- data/sig/pvectl/commands/logs/handlers/task_logs.rbs +35 -0
- data/sig/pvectl/commands/logs/resource_handler.rbs +11 -0
- data/sig/pvectl/commands/logs/resource_registry.rbs +8 -0
- data/sig/pvectl/commands/migrate_command.rbs +45 -0
- data/sig/pvectl/commands/migrate_container.rbs +11 -0
- data/sig/pvectl/commands/migrate_vm.rbs +13 -0
- data/sig/pvectl/commands/move_disk_command.rbs +43 -0
- data/sig/pvectl/commands/move_disk_container.rbs +11 -0
- data/sig/pvectl/commands/move_disk_vm.rbs +13 -0
- data/sig/pvectl/commands/ping.rbs +39 -0
- data/sig/pvectl/commands/pull.rbs +33 -0
- data/sig/pvectl/commands/push.rbs +32 -0
- data/sig/pvectl/commands/reset.rbs +11 -0
- data/sig/pvectl/commands/resource_lifecycle_command.rbs +55 -0
- data/sig/pvectl/commands/resource_registry.rbs +19 -0
- data/sig/pvectl/commands/restart.rbs +11 -0
- data/sig/pvectl/commands/restart_container.rbs +9 -0
- data/sig/pvectl/commands/restore_backup.rbs +27 -0
- data/sig/pvectl/commands/resume.rbs +11 -0
- data/sig/pvectl/commands/rollback_snapshot.rbs +31 -0
- data/sig/pvectl/commands/sendkey_vm.rbs +25 -0
- data/sig/pvectl/commands/service.rbs +38 -0
- data/sig/pvectl/commands/set_container.rbs +13 -0
- data/sig/pvectl/commands/set_node.rbs +13 -0
- data/sig/pvectl/commands/set_resource_command.rbs +25 -0
- data/sig/pvectl/commands/set_vm.rbs +15 -0
- data/sig/pvectl/commands/set_volume.rbs +24 -0
- data/sig/pvectl/commands/shared_config_parsers.rbs +19 -0
- data/sig/pvectl/commands/shared_flags.rbs +10 -0
- data/sig/pvectl/commands/shutdown.rbs +11 -0
- data/sig/pvectl/commands/shutdown_container.rbs +9 -0
- data/sig/pvectl/commands/start.rbs +11 -0
- data/sig/pvectl/commands/start_container.rbs +9 -0
- data/sig/pvectl/commands/stop.rbs +11 -0
- data/sig/pvectl/commands/stop_container.rbs +9 -0
- data/sig/pvectl/commands/suspend.rbs +11 -0
- data/sig/pvectl/commands/template_command.rbs +21 -0
- data/sig/pvectl/commands/template_container.rbs +10 -0
- data/sig/pvectl/commands/template_vm.rbs +12 -0
- data/sig/pvectl/commands/top/command.rbs +31 -0
- data/sig/pvectl/commands/top/handlers/containers.rbs +21 -0
- data/sig/pvectl/commands/top/handlers/nodes.rbs +21 -0
- data/sig/pvectl/commands/top/handlers/vms.rbs +21 -0
- data/sig/pvectl/commands/top/resource_handler.rbs +11 -0
- data/sig/pvectl/commands/top/resource_registry.rbs +8 -0
- data/sig/pvectl/commands/unlink_disk_vm.rbs +27 -0
- data/sig/pvectl/commands/vm_lifecycle_command.rbs +25 -0
- data/sig/pvectl/commands/wakeonlan_node.rbs +21 -0
- data/sig/pvectl/config/errors.rbs +24 -0
- data/sig/pvectl/config/models/cluster.rbs +39 -0
- data/sig/pvectl/config/models/context.rbs +23 -0
- data/sig/pvectl/config/models/resolved_config.rbs +51 -0
- data/sig/pvectl/config/models/user.rbs +31 -0
- data/sig/pvectl/config/provider.rbs +40 -0
- data/sig/pvectl/config/service.rbs +65 -0
- data/sig/pvectl/config/store.rbs +14 -0
- data/sig/pvectl/config/wizard.rbs +48 -0
- data/sig/pvectl/config_serializer.rbs +121 -0
- data/sig/pvectl/connection/retry_handler.rbs +31 -0
- data/sig/pvectl/connection.rbs +35 -0
- data/sig/pvectl/console/terminal_session.rbs +63 -0
- data/sig/pvectl/editor_session.rbs +33 -0
- data/sig/pvectl/exit_codes.rbs +19 -0
- data/sig/pvectl/formatters/base.rbs +13 -0
- data/sig/pvectl/formatters/color_support.rbs +13 -0
- data/sig/pvectl/formatters/json.rbs +7 -0
- data/sig/pvectl/formatters/output_helper.rbs +9 -0
- data/sig/pvectl/formatters/registry.rbs +13 -0
- data/sig/pvectl/formatters/table.rbs +25 -0
- data/sig/pvectl/formatters/wide.rbs +15 -0
- data/sig/pvectl/formatters/yaml.rbs +7 -0
- data/sig/pvectl/manifest_serializer.rbs +18 -0
- data/sig/pvectl/models/apt_package.rbs +26 -0
- data/sig/pvectl/models/backup.rbs +31 -0
- data/sig/pvectl/models/base.rbs +11 -0
- data/sig/pvectl/models/capability.rbs +16 -0
- data/sig/pvectl/models/container.rbs +44 -0
- data/sig/pvectl/models/container_operation_result.rbs +9 -0
- data/sig/pvectl/models/dns_config.rbs +15 -0
- data/sig/pvectl/models/hosts_file.rbs +13 -0
- data/sig/pvectl/models/journal_entry.rbs +10 -0
- data/sig/pvectl/models/network_interface.rbs +20 -0
- data/sig/pvectl/models/node.rbs +47 -0
- data/sig/pvectl/models/node_operation_result.rbs +12 -0
- data/sig/pvectl/models/operation_result.rbs +21 -0
- data/sig/pvectl/models/physical_disk.rbs +35 -0
- data/sig/pvectl/models/service.rbs +18 -0
- data/sig/pvectl/models/snapshot.rbs +21 -0
- data/sig/pvectl/models/snapshot_description.rbs +18 -0
- data/sig/pvectl/models/storage.rbs +39 -0
- data/sig/pvectl/models/subscription.rbs +24 -0
- data/sig/pvectl/models/syslog_entry.rbs +10 -0
- data/sig/pvectl/models/task.rbs +22 -0
- data/sig/pvectl/models/task_entry.rbs +24 -0
- data/sig/pvectl/models/task_log_line.rbs +10 -0
- data/sig/pvectl/models/time_config.rbs +12 -0
- data/sig/pvectl/models/vm.rbs +32 -0
- data/sig/pvectl/models/vm_operation_result.rbs +9 -0
- data/sig/pvectl/models/volume.rbs +29 -0
- data/sig/pvectl/models/volume_operation_result.rbs +9 -0
- data/sig/pvectl/parsers/cloud_init_config.rbs +15 -0
- data/sig/pvectl/parsers/disk_config.rbs +19 -0
- data/sig/pvectl/parsers/lxc_mount_config.rbs +19 -0
- data/sig/pvectl/parsers/lxc_net_config.rbs +19 -0
- data/sig/pvectl/parsers/net_config.rbs +19 -0
- data/sig/pvectl/parsers/smart_text.rbs +7 -0
- data/sig/pvectl/plugin_loader.rbs +25 -0
- data/sig/pvectl/presenters/apt_package.rbs +19 -0
- data/sig/pvectl/presenters/backup.rbs +25 -0
- data/sig/pvectl/presenters/base.rbs +41 -0
- data/sig/pvectl/presenters/capability.rbs +19 -0
- data/sig/pvectl/presenters/config/context.rbs +17 -0
- data/sig/pvectl/presenters/container.rbs +78 -0
- data/sig/pvectl/presenters/container_operation_result.rbs +19 -0
- data/sig/pvectl/presenters/disk.rbs +31 -0
- data/sig/pvectl/presenters/dns_config.rbs +13 -0
- data/sig/pvectl/presenters/hosts_file.rbs +13 -0
- data/sig/pvectl/presenters/journal_entry.rbs +11 -0
- data/sig/pvectl/presenters/node.rbs +118 -0
- data/sig/pvectl/presenters/node_operation_result.rbs +11 -0
- data/sig/pvectl/presenters/operation_result.rbs +17 -0
- data/sig/pvectl/presenters/service.rbs +15 -0
- data/sig/pvectl/presenters/snapshot.rbs +35 -0
- data/sig/pvectl/presenters/snapshot_operation_result.rbs +27 -0
- data/sig/pvectl/presenters/storage.rbs +59 -0
- data/sig/pvectl/presenters/subscription.rbs +36 -0
- data/sig/pvectl/presenters/syslog_entry.rbs +11 -0
- data/sig/pvectl/presenters/task_entry.rbs +21 -0
- data/sig/pvectl/presenters/task_log_line.rbs +11 -0
- data/sig/pvectl/presenters/template.rbs +15 -0
- data/sig/pvectl/presenters/time_config.rbs +19 -0
- data/sig/pvectl/presenters/top_container.rbs +17 -0
- data/sig/pvectl/presenters/top_node.rbs +17 -0
- data/sig/pvectl/presenters/top_presenter.rbs +13 -0
- data/sig/pvectl/presenters/top_vm.rbs +17 -0
- data/sig/pvectl/presenters/vm.rbs +91 -0
- data/sig/pvectl/presenters/vm_operation_result.rbs +19 -0
- data/sig/pvectl/presenters/volume.rbs +23 -0
- data/sig/pvectl/presenters/volume_operation_result.rbs +11 -0
- data/sig/pvectl/repositories/apt.rbs +17 -0
- data/sig/pvectl/repositories/backup.rbs +27 -0
- data/sig/pvectl/repositories/base.rbs +23 -0
- data/sig/pvectl/repositories/capabilities.rbs +20 -0
- data/sig/pvectl/repositories/container.rbs +63 -0
- data/sig/pvectl/repositories/disk.rbs +17 -0
- data/sig/pvectl/repositories/dns.rbs +13 -0
- data/sig/pvectl/repositories/hosts.rbs +13 -0
- data/sig/pvectl/repositories/journal.rbs +7 -0
- data/sig/pvectl/repositories/node.rbs +68 -0
- data/sig/pvectl/repositories/service.rbs +27 -0
- data/sig/pvectl/repositories/snapshot.rbs +19 -0
- data/sig/pvectl/repositories/storage.rbs +37 -0
- data/sig/pvectl/repositories/subscription.rbs +17 -0
- data/sig/pvectl/repositories/syslog.rbs +7 -0
- data/sig/pvectl/repositories/task.rbs +19 -0
- data/sig/pvectl/repositories/task_list.rbs +7 -0
- data/sig/pvectl/repositories/task_log.rbs +11 -0
- data/sig/pvectl/repositories/time_config.rbs +13 -0
- data/sig/pvectl/repositories/vm.rbs +85 -0
- data/sig/pvectl/repositories/volume.rbs +43 -0
- data/sig/pvectl/selectors/base.rbs +37 -0
- data/sig/pvectl/selectors/container.rbs +19 -0
- data/sig/pvectl/selectors/disk.rbs +13 -0
- data/sig/pvectl/selectors/vm.rbs +19 -0
- data/sig/pvectl/selectors/volume.rbs +13 -0
- data/sig/pvectl/services/backup.rbs +27 -0
- data/sig/pvectl/services/clone_container.rbs +35 -0
- data/sig/pvectl/services/clone_vm.rbs +35 -0
- data/sig/pvectl/services/cloudinit.rbs +19 -0
- data/sig/pvectl/services/console.rbs +23 -0
- data/sig/pvectl/services/container_lifecycle.rbs +26 -0
- data/sig/pvectl/services/create_container.rbs +64 -0
- data/sig/pvectl/services/create_vm.rbs +72 -0
- data/sig/pvectl/services/edit_container.rbs +17 -0
- data/sig/pvectl/services/edit_dns.rbs +23 -0
- data/sig/pvectl/services/edit_hosts.rbs +13 -0
- data/sig/pvectl/services/edit_node.rbs +21 -0
- data/sig/pvectl/services/edit_vm.rbs +17 -0
- data/sig/pvectl/services/edit_volume.rbs +18 -0
- data/sig/pvectl/services/get/resource_service.rbs +23 -0
- data/sig/pvectl/services/move_disk.rbs +21 -0
- data/sig/pvectl/services/pull_config.rbs +18 -0
- data/sig/pvectl/services/push_config.rbs +37 -0
- data/sig/pvectl/services/resize_volume.rbs +47 -0
- data/sig/pvectl/services/resource_delete.rbs +27 -0
- data/sig/pvectl/services/resource_migration.rbs +29 -0
- data/sig/pvectl/services/sendkey.rbs +19 -0
- data/sig/pvectl/services/service_lifecycle.rbs +17 -0
- data/sig/pvectl/services/set_container.rbs +14 -0
- data/sig/pvectl/services/set_node.rbs +23 -0
- data/sig/pvectl/services/set_vm.rbs +14 -0
- data/sig/pvectl/services/set_volume.rbs +12 -0
- data/sig/pvectl/services/snapshot.rbs +35 -0
- data/sig/pvectl/services/task_listing.rbs +13 -0
- data/sig/pvectl/services/unlink_disk.rbs +17 -0
- data/sig/pvectl/services/vm_lifecycle.rbs +26 -0
- data/sig/pvectl/services/wakeonlan.rbs +17 -0
- data/sig/pvectl/utils/resource_resolver.rbs +17 -0
- data/sig/pvectl/wizards/create_container.rbs +21 -0
- data/sig/pvectl/wizards/create_vm.rbs +21 -0
- data/sig/pvectl.rbs +9 -0
- 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,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,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,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
|