mtncloud-cli 1.0.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/.dockerignore +20 -0
- data/.github/pull_request_template.md +14 -0
- data/.github/workflows/ci.yml +56 -0
- data/.github/workflows/release.yml +46 -0
- data/.gitignore +25 -0
- data/CLAUDE.md +24 -0
- data/CONTRIBUTING.md +91 -0
- data/Dockerfile +19 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +23 -0
- data/README.md +187 -0
- data/Rakefile +26 -0
- data/bin/mcs +3 -0
- data/bin/mtncloud +27 -0
- data/lib/mtncloud/api/account_groups_interface.rb +48 -0
- data/lib/mtncloud/api/account_users_interface.rb +68 -0
- data/lib/mtncloud/api/accounts_interface.rb +9 -0
- data/lib/mtncloud/api/activity_interface.rb +9 -0
- data/lib/mtncloud/api/affinity_groups_interface.rb +46 -0
- data/lib/mtncloud/api/api_client.rb +1091 -0
- data/lib/mtncloud/api/appliance_settings_interface.rb +49 -0
- data/lib/mtncloud/api/approvals_interface.rb +32 -0
- data/lib/mtncloud/api/apps_interface.rb +180 -0
- data/lib/mtncloud/api/archive_buckets_interface.rb +116 -0
- data/lib/mtncloud/api/archive_files_interface.rb +173 -0
- data/lib/mtncloud/api/audit_interface.rb +9 -0
- data/lib/mtncloud/api/auth_interface.rb +58 -0
- data/lib/mtncloud/api/backup_jobs_interface.rb +13 -0
- data/lib/mtncloud/api/backup_restores_interface.rb +27 -0
- data/lib/mtncloud/api/backup_results_interface.rb +32 -0
- data/lib/mtncloud/api/backup_service_types_interface.rb +9 -0
- data/lib/mtncloud/api/backup_services_interface.rb +9 -0
- data/lib/mtncloud/api/backup_settings_interface.rb +20 -0
- data/lib/mtncloud/api/backup_types_interface.rb +9 -0
- data/lib/mtncloud/api/backups_interface.rb +21 -0
- data/lib/mtncloud/api/billing_interface.rb +34 -0
- data/lib/mtncloud/api/blueprints_interface.rb +70 -0
- data/lib/mtncloud/api/body_io.rb +22 -0
- data/lib/mtncloud/api/budgets_interface.rb +48 -0
- data/lib/mtncloud/api/catalog_item_types_interface.rb +29 -0
- data/lib/mtncloud/api/certificate_types_interface.rb +14 -0
- data/lib/mtncloud/api/certificates_interface.rb +9 -0
- data/lib/mtncloud/api/clients_interface.rb +41 -0
- data/lib/mtncloud/api/cloud_datastores_interface.rb +48 -0
- data/lib/mtncloud/api/cloud_folders_interface.rb +41 -0
- data/lib/mtncloud/api/cloud_policies_interface.rb +41 -0
- data/lib/mtncloud/api/cloud_resource_pools_interface.rb +66 -0
- data/lib/mtncloud/api/clouds_interface.rb +217 -0
- data/lib/mtncloud/api/clusters_interface.rb +471 -0
- data/lib/mtncloud/api/containers_interface.rb +145 -0
- data/lib/mtncloud/api/credential_types_interface.rb +9 -0
- data/lib/mtncloud/api/credentials_interface.rb +9 -0
- data/lib/mtncloud/api/custom_instance_types_interface.rb +99 -0
- data/lib/mtncloud/api/cypher_interface.rb +51 -0
- data/lib/mtncloud/api/dashboard_interface.rb +14 -0
- data/lib/mtncloud/api/datastores_interface.rb +21 -0
- data/lib/mtncloud/api/deploy_interface.rb +44 -0
- data/lib/mtncloud/api/deployments_interface.rb +79 -0
- data/lib/mtncloud/api/distributed_workers_interface.rb +41 -0
- data/lib/mtncloud/api/email_templates_interface.rb +53 -0
- data/lib/mtncloud/api/environments_interface.rb +48 -0
- data/lib/mtncloud/api/execute_schedules_interface.rb +71 -0
- data/lib/mtncloud/api/execution_request_interface.rb +27 -0
- data/lib/mtncloud/api/file_copy_request_interface.rb +68 -0
- data/lib/mtncloud/api/forgot_password_interface.rb +17 -0
- data/lib/mtncloud/api/group_policies_interface.rb +41 -0
- data/lib/mtncloud/api/groups_interface.rb +73 -0
- data/lib/mtncloud/api/guidance_interface.rb +44 -0
- data/lib/mtncloud/api/guidance_settings_interface.rb +17 -0
- data/lib/mtncloud/api/health_interface.rb +100 -0
- data/lib/mtncloud/api/host_vm_groups_interface.rb +37 -0
- data/lib/mtncloud/api/hub_interface.rb +25 -0
- data/lib/mtncloud/api/image_builder_boot_scripts_interface.rb +41 -0
- data/lib/mtncloud/api/image_builder_image_builds_interface.rb +73 -0
- data/lib/mtncloud/api/image_builder_interface.rb +20 -0
- data/lib/mtncloud/api/image_builder_preseed_scripts_interface.rb +41 -0
- data/lib/mtncloud/api/instance_types_interface.rb +20 -0
- data/lib/mtncloud/api/instances_interface.rb +453 -0
- data/lib/mtncloud/api/integration_types_interface.rb +14 -0
- data/lib/mtncloud/api/integrations_interface.rb +74 -0
- data/lib/mtncloud/api/invoice_line_items_interface.rb +9 -0
- data/lib/mtncloud/api/invoices_interface.rb +28 -0
- data/lib/mtncloud/api/jobs_interface.rb +83 -0
- data/lib/mtncloud/api/key_pairs_interface.rb +57 -0
- data/lib/mtncloud/api/library_cluster_layouts_interface.rb +47 -0
- data/lib/mtncloud/api/library_cluster_packages_interface.rb +60 -0
- data/lib/mtncloud/api/library_container_scripts_interface.rb +43 -0
- data/lib/mtncloud/api/library_container_templates_interface.rb +43 -0
- data/lib/mtncloud/api/library_container_types_interface.rb +59 -0
- data/lib/mtncloud/api/library_container_upgrades_interface.rb +60 -0
- data/lib/mtncloud/api/library_instance_types_interface.rb +74 -0
- data/lib/mtncloud/api/library_layouts_interface.rb +69 -0
- data/lib/mtncloud/api/library_operating_systems_interface.rb +63 -0
- data/lib/mtncloud/api/library_spec_template_types_interface.rb +43 -0
- data/lib/mtncloud/api/library_spec_templates_interface.rb +43 -0
- data/lib/mtncloud/api/license_interface.rb +30 -0
- data/lib/mtncloud/api/load_balancer_monitors_interface.rb +9 -0
- data/lib/mtncloud/api/load_balancer_pool_nodes_interface.rb +8 -0
- data/lib/mtncloud/api/load_balancer_pools_interface.rb +9 -0
- data/lib/mtncloud/api/load_balancer_pools_secondary_interface.rb +9 -0
- data/lib/mtncloud/api/load_balancer_profiles_interface.rb +9 -0
- data/lib/mtncloud/api/load_balancer_types_interface.rb +9 -0
- data/lib/mtncloud/api/load_balancer_virtual_servers_interface.rb +18 -0
- data/lib/mtncloud/api/load_balancers_interface.rb +14 -0
- data/lib/mtncloud/api/log_settings_interface.rb +44 -0
- data/lib/mtncloud/api/logs_interface.rb +37 -0
- data/lib/mtncloud/api/migrations_interface.rb +49 -0
- data/lib/mtncloud/api/monitoring_alerts_interface.rb +39 -0
- data/lib/mtncloud/api/monitoring_apps_interface.rb +69 -0
- data/lib/mtncloud/api/monitoring_checks_interface.rb +103 -0
- data/lib/mtncloud/api/monitoring_contacts_interface.rb +41 -0
- data/lib/mtncloud/api/monitoring_groups_interface.rb +77 -0
- data/lib/mtncloud/api/monitoring_incidents_interface.rb +107 -0
- data/lib/mtncloud/api/monitoring_interface.rb +35 -0
- data/lib/mtncloud/api/monitoring_settings_interface.rb +21 -0
- data/lib/mtncloud/api/network_dhcp_relays_interface.rb +36 -0
- data/lib/mtncloud/api/network_dhcp_servers_interface.rb +36 -0
- data/lib/mtncloud/api/network_domain_records_interface.rb +41 -0
- data/lib/mtncloud/api/network_domains_interface.rb +41 -0
- data/lib/mtncloud/api/network_edge_clusters_interface.rb +26 -0
- data/lib/mtncloud/api/network_floating_ips_interface.rb +40 -0
- data/lib/mtncloud/api/network_groups_interface.rb +41 -0
- data/lib/mtncloud/api/network_pool_ips_interface.rb +41 -0
- data/lib/mtncloud/api/network_pool_server_types_interface.rb +9 -0
- data/lib/mtncloud/api/network_pool_servers_interface.rb +48 -0
- data/lib/mtncloud/api/network_pools_interface.rb +41 -0
- data/lib/mtncloud/api/network_proxies_interface.rb +41 -0
- data/lib/mtncloud/api/network_routers_interface.rb +181 -0
- data/lib/mtncloud/api/network_security_server_types_interface.rb +9 -0
- data/lib/mtncloud/api/network_security_servers_interface.rb +27 -0
- data/lib/mtncloud/api/network_server_groups_interface.rb +7 -0
- data/lib/mtncloud/api/network_server_types_interface.rb +9 -0
- data/lib/mtncloud/api/network_servers_interface.rb +102 -0
- data/lib/mtncloud/api/network_services_interface.rb +63 -0
- data/lib/mtncloud/api/network_static_routes_interface.rb +36 -0
- data/lib/mtncloud/api/network_subnets_interface.rb +42 -0
- data/lib/mtncloud/api/network_types_interface.rb +20 -0
- data/lib/mtncloud/api/networks_interface.rb +48 -0
- data/lib/mtncloud/api/option_type_forms_interface.rb +9 -0
- data/lib/mtncloud/api/option_type_lists_interface.rb +53 -0
- data/lib/mtncloud/api/option_types_interface.rb +41 -0
- data/lib/mtncloud/api/options_interface.rb +17 -0
- data/lib/mtncloud/api/packages_interface.rb +112 -0
- data/lib/mtncloud/api/ping_interface.rb +22 -0
- data/lib/mtncloud/api/plugins_interface.rb +22 -0
- data/lib/mtncloud/api/policies_interface.rb +56 -0
- data/lib/mtncloud/api/power_schedules_interface.rb +71 -0
- data/lib/mtncloud/api/price_sets_interface.rb +39 -0
- data/lib/mtncloud/api/prices_interface.rb +71 -0
- data/lib/mtncloud/api/processes_interface.rb +40 -0
- data/lib/mtncloud/api/projects_interface.rb +33 -0
- data/lib/mtncloud/api/provision_types_interface.rb +24 -0
- data/lib/mtncloud/api/provisioning_license_types_interface.rb +31 -0
- data/lib/mtncloud/api/provisioning_licenses_interface.rb +60 -0
- data/lib/mtncloud/api/provisioning_settings_interface.rb +26 -0
- data/lib/mtncloud/api/read_interface.rb +24 -0
- data/lib/mtncloud/api/reports_interface.rb +70 -0
- data/lib/mtncloud/api/resource_pool_groups_interface.rb +51 -0
- data/lib/mtncloud/api/rest_interface.rb +37 -0
- data/lib/mtncloud/api/roles_interface.rb +151 -0
- data/lib/mtncloud/api/scale_thresholds_interface.rb +9 -0
- data/lib/mtncloud/api/search_interface.rb +13 -0
- data/lib/mtncloud/api/secondary_read_interface.rb +25 -0
- data/lib/mtncloud/api/secondary_rest_interface.rb +42 -0
- data/lib/mtncloud/api/security_group_rules_interface.rb +35 -0
- data/lib/mtncloud/api/security_groups_interface.rb +56 -0
- data/lib/mtncloud/api/security_package_types_interface.rb +9 -0
- data/lib/mtncloud/api/security_packages_interface.rb +9 -0
- data/lib/mtncloud/api/security_scans_interface.rb +9 -0
- data/lib/mtncloud/api/server_devices_interface.rb +30 -0
- data/lib/mtncloud/api/server_types_interface.rb +20 -0
- data/lib/mtncloud/api/servers_interface.rb +230 -0
- data/lib/mtncloud/api/service_catalog_interface.rb +89 -0
- data/lib/mtncloud/api/service_plans_interface.rb +62 -0
- data/lib/mtncloud/api/setup_interface.rb +46 -0
- data/lib/mtncloud/api/snapshots_interface.rb +19 -0
- data/lib/mtncloud/api/storage_datastores_interface.rb +44 -0
- data/lib/mtncloud/api/storage_providers_interface.rb +151 -0
- data/lib/mtncloud/api/storage_server_types_interface.rb +14 -0
- data/lib/mtncloud/api/storage_servers_interface.rb +9 -0
- data/lib/mtncloud/api/storage_volume_types_interface.rb +9 -0
- data/lib/mtncloud/api/storage_volumes_interface.rb +24 -0
- data/lib/mtncloud/api/subnet_types_interface.rb +20 -0
- data/lib/mtncloud/api/subnets_interface.rb +41 -0
- data/lib/mtncloud/api/support_bundles_interface.rb +46 -0
- data/lib/mtncloud/api/system_types_interface.rb +13 -0
- data/lib/mtncloud/api/systems_interface.rb +55 -0
- data/lib/mtncloud/api/task_sets_interface.rb +52 -0
- data/lib/mtncloud/api/tasks_interface.rb +66 -0
- data/lib/mtncloud/api/tokens_interface.rb +39 -0
- data/lib/mtncloud/api/usage_interface.rb +18 -0
- data/lib/mtncloud/api/user_groups_interface.rb +59 -0
- data/lib/mtncloud/api/user_settings_interface.rb +90 -0
- data/lib/mtncloud/api/user_sources_interface.rb +99 -0
- data/lib/mtncloud/api/users_interface.rb +33 -0
- data/lib/mtncloud/api/vdi_allocations_interface.rb +9 -0
- data/lib/mtncloud/api/vdi_apps_interface.rb +9 -0
- data/lib/mtncloud/api/vdi_gateways_interface.rb +9 -0
- data/lib/mtncloud/api/vdi_interface.rb +28 -0
- data/lib/mtncloud/api/vdi_pools_interface.rb +19 -0
- data/lib/mtncloud/api/virtual_images_interface.rb +210 -0
- data/lib/mtncloud/api/virtual_servers_interface.rb +9 -0
- data/lib/mtncloud/api/virtual_switches_interface.rb +9 -0
- data/lib/mtncloud/api/whitelabel_settings_interface.rb +57 -0
- data/lib/mtncloud/api/whoami_interface.rb +13 -0
- data/lib/mtncloud/api/wiki_interface.rb +48 -0
- data/lib/mtncloud/api.rb +12 -0
- data/lib/mtncloud/benchmarking.rb +259 -0
- data/lib/mtncloud/cli/cli_command.rb +2281 -0
- data/lib/mtncloud/cli/cli_registry.rb +337 -0
- data/lib/mtncloud/cli/commands/access_token_command.rb +201 -0
- data/lib/mtncloud/cli/commands/account_groups_command.rb +530 -0
- data/lib/mtncloud/cli/commands/activity_command.rb +149 -0
- data/lib/mtncloud/cli/commands/affinity_groups_command.rb +554 -0
- data/lib/mtncloud/cli/commands/alias_command.rb +278 -0
- data/lib/mtncloud/cli/commands/appliance_settings_command.rb +382 -0
- data/lib/mtncloud/cli/commands/approvals_command.rb +236 -0
- data/lib/mtncloud/cli/commands/apps.rb +2549 -0
- data/lib/mtncloud/cli/commands/archives_command.rb +2161 -0
- data/lib/mtncloud/cli/commands/audit.rb +188 -0
- data/lib/mtncloud/cli/commands/backup_jobs_command.rb +366 -0
- data/lib/mtncloud/cli/commands/backup_restores_command.rb +144 -0
- data/lib/mtncloud/cli/commands/backup_results_command.rb +149 -0
- data/lib/mtncloud/cli/commands/backup_services_command.rb +44 -0
- data/lib/mtncloud/cli/commands/backup_settings_command.rb +184 -0
- data/lib/mtncloud/cli/commands/backup_types_command.rb +53 -0
- data/lib/mtncloud/cli/commands/backups_command.rb +674 -0
- data/lib/mtncloud/cli/commands/benchmark_command.rb +458 -0
- data/lib/mtncloud/cli/commands/blueprints_command.rb +2297 -0
- data/lib/mtncloud/cli/commands/boot_scripts_command.rb +379 -0
- data/lib/mtncloud/cli/commands/budgets_command.rb +754 -0
- data/lib/mtncloud/cli/commands/cat_command.rb +45 -0
- data/lib/mtncloud/cli/commands/catalog_item_types_command.rb +858 -0
- data/lib/mtncloud/cli/commands/certificates_command.rb +575 -0
- data/lib/mtncloud/cli/commands/change_password_command.rb +132 -0
- data/lib/mtncloud/cli/commands/clients_command.rb +331 -0
- data/lib/mtncloud/cli/commands/cloud_datastores_command.rb +543 -0
- data/lib/mtncloud/cli/commands/cloud_folders_command.rb +512 -0
- data/lib/mtncloud/cli/commands/cloud_resource_pools_command.rb +870 -0
- data/lib/mtncloud/cli/commands/clouds.rb +2037 -0
- data/lib/mtncloud/cli/commands/clouds_types.rb +140 -0
- data/lib/mtncloud/cli/commands/cluster_types.rb +179 -0
- data/lib/mtncloud/cli/commands/clusters.rb +5855 -0
- data/lib/mtncloud/cli/commands/coloring_command.rb +82 -0
- data/lib/mtncloud/cli/commands/containers_command.rb +967 -0
- data/lib/mtncloud/cli/commands/credential_types_command.rb +36 -0
- data/lib/mtncloud/cli/commands/credentials_command.rb +124 -0
- data/lib/mtncloud/cli/commands/curl_command.rb +168 -0
- data/lib/mtncloud/cli/commands/cypher_command.rb +587 -0
- data/lib/mtncloud/cli/commands/dashboard_command.rb +300 -0
- data/lib/mtncloud/cli/commands/debug_command.rb +75 -0
- data/lib/mtncloud/cli/commands/deploy.rb +485 -0
- data/lib/mtncloud/cli/commands/deployments.rb +923 -0
- data/lib/mtncloud/cli/commands/deploys.rb +485 -0
- data/lib/mtncloud/cli/commands/distributed_workers_command.rb +282 -0
- data/lib/mtncloud/cli/commands/echo_command.rb +61 -0
- data/lib/mtncloud/cli/commands/edit_profile_command.rb +57 -0
- data/lib/mtncloud/cli/commands/edit_rc_command.rb +77 -0
- data/lib/mtncloud/cli/commands/email_templates_command.rb +373 -0
- data/lib/mtncloud/cli/commands/environments_command.rb +401 -0
- data/lib/mtncloud/cli/commands/execute_schedules_command.rb +735 -0
- data/lib/mtncloud/cli/commands/execution_request_command.rb +333 -0
- data/lib/mtncloud/cli/commands/exit_command.rb +34 -0
- data/lib/mtncloud/cli/commands/file_copy_request_command.rb +352 -0
- data/lib/mtncloud/cli/commands/forgot_password.rb +133 -0
- data/lib/mtncloud/cli/commands/get_prompt_command.rb +36 -0
- data/lib/mtncloud/cli/commands/groups.rb +818 -0
- data/lib/mtncloud/cli/commands/guidance_command.rb +529 -0
- data/lib/mtncloud/cli/commands/guidance_settings.rb +148 -0
- data/lib/mtncloud/cli/commands/health_command.rb +1046 -0
- data/lib/mtncloud/cli/commands/history_command.rb +60 -0
- data/lib/mtncloud/cli/commands/host_vm_groups_command.rb +423 -0
- data/lib/mtncloud/cli/commands/hosts.rb +2986 -0
- data/lib/mtncloud/cli/commands/hub.rb +215 -0
- data/lib/mtncloud/cli/commands/image_builder_command.rb +1197 -0
- data/lib/mtncloud/cli/commands/instance_types.rb +163 -0
- data/lib/mtncloud/cli/commands/instances.rb +5813 -0
- data/lib/mtncloud/cli/commands/integrations_command.rb +1412 -0
- data/lib/mtncloud/cli/commands/invoices_command.rb +1151 -0
- data/lib/mtncloud/cli/commands/jobs_command.rb +998 -0
- data/lib/mtncloud/cli/commands/key_pairs.rb +470 -0
- data/lib/mtncloud/cli/commands/library_cluster_layouts_command.rb +901 -0
- data/lib/mtncloud/cli/commands/library_cluster_packages_command.rb +552 -0
- data/lib/mtncloud/cli/commands/library_container_scripts_command.rb +446 -0
- data/lib/mtncloud/cli/commands/library_container_templates_command.rb +526 -0
- data/lib/mtncloud/cli/commands/library_container_types_command.rb +698 -0
- data/lib/mtncloud/cli/commands/library_forms_command.rb +625 -0
- data/lib/mtncloud/cli/commands/library_instance_types_command.rb +668 -0
- data/lib/mtncloud/cli/commands/library_layouts_command.rb +849 -0
- data/lib/mtncloud/cli/commands/library_operating_systems_command.rb +671 -0
- data/lib/mtncloud/cli/commands/library_option_lists_command.rb +503 -0
- data/lib/mtncloud/cli/commands/library_option_types_command.rb +329 -0
- data/lib/mtncloud/cli/commands/library_spec_templates_command.rb +547 -0
- data/lib/mtncloud/cli/commands/library_upgrades_command.rb +596 -0
- data/lib/mtncloud/cli/commands/license.rb +475 -0
- data/lib/mtncloud/cli/commands/load_balancer_monitors.rb +70 -0
- data/lib/mtncloud/cli/commands/load_balancer_pool_nodes.rb +87 -0
- data/lib/mtncloud/cli/commands/load_balancer_pools.rb +129 -0
- data/lib/mtncloud/cli/commands/load_balancer_profiles.rb +64 -0
- data/lib/mtncloud/cli/commands/load_balancer_types.rb +38 -0
- data/lib/mtncloud/cli/commands/load_balancer_virtual_servers.rb +147 -0
- data/lib/mtncloud/cli/commands/load_balancers.rb +189 -0
- data/lib/mtncloud/cli/commands/log_level_command.rb +54 -0
- data/lib/mtncloud/cli/commands/log_settings_command.rb +443 -0
- data/lib/mtncloud/cli/commands/login.rb +148 -0
- data/lib/mtncloud/cli/commands/logout.rb +63 -0
- data/lib/mtncloud/cli/commands/logs_command.rb +140 -0
- data/lib/mtncloud/cli/commands/man_command.rb +409 -0
- data/lib/mtncloud/cli/commands/migrations.rb +453 -0
- data/lib/mtncloud/cli/commands/monitoring_alerts_command.rb +791 -0
- data/lib/mtncloud/cli/commands/monitoring_apps_command.rb +716 -0
- data/lib/mtncloud/cli/commands/monitoring_checks_command.rb +766 -0
- data/lib/mtncloud/cli/commands/monitoring_contacts_command.rb +339 -0
- data/lib/mtncloud/cli/commands/monitoring_groups_command.rb +674 -0
- data/lib/mtncloud/cli/commands/monitoring_incidents_command.rb +835 -0
- data/lib/mtncloud/cli/commands/monitoring_settings.rb +212 -0
- data/lib/mtncloud/cli/commands/network_dhcp_relays_command.rb +375 -0
- data/lib/mtncloud/cli/commands/network_dhcp_servers_command.rb +366 -0
- data/lib/mtncloud/cli/commands/network_domains_command.rb +896 -0
- data/lib/mtncloud/cli/commands/network_edge_clusters_command.rb +288 -0
- data/lib/mtncloud/cli/commands/network_firewalls_command.rb +783 -0
- data/lib/mtncloud/cli/commands/network_floating_ips.rb +147 -0
- data/lib/mtncloud/cli/commands/network_groups_command.rb +654 -0
- data/lib/mtncloud/cli/commands/network_pool_server_types.rb +20 -0
- data/lib/mtncloud/cli/commands/network_pool_servers_command.rb +318 -0
- data/lib/mtncloud/cli/commands/network_pools_command.rb +903 -0
- data/lib/mtncloud/cli/commands/network_proxies_command.rb +578 -0
- data/lib/mtncloud/cli/commands/network_routers_command.rb +2628 -0
- data/lib/mtncloud/cli/commands/network_security_server_types.rb +20 -0
- data/lib/mtncloud/cli/commands/network_server_groups_command.rb +222 -0
- data/lib/mtncloud/cli/commands/network_server_types_command.rb +20 -0
- data/lib/mtncloud/cli/commands/network_servers_command.rb +398 -0
- data/lib/mtncloud/cli/commands/network_services_command.rb +198 -0
- data/lib/mtncloud/cli/commands/network_static_routes_command.rb +451 -0
- data/lib/mtncloud/cli/commands/network_transport_zones_command.rb +412 -0
- data/lib/mtncloud/cli/commands/networks_command.rb +1692 -0
- data/lib/mtncloud/cli/commands/open_command.rb +30 -0
- data/lib/mtncloud/cli/commands/options.rb +231 -0
- data/lib/mtncloud/cli/commands/packages_command.rb +822 -0
- data/lib/mtncloud/cli/commands/ping.rb +242 -0
- data/lib/mtncloud/cli/commands/plugins.rb +214 -0
- data/lib/mtncloud/cli/commands/policies_command.rb +990 -0
- data/lib/mtncloud/cli/commands/power_schedules_command.rb +731 -0
- data/lib/mtncloud/cli/commands/preseed_scripts_command.rb +378 -0
- data/lib/mtncloud/cli/commands/price_sets_command.rb +557 -0
- data/lib/mtncloud/cli/commands/prices_command.rb +692 -0
- data/lib/mtncloud/cli/commands/processes_command.rb +469 -0
- data/lib/mtncloud/cli/commands/projects_command.rb +537 -0
- data/lib/mtncloud/cli/commands/provisioning_licenses_command.rb +509 -0
- data/lib/mtncloud/cli/commands/provisioning_settings_command.rb +238 -0
- data/lib/mtncloud/cli/commands/recent_activity_command.rb +171 -0
- data/lib/mtncloud/cli/commands/remote.rb +1818 -0
- data/lib/mtncloud/cli/commands/reports_command.rb +724 -0
- data/lib/mtncloud/cli/commands/resource_pool_groups_command.rb +586 -0
- data/lib/mtncloud/cli/commands/rm_command.rb +14 -0
- data/lib/mtncloud/cli/commands/roles.rb +3120 -0
- data/lib/mtncloud/cli/commands/scale_thresholds.rb +103 -0
- data/lib/mtncloud/cli/commands/search_command.rb +184 -0
- data/lib/mtncloud/cli/commands/security_group_rules.rb +230 -0
- data/lib/mtncloud/cli/commands/security_groups.rb +1294 -0
- data/lib/mtncloud/cli/commands/security_package_types.rb +32 -0
- data/lib/mtncloud/cli/commands/security_packages.rb +84 -0
- data/lib/mtncloud/cli/commands/security_scans.rb +107 -0
- data/lib/mtncloud/cli/commands/self_service_command.rb +17 -0
- data/lib/mtncloud/cli/commands/server_devices_command.rb +207 -0
- data/lib/mtncloud/cli/commands/service_catalog_command.rb +1528 -0
- data/lib/mtncloud/cli/commands/service_plans_command.rb +895 -0
- data/lib/mtncloud/cli/commands/set_prompt_command.rb +51 -0
- data/lib/mtncloud/cli/commands/setup.rb +423 -0
- data/lib/mtncloud/cli/commands/shell.rb +717 -0
- data/lib/mtncloud/cli/commands/sleep_command.rb +43 -0
- data/lib/mtncloud/cli/commands/snapshots.rb +156 -0
- data/lib/mtncloud/cli/commands/source_command.rb +30 -0
- data/lib/mtncloud/cli/commands/ssl_verification_command.rb +47 -0
- data/lib/mtncloud/cli/commands/storage_datastores.rb +457 -0
- data/lib/mtncloud/cli/commands/storage_providers_command.rb +1401 -0
- data/lib/mtncloud/cli/commands/storage_server_types.rb +45 -0
- data/lib/mtncloud/cli/commands/storage_servers.rb +116 -0
- data/lib/mtncloud/cli/commands/storage_volume_types.rb +45 -0
- data/lib/mtncloud/cli/commands/storage_volumes.rb +236 -0
- data/lib/mtncloud/cli/commands/subnets_command.rb +819 -0
- data/lib/mtncloud/cli/commands/support_bundles_command.rb +606 -0
- data/lib/mtncloud/cli/commands/systems.rb +1203 -0
- data/lib/mtncloud/cli/commands/tasks.rb +1391 -0
- data/lib/mtncloud/cli/commands/tee_command.rb +14 -0
- data/lib/mtncloud/cli/commands/tenants_command.rb +315 -0
- data/lib/mtncloud/cli/commands/tokens_command.rb +391 -0
- data/lib/mtncloud/cli/commands/update_command.rb +46 -0
- data/lib/mtncloud/cli/commands/usage_command.rb +203 -0
- data/lib/mtncloud/cli/commands/user_groups_command.rb +512 -0
- data/lib/mtncloud/cli/commands/user_settings_command.rb +849 -0
- data/lib/mtncloud/cli/commands/user_sources_command.rb +1065 -0
- data/lib/mtncloud/cli/commands/users.rb +897 -0
- data/lib/mtncloud/cli/commands/vdi_allocations_command.rb +159 -0
- data/lib/mtncloud/cli/commands/vdi_apps_command.rb +317 -0
- data/lib/mtncloud/cli/commands/vdi_command.rb +359 -0
- data/lib/mtncloud/cli/commands/vdi_gateways_command.rb +290 -0
- data/lib/mtncloud/cli/commands/vdi_pools_command.rb +574 -0
- data/lib/mtncloud/cli/commands/version_command.rb +38 -0
- data/lib/mtncloud/cli/commands/view.rb +107 -0
- data/lib/mtncloud/cli/commands/virtual_images.rb +1362 -0
- data/lib/mtncloud/cli/commands/virtual_switches_command.rb +336 -0
- data/lib/mtncloud/cli/commands/whitelabel_settings_command.rb +653 -0
- data/lib/mtncloud/cli/commands/whoami.rb +323 -0
- data/lib/mtncloud/cli/commands/wiki_command.rb +448 -0
- data/lib/mtncloud/cli/commands/workflows.rb +1022 -0
- data/lib/mtncloud/cli/credentials.rb +482 -0
- data/lib/mtncloud/cli/dot_file.rb +180 -0
- data/lib/mtncloud/cli/error_handler.rb +307 -0
- data/lib/mtncloud/cli/errors.rb +53 -0
- data/lib/mtncloud/cli/expression_parser.rb +153 -0
- data/lib/mtncloud/cli/mixins/accounts_helper.rb +484 -0
- data/lib/mtncloud/cli/mixins/affinity_helper.rb +118 -0
- data/lib/mtncloud/cli/mixins/backups_helper.rb +200 -0
- data/lib/mtncloud/cli/mixins/deployments_helper.rb +163 -0
- data/lib/mtncloud/cli/mixins/execution_request_helper.rb +50 -0
- data/lib/mtncloud/cli/mixins/infrastructure_helper.rb +966 -0
- data/lib/mtncloud/cli/mixins/jobs_helper.rb +202 -0
- data/lib/mtncloud/cli/mixins/library_helper.rb +539 -0
- data/lib/mtncloud/cli/mixins/load_balancers_helper.rb +176 -0
- data/lib/mtncloud/cli/mixins/logs_helper.rb +131 -0
- data/lib/mtncloud/cli/mixins/monitoring_helper.rb +876 -0
- data/lib/mtncloud/cli/mixins/networks_helper.rb +62 -0
- data/lib/mtncloud/cli/mixins/operations_helper.rb +41 -0
- data/lib/mtncloud/cli/mixins/option_source_helper.rb +254 -0
- data/lib/mtncloud/cli/mixins/print_helper.rb +1631 -0
- data/lib/mtncloud/cli/mixins/processes_helper.rb +286 -0
- data/lib/mtncloud/cli/mixins/prompt_helper.rb +136 -0
- data/lib/mtncloud/cli/mixins/provisioning_helper.rb +2963 -0
- data/lib/mtncloud/cli/mixins/remote_helper.rb +139 -0
- data/lib/mtncloud/cli/mixins/rest_command.rb +994 -0
- data/lib/mtncloud/cli/mixins/secondary_rest_command.rb +700 -0
- data/lib/mtncloud/cli/mixins/storage_servers_helper.rb +93 -0
- data/lib/mtncloud/cli/mixins/storage_volumes_helper.rb +76 -0
- data/lib/mtncloud/cli/mixins/vdi_helper.rb +246 -0
- data/lib/mtncloud/cli/mixins/whoami_helper.rb +73 -0
- data/lib/mtncloud/cli/option_parser.rb +127 -0
- data/lib/mtncloud/cli/option_types.rb +1622 -0
- data/lib/mtncloud/cli/version.rb +6 -0
- data/lib/mtncloud/cli.rb +105 -0
- data/lib/mtncloud/currency.rb +184 -0
- data/lib/mtncloud/ext/hash.rb +109 -0
- data/lib/mtncloud/ext/nil_class.rb +5 -0
- data/lib/mtncloud/ext/rest_client.rb +37 -0
- data/lib/mtncloud/ext/string.rb +66 -0
- data/lib/mtncloud/formatters.rb +511 -0
- data/lib/mtncloud/logging.rb +185 -0
- data/lib/mtncloud/morpkg.rb +119 -0
- data/lib/mtncloud/rest_client.rb +104 -0
- data/lib/mtncloud/routes.rb +304 -0
- data/lib/mtncloud/terminal.rb +528 -0
- data/lib/mtncloud/util.rb +29 -0
- data/lib/mtncloud.rb +5 -0
- data/mtncloud-cli.gemspec +38 -0
- data/test/api/affinity_groups_interface_test.rb +43 -0
- data/test/api/clients_interface_test.rb +23 -0
- data/test/api/clouds_interface_test.rb +67 -0
- data/test/api/containers_interface_test.rb +68 -0
- data/test/api/host_vm_groups_interface_test.rb +35 -0
- data/test/api/instances_interface_test.rb +22 -0
- data/test/api/network_routers_interface_test.rb +22 -0
- data/test/api/systems_interface_test.rb +26 -0
- data/test/api/whoami_interface_test.rb +14 -0
- data/test/branding_test.rb +160 -0
- data/test/cli/access_token_test.rb +36 -0
- data/test/cli/affinity_groups_cloud_cluster_scope_test.rb +270 -0
- data/test/cli/affinity_groups_cluster_scope_test.rb +171 -0
- data/test/cli/affinity_groups_test.rb +57 -0
- data/test/cli/affinity_groups_violations_scope_test.rb +141 -0
- data/test/cli/affinity_helper_test.rb +367 -0
- data/test/cli/auth_test.rb +88 -0
- data/test/cli/backups_test.rb +212 -0
- data/test/cli/cli_test.rb +48 -0
- data/test/cli/clients_test.rb +45 -0
- data/test/cli/clusters_uuid_test.rb +146 -0
- data/test/cli/containers_test.rb +92 -0
- data/test/cli/distributed_workers_test.rb +68 -0
- data/test/cli/help_test.rb +25 -0
- data/test/cli/host_vm_groups_cluster_scope_test.rb +187 -0
- data/test/cli/host_vm_groups_test.rb +63 -0
- data/test/cli/infrastructure_helper_cluster_resolver_test.rb +250 -0
- data/test/cli/instances_test.rb +37 -0
- data/test/cli/man_test.rb +14 -0
- data/test/cli/migrations_test.rb +39 -0
- data/test/cli/network_routers_test.rb +65 -0
- data/test/cli/remote_test.rb +89 -0
- data/test/cli/roles_test.rb +47 -0
- data/test/cli/shell_test.rb +81 -0
- data/test/cli/storage_volumes_test.rb +79 -0
- data/test/cli/systems_test.rb +206 -0
- data/test/cli/version_test.rb +23 -0
- data/test/cli/view_test.rb +55 -0
- data/test/cli/whoami_test.rb +17 -0
- data/test/mtncloud_test.rb +16 -0
- data/test/test_case.rb +342 -0
- data/test/test_config.rb +137 -0
- data/test/test_data_helper.rb +97 -0
- metadata +807 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
require 'mtncloud/cli/mixins/print_helper'
|
|
2
|
+
require 'mtncloud/cli/option_types'
|
|
3
|
+
require 'mtncloud/rest_client'
|
|
4
|
+
# Mixin for MtnCloud::Cli command classes
|
|
5
|
+
# Provides common methods for storage server management
|
|
6
|
+
# including storage servers and storage server types
|
|
7
|
+
module MtnCloud::Cli::StorageServersHelper
|
|
8
|
+
|
|
9
|
+
def self.included(klass)
|
|
10
|
+
klass.send :include, MtnCloud::Cli::PrintHelper
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def storage_servers_interface
|
|
14
|
+
# @api_client.storage_servers
|
|
15
|
+
raise "#{self.class} has not defined @storage_servers_interface" if @storage_servers_interface.nil?
|
|
16
|
+
@storage_servers_interface
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def storage_server_types_interface
|
|
20
|
+
# @api_client.storage_server_types
|
|
21
|
+
raise "#{self.class} has not defined @storage_server_types_interface" if @storage_server_types_interface.nil?
|
|
22
|
+
@storage_server_types_interface
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def storage_server_object_key
|
|
26
|
+
'storageServer'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def storage_server_list_key
|
|
30
|
+
'storageServers'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def storage_server_label
|
|
34
|
+
'Storage Server'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def storage_server_label_plural
|
|
38
|
+
'Storage Server'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def storage_server_type_object_key
|
|
42
|
+
'storageServerType'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def storage_server_type_list_key
|
|
46
|
+
'storageServerTypes'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def storage_server_type_label
|
|
50
|
+
'Storage Server Type'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def storage_server_type_label_plural
|
|
54
|
+
'Storage Server Types'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def find_storage_server_by_name_or_id(val)
|
|
58
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
59
|
+
return find_storage_server_by_id(val)
|
|
60
|
+
else
|
|
61
|
+
return find_storage_server_by_name(val)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def find_storage_server_by_id(id)
|
|
66
|
+
begin
|
|
67
|
+
json_response = storage_servers_interface.get(id.to_i)
|
|
68
|
+
return json_response[storage_server_object_key]
|
|
69
|
+
rescue RestClient::Exception => e
|
|
70
|
+
if e.response && e.response.code == 404
|
|
71
|
+
print_red_alert "Storage Server not found by id #{id}"
|
|
72
|
+
else
|
|
73
|
+
raise e
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def find_storage_server_by_name(name)
|
|
79
|
+
lbs = storage_servers_interface.list({name: name.to_s})[storage_server_list_key]
|
|
80
|
+
if lbs.empty?
|
|
81
|
+
print_red_alert "Storage Server not found by name #{name}"
|
|
82
|
+
return nil
|
|
83
|
+
elsif lbs.size > 1
|
|
84
|
+
print_red_alert "#{lbs.size} storage servers found by name #{name}"
|
|
85
|
+
#print_lbs_table(lbs, {color: red})
|
|
86
|
+
print reset,"\n\n"
|
|
87
|
+
return nil
|
|
88
|
+
else
|
|
89
|
+
return lbs[0]
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'mtncloud/cli/mixins/print_helper'
|
|
2
|
+
require 'mtncloud/cli/option_types'
|
|
3
|
+
require 'mtncloud/rest_client'
|
|
4
|
+
# Mixin for MtnCloud::Cli command classes
|
|
5
|
+
# Provides common methods for storage volume management
|
|
6
|
+
# including storage volumes and storage volume types
|
|
7
|
+
module MtnCloud::Cli::StorageVolumesHelper
|
|
8
|
+
|
|
9
|
+
def self.included(klass)
|
|
10
|
+
klass.send :include, MtnCloud::Cli::PrintHelper
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def storage_volumes_interface
|
|
14
|
+
# @api_client.storage_volumes
|
|
15
|
+
raise "#{self.class} has not defined @storage_volumes_interface" if @storage_volumes_interface.nil?
|
|
16
|
+
@storage_volumes_interface
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def storage_volume_types_interface
|
|
20
|
+
# @api_client.storage_volume_types
|
|
21
|
+
raise "#{self.class} has not defined @storage_volume_types_interface" if @storage_volume_types_interface.nil?
|
|
22
|
+
@storage_volume_types_interface
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def storage_volume_object_key
|
|
26
|
+
'storageVolume'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def storage_volume_list_key
|
|
30
|
+
'storageVolumes'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def storage_volume_label
|
|
34
|
+
'Storage Volume'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def storage_volume_label_plural
|
|
38
|
+
'Storage Volume'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def storage_volume_type_object_key
|
|
42
|
+
'storageVolumeType'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def storage_volume_type_list_key
|
|
46
|
+
'storageVolumeTypes'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def storage_volume_type_label
|
|
50
|
+
'Storage Volume Type'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def storage_volume_type_label_plural
|
|
54
|
+
'Storage Volume Types'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def format_storage_volume_status(record, return_color=cyan)
|
|
58
|
+
out = ""
|
|
59
|
+
status_string = record['status']
|
|
60
|
+
if status_string.nil? || status_string.empty? || status_string == "unknown"
|
|
61
|
+
out << "#{white}UNKNOWN#{return_color}"
|
|
62
|
+
elsif status_string == 'provisioned' || status_string == 'unattached'
|
|
63
|
+
out << "#{cyan}#{status_string.capitalize}#{return_color}"
|
|
64
|
+
elsif status_string == 'syncing'
|
|
65
|
+
out << "#{yellow}#{status_string.capitalize}#{return_color}"
|
|
66
|
+
else
|
|
67
|
+
out << "#{red}#{status_string ? status_string.capitalize : 'N/A'}#{record['statusMessage'] ? "#{return_color} - #{record['statusMessage']}" : ''}#{return_color}"
|
|
68
|
+
end
|
|
69
|
+
out
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def format_storage_volume_source(storage_volume)
|
|
73
|
+
storage_volume['source']
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
require 'mtncloud/cli/mixins/print_helper'
|
|
2
|
+
# Provides common finder methods for VDI Pool management commands
|
|
3
|
+
module MtnCloud::Cli::VdiHelper
|
|
4
|
+
|
|
5
|
+
def self.included(klass)
|
|
6
|
+
klass.send :include, MtnCloud::Cli::PrintHelper
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
## VDI Pools
|
|
10
|
+
|
|
11
|
+
def vdi_pools_interface
|
|
12
|
+
raise "#{self.class} has not defined @vdi_pools_interface" if @vdi_pools_interface.nil?
|
|
13
|
+
@vdi_pools_interface
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def vdi_pool_object_key
|
|
17
|
+
'vdiPool'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def vdi_pool_list_key
|
|
21
|
+
'vdiPools'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def find_vdi_pool_by_name_or_id(val)
|
|
25
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
26
|
+
return find_vdi_pool_by_id(val)
|
|
27
|
+
else
|
|
28
|
+
return find_vdi_pool_by_name(val)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def find_vdi_pool_by_id(id)
|
|
33
|
+
begin
|
|
34
|
+
json_response = vdi_pools_interface.get(id.to_i)
|
|
35
|
+
return json_response[vdi_pool_object_key]
|
|
36
|
+
rescue RestClient::Exception => e
|
|
37
|
+
if e.response && e.response.code == 404
|
|
38
|
+
print_red_alert "VDI Pool not found by id '#{id}'"
|
|
39
|
+
else
|
|
40
|
+
raise e
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def find_vdi_pool_by_name(name)
|
|
46
|
+
json_response = vdi_pools_interface.list({name: name.to_s})
|
|
47
|
+
vdi_pools = json_response[vdi_pool_list_key]
|
|
48
|
+
if vdi_pools.empty?
|
|
49
|
+
print_red_alert "VDI Pool not found by name '#{name}'"
|
|
50
|
+
return nil
|
|
51
|
+
elsif vdi_pools.size > 1
|
|
52
|
+
print_red_alert "#{vdi_pools.size} VDI Pools found by name '#{name}'"
|
|
53
|
+
print_error "\n"
|
|
54
|
+
puts_error as_pretty_table(vdi_pools, [:id, :name], {color:red})
|
|
55
|
+
print_red_alert "Try using ID instead"
|
|
56
|
+
print_error reset,"\n"
|
|
57
|
+
return nil
|
|
58
|
+
else
|
|
59
|
+
return vdi_pools[0]
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def format_vdi_pool_status(vdi_pool, return_color=cyan)
|
|
64
|
+
out = ""
|
|
65
|
+
status_string = vdi_pool['status'].to_s.downcase
|
|
66
|
+
if status_string
|
|
67
|
+
if ['available'].include?(status_string)
|
|
68
|
+
out << "#{green}#{status_string.upcase}"
|
|
69
|
+
elsif ['unavailable'].include?(status_string)
|
|
70
|
+
out << "#{red}#{status_string.upcase}"
|
|
71
|
+
else
|
|
72
|
+
out << "#{return_color}#{status_string.upcase}"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
out + return_color
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
## VDI Allocations
|
|
79
|
+
|
|
80
|
+
def vdi_allocations_interface
|
|
81
|
+
raise "#{self.class} has not defined @vdi_allocations_interface" if @vdi_allocations_interface.nil?
|
|
82
|
+
@vdi_allocations_interface
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def vdi_allocation_object_key
|
|
86
|
+
'vdiAllocation'
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def vdi_allocation_list_key
|
|
90
|
+
'vdiAllocations'
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def find_vdi_allocation_by_id(id)
|
|
94
|
+
begin
|
|
95
|
+
json_response = vdi_allocations_interface.get(id.to_i)
|
|
96
|
+
return json_response[vdi_allocation_object_key]
|
|
97
|
+
rescue RestClient::Exception => e
|
|
98
|
+
if e.response && e.response.code == 404
|
|
99
|
+
print_red_alert "VDI Allocation not found by id '#{id}'"
|
|
100
|
+
else
|
|
101
|
+
raise e
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def format_vdi_allocation_status(vdi_allocation, return_color=cyan)
|
|
107
|
+
out = ""
|
|
108
|
+
status_string = vdi_allocation['status'].to_s.downcase
|
|
109
|
+
if status_string
|
|
110
|
+
if ['available'].include?(status_string)
|
|
111
|
+
out << "#{green}#{status_string.upcase}"
|
|
112
|
+
# elsif ['preparing'].include?(status_string)
|
|
113
|
+
# out << "#{yellow}#{status_string.upcase}"
|
|
114
|
+
# elsif ['reserved', 'shutdown'].include?(status_string)
|
|
115
|
+
# out << "#{yellow}#{status_string.upcase}"
|
|
116
|
+
elsif ['failed'].include?(status_string)
|
|
117
|
+
out << "#{red}#{status_string.upcase}"
|
|
118
|
+
else
|
|
119
|
+
out << "#{return_color}#{status_string.upcase}"
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
out + return_color
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def get_available_vdi_apps(refresh=false)
|
|
126
|
+
if !@available_vdi_apps || refresh
|
|
127
|
+
@available_vdi_apps = @vdi_apps_interface.list({max:-1})['vdiApps'] # || []
|
|
128
|
+
end
|
|
129
|
+
return @available_vdi_apps
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def get_vdi_app_by_name_or_code(name)
|
|
133
|
+
return get_available_vdi_apps().find { |z| z['name'].downcase == name.downcase || z['code'].downcase == name.downcase}
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
## VDI Apps
|
|
137
|
+
|
|
138
|
+
def vdi_apps_interface
|
|
139
|
+
raise "#{self.class} has not defined @vdi_apps_interface" if @vdi_apps_interface.nil?
|
|
140
|
+
@vdi_apps_interface
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def vdi_app_object_key
|
|
144
|
+
'vdiApp'
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def vdi_app_list_key
|
|
148
|
+
'vdiApps'
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def find_vdi_app_by_name_or_id(val)
|
|
152
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
153
|
+
return find_vdi_app_by_id(val)
|
|
154
|
+
else
|
|
155
|
+
return find_vdi_app_by_name(val)
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def find_vdi_app_by_id(id)
|
|
160
|
+
begin
|
|
161
|
+
json_response = vdi_apps_interface.get(id.to_i)
|
|
162
|
+
return json_response[vdi_app_object_key]
|
|
163
|
+
rescue RestClient::Exception => e
|
|
164
|
+
if e.response && e.response.code == 404
|
|
165
|
+
print_red_alert "VDI App not found by id '#{id}'"
|
|
166
|
+
else
|
|
167
|
+
raise e
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def find_vdi_app_by_name(name)
|
|
173
|
+
json_response = vdi_apps_interface.list({name: name.to_s})
|
|
174
|
+
vdi_apps = json_response[vdi_app_list_key]
|
|
175
|
+
if vdi_apps.empty?
|
|
176
|
+
print_red_alert "VDI App not found by name '#{name}'"
|
|
177
|
+
return nil
|
|
178
|
+
elsif vdi_apps.size > 1
|
|
179
|
+
print_red_alert "#{vdi_apps.size} VDI App found by name '#{name}'"
|
|
180
|
+
print_error "\n"
|
|
181
|
+
puts_error as_pretty_table(vdi_apps, {"ID" => 'id', "NAME" => 'name'}, {color:red})
|
|
182
|
+
print_red_alert "Try using ID instead"
|
|
183
|
+
print_error reset,"\n"
|
|
184
|
+
return nil
|
|
185
|
+
else
|
|
186
|
+
return vdi_apps[0]
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
## VDI Gateways
|
|
192
|
+
|
|
193
|
+
def vdi_gateways_interface
|
|
194
|
+
raise "#{self.class} has not defined @vdi_gateways_interface" if @vdi_gateways_interface.nil?
|
|
195
|
+
@vdi_gateways_interface
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def vdi_gateway_object_key
|
|
199
|
+
'vdiGateway'
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def vdi_gateway_list_key
|
|
203
|
+
'vdiGateways'
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def find_vdi_gateway_by_name_or_id(val)
|
|
207
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
208
|
+
return find_vdi_gateway_by_id(val)
|
|
209
|
+
else
|
|
210
|
+
return find_vdi_gateway_by_name(val)
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def find_vdi_gateway_by_id(id)
|
|
215
|
+
begin
|
|
216
|
+
json_response = vdi_gateways_interface.get(id.to_i)
|
|
217
|
+
return json_response[vdi_gateway_object_key]
|
|
218
|
+
rescue RestClient::Exception => e
|
|
219
|
+
if e.response && e.response.code == 404
|
|
220
|
+
print_red_alert "VDI Gateway not found by id '#{id}'"
|
|
221
|
+
else
|
|
222
|
+
raise e
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def find_vdi_gateway_by_name(name)
|
|
228
|
+
json_response = vdi_gateways_interface.list({name: name.to_s})
|
|
229
|
+
vdi_gateways = json_response[vdi_gateway_list_key]
|
|
230
|
+
if vdi_gateways.empty?
|
|
231
|
+
print_red_alert "VDI Gateway not found by name '#{name}'"
|
|
232
|
+
return nil
|
|
233
|
+
elsif vdi_gateways.size > 1
|
|
234
|
+
print_red_alert "#{vdi_gateways.size} VDI Gateway found by name '#{name}'"
|
|
235
|
+
print_error "\n"
|
|
236
|
+
puts_error as_pretty_table(vdi_gateways, {"ID" => 'id', "NAME" => 'name'}, {color:red})
|
|
237
|
+
print_red_alert "Try using ID instead"
|
|
238
|
+
print_error reset,"\n"
|
|
239
|
+
return nil
|
|
240
|
+
else
|
|
241
|
+
return vdi_gateways[0]
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require 'mtncloud/cli/mixins/print_helper'
|
|
2
|
+
|
|
3
|
+
# Mixin for MtnCloud::Cli command classes
|
|
4
|
+
# Provides common methods for fetching and printing whoami information
|
|
5
|
+
module MtnCloud::Cli::WhoamiHelper
|
|
6
|
+
|
|
7
|
+
def self.included(klass)
|
|
8
|
+
klass.send :include, MtnCloud::Cli::PrintHelper
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def load_whoami(refresh=false)
|
|
12
|
+
appliance = @remote_appliance # from establish_connection()
|
|
13
|
+
if appliance.nil?
|
|
14
|
+
print_red_alert "No current appliance. See `remote use`."
|
|
15
|
+
exit 1
|
|
16
|
+
end
|
|
17
|
+
# fetch from cache first
|
|
18
|
+
whoami_response = nil
|
|
19
|
+
cached_response = ::MtnCloud::Cli::Whoami.load_whoami(appliance[:name], appliance[:username], refresh)
|
|
20
|
+
if cached_response
|
|
21
|
+
whoami_response = cached_response
|
|
22
|
+
else
|
|
23
|
+
whoami_interface = @whoami_interface || @api_client.whoami
|
|
24
|
+
whoami_response = whoami_interface.get()
|
|
25
|
+
# save the result to the cache
|
|
26
|
+
::MtnCloud::Cli::Whoami.save_whoami(appliance[:name], appliance[:username], whoami_response)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
@current_user = whoami_response["user"]
|
|
30
|
+
if @current_user.empty?
|
|
31
|
+
print_red_alert "Unauthenticated. Please login."
|
|
32
|
+
exit 1
|
|
33
|
+
end
|
|
34
|
+
@is_master_account = whoami_response["isMasterAccount"]
|
|
35
|
+
@user_permissions = whoami_response["permissions"]
|
|
36
|
+
if whoami_response["appliance"]
|
|
37
|
+
@appliance_build_verison = whoami_response["appliance"]["buildVersion"]
|
|
38
|
+
else
|
|
39
|
+
@appliance_build_verison = nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
return whoami_response
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def current_account
|
|
46
|
+
if @current_user.nil?
|
|
47
|
+
load_whoami
|
|
48
|
+
end
|
|
49
|
+
@current_user ? @current_user['account'] : nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def is_master_account
|
|
53
|
+
if @current_user.nil?
|
|
54
|
+
load_whoami
|
|
55
|
+
end
|
|
56
|
+
@is_master_account
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def current_user
|
|
60
|
+
if @current_user.nil?
|
|
61
|
+
load_whoami
|
|
62
|
+
end
|
|
63
|
+
@current_user
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def current_user_permissions
|
|
67
|
+
if @user_permissions.nil?
|
|
68
|
+
load_whoami
|
|
69
|
+
end
|
|
70
|
+
@user_permissions
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require 'optparse'
|
|
2
|
+
|
|
3
|
+
module MtnCloud
|
|
4
|
+
module Cli
|
|
5
|
+
|
|
6
|
+
# an enhanced OptionParser
|
|
7
|
+
# Modifications include
|
|
8
|
+
# * footer property to compliment banner with footer="Get details about a thing by ID."
|
|
9
|
+
# * hidden options with add_hidden_option "--not-in-help"
|
|
10
|
+
# * errors raised from parse! will have a reference to the parser itself.
|
|
11
|
+
# this is useful so you can you print the banner (usage) message in your error handling
|
|
12
|
+
class MtnCloud::Cli::OptionParser < OptionParser
|
|
13
|
+
|
|
14
|
+
attr_accessor :footer
|
|
15
|
+
|
|
16
|
+
# Array of option names to keep out of help message
|
|
17
|
+
attr_accessor :hidden_options
|
|
18
|
+
|
|
19
|
+
alias :original_to_s :to_s
|
|
20
|
+
|
|
21
|
+
def to_s
|
|
22
|
+
full_help_message
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def full_help_message(opts={})
|
|
26
|
+
out = ""
|
|
27
|
+
#out << original_to_s
|
|
28
|
+
if banner
|
|
29
|
+
out << "#{banner}".sub(/\n?\z/, "\n")
|
|
30
|
+
end
|
|
31
|
+
if !self.to_a.empty?
|
|
32
|
+
#out << "Options:\n"
|
|
33
|
+
# the default way..
|
|
34
|
+
# out << summarize().join("")
|
|
35
|
+
# super hacky, should be examining the option, not the fully formatted description
|
|
36
|
+
my_summaries = summarize()
|
|
37
|
+
if opts[:show_hidden_options]
|
|
38
|
+
my_summaries.each do |full_line|
|
|
39
|
+
out << full_line
|
|
40
|
+
end
|
|
41
|
+
else
|
|
42
|
+
on_hidden_option = false
|
|
43
|
+
my_summaries.each do |full_line|
|
|
44
|
+
opt_description = full_line.to_s.strip
|
|
45
|
+
if opt_description.start_with?("-")
|
|
46
|
+
is_hidden = (hidden_options || []).find { |hidden_switch|
|
|
47
|
+
if hidden_switch.start_with?("-")
|
|
48
|
+
opt_description.start_with?("#{hidden_switch} ")
|
|
49
|
+
else
|
|
50
|
+
opt_description.start_with?("--#{hidden_switch} ")
|
|
51
|
+
end
|
|
52
|
+
}
|
|
53
|
+
if is_hidden
|
|
54
|
+
on_hidden_option = true
|
|
55
|
+
else
|
|
56
|
+
on_hidden_option = false
|
|
57
|
+
out << full_line
|
|
58
|
+
end
|
|
59
|
+
else
|
|
60
|
+
if on_hidden_option == false
|
|
61
|
+
out << full_line
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
if footer
|
|
68
|
+
# nice_footer = footer.split("\n").collect {|line| "#{summary_indent}#{line}" }.join("\n")
|
|
69
|
+
nice_footer = footer
|
|
70
|
+
out << "\n"
|
|
71
|
+
out << "#{nice_footer}".sub(/\n?\z/, "\n")
|
|
72
|
+
# out << "\n"
|
|
73
|
+
end
|
|
74
|
+
out
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def hidden_options
|
|
78
|
+
@hidden_options ||= []
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def add_hidden_option(opt_name)
|
|
82
|
+
opt_array = [opt_name].flatten.compact
|
|
83
|
+
@hidden_options ||= []
|
|
84
|
+
opt_array.each do |val|
|
|
85
|
+
if !@hidden_options.include?(val)
|
|
86
|
+
@hidden_options << val
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
@hidden_options
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# this needs mods too, but we dont use it...
|
|
93
|
+
# def parse
|
|
94
|
+
# end
|
|
95
|
+
|
|
96
|
+
def parse!(*args)
|
|
97
|
+
# it is actually # def parse(argv = default_argv, into: nil)
|
|
98
|
+
argv = [args].flatten() # args[0].flatten
|
|
99
|
+
#help_wanted = argv.find {|arg| arg == "--help" || arg == "-h" }
|
|
100
|
+
help_wanted = (argv.last == "--help" || argv.last == "-h") ? argv.last : nil
|
|
101
|
+
begin
|
|
102
|
+
return super(*args)
|
|
103
|
+
rescue OptionParser::ParseError => e
|
|
104
|
+
# last arg is --help
|
|
105
|
+
# maybe they just got the Try --help message and its on the end
|
|
106
|
+
# so strip all option arguments to avoid OptionParser::InvalidOption, etc.
|
|
107
|
+
# this is not ideal, it means you cannot pass these strings as the last argument to your command.
|
|
108
|
+
if help_wanted
|
|
109
|
+
argv = argv.reject {|arg| arg =~ /^\-+/ }
|
|
110
|
+
argv << help_wanted
|
|
111
|
+
return super(argv)
|
|
112
|
+
else
|
|
113
|
+
e.optparse = self
|
|
114
|
+
raise e
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# ParseError is overridden to set parser reference.
|
|
124
|
+
# todo: dont monkey patch like this
|
|
125
|
+
class OptionParser::ParseError
|
|
126
|
+
attr_accessor :optparse
|
|
127
|
+
end
|