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,31 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Config
|
|
3
|
+
module Models
|
|
4
|
+
class User
|
|
5
|
+
SECRET_MASK: String
|
|
6
|
+
|
|
7
|
+
attr_reader name: String
|
|
8
|
+
attr_reader token_id: String?
|
|
9
|
+
attr_reader token_secret: String?
|
|
10
|
+
attr_reader username: String?
|
|
11
|
+
attr_reader password: String?
|
|
12
|
+
|
|
13
|
+
def initialize: (
|
|
14
|
+
name: String,
|
|
15
|
+
?token_id: String?,
|
|
16
|
+
?token_secret: String?,
|
|
17
|
+
?username: String?,
|
|
18
|
+
?password: String?
|
|
19
|
+
) -> void
|
|
20
|
+
|
|
21
|
+
def token_auth?: () -> bool
|
|
22
|
+
def password_auth?: () -> bool
|
|
23
|
+
def valid?: () -> bool
|
|
24
|
+
|
|
25
|
+
def self.from_hash: (Hash[String, untyped]) -> User
|
|
26
|
+
|
|
27
|
+
def to_hash: (?mask_secrets: bool) -> Hash[String, untyped]
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Config
|
|
3
|
+
class Provider
|
|
4
|
+
ENV_VARS: Hash[String, Symbol]
|
|
5
|
+
INTEGER_VARS: Array[Symbol]
|
|
6
|
+
BOOLEAN_VARS: Array[Symbol]
|
|
7
|
+
|
|
8
|
+
def file_exists?: (String path) -> bool
|
|
9
|
+
def insecure_permissions?: (String path) -> bool
|
|
10
|
+
def load_file: (String path) -> Hash[String, untyped]
|
|
11
|
+
def load_env: () -> Hash[Symbol, untyped]
|
|
12
|
+
def resolve_context_name: (cli_options: Hash[Symbol, untyped], ?file_config: Hash[String, untyped]) -> String?
|
|
13
|
+
|
|
14
|
+
def resolve: (
|
|
15
|
+
config_path: String,
|
|
16
|
+
cli_options: Hash[Symbol, untyped],
|
|
17
|
+
?cluster_override: String?
|
|
18
|
+
) -> Models::ResolvedConfig
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def parse_env_value: (Symbol key, String value) -> untyped
|
|
23
|
+
def parse_boolean_env: (String value) -> bool
|
|
24
|
+
def parse_integer_env: (Symbol key, String value) -> Integer
|
|
25
|
+
def find_context: (Hash[String, untyped] config, String name) -> Models::Context
|
|
26
|
+
def find_cluster: (Hash[String, untyped] config, String name) -> Models::Cluster
|
|
27
|
+
def find_user: (Hash[String, untyped] config, String name) -> Models::User
|
|
28
|
+
|
|
29
|
+
def build_resolved_config: (
|
|
30
|
+
context: Models::Context,
|
|
31
|
+
cluster: Models::Cluster,
|
|
32
|
+
user: Models::User,
|
|
33
|
+
env_config: Hash[Symbol, untyped],
|
|
34
|
+
cli_options: Hash[Symbol, untyped]
|
|
35
|
+
) -> Models::ResolvedConfig
|
|
36
|
+
|
|
37
|
+
def resolve_auth: (Models::User user, Hash[Symbol, untyped] env_config) -> [Symbol, String?, String?, String?, String?]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Config
|
|
3
|
+
class Service
|
|
4
|
+
DEFAULT_CONFIG_PATH: String
|
|
5
|
+
|
|
6
|
+
attr_reader config_path: String
|
|
7
|
+
attr_reader raw_config: Hash[String, untyped]
|
|
8
|
+
attr_reader current_context_name: String
|
|
9
|
+
|
|
10
|
+
def initialize: (?provider: Provider?, ?store: Store?, ?wizard: Wizard?) -> void
|
|
11
|
+
|
|
12
|
+
def load: (?Hash[Symbol, untyped] cli_options) -> Service
|
|
13
|
+
def current_config: () -> Models::ResolvedConfig
|
|
14
|
+
|
|
15
|
+
def contexts: () -> Array[Models::Context]
|
|
16
|
+
def context: (String name) -> Models::Context?
|
|
17
|
+
|
|
18
|
+
def use_context: (String context_name) -> void
|
|
19
|
+
|
|
20
|
+
def set_context: (
|
|
21
|
+
name: String,
|
|
22
|
+
cluster: String,
|
|
23
|
+
user: String,
|
|
24
|
+
?default_node: String?
|
|
25
|
+
) -> Models::Context
|
|
26
|
+
|
|
27
|
+
def clusters: () -> Array[Models::Cluster]
|
|
28
|
+
def cluster: (String name) -> Models::Cluster?
|
|
29
|
+
|
|
30
|
+
def set_cluster: (
|
|
31
|
+
name: String,
|
|
32
|
+
server: String,
|
|
33
|
+
?verify_ssl: bool,
|
|
34
|
+
?certificate_authority: String?
|
|
35
|
+
) -> Models::Cluster
|
|
36
|
+
|
|
37
|
+
def users: () -> Array[Models::User]
|
|
38
|
+
def user: (String name) -> Models::User?
|
|
39
|
+
|
|
40
|
+
def set_credentials: (
|
|
41
|
+
name: String,
|
|
42
|
+
?token_id: String?,
|
|
43
|
+
?token_secret: String?,
|
|
44
|
+
?username: String?,
|
|
45
|
+
?password: String?
|
|
46
|
+
) -> Models::User
|
|
47
|
+
|
|
48
|
+
def masked_config: () -> Hash[String, untyped]
|
|
49
|
+
def save: () -> void
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
@provider: Provider
|
|
54
|
+
@store: Store
|
|
55
|
+
@wizard: Wizard?
|
|
56
|
+
@loaded: bool
|
|
57
|
+
@resolved_config: Models::ResolvedConfig?
|
|
58
|
+
|
|
59
|
+
def resolve_config_path: (Hash[Symbol, untyped] cli_options) -> String
|
|
60
|
+
def warn_insecure_permissions: () -> void
|
|
61
|
+
def refresh_raw_config: () -> void
|
|
62
|
+
def deep_copy: (untyped obj) -> untyped
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Config
|
|
3
|
+
class Store
|
|
4
|
+
SECURE_MODE: Integer
|
|
5
|
+
SECURE_DIR_MODE: Integer
|
|
6
|
+
|
|
7
|
+
def save: (String path, Hash[String, untyped] config) -> void
|
|
8
|
+
def update_current_context: (String path, String context_name) -> void
|
|
9
|
+
def upsert_context: (String path, Models::Context context) -> void
|
|
10
|
+
def upsert_cluster: (String path, Models::Cluster cluster) -> void
|
|
11
|
+
def upsert_user: (String path, Models::User user) -> void
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Config
|
|
3
|
+
class Wizard
|
|
4
|
+
def self.available?: () -> bool
|
|
5
|
+
|
|
6
|
+
def initialize: (?prompt: untyped?) -> void
|
|
7
|
+
|
|
8
|
+
def run: () -> Hash[String, untyped]
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
attr_reader prompt: untyped
|
|
13
|
+
|
|
14
|
+
def create_default_prompt: () -> untyped
|
|
15
|
+
def prompt_server: () -> String
|
|
16
|
+
def prompt_ssl: () -> bool
|
|
17
|
+
def prompt_auth_type: () -> Symbol
|
|
18
|
+
def prompt_credentials: (Symbol auth_type) -> Hash[Symbol, String]
|
|
19
|
+
def prompt_context_name: () -> String
|
|
20
|
+
|
|
21
|
+
def build_config: (
|
|
22
|
+
server: String,
|
|
23
|
+
verify_ssl: bool,
|
|
24
|
+
auth_type: Symbol,
|
|
25
|
+
credentials: Hash[Symbol, String],
|
|
26
|
+
context_name: String
|
|
27
|
+
) -> Hash[String, untyped]
|
|
28
|
+
|
|
29
|
+
def build_user_config: (String name, Symbol auth_type, Hash[Symbol, String] credentials) -> Hash[String, untyped]
|
|
30
|
+
def valid_server_url?: (String url) -> bool
|
|
31
|
+
def valid_token_id?: (String token_id) -> bool
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class SimplePrompt
|
|
35
|
+
def ask: (String question, ?default: untyped, ?required: bool, ?convert: Symbol?, **untyped) -> untyped
|
|
36
|
+
def yes?: (String question, **untyped) -> bool
|
|
37
|
+
def select: (String question, Array[untyped] choices, **untyped) -> untyped
|
|
38
|
+
def mask: (String question, **untyped) -> String?
|
|
39
|
+
def ok: (untyped message) -> void
|
|
40
|
+
def warn: (untyped message) -> void
|
|
41
|
+
def error: (untyped message) -> void
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def convert_value: (untyped value, Symbol? type) -> untyped
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module ConfigSerializer
|
|
3
|
+
VM_SECTIONS: Hash[Symbol, Hash[Symbol, Array[Symbol] | Array[Regexp] | Hash[Symbol, Hash[Symbol, Array[Symbol] | Array[Regexp]]]]]
|
|
4
|
+
|
|
5
|
+
CONTAINER_SECTIONS: Hash[Symbol, Hash[Symbol, Array[Symbol] | Array[Regexp] | Hash[Symbol, Hash[Symbol, Array[Symbol] | Array[Regexp]]]]]
|
|
6
|
+
|
|
7
|
+
YAML_SPECIAL_CHARS: Array[String]
|
|
8
|
+
|
|
9
|
+
AGENT_DEFAULTS: Hash[Symbol, String]
|
|
10
|
+
|
|
11
|
+
VM_DEFAULTS: Hash[Symbol, String]
|
|
12
|
+
|
|
13
|
+
VM_BOOLEAN_KEYS: Array[Symbol]
|
|
14
|
+
|
|
15
|
+
CT_BOOLEAN_KEYS: Array[Symbol]
|
|
16
|
+
|
|
17
|
+
HOTPLUG_CAPABILITIES: Array[Symbol]
|
|
18
|
+
|
|
19
|
+
AGENT_BOOLEAN_SUBKEYS: Array[Symbol]
|
|
20
|
+
|
|
21
|
+
NET_BOOLEAN_SUBKEYS: Array[Symbol]
|
|
22
|
+
|
|
23
|
+
DISK_BOOLEAN_SUBKEYS: Array[Symbol]
|
|
24
|
+
|
|
25
|
+
VM_COMPLEX_KEYS: Hash[Symbol, Hash[Symbol, Regexp | Symbol]]
|
|
26
|
+
|
|
27
|
+
CT_COMPLEX_KEYS: Hash[Symbol, Hash[Symbol, Regexp | Symbol]]
|
|
28
|
+
|
|
29
|
+
def self.to_yaml: (Hash[Symbol, untyped] flat_config, type: Symbol, ?resource: Hash[Symbol, untyped]) -> String
|
|
30
|
+
|
|
31
|
+
def self.from_yaml: (String yaml_string, type: Symbol) -> Hash[Symbol, untyped]
|
|
32
|
+
|
|
33
|
+
def self.validate: (String yaml_string, type: Symbol) -> Array[String]
|
|
34
|
+
|
|
35
|
+
def self.readonly_violations: (Hash[Symbol, untyped] original_flat, Hash[Symbol, untyped] edited_flat, type: Symbol) -> Array[String]
|
|
36
|
+
|
|
37
|
+
def self.diff: (Hash[Symbol, untyped] original, Hash[Symbol, untyped] edited) -> Hash[Symbol, Hash[Symbol, untyped] | Array[Symbol]]
|
|
38
|
+
|
|
39
|
+
def self.format_diff: (Hash[Symbol, untyped] diff_hash) -> String
|
|
40
|
+
|
|
41
|
+
def self.to_nested: (Hash[Symbol, untyped] flat_config, type: Symbol) -> Hash[Symbol, Hash[Symbol, untyped]]
|
|
42
|
+
|
|
43
|
+
def self.from_nested: (Hash[Symbol, untyped] nested, type: Symbol) -> Hash[Symbol, untyped]
|
|
44
|
+
|
|
45
|
+
def self.complete_from_api: (Hash[Symbol, untyped] manifest_flat, Hash[Symbol, untyped] api_flat, type: Symbol) -> Hash[Symbol, untyped]
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def self.sections_for: (Symbol type) -> Hash[Symbol, untyped]
|
|
50
|
+
|
|
51
|
+
def self.header_comment: (Symbol type, Hash[Symbol, untyped] resource) -> String
|
|
52
|
+
|
|
53
|
+
def self.keys_for_section: (Hash[Symbol, untyped] config, Hash[Symbol, Array[Symbol] | Array[Regexp]] section_def) -> Array[Symbol]
|
|
54
|
+
|
|
55
|
+
def self.key_in_section?: (Symbol key, Hash[Symbol, Array[Symbol] | Array[Regexp]] section_def) -> bool
|
|
56
|
+
|
|
57
|
+
def self.readonly_key?: (Symbol key, Hash[Symbol, Array[Symbol] | Array[Regexp]] section_def) -> bool
|
|
58
|
+
|
|
59
|
+
def self.collect_readonly_keys: (Array[Symbol] keys, Hash[Symbol, untyped] sections) -> Array[Symbol]
|
|
60
|
+
|
|
61
|
+
def self.format_yaml_value: (untyped value) -> String
|
|
62
|
+
|
|
63
|
+
def self.needs_quoting?: (String value) -> bool
|
|
64
|
+
|
|
65
|
+
def self.strip_comments: (String yaml_string) -> String
|
|
66
|
+
|
|
67
|
+
def self.wrapper_section?: (Hash[Symbol, untyped] section_def) -> bool
|
|
68
|
+
|
|
69
|
+
def self.inject_defaults: (Hash[Symbol, untyped] flat_config, Symbol type) -> Hash[Symbol, untyped]
|
|
70
|
+
|
|
71
|
+
def self.to_boolean: (untyped value) -> (bool | untyped)
|
|
72
|
+
|
|
73
|
+
def self.from_boolean: (untyped value) -> (Integer | untyped)
|
|
74
|
+
|
|
75
|
+
def self.boolean_keys_for: (Symbol type) -> Array[Symbol]
|
|
76
|
+
|
|
77
|
+
def self.render_leaf_section: (Array[String] lines, Symbol section_name, Hash[Symbol, Array[Symbol] | Array[Regexp]] section_def, Hash[Symbol, untyped] flat_config) -> void
|
|
78
|
+
|
|
79
|
+
def self.render_wrapper_section: (Array[String] lines, Symbol wrapper_name, Hash[Symbol, untyped] wrapper_def, Hash[Symbol, untyped] flat_config) -> void
|
|
80
|
+
|
|
81
|
+
def self.validate_wrapper_section: (Array[String] errors, String wrapper_name, Hash[Symbol, untyped] wrapper_def, Hash[String, untyped] wrapper_values) -> void
|
|
82
|
+
|
|
83
|
+
def self.each_leaf_section: (Hash[Symbol, untyped] sections) -> Array[Hash[Symbol, Array[Symbol] | Array[Regexp]]]
|
|
84
|
+
|
|
85
|
+
def self.flatten_sections: (Hash[String, untyped] parsed) -> Hash[Symbol, untyped]
|
|
86
|
+
|
|
87
|
+
def self.complex_keys_for: (Symbol type) -> Hash[Symbol, Hash[Symbol, Regexp | Symbol]]
|
|
88
|
+
|
|
89
|
+
def self.find_complex_key: (Symbol key, Symbol type) -> Hash[Symbol, Regexp | Symbol]?
|
|
90
|
+
|
|
91
|
+
def self.build_nested_section: (Hash[Symbol, untyped] flat_config, Hash[Symbol, Array[Symbol] | Array[Regexp]] section_def, Symbol type) -> Hash[Symbol, untyped]
|
|
92
|
+
|
|
93
|
+
def self.flatten_nested_section: (Hash[Symbol, untyped] section_hash, Symbol type, Hash[Symbol, untyped] result) -> void
|
|
94
|
+
|
|
95
|
+
def self.parse_vm_net_value: (String string) -> Hash[Symbol, untyped]
|
|
96
|
+
|
|
97
|
+
def self.serialize_vm_net_value: (Hash[Symbol, untyped] hash) -> String
|
|
98
|
+
|
|
99
|
+
def self.normalize_cloudinit_volume: (untyped parsed) -> untyped
|
|
100
|
+
|
|
101
|
+
def self.parse_disk_value: (String string) -> Hash[Symbol, untyped]
|
|
102
|
+
|
|
103
|
+
def self.serialize_disk_value: (Hash[Symbol, untyped] hash) -> String
|
|
104
|
+
|
|
105
|
+
def self.parse_kv_value: (String string, ?default_key: Symbol?) -> Hash[Symbol, String?]
|
|
106
|
+
|
|
107
|
+
def self.serialize_kv_value: (Hash[Symbol, String] hash) -> String
|
|
108
|
+
|
|
109
|
+
def self.parse_agent_value: (String string) -> Hash[Symbol, untyped]
|
|
110
|
+
|
|
111
|
+
def self.serialize_agent_value: (Hash[Symbol, untyped] hash) -> String
|
|
112
|
+
|
|
113
|
+
def self.parse_boot_value: (String string) -> Hash[Symbol, String | Array[String]]
|
|
114
|
+
|
|
115
|
+
def self.serialize_boot_value: (Hash[Symbol, String | Array[String]] hash) -> String
|
|
116
|
+
|
|
117
|
+
def self.parse_hotplug_value: (String string) -> Hash[Symbol, bool]
|
|
118
|
+
|
|
119
|
+
def self.serialize_hotplug_value: (Hash[Symbol, bool] hash) -> String
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
class Connection
|
|
3
|
+
class RetryHandler
|
|
4
|
+
RETRYABLE_EXCEPTIONS: Array[singleton(StandardError)]
|
|
5
|
+
|
|
6
|
+
READ_METHODS: Array[Symbol]
|
|
7
|
+
|
|
8
|
+
attr_reader max_retries: Integer
|
|
9
|
+
|
|
10
|
+
attr_reader base_delay: Numeric
|
|
11
|
+
|
|
12
|
+
attr_reader max_delay: Numeric
|
|
13
|
+
|
|
14
|
+
attr_reader retry_writes: bool
|
|
15
|
+
|
|
16
|
+
attr_reader logger: untyped
|
|
17
|
+
|
|
18
|
+
def initialize: (max_retries: Integer, base_delay: Numeric, max_delay: Numeric, ?retry_writes: bool, ?logger: untyped) -> void
|
|
19
|
+
|
|
20
|
+
def with_retry: [T] (?method: Symbol) { () -> T } -> T
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def should_retry?: (Symbol method, Integer attempts) -> bool
|
|
25
|
+
|
|
26
|
+
def calculate_delay: (Integer attempt) -> Numeric
|
|
27
|
+
|
|
28
|
+
def log_retry: (Integer attempt, Numeric delay, Exception error) -> void
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
class Connection
|
|
3
|
+
attr_reader config: untyped
|
|
4
|
+
|
|
5
|
+
attr_reader retry_handler: untyped
|
|
6
|
+
|
|
7
|
+
def initialize: (untyped config, ?logger: untyped?) -> void
|
|
8
|
+
|
|
9
|
+
def client: () -> untyped
|
|
10
|
+
|
|
11
|
+
def verify!: () -> void
|
|
12
|
+
|
|
13
|
+
def version: () -> Hash[String, untyped]
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
@config: untyped
|
|
18
|
+
|
|
19
|
+
@client: untyped?
|
|
20
|
+
|
|
21
|
+
@logger: untyped?
|
|
22
|
+
|
|
23
|
+
@retry_handler: untyped
|
|
24
|
+
|
|
25
|
+
def with_timeout: [T] () { () -> T } -> T
|
|
26
|
+
|
|
27
|
+
def create_client: () -> untyped
|
|
28
|
+
|
|
29
|
+
def extract_host: () -> String
|
|
30
|
+
|
|
31
|
+
def build_client_options: () -> Hash[Symbol, untyped]
|
|
32
|
+
|
|
33
|
+
def parse_username: (String full_username) -> [String, String]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Console
|
|
3
|
+
class TerminalSession
|
|
4
|
+
CTRL_CLOSE_BRACKET: String
|
|
5
|
+
|
|
6
|
+
PING_INTERVAL: Integer
|
|
7
|
+
|
|
8
|
+
READ_CHUNK_SIZE: Integer
|
|
9
|
+
|
|
10
|
+
def initialize: (url: String, cookie: String, user: String, ticket: String, verify_ssl: bool) -> void
|
|
11
|
+
|
|
12
|
+
def run: () -> void
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def encode_input: (String data) -> String
|
|
17
|
+
|
|
18
|
+
def encode_resize: (Integer cols, Integer rows) -> String
|
|
19
|
+
|
|
20
|
+
def encode_ping: () -> String
|
|
21
|
+
|
|
22
|
+
def disconnect_key?: (String byte) -> bool
|
|
23
|
+
|
|
24
|
+
def handshake_message: () -> String
|
|
25
|
+
|
|
26
|
+
def open_socket: (URI::Generic uri) -> (TCPSocket | OpenSSL::SSL::SSLSocket)
|
|
27
|
+
|
|
28
|
+
def wrap_ssl: (TCPSocket tcp, String hostname) -> OpenSSL::SSL::SSLSocket
|
|
29
|
+
|
|
30
|
+
def create_driver: (URI::Generic uri, TCPSocket | OpenSSL::SSL::SSLSocket socket) -> untyped
|
|
31
|
+
|
|
32
|
+
def build_referer: (URI::Generic uri) -> String
|
|
33
|
+
|
|
34
|
+
def read_from_socket: (TCPSocket | OpenSSL::SSL::SSLSocket socket, timeout: Numeric) -> String?
|
|
35
|
+
|
|
36
|
+
def perform_websocket_handshake: (untyped driver, TCPSocket | OpenSSL::SSL::SSLSocket socket) -> void
|
|
37
|
+
|
|
38
|
+
def run_io_loop: (untyped driver, TCPSocket | OpenSSL::SSL::SSLSocket socket) -> void
|
|
39
|
+
|
|
40
|
+
def handle_stdin: (untyped driver) -> void
|
|
41
|
+
|
|
42
|
+
def handle_socket: (untyped driver, TCPSocket | OpenSSL::SSL::SSLSocket socket) -> void
|
|
43
|
+
|
|
44
|
+
def enable_raw_terminal: () -> void
|
|
45
|
+
|
|
46
|
+
def restore_terminal: () -> void
|
|
47
|
+
|
|
48
|
+
def send_initial_resize: (untyped driver) -> void
|
|
49
|
+
|
|
50
|
+
def trap_resize: (untyped driver) -> void
|
|
51
|
+
|
|
52
|
+
def detect_terminal_size: () -> [Integer, Integer]
|
|
53
|
+
|
|
54
|
+
class SocketAdapter
|
|
55
|
+
attr_reader url: String
|
|
56
|
+
|
|
57
|
+
def initialize: (String url, TCPSocket | OpenSSL::SSL::SSLSocket socket) -> void
|
|
58
|
+
|
|
59
|
+
def write: (String data) -> Integer
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
class EditorSession
|
|
3
|
+
ERROR_SEPARATOR: String
|
|
4
|
+
|
|
5
|
+
def initialize: (?editor: _Callable?, ?validator: _Callable?) -> void
|
|
6
|
+
|
|
7
|
+
def edit: (String original_content) -> String?
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
@editor: _Callable
|
|
12
|
+
|
|
13
|
+
@validator: _Callable?
|
|
14
|
+
|
|
15
|
+
interface _Callable
|
|
16
|
+
def call: (untyped) -> untyped
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def edit_loop: (String path, String original_content) -> String?
|
|
20
|
+
|
|
21
|
+
def cancelled?: (String content, String original_content) -> bool
|
|
22
|
+
|
|
23
|
+
def inject_errors: (String path, String content, Array[String] errors) -> void
|
|
24
|
+
|
|
25
|
+
def strip_error_block: (String content) -> String
|
|
26
|
+
|
|
27
|
+
def build_error_block: (Array[String] errors) -> String
|
|
28
|
+
|
|
29
|
+
def system_editor: (String path) -> void
|
|
30
|
+
|
|
31
|
+
def default_editor: () -> String?
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module ExitCodes
|
|
3
|
+
SUCCESS: Integer
|
|
4
|
+
|
|
5
|
+
GENERAL_ERROR: Integer
|
|
6
|
+
|
|
7
|
+
USAGE_ERROR: Integer
|
|
8
|
+
|
|
9
|
+
CONFIG_ERROR: Integer
|
|
10
|
+
|
|
11
|
+
CONNECTION_ERROR: Integer
|
|
12
|
+
|
|
13
|
+
NOT_FOUND: Integer
|
|
14
|
+
|
|
15
|
+
PERMISSION_DENIED: Integer
|
|
16
|
+
|
|
17
|
+
INTERRUPTED: Integer
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Formatters
|
|
3
|
+
class Base
|
|
4
|
+
def format: (untyped data, untyped presenter, ?color_enabled: bool, **untyped context) -> String
|
|
5
|
+
|
|
6
|
+
public
|
|
7
|
+
|
|
8
|
+
def collection?: (untyped data) -> bool
|
|
9
|
+
|
|
10
|
+
def normalize_nil: (untyped value, ?String nil_placeholder) -> untyped
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Formatters
|
|
3
|
+
module ColorSupport
|
|
4
|
+
STATUS_COLORS: Hash[String, Symbol]
|
|
5
|
+
|
|
6
|
+
def self.enabled?: (?explicit_flag: bool?) -> bool
|
|
7
|
+
|
|
8
|
+
def self.pastel: (?explicit_flag: bool?) -> untyped
|
|
9
|
+
|
|
10
|
+
def self.colorize_status: (String? status, untyped pastel_instance) -> String
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Formatters
|
|
3
|
+
module OutputHelper
|
|
4
|
+
def self.print: (data: untyped, presenter: untyped, ?format: String, ?color_flag: bool?, ?describe: bool, **untyped context) -> void
|
|
5
|
+
|
|
6
|
+
def self.render: (data: untyped, presenter: untyped, ?format: String, ?color_flag: bool?, ?describe: bool, **untyped context) -> String
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Formatters
|
|
3
|
+
class Registry
|
|
4
|
+
FORMATS: Hash[String, singleton(Base)]
|
|
5
|
+
|
|
6
|
+
def self.for: (String | Symbol format_name) -> Base
|
|
7
|
+
|
|
8
|
+
def self.available_formats: () -> Array[String]
|
|
9
|
+
|
|
10
|
+
def self.supported?: (String | Symbol format_name) -> bool
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Formatters
|
|
3
|
+
class Table < Base
|
|
4
|
+
def format: (untyped data, untyped presenter, ?color_enabled: bool, ?describe: bool, **untyped context) -> String
|
|
5
|
+
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
def format_table: (untyped data, untyped presenter, untyped pastel, **untyped context) -> String
|
|
9
|
+
|
|
10
|
+
def format_describe: (untyped model, untyped presenter, untyped pastel) -> String
|
|
11
|
+
|
|
12
|
+
def colorize_row: (Array[untyped] row, Array[String] headers, untyped pastel) -> Array[untyped]
|
|
13
|
+
|
|
14
|
+
def format_describe_hash: (Hash[untyped, untyped]? hash, untyped pastel, ?indent: Integer) -> String
|
|
15
|
+
|
|
16
|
+
def format_describe_table: (Array[Hash[untyped, untyped]] array, ?indent: Integer) -> String
|
|
17
|
+
|
|
18
|
+
def format_describe_value: (untyped value, String key, untyped pastel) -> String
|
|
19
|
+
|
|
20
|
+
def humanize_key: (String | Symbol key) -> String
|
|
21
|
+
|
|
22
|
+
def render_table: (Array[String] headers, Array[Array[untyped]] rows) -> String
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Formatters
|
|
3
|
+
class Wide < Base
|
|
4
|
+
def format: (untyped data, untyped presenter, ?color_enabled: bool, ?describe: bool, **untyped context) -> String
|
|
5
|
+
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
def format_wide_table: (untyped data, untyped presenter, bool color_enabled, **untyped context) -> String
|
|
9
|
+
|
|
10
|
+
def colorize_row: (Array[untyped] row, Array[String] headers, untyped pastel) -> Array[untyped]
|
|
11
|
+
|
|
12
|
+
def render_table: (Array[String] headers, Array[Array[untyped]] rows) -> String
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module ManifestSerializer
|
|
3
|
+
API_VERSION: String
|
|
4
|
+
KINDS: Hash[Symbol, String]
|
|
5
|
+
KINDS_REVERSE: Hash[String, Symbol]
|
|
6
|
+
|
|
7
|
+
def self.to_yaml: (Hash[Symbol, untyped] nested_config, type: Symbol, metadata: Hash[Symbol, untyped]) -> String
|
|
8
|
+
def self.from_yaml: (String yaml_string) -> Hash[Symbol, untyped]
|
|
9
|
+
def self.validate: (String yaml_string) -> Array[String]
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def self.build_metadata: (Hash[Symbol, untyped] metadata) -> Hash[String, untyped]
|
|
14
|
+
def self.stringify_keys_deep: (Hash[Symbol, untyped] hash) -> Hash[String, untyped]
|
|
15
|
+
def self.symbolize_metadata: (Hash[String, untyped] hash) -> Hash[Symbol, untyped]
|
|
16
|
+
def self.symbolize_keys_deep: (Hash[String, untyped] hash) -> Hash[Symbol, untyped]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Pvectl
|
|
2
|
+
module Models
|
|
3
|
+
class AptPackage < Base
|
|
4
|
+
attr_reader package: String?
|
|
5
|
+
attr_reader title: String?
|
|
6
|
+
attr_reader version: String?
|
|
7
|
+
attr_reader old_version: String?
|
|
8
|
+
attr_reader origin: String?
|
|
9
|
+
attr_reader section: String?
|
|
10
|
+
attr_reader priority: String?
|
|
11
|
+
attr_reader arch: String?
|
|
12
|
+
attr_reader description: String?
|
|
13
|
+
attr_reader notify_status: String?
|
|
14
|
+
attr_reader current_state: String?
|
|
15
|
+
attr_reader manager_version: String?
|
|
16
|
+
attr_reader running_kernel: String?
|
|
17
|
+
attr_reader node: String?
|
|
18
|
+
|
|
19
|
+
def initialize: (?Hash[Symbol, untyped] attrs) -> void
|
|
20
|
+
|
|
21
|
+
def upgrade?: () -> bool
|
|
22
|
+
|
|
23
|
+
def installed_state: () -> String
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|