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,51 @@
|
|
|
1
|
+
require 'mtncloud/cli/cli_command'
|
|
2
|
+
|
|
3
|
+
class MtnCloud::Cli::SetPromptCommand
|
|
4
|
+
include MtnCloud::Cli::CliCommand
|
|
5
|
+
set_command_name :'set-prompt'
|
|
6
|
+
set_command_hidden
|
|
7
|
+
|
|
8
|
+
def handle(args)
|
|
9
|
+
options = {}
|
|
10
|
+
optparse = MtnCloud::Cli::OptionParser.new do|opts|
|
|
11
|
+
opts.banner = "Usage: #{prog_name} #{command_name} [prompt]"
|
|
12
|
+
opts.on('-h', '--help', "Print this help" ) do
|
|
13
|
+
puts opts
|
|
14
|
+
exit
|
|
15
|
+
end
|
|
16
|
+
variable_map = MtnCloud::Cli::Echo.variable_map
|
|
17
|
+
formatted_variable_map = " " + variable_map.keys.join(' ')
|
|
18
|
+
opts.footer = <<-EOT
|
|
19
|
+
Customize your #{prog_name} shell prompt.
|
|
20
|
+
|
|
21
|
+
[prompt] is required. This is the string the terminal prints when you interact with it.
|
|
22
|
+
|
|
23
|
+
Examples:
|
|
24
|
+
set-prompt "mtncloud $ "
|
|
25
|
+
set-prompt "%cyanmtncloud> "
|
|
26
|
+
set-prompt "[%magenta%remote%reset] %cyan%username> "
|
|
27
|
+
set-prompt "%green%username%reset@%remote %magenta> %reset"
|
|
28
|
+
set-prompt "%cyan%username%reset@%magenta%remote %cyanmtncloud> %reset"
|
|
29
|
+
|
|
30
|
+
The available variables are:
|
|
31
|
+
#{formatted_variable_map}
|
|
32
|
+
|
|
33
|
+
The default prompt is: "%cyan#{prog_name}> %reset"
|
|
34
|
+
The value may also be set through the enviroment variable MTNCLOUD_PS1.
|
|
35
|
+
EOT
|
|
36
|
+
end
|
|
37
|
+
optparse.parse!(args)
|
|
38
|
+
if args.count != 1
|
|
39
|
+
print_error MtnCloud::Terminal.angry_prompt
|
|
40
|
+
puts_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args.inspect}\n#{optparse}"
|
|
41
|
+
return 1
|
|
42
|
+
end
|
|
43
|
+
# do it
|
|
44
|
+
self.my_terminal.prompt = args[0]
|
|
45
|
+
# MtnCloud::Terminal.instance.prompt = args[0]
|
|
46
|
+
MtnCloud::Cli::Shell.instance.recalculate_prompt()
|
|
47
|
+
MtnCloud::Cli::Echo.recalculate_variable_map()
|
|
48
|
+
return 0
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
require 'mtncloud/cli/cli_command'
|
|
2
|
+
|
|
3
|
+
# The mtncloud setup command provides interaction with /api/setup
|
|
4
|
+
# This is initializing a fresh remote appliance.
|
|
5
|
+
# and checking the remote status and version.
|
|
6
|
+
class MtnCloud::Cli::Setup
|
|
7
|
+
include MtnCloud::Cli::CliCommand
|
|
8
|
+
include MtnCloud::Cli::RemoteHelper
|
|
9
|
+
|
|
10
|
+
set_command_name :setup
|
|
11
|
+
|
|
12
|
+
# register_subcommands :init
|
|
13
|
+
|
|
14
|
+
# no authorization needed
|
|
15
|
+
def connect(options={})
|
|
16
|
+
@api_client = establish_remote_appliance_connection({:no_authorization => true, :skip_login => true}.merge(options))
|
|
17
|
+
@setup_interface = @api_client.setup
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def handle(args)
|
|
21
|
+
#handle_subcommand(args)
|
|
22
|
+
init(args)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# this is a wizard that walks through the /api/setup controller
|
|
26
|
+
# it only needs to be used once to initialize a new appliance
|
|
27
|
+
# def setup(args)
|
|
28
|
+
def init(args)
|
|
29
|
+
params, payload = {}, {}
|
|
30
|
+
options = {}
|
|
31
|
+
optparse = MtnCloud::Cli::OptionParser.new do|opts|
|
|
32
|
+
#opts.banner = subcommand_usage()
|
|
33
|
+
opts.banner = usage
|
|
34
|
+
build_standard_add_options(opts, options, [:quiet, :auto_confirm])
|
|
35
|
+
opts.on('--hubmode MODE','--hubmode MODE', "Choose an option for hub registration possible values are login, register, skip.") do |val|
|
|
36
|
+
options[:hubmode] = val.to_s.downcase
|
|
37
|
+
end
|
|
38
|
+
opts.on('--license KEY', String, "License key to install") do |val|
|
|
39
|
+
options[:license] = val
|
|
40
|
+
end
|
|
41
|
+
opts.on('--force','--force', "Force setup, make api request even if setup is unavailable.") do
|
|
42
|
+
options[:force] = true
|
|
43
|
+
end
|
|
44
|
+
# todo: need all the other options here hub-username/password, account-name, username, password, email, etc.
|
|
45
|
+
opts.footer = <<-EOT
|
|
46
|
+
Setup a fresh remote appliance, initializing it.
|
|
47
|
+
First, this checks if setup is available, and returns an error if not.
|
|
48
|
+
Then it prompts to create the master tenant and admin user.
|
|
49
|
+
If Morpheus Hub registration is enabled, you may login or register to retrieve a license key,
|
|
50
|
+
or you can pass `--hubmode skip`.
|
|
51
|
+
This is only available on a new, freshly installed remote appliance,
|
|
52
|
+
and it may only be executed successfully one time.
|
|
53
|
+
EOT
|
|
54
|
+
end
|
|
55
|
+
optparse.parse!(args)
|
|
56
|
+
verify_args!(args:args, count:0, optparse:optparse)
|
|
57
|
+
connect(options)
|
|
58
|
+
exit_code, err = 0, nil
|
|
59
|
+
# construct payload
|
|
60
|
+
if options[:payload]
|
|
61
|
+
payload = options[:payload]
|
|
62
|
+
payload.deep_merge!(parse_passed_options(options))
|
|
63
|
+
else
|
|
64
|
+
payload.deep_merge!(parse_passed_options(options))
|
|
65
|
+
|
|
66
|
+
# JD: This should just do a Remote.check_appliance() first... needs to work with --remote-url though.
|
|
67
|
+
appliance_status_json = nil
|
|
68
|
+
begin
|
|
69
|
+
appliance_status_json = @setup_interface.get()
|
|
70
|
+
rescue RestClient::SSLCertificateNotVerified => e
|
|
71
|
+
@remote_appliance[:status] = 'ssl-error'
|
|
72
|
+
@remote_appliance[:last_check] ||= {}
|
|
73
|
+
@remote_appliance[:last_check][:error] = e.message
|
|
74
|
+
rescue RestClient::Exception => e
|
|
75
|
+
# pre 4.2.1 api would return HTTP 400 here, but with setupNeeded=false
|
|
76
|
+
# so fallback to the old /api/setup/check
|
|
77
|
+
# this could be in the interface itself..
|
|
78
|
+
if e.response && (e.response.code == 400 || e.response.code == 404 || e.response.code == 401)
|
|
79
|
+
MtnCloud::Logging::DarkPrinter.puts "HTTP 400 from /api/setup, falling back to older /api/setup/check" if MtnCloud::Logging.debug?
|
|
80
|
+
begin
|
|
81
|
+
appliance_status_json = @setup_interface.check()
|
|
82
|
+
rescue RestClient::Exception => e2
|
|
83
|
+
# err = e2.message || "Bad Request"
|
|
84
|
+
begin
|
|
85
|
+
appliance_status_json = JSON.parse(e2.response.to_s)
|
|
86
|
+
rescue TypeError, JSON::ParserError => ex
|
|
87
|
+
#puts "Failed to parse error response as json: #{ex}"
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
if appliance_status_json.nil?
|
|
92
|
+
@remote_appliance[:status] = 'http-error'
|
|
93
|
+
@remote_appliance[:last_check] ||= {}
|
|
94
|
+
@remote_appliance[:last_check][:error] = e.message
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# my_terminal.execute("setup needed?")
|
|
99
|
+
# theres a bug here with --remote-url :status == "unknown"
|
|
100
|
+
# but hey, we got json back, so set status to "ready"
|
|
101
|
+
if appliance_status_json
|
|
102
|
+
@remote_appliance[:status] == 'ready'
|
|
103
|
+
end
|
|
104
|
+
remote_status_string = format_appliance_status(@remote_appliance, cyan)
|
|
105
|
+
if appliance_status_json && appliance_status_json['setupNeeded'] == true
|
|
106
|
+
# ok, setupNeeded
|
|
107
|
+
# print_error cyan,"Setup is needed, status is #{remote_status_string}",reset,"\n"
|
|
108
|
+
else
|
|
109
|
+
if @remote_appliance[:status] == 'ssl-error'
|
|
110
|
+
print_error cyan,"Setup unavailable, status is #{remote_status_string}","\n"
|
|
111
|
+
print_error "Try passing the --insecure option.",reset,"\n"
|
|
112
|
+
return 1, "setup unavailable"
|
|
113
|
+
end
|
|
114
|
+
if options[:force] != true
|
|
115
|
+
print_error cyan,"Setup unavailable, status is #{remote_status_string}",reset,"\n"
|
|
116
|
+
#print_error red, "#{appliance_status_json['msg']}\n", reset
|
|
117
|
+
return 1, "setup unavailable"
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# retrieved hub.enabled and hub.url
|
|
122
|
+
hub_settings = appliance_status_json['hubSettings'] || appliance_status_json['hub'] || {}
|
|
123
|
+
|
|
124
|
+
# store login/registration info in here, for prompt default values
|
|
125
|
+
hub_info = nil
|
|
126
|
+
print cyan
|
|
127
|
+
print_h2 "Remote Setup | #{display_appliance(@appliance_name, @appliance_url)}"
|
|
128
|
+
|
|
129
|
+
print cyan
|
|
130
|
+
puts "It looks like you are the first one here, so let's begin."
|
|
131
|
+
print reset, "\n"
|
|
132
|
+
# print "\n"
|
|
133
|
+
# unless MtnCloud::Cli::OptionTypes.confirm("Would you like to setup and initialize the remote appliance now?", options)
|
|
134
|
+
# return 9, "aborted command"
|
|
135
|
+
# end
|
|
136
|
+
# print "\n"
|
|
137
|
+
hubmode = nil
|
|
138
|
+
hub_init_payload = nil # gets included as payload for hub scoped like hub.email
|
|
139
|
+
if hub_settings['enabled']
|
|
140
|
+
|
|
141
|
+
# Hub Registration
|
|
142
|
+
hub_action_dropdown = [
|
|
143
|
+
{'name' => 'Login to existing hub account', 'value' => 'login', 'isDefault' => true},
|
|
144
|
+
{'name' => 'Register a new hub account', 'value' => 'register'},
|
|
145
|
+
{'name' => 'Skip this step and manually install a license later.', 'value' => 'skip'},
|
|
146
|
+
{'name' => 'Abort', 'value' => 'abort'}
|
|
147
|
+
]
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
print cyan
|
|
151
|
+
puts "Morpheus Hub registration is enabled for your appliance."
|
|
152
|
+
puts "This step will connect to the Morpheus Hub at #{hub_settings['url']}"
|
|
153
|
+
puts "This is done to retrieve and install the license key for your appliance."
|
|
154
|
+
puts "You have several options for how to proceed:"
|
|
155
|
+
hub_action_dropdown.each_with_index do |hub_action, idx|
|
|
156
|
+
puts "* #{hub_action['name']} [#{hub_action['value']}]"
|
|
157
|
+
end
|
|
158
|
+
print "\n", reset
|
|
159
|
+
|
|
160
|
+
while hubmode == nil do
|
|
161
|
+
|
|
162
|
+
options[:options]['hubmode'] = options[:hubmode] if options.key?(:hubmode)
|
|
163
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'hubmode', 'fieldLabel' => 'Choose Hub Mode', 'type' => 'select', 'selectOptions' => hub_action_dropdown, 'required' => true, 'defaultValue' => 'login'}], options[:options])
|
|
164
|
+
hubmode = v_prompt['hubmode']
|
|
165
|
+
|
|
166
|
+
if hubmode == 'login'
|
|
167
|
+
|
|
168
|
+
# print cyan
|
|
169
|
+
# puts "MORPHEUS HUB #{hub_settings['url']}"
|
|
170
|
+
# puts "The Command Center for DevOps"
|
|
171
|
+
# print reset
|
|
172
|
+
|
|
173
|
+
# Hub Login
|
|
174
|
+
print_h2 "Morpheus Hub Login @ #{hub_settings['url']}", options
|
|
175
|
+
hub_login_option_types = [
|
|
176
|
+
{'fieldContext' => 'hub', 'fieldName' => 'email', 'fieldLabel' => 'Email', 'type' => 'text', 'required' => true, 'description' => 'Email Address of existing Morpheus Hub user to link with.'},
|
|
177
|
+
{'fieldContext' => 'hub', 'fieldName' => 'password', 'fieldLabel' => 'Password', 'type' => 'password', 'required' => true, 'description' => 'Password of existing Morpheus Hub user.'},
|
|
178
|
+
]
|
|
179
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt(hub_login_option_types, options[:options])
|
|
180
|
+
hub_login_payload = v_prompt['hub']
|
|
181
|
+
hub_login_response = nil
|
|
182
|
+
begin
|
|
183
|
+
hub_login_response = @setup_interface.hub_login(hub_login_payload)
|
|
184
|
+
hub_init_payload = hub_login_payload
|
|
185
|
+
hub_info = {'email' => hub_login_payload['email'], 'password' => hub_login_payload['password'] }
|
|
186
|
+
hub_info.deep_merge!(hub_login_response['data']['info']) if (hub_login_response['data'] && hub_login_response['data']['info'])
|
|
187
|
+
hub_info.deep_merge!(hub_login_response['hub']) if hub_login_response['hub'].is_a?(Hash)
|
|
188
|
+
print_green_success "Logged into Morpheus Hub as #{hub_info['email']}"
|
|
189
|
+
rescue RestClient::Exception => e
|
|
190
|
+
hub_login_response = parse_rest_exception(e)
|
|
191
|
+
error_msg = hub_login_response["msg"] || "Hub login failed."
|
|
192
|
+
print_error red,error_msg,reset,"\n"
|
|
193
|
+
hubmode = nil
|
|
194
|
+
#print_rest_exception(e, options)
|
|
195
|
+
#exit 1
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# DEBUG
|
|
199
|
+
if options[:debug] && hub_login_response
|
|
200
|
+
print_h2 "JSON response for hub login"
|
|
201
|
+
MtnCloud::Logging::DarkPrinter.puts as_json(hub_login_response)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
elsif hubmode == 'register'
|
|
205
|
+
# Hub Registration
|
|
206
|
+
print_h2 "Morpheus Hub Registration", options
|
|
207
|
+
hub_register_option_types = [
|
|
208
|
+
{'fieldContext' => 'hub', 'fieldName' => 'companyName', 'fieldLabel' => 'Company Name', 'type' => 'text', 'required' => true, 'description' => 'Company Name of new Morpheus Hub account to be created.'},
|
|
209
|
+
{'fieldContext' => 'hub', 'fieldName' => 'firstName', 'fieldLabel' => 'First Name', 'type' => 'text', 'required' => true, 'description' => 'First Name of new Morpheus Hub user.'},
|
|
210
|
+
{'fieldContext' => 'hub', 'fieldName' => 'lastName', 'fieldLabel' => 'Last Name', 'type' => 'text', 'required' => true, 'description' => 'Last Name of new Morpheus Hub user.'},
|
|
211
|
+
{'fieldContext' => 'hub', 'fieldName' => 'email', 'fieldLabel' => 'Email', 'type' => 'text', 'required' => true, 'description' => 'Email Address of new Morpheus Hub user.'}
|
|
212
|
+
]
|
|
213
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt(hub_register_option_types, options[:options])
|
|
214
|
+
hub_register_payload = v_prompt['hub']
|
|
215
|
+
|
|
216
|
+
# Password prompt with re-prompting if no match
|
|
217
|
+
need_password = true
|
|
218
|
+
if options[:no_prompt]
|
|
219
|
+
if options[:options]['hub'] && options[:options]['hub']['password']
|
|
220
|
+
options[:options]['hub']['confirmPassword'] = options[:options]['hub']['password']
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
while need_password do
|
|
224
|
+
password_option_types = [
|
|
225
|
+
{'fieldContext' => 'hub', 'fieldName' => 'password', 'fieldLabel' => 'Create Password', 'type' => 'password', 'required' => true, 'description' => 'Confirm password of new Morpheus Hub user.'},
|
|
226
|
+
{'fieldContext' => 'hub', 'fieldName' => 'confirmPassword', 'fieldLabel' => 'Confirm Password', 'type' => 'password', 'required' => true, 'description' => 'Confirm password of new Morpheus Hub user.'}
|
|
227
|
+
]
|
|
228
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt(password_option_types, options[:options])
|
|
229
|
+
if v_prompt['hub']['password'] == v_prompt['hub']['confirmPassword']
|
|
230
|
+
hub_register_payload.deep_merge!(v_prompt['hub'])
|
|
231
|
+
need_password = false
|
|
232
|
+
else
|
|
233
|
+
print_error red, "Password confirmation does not match. Re-enter your new password.", reset, "\n"
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
begin
|
|
238
|
+
hub_register_response = @setup_interface.hub_register(hub_register_payload)
|
|
239
|
+
hub_init_payload = hub_register_payload
|
|
240
|
+
hub_info = {'email' => hub_register_payload['email'], 'password' => hub_register_payload['password'] }
|
|
241
|
+
hub_info.deep_merge!(hub_register_payload)
|
|
242
|
+
hub_info.deep_merge!(hub_register_response['data']['info']) if (hub_register_response['data'] && hub_register_response['data']['info'])
|
|
243
|
+
hub_info.deep_merge!(hub_register_response['hub']) if hub_register_response['hub'].is_a?(Hash)
|
|
244
|
+
print_green_success "Registered with Morpheus Hub as #{hub_info['email']}"
|
|
245
|
+
# uh ok so that means the init() request can use login
|
|
246
|
+
# this avoid duplicate email error
|
|
247
|
+
# but it can also just omit hubMode from the init() payload to achieve the same thing.
|
|
248
|
+
# hubmode = nil
|
|
249
|
+
rescue RestClient::Exception => e
|
|
250
|
+
hub_register_response = parse_rest_exception(e)
|
|
251
|
+
error_msg = hub_register_response["msg"] || "Hub Registration failed."
|
|
252
|
+
print_error red,error_msg,reset,"\n"
|
|
253
|
+
hubmode = nil
|
|
254
|
+
#print_rest_exception(e, options)
|
|
255
|
+
#exit 1
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
# DEBUG
|
|
259
|
+
if options[:debug] && hub_register_response
|
|
260
|
+
print_h2 "JSON response for hub registration"
|
|
261
|
+
MtnCloud::Logging::DarkPrinter.puts as_json(hub_register_response)
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
elsif hubmode == 'skip'
|
|
265
|
+
print cyan,"Skipping hub registraton for now...",reset,"\n"
|
|
266
|
+
# puts "You may enter a license key later."
|
|
267
|
+
elsif hubmode == 'abort'
|
|
268
|
+
return 9, "aborted command"
|
|
269
|
+
else
|
|
270
|
+
hubmode = nil
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
# ok, we're done with the hub.
|
|
276
|
+
# now build the payload for POST /api/setup/init
|
|
277
|
+
|
|
278
|
+
payload = {}
|
|
279
|
+
# payload.deep_merge!(params)
|
|
280
|
+
|
|
281
|
+
# print cyan
|
|
282
|
+
#print_h1 "MTN Cloud Appliance Setup", [], options
|
|
283
|
+
#print cyan
|
|
284
|
+
#puts "Initializing remote appliance at URL: #{@appliance_url}"
|
|
285
|
+
|
|
286
|
+
# Master Tenant
|
|
287
|
+
print_h2 "Create Master Tenant", options
|
|
288
|
+
account_option_types = [
|
|
289
|
+
{'fieldName' => 'accountName', 'fieldLabel' => 'Master Tenant Name', 'type' => 'text', 'required' => true, 'defaultValue' => (hub_info ? hub_info['companyName'] : nil), 'description' => 'A unique name for the Master Tenant (account).'},
|
|
290
|
+
]
|
|
291
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt(account_option_types, options[:options])
|
|
292
|
+
payload.merge!(v_prompt)
|
|
293
|
+
|
|
294
|
+
# Master User
|
|
295
|
+
print_h2 "Create Master User", options
|
|
296
|
+
user_option_types = [
|
|
297
|
+
{'fieldName' => 'firstName', 'fieldLabel' => 'First Name', 'type' => 'text', 'required' => false, 'defaultValue' => (hub_info ? hub_info['firstName'] : nil), 'description' => 'First name of the user.'},
|
|
298
|
+
{'fieldName' => 'lastName', 'fieldLabel' => 'Last Name', 'type' => 'text', 'required' => false, 'defaultValue' => (hub_info ? hub_info['lastName'] : nil), 'description' => 'Last name of the user.'},
|
|
299
|
+
{'fieldName' => 'email', 'fieldLabel' => 'Email', 'type' => 'text', 'required' => true, 'defaultValue' => (hub_info ? hub_info['email'] : nil), 'description' => 'A unique email address for the user.'},
|
|
300
|
+
{'fieldName' => 'username', 'fieldLabel' => 'Username', 'type' => 'text', 'required' => true, 'description' => 'A unique username for the master user.'}
|
|
301
|
+
]
|
|
302
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt(user_option_types, options[:options])
|
|
303
|
+
payload.merge!(v_prompt)
|
|
304
|
+
|
|
305
|
+
# Password prompt with re-prompting if no match
|
|
306
|
+
need_password = true
|
|
307
|
+
if options[:no_prompt]
|
|
308
|
+
options[:options]['confirmPassword'] = payload['password']
|
|
309
|
+
payload['confirmPassword'] = payload['password'] if payload['password']
|
|
310
|
+
end
|
|
311
|
+
while need_password do
|
|
312
|
+
password_option_types = [
|
|
313
|
+
{'fieldName' => 'password', 'fieldLabel' => 'Create Password', 'type' => 'password', 'required' => true, 'description' => 'Create a new password for the user.'},
|
|
314
|
+
{'fieldName' => 'confirmPassword', 'fieldLabel' => 'Confirm Password', 'type' => 'password', 'required' => true, 'description' => 'Confirm the new password for the user.'},
|
|
315
|
+
]
|
|
316
|
+
password_prompt = MtnCloud::Cli::OptionTypes.prompt(password_option_types, options[:options])
|
|
317
|
+
if password_prompt['password'] == password_prompt['confirmPassword']
|
|
318
|
+
payload['password'] = password_prompt['password']
|
|
319
|
+
need_password = false
|
|
320
|
+
else
|
|
321
|
+
print_error red, "Password confirmation does not match. Re-enter your new password.", reset, "\n"
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
# Appliance Settings
|
|
326
|
+
default_appliance_url = appliance_status_json['applianceUrl']
|
|
327
|
+
if default_appliance_url && default_appliance_url.include?('10.0.2.2:8080') # ignore this default value.
|
|
328
|
+
default_appliance_url = @appliance_url
|
|
329
|
+
end
|
|
330
|
+
default_appliance_name = appliance_status_json['applianceName']
|
|
331
|
+
if default_appliance_name.nil?
|
|
332
|
+
default_appliance_name = @appliance_name
|
|
333
|
+
end
|
|
334
|
+
print_h2 "Appliance Settings", options
|
|
335
|
+
extra_option_types = [
|
|
336
|
+
{'fieldName' => 'applianceName', 'fieldLabel' => 'Appliance Name', 'type' => 'text', 'required' => true, 'defaultValue' => default_appliance_name, 'description' => 'A name for identifying your MTN Cloud appliance.'},
|
|
337
|
+
{'fieldName' => 'applianceUrl', 'fieldLabel' => 'Appliance URL', 'type' => 'text', 'required' => true, 'defaultValue' => default_appliance_url, 'description' => 'Appliance URL. Can be used for integrations and callbacks.'},
|
|
338
|
+
{'fieldName' => 'backups', 'fieldLabel' => 'Enable Backups', 'type' => 'checkbox', 'required' => false, 'defaultValue' => 'off', 'description' => 'Backups. Default is off. This means backups are created automatically during provisioning.'},
|
|
339
|
+
{'fieldName' => 'monitoring', 'fieldLabel' => 'Enable Monitoring', 'type' => 'checkbox', 'required' => false, 'defaultValue' => 'on', 'description' => 'Enable Monitoring. This means checks are created automatically during provisioning.'},
|
|
340
|
+
{'fieldName' => 'logs', 'fieldLabel' => 'Enable Logs', 'type' => 'checkbox', 'required' => false, 'defaultValue' => 'on', 'description' => 'Enable Logs. This means container logs are collected.'}
|
|
341
|
+
]
|
|
342
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt(extra_option_types, options[:options])
|
|
343
|
+
payload.merge!(v_prompt)
|
|
344
|
+
|
|
345
|
+
# include hubmode and hub params for login or registration
|
|
346
|
+
# actually we remove hubMode because it has already been setup, probably just now,
|
|
347
|
+
# and the init() request will just used the same creds instead of
|
|
348
|
+
# reauthenticated/registering with the hub
|
|
349
|
+
if hubmode
|
|
350
|
+
payload['hubMode'] = hubmode
|
|
351
|
+
end
|
|
352
|
+
if hub_init_payload
|
|
353
|
+
payload['hub'] = hub_init_payload
|
|
354
|
+
end
|
|
355
|
+
if hubmode == 'register' || hubmode == 'login'
|
|
356
|
+
payload.delete('hubMode')
|
|
357
|
+
payload.delete('hub')
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
# License Key prompt
|
|
361
|
+
print_h2 "License", options
|
|
362
|
+
if options[:license]
|
|
363
|
+
payload['licenseKey'] = options[:license].strip
|
|
364
|
+
else
|
|
365
|
+
v_prompt = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'licenseKey', 'fieldLabel' => 'License Key', 'type' => 'text', 'description' => "Enter a License Key to install now or leave blank to use a community license or install one manually later."}], options[:options])
|
|
366
|
+
key = v_prompt['licenseKey']
|
|
367
|
+
payload['licenseKey'] = key.strip if !key.to_s.strip.empty?
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
# ok, make the api request
|
|
372
|
+
@setup_interface.setopts(options)
|
|
373
|
+
if options[:dry_run]
|
|
374
|
+
print_dry_run @setup_interface.dry.init(payload)
|
|
375
|
+
return
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
json_response = @setup_interface.init(payload)
|
|
379
|
+
|
|
380
|
+
render_result = render_with_format(json_response, options)
|
|
381
|
+
return 0 if render_result
|
|
382
|
+
|
|
383
|
+
if options[:json]
|
|
384
|
+
print JSON.pretty_generate(json_response)
|
|
385
|
+
print "\n"
|
|
386
|
+
return
|
|
387
|
+
end
|
|
388
|
+
print "\n"
|
|
389
|
+
print green,"Setup complete for remote #{display_appliance(@appliance_name, @appliance_url)}",reset,"\n"
|
|
390
|
+
#print cyan, "You may now login with the command `login`.\n"
|
|
391
|
+
# uh, just use Credentials.login(username, password, {save: true})
|
|
392
|
+
cmd_res = MtnCloud::Cli::Login.new.login(['--username', payload['username'], '--password', payload['password'], '-q'] + (options[:remote] ? ["-r",options[:remote]] : []))
|
|
393
|
+
# print "\n"
|
|
394
|
+
print cyan, "You are now logged in as the System Admin #{payload['username']}.\n"
|
|
395
|
+
print reset
|
|
396
|
+
#print "\n"
|
|
397
|
+
|
|
398
|
+
unless options[:no_prompt]
|
|
399
|
+
if hubmode == 'skip' && payload['licenseKey'].to_s.empty?
|
|
400
|
+
if ::MtnCloud::Cli::OptionTypes::confirm("Would you like to install your License Key now?", options.merge({:default => true}))
|
|
401
|
+
cmd_res = MtnCloud::Cli::License.new.install([] + (options[:remote] ? ["-r",options[:remote]] : []))
|
|
402
|
+
# license_is_valid = cmd_res != false
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
if ::MtnCloud::Cli::OptionTypes::confirm("Would you like to create the first group now?", options.merge({:default => true}))
|
|
407
|
+
cmd_res = MtnCloud::Cli::Groups.new.add(['--use'] + (options[:remote] ? ["-r",options[:remote]] : []))
|
|
408
|
+
|
|
409
|
+
#print "\n"
|
|
410
|
+
|
|
411
|
+
# if cmd_res !=
|
|
412
|
+
if ::MtnCloud::Cli::OptionTypes::confirm("Would you like to create the first cloud now?", options.merge({:default => true}))
|
|
413
|
+
cmd_res = MtnCloud::Cli::Clouds.new.add([] + (options[:remote] ? ["-r",options[:remote]] : []))
|
|
414
|
+
#print "\n"
|
|
415
|
+
end
|
|
416
|
+
# end
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
print "\n",reset
|
|
420
|
+
return exit_code, err
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
end
|