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,140 @@
|
|
|
1
|
+
require 'mtncloud/cli/cli_command'
|
|
2
|
+
|
|
3
|
+
class MtnCloud::Cli::LogsCommand
|
|
4
|
+
include MtnCloud::Cli::CliCommand
|
|
5
|
+
include MtnCloud::Cli::LogsHelper
|
|
6
|
+
register_subcommands :list
|
|
7
|
+
set_command_name :'logs'
|
|
8
|
+
|
|
9
|
+
def initialize()
|
|
10
|
+
# @appliance_name, @appliance_url = MtnCloud::Cli::Remote.active_appliance
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def connect(opts)
|
|
14
|
+
@api_client = establish_remote_appliance_connection(opts)
|
|
15
|
+
@logs_interface = @api_client.logs
|
|
16
|
+
@servers_interface = @api_client.servers
|
|
17
|
+
@containers_interface = @api_client.containers
|
|
18
|
+
@clusters_interface = @api_client.clusters
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def usage
|
|
22
|
+
"Usage: #{prog_name} #{command_name}"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def handle(args)
|
|
26
|
+
# list(args)
|
|
27
|
+
handle_subcommand(args)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def list(args)
|
|
31
|
+
options = {}
|
|
32
|
+
params = {}
|
|
33
|
+
optparse = MtnCloud::Cli::OptionParser.new do |opts|
|
|
34
|
+
opts.banner = subcommand_usage("[search]")
|
|
35
|
+
opts.on('--hosts HOSTS', String, "Filter logs to specific Host ID(s)") do |val|
|
|
36
|
+
params['servers'] = val.to_s.split(",").collect {|it| it.to_s.strip }.select {|it| it }.compact
|
|
37
|
+
end
|
|
38
|
+
opts.on('--servers HOSTS', String, "alias for --hosts") do |val|
|
|
39
|
+
params['servers'] = val.to_s.split(",").collect {|it| it.to_s.strip }.select {|it| it }.compact
|
|
40
|
+
end
|
|
41
|
+
opts.on('--vms HOSTS', String, "alias for --hosts") do |val|
|
|
42
|
+
params['servers'] = val.to_s.split(",").collect {|it| it.to_s.strip }.select {|it| it }.compact
|
|
43
|
+
end
|
|
44
|
+
opts.on('--container CONTAINER', String, "Filter logs to specific Container ID(s)") do |val|
|
|
45
|
+
params['containers'] = val.to_s.split(",").collect {|it| it.to_s.strip }.select {|it| it }.compact
|
|
46
|
+
end
|
|
47
|
+
# opts.on('--nodes HOST', String, "alias for --containers") do |val|
|
|
48
|
+
# params['containers'] = val.to_s.split(",").collect {|it| it.to_s.strip }.select {|it| it }.compact
|
|
49
|
+
# end
|
|
50
|
+
opts.on('--cluster ID', String, "Filter logs to specific Cluster ID") do |val|
|
|
51
|
+
params['clusters'] = val.to_s.split(",").collect {|it| it.to_s.strip }.select {|it| it }.compact
|
|
52
|
+
end
|
|
53
|
+
opts.on('--start TIMESTAMP','--start TIMESTAMP', "Start timestamp. Default is 30 days ago.") do |val|
|
|
54
|
+
options[:start] = parse_time(val) #.utc.iso8601
|
|
55
|
+
end
|
|
56
|
+
opts.on('--end TIMESTAMP','--end TIMESTAMP', "End timestamp. Default is now.") do |val|
|
|
57
|
+
options[:end] = parse_time(val) #.utc.iso8601
|
|
58
|
+
end
|
|
59
|
+
# opts.on('--interval TIME','--interval TIME', "Interval of time to include, in seconds. Default is 30 days ago.") do |val|
|
|
60
|
+
# options[:interval] = parse_time(val).utc.iso8601
|
|
61
|
+
# end
|
|
62
|
+
opts.on('--level VALUE', String, "Log Level. DEBUG,INFO,WARN,ERROR") do |val|
|
|
63
|
+
params['level'] = params['level'] ? [params['level'], val].flatten : [val]
|
|
64
|
+
end
|
|
65
|
+
opts.on('-t', '--table', "Format ouput as a table.") do
|
|
66
|
+
options[:table] = true
|
|
67
|
+
end
|
|
68
|
+
opts.on('-a', '--all', "Display all details: entire message." ) do
|
|
69
|
+
options[:details] = true
|
|
70
|
+
end
|
|
71
|
+
build_common_options(opts, options, [:list, :query, :json, :yaml, :csv, :fields, :dry_run, :remote])
|
|
72
|
+
opts.footer = "List logs for all hosts and containers."
|
|
73
|
+
end
|
|
74
|
+
optparse.parse!(args)
|
|
75
|
+
if args.count > 0
|
|
76
|
+
options[:phrase] = args.join(" ")
|
|
77
|
+
end
|
|
78
|
+
connect(options)
|
|
79
|
+
begin
|
|
80
|
+
params['level'] = params['level'].collect {|it| it.to_s.upcase }.join('|') if params['level'] # api works with INFO|WARN
|
|
81
|
+
params.merge!(parse_list_options(options))
|
|
82
|
+
if params['phrase']
|
|
83
|
+
options.delete(:phrase)
|
|
84
|
+
search_phrase = params.delete('phrase')
|
|
85
|
+
params['query'] = search_phrase
|
|
86
|
+
end
|
|
87
|
+
params['order'] = params['direction'] unless params['direction'].nil? # old api version expects order instead of direction
|
|
88
|
+
params['startMs'] = (options[:start].to_i * 1000) if options[:start]
|
|
89
|
+
params['endMs'] = (options[:end].to_i * 1000) if options[:end]
|
|
90
|
+
params['interval'] = options[:interval].to_s if options[:interval]
|
|
91
|
+
# could find_by_name_or_id for params['servers'] and params['containers']
|
|
92
|
+
@logs_interface.setopts(options)
|
|
93
|
+
if options[:dry_run]
|
|
94
|
+
print_dry_run @logs_interface.dry.list(params)
|
|
95
|
+
return
|
|
96
|
+
end
|
|
97
|
+
json_response = @logs_interface.list(params)
|
|
98
|
+
render_result = json_response['logs'] ? render_with_format(json_response, options, 'logs') : render_with_format(json_response, options, 'data')
|
|
99
|
+
return 0 if render_result
|
|
100
|
+
|
|
101
|
+
title = "Logs"
|
|
102
|
+
subtitles = parse_list_subtitles(options)
|
|
103
|
+
if options[:start]
|
|
104
|
+
subtitles << "Start: #{options[:start]}".strip
|
|
105
|
+
end
|
|
106
|
+
if options[:end]
|
|
107
|
+
subtitles << "End: #{options[:end]}".strip
|
|
108
|
+
end
|
|
109
|
+
if params['query']
|
|
110
|
+
subtitles << "Search: #{params['query']}".strip
|
|
111
|
+
end
|
|
112
|
+
if params['servers']
|
|
113
|
+
subtitles << "Servers: #{params['servers']}".strip
|
|
114
|
+
end
|
|
115
|
+
if params['containers']
|
|
116
|
+
subtitles << "Containers: #{params['containers']}".strip
|
|
117
|
+
end
|
|
118
|
+
if params['clusters']
|
|
119
|
+
subtitles << "Clusters: #{params['clusters']}".strip
|
|
120
|
+
end
|
|
121
|
+
if params['level']
|
|
122
|
+
subtitles << "Level: #{params['level']}"
|
|
123
|
+
end
|
|
124
|
+
print_h1 title, subtitles, options
|
|
125
|
+
logs = json_response['data'] || json_response['logs']
|
|
126
|
+
if logs.empty?
|
|
127
|
+
print "#{cyan}No logs found.#{reset}\n"
|
|
128
|
+
else
|
|
129
|
+
print format_log_records(logs, options)
|
|
130
|
+
print_results_pagination({'meta'=>{'total'=>(json_response['total']['value'] rescue json_response['total']),'size'=>logs.size,'max'=>(json_response['max'] || options[:max]),'offset'=>(json_response['offset'] || options[:offset] || 0)}})
|
|
131
|
+
end
|
|
132
|
+
print reset,"\n"
|
|
133
|
+
return 0
|
|
134
|
+
rescue RestClient::Exception => e
|
|
135
|
+
print_rest_exception(e, options)
|
|
136
|
+
exit 1
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
end
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
require 'mtncloud/cli/cli_command'
|
|
2
|
+
|
|
3
|
+
class MtnCloud::Cli::ManCommand
|
|
4
|
+
include MtnCloud::Cli::CliCommand
|
|
5
|
+
set_command_name :man
|
|
6
|
+
set_command_hidden
|
|
7
|
+
|
|
8
|
+
# this should be read only anyway...
|
|
9
|
+
@@default_editor = "less" # ENV['EDITOR']
|
|
10
|
+
|
|
11
|
+
def self.man_file_path
|
|
12
|
+
File.join(MtnCloud::Cli.home_directory, "CLI-Manual-#{MtnCloud::Cli::VERSION}.md")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def handle(args)
|
|
16
|
+
options = {}
|
|
17
|
+
regenerate = false
|
|
18
|
+
open_as_link = false # true please
|
|
19
|
+
editor = @@default_editor
|
|
20
|
+
#todo: windows
|
|
21
|
+
if !$stdin.tty?
|
|
22
|
+
editor = "cat"
|
|
23
|
+
end
|
|
24
|
+
# no editor for windows atm
|
|
25
|
+
if MtnCloud::Cli.windows?
|
|
26
|
+
open_as_link = true
|
|
27
|
+
end
|
|
28
|
+
optparse = MtnCloud::Cli::OptionParser.new do|opts|
|
|
29
|
+
opts.banner = "Usage: #{prog_name} man"
|
|
30
|
+
opts.on('-e','--editor EDITOR', "Specify which program to open the manual with. Default is '#{editor}'.") do |val|
|
|
31
|
+
editor = val
|
|
32
|
+
open_as_link = false
|
|
33
|
+
end
|
|
34
|
+
opts.on('-g','--generate', "Regenerate the manual file") do
|
|
35
|
+
regenerate = true
|
|
36
|
+
end
|
|
37
|
+
opts.on('-o','--out FILE', "Write manual file to a custom location") do |val|
|
|
38
|
+
options[:outfile] = val
|
|
39
|
+
end
|
|
40
|
+
opts.on('--overwrite', '--overwrite', "Overwrite output file if it already exists.") do |val|
|
|
41
|
+
options[:overwrite] = true
|
|
42
|
+
end
|
|
43
|
+
opts.on('-q','--quiet', "Do not open manual, for use with the -g option.") do
|
|
44
|
+
options[:quiet] = true
|
|
45
|
+
end
|
|
46
|
+
#build_common_options(opts, options, [:quiet])
|
|
47
|
+
# disable ANSI coloring
|
|
48
|
+
opts.on('-C','--nocolor', "Disable ANSI coloring") do
|
|
49
|
+
Term::ANSIColor::coloring = false
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
opts.on('-V','--debug', "Print extra output for debugging. ") do
|
|
53
|
+
MtnCloud::Logging.set_log_level(MtnCloud::Logging::Logger::DEBUG)
|
|
54
|
+
::RestClient.log = MtnCloud::Logging.debug? ? MtnCloud::Logging::DarkPrinter.instance : nil
|
|
55
|
+
end
|
|
56
|
+
opts.on('-h', '--help', "Print this help" ) do
|
|
57
|
+
puts opts
|
|
58
|
+
exit
|
|
59
|
+
end
|
|
60
|
+
opts.footer = <<-EOT
|
|
61
|
+
Open the #{prog_name} manual located at #{MtnCloud::Cli::ManCommand.man_file_path}
|
|
62
|
+
The -g option can be used to regenerate the file.
|
|
63
|
+
The --out FILE option be used to write the manual file to a custom location.
|
|
64
|
+
EOT
|
|
65
|
+
end
|
|
66
|
+
optparse.parse!(args)
|
|
67
|
+
verify_args!(args:args, optparse:optparse, count:0)
|
|
68
|
+
|
|
69
|
+
fn = MtnCloud::Cli::ManCommand.man_file_path
|
|
70
|
+
if options[:outfile]
|
|
71
|
+
regenerate = true
|
|
72
|
+
fn = File.expand_path(options[:outfile])
|
|
73
|
+
if File.directory?(fn)
|
|
74
|
+
# if you give me a directory, could still work and use the default filename
|
|
75
|
+
# fn = File.join(fn, "CLI-Manual-#{MtnCloud::Cli::VERSION}.md")
|
|
76
|
+
# raise_command_error "outfile is invalid. It is the name of an existing directory: #{fn}"
|
|
77
|
+
print_error "#{red}Output file '#{fn}' is invalid.#{reset}\n"
|
|
78
|
+
print_error "#{red}It is the name of an existing directory.#{reset}\n"
|
|
79
|
+
return 1
|
|
80
|
+
end
|
|
81
|
+
if File.exist?(fn) && options[:overwrite] != true
|
|
82
|
+
print_error "#{red}Output file '#{fn}' already exists.#{reset}\n"
|
|
83
|
+
print_error "#{red}Use --overwrite to overwrite the existing file.#{reset}\n"
|
|
84
|
+
return 1
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
exit_code, err = 0, nil
|
|
88
|
+
if regenerate || !File.exist?(fn)
|
|
89
|
+
#MtnCloud::Logging::DarkPrinter.puts "generating manual #{fn} ..." if MtnCloud::Logging.debug? && !options[:quiet]
|
|
90
|
+
exit_code, err = generate_manual(options)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
if options[:quiet]
|
|
94
|
+
return exit_code, err
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
MtnCloud::Logging::DarkPrinter.puts "opening manual file #{fn}" if MtnCloud::Logging.debug? && !options[:quiet]
|
|
98
|
+
|
|
99
|
+
if open_as_link # windows only atm
|
|
100
|
+
link = "file://#{fn}"
|
|
101
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
|
102
|
+
system "start #{link}"
|
|
103
|
+
elsif RbConfig::CONFIG['host_os'] =~ /darwin/
|
|
104
|
+
system "open #{link}"
|
|
105
|
+
elsif RbConfig::CONFIG['host_os'] =~ /linux|bsd/
|
|
106
|
+
system "xdg-open #{link}"
|
|
107
|
+
end
|
|
108
|
+
return 0, nil
|
|
109
|
+
else
|
|
110
|
+
if editor
|
|
111
|
+
if !system_command_available?(editor)
|
|
112
|
+
raise_command_error "The editor program '#{editor}' is not available on your system."
|
|
113
|
+
# puts_error "#{red}The editor program '#{editor}' is not available on your system.#{reset}"
|
|
114
|
+
# return 1
|
|
115
|
+
end
|
|
116
|
+
system("#{editor} #{fn}")
|
|
117
|
+
else
|
|
118
|
+
raise_command_error "Tell me how to open the manual file #{fn}. Try -e emacs or run export EDITOR=emacs"
|
|
119
|
+
return 1
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
return 0, nil
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# determine if system command is available
|
|
127
|
+
# uses *nix's `which` command.
|
|
128
|
+
# Prevents using dangerous commands rm,mv,passwd
|
|
129
|
+
# todo: support for Windows and PowerShell
|
|
130
|
+
def system_command_available?(cmd)
|
|
131
|
+
has_it = false
|
|
132
|
+
begin
|
|
133
|
+
cmd = cmd.strip.gsub("'",'')
|
|
134
|
+
system("which '#{cmd}' > /dev/null 2>&1")
|
|
135
|
+
has_it = $?.success?
|
|
136
|
+
rescue => e
|
|
137
|
+
raise e
|
|
138
|
+
end
|
|
139
|
+
return has_it
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# def self.save_manual(fn, content)
|
|
143
|
+
# # fn = MtnCloud::Cli::ManCommand.man_file_path
|
|
144
|
+
# if !Dir.exist?(File.dirname(fn))
|
|
145
|
+
# FileUtils.mkdir_p(File.dirname(fn))
|
|
146
|
+
# end
|
|
147
|
+
# MtnCloud::Logging::DarkPrinter.puts "saving manual to #{fn}" if MtnCloud::Logging.debug?
|
|
148
|
+
# File.open(fn, 'w') {|f| f.write content.to_s } #Store
|
|
149
|
+
# FileUtils.chmod(0600, fn)
|
|
150
|
+
# end
|
|
151
|
+
|
|
152
|
+
def generate_manual(options={})
|
|
153
|
+
# todo: use pandoc or something else to convert the CLI-Manual.md to a man page
|
|
154
|
+
# and install it, so the os command `man mtncloud` will work too.
|
|
155
|
+
fn = MtnCloud::Cli::ManCommand.man_file_path
|
|
156
|
+
if options[:outfile]
|
|
157
|
+
fn = File.expand_path(options[:outfile])
|
|
158
|
+
if File.exist?(fn) && options[:overwrite] != true
|
|
159
|
+
print_error "#{red}Output file '#{options[:outfile]}' already exists.#{reset}\n"
|
|
160
|
+
print_error "#{red}Use --overwrite to overwrite the existing file.#{reset}\n"
|
|
161
|
+
return 1, "output file already exists"
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
if !Dir.exist?(File.dirname(fn))
|
|
165
|
+
FileUtils.mkdir_p(File.dirname(fn))
|
|
166
|
+
end
|
|
167
|
+
MtnCloud::Logging::DarkPrinter.puts "generating manual #{fn}" if MtnCloud::Logging.debug? && !options[:quiet]
|
|
168
|
+
|
|
169
|
+
File.open(fn, 'w') {|f| f.write("") } # clear file
|
|
170
|
+
FileUtils.chmod(0600, fn)
|
|
171
|
+
|
|
172
|
+
manpage = File.new(fn, 'w')
|
|
173
|
+
# previous_stdout = $stdout
|
|
174
|
+
# previous_stdout = STDOUT
|
|
175
|
+
# $stdout = manpage
|
|
176
|
+
begin
|
|
177
|
+
|
|
178
|
+
manpage.print <<-ENDTEXT
|
|
179
|
+
#{prog_name} v#{MtnCloud::Cli::VERSION}
|
|
180
|
+
|
|
181
|
+
## NAME
|
|
182
|
+
|
|
183
|
+
mtncloud - the command line interface for MTN Cloud
|
|
184
|
+
|
|
185
|
+
mcs is a short alias for mtncloud. Both commands run the same CLI.
|
|
186
|
+
|
|
187
|
+
## SYNOPSIS
|
|
188
|
+
|
|
189
|
+
mtncloud [command] [<args>] [options]
|
|
190
|
+
mcs [command] [<args>] [options]
|
|
191
|
+
|
|
192
|
+
## DESCRIPTION
|
|
193
|
+
|
|
194
|
+
MTN Cloud CLI
|
|
195
|
+
|
|
196
|
+
This is a command line interface for managing MTN Cloud.
|
|
197
|
+
All communication with the remote appliance is done via the MTN Cloud API.
|
|
198
|
+
|
|
199
|
+
Use the command `#{prog_name} remote add` to connect to MTN Cloud.
|
|
200
|
+
|
|
201
|
+
## GLOBAL OPTIONS
|
|
202
|
+
|
|
203
|
+
There are several global options available.
|
|
204
|
+
|
|
205
|
+
-v, --version Print the version.
|
|
206
|
+
--noprofile Do not read and execute the personal initialization script .mtncloud_profile
|
|
207
|
+
-C, --nocolor Disable ANSI coloring
|
|
208
|
+
-V, --debug Print extra output for debugging.
|
|
209
|
+
-h, --help Print this help
|
|
210
|
+
|
|
211
|
+
## COMMON OPTIONS
|
|
212
|
+
|
|
213
|
+
There are many common options that are supported by a most commands.
|
|
214
|
+
|
|
215
|
+
-O, --option OPTION Option value in the format -O var="value" (deprecated soon in favor of first class options)
|
|
216
|
+
-N, --no-prompt Skip prompts. Use default values for all optional fields.
|
|
217
|
+
--payload FILE Payload from a local JSON or YAML file, skip all prompting
|
|
218
|
+
--payload-dir DIRECTORY Payload from a local directory containing 1-N JSON or YAML files, skip all prompting
|
|
219
|
+
--payload-json JSON Payload JSON, skip all prompting
|
|
220
|
+
--payload-yaml YAML Payload YAML, skip all prompting
|
|
221
|
+
-j, --json JSON Output
|
|
222
|
+
-d, --dry-run Dry Run, print the API request instead of executing it
|
|
223
|
+
--curl Dry Run to output API request as a curl command.
|
|
224
|
+
--scrub Mask secrets in output, such as the Authorization header. For use with --curl and --dry-run.
|
|
225
|
+
-r, --remote REMOTE Remote name. The current remote is used by default.
|
|
226
|
+
--remote-url URL Remote url. This allows adhoc requests instead of using a configured remote.
|
|
227
|
+
-T, --token TOKEN Access token for authentication with --remote. Saved credentials are used by default.
|
|
228
|
+
-U, --username USERNAME Username for authentication.
|
|
229
|
+
-P, --password PASSWORD Password for authentication.
|
|
230
|
+
-I, --insecure Allow insecure HTTPS communication. i.e. bad SSL certificate.
|
|
231
|
+
-H, --header HEADER Additional HTTP header to include with requests.
|
|
232
|
+
--timeout SECONDS Timeout for api requests. Default is typically 30 seconds.
|
|
233
|
+
-y, --yes Auto Confirm
|
|
234
|
+
-q, --quiet No Output, do not print to stdout
|
|
235
|
+
|
|
236
|
+
## COMMANDS
|
|
237
|
+
|
|
238
|
+
The mtncloud executable is divided into commands.
|
|
239
|
+
Each command may have 0-N sub-commands that it supports.
|
|
240
|
+
Commands generally map to the functionality provided in the MTN Cloud UI.
|
|
241
|
+
|
|
242
|
+
You can get help for any command by using the -h option.
|
|
243
|
+
|
|
244
|
+
The available commands and their options are documented below.
|
|
245
|
+
ENDTEXT
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
#terminal = MtnCloud::Terminal.new($stdin, manpage)
|
|
249
|
+
terminal = my_terminal
|
|
250
|
+
terminal.with_stdout(manpage) do
|
|
251
|
+
|
|
252
|
+
MtnCloud::Logging::DarkPrinter.puts "appending command help `#{prog_name} --help`" if MtnCloud::Logging.debug? && !options[:quiet]
|
|
253
|
+
|
|
254
|
+
manpage.print "\n"
|
|
255
|
+
manpage.print "## #{prog_name}\n"
|
|
256
|
+
manpage.print "\n"
|
|
257
|
+
manpage.print "```\n"
|
|
258
|
+
exit_code, err = terminal.execute("--help")
|
|
259
|
+
manpage.print "```\n"
|
|
260
|
+
manpage.print "\n"
|
|
261
|
+
# output help for every command (that is not hidden)
|
|
262
|
+
MtnCloud::Cli::CliRegistry.all.keys.sort.each do |cmd|
|
|
263
|
+
cmd_klass = MtnCloud::Cli::CliRegistry.instance.get(cmd)
|
|
264
|
+
cmd_instance = cmd_klass.new
|
|
265
|
+
MtnCloud::Logging::DarkPrinter.puts "appending command help `#{prog_name} #{cmd} --help`" if MtnCloud::Logging.debug? && !options[:quiet]
|
|
266
|
+
#help_cmd = "mtncloud #{cmd} --help"
|
|
267
|
+
#help_output = `#{help_cmd}`
|
|
268
|
+
manpage.print "\n"
|
|
269
|
+
manpage.print "### #{prog_name} #{cmd}\n"
|
|
270
|
+
manpage.print "\n"
|
|
271
|
+
manpage.print "```\n"
|
|
272
|
+
begin
|
|
273
|
+
cmd_instance.handle(["--help"])
|
|
274
|
+
rescue SystemExit => err
|
|
275
|
+
raise err unless err.success?
|
|
276
|
+
end
|
|
277
|
+
manpage.print "```\n"
|
|
278
|
+
# subcommands = cmd_klass.subcommands
|
|
279
|
+
subcommands = cmd_klass.visible_subcommands
|
|
280
|
+
if subcommands && subcommands.size > 0
|
|
281
|
+
subcommands.sort.each do |subcommand, subcommand_method|
|
|
282
|
+
MtnCloud::Logging::DarkPrinter.puts "appending command help `#{prog_name} #{cmd} #{subcommand} --help`" if MtnCloud::Logging.debug? && !options[:quiet]
|
|
283
|
+
manpage.print "\n"
|
|
284
|
+
manpage.print "#### #{prog_name} #{cmd} #{subcommand}\n"
|
|
285
|
+
manpage.print "\n"
|
|
286
|
+
manpage.print "```\n"
|
|
287
|
+
begin
|
|
288
|
+
cmd_instance.handle([subcommand, "--help"])
|
|
289
|
+
rescue SystemExit => err
|
|
290
|
+
raise err unless err.success?
|
|
291
|
+
end
|
|
292
|
+
manpage.print "```\n"
|
|
293
|
+
# manpage.print "\n"
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
manpage.print "\n"
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
manpage.print <<-ENDTEXT
|
|
300
|
+
|
|
301
|
+
## ENVIRONMENT VARIABLES
|
|
302
|
+
|
|
303
|
+
### MTNCLOUD_CLI_HOME
|
|
304
|
+
|
|
305
|
+
The **MTNCLOUD_CLI_HOME** variable is where mtncloud stores its configuration files.
|
|
306
|
+
This can be set to allow a single system user to maintain many different configurations.
|
|
307
|
+
If the directory does not exist, mtncloud will attempt to create it.
|
|
308
|
+
|
|
309
|
+
The default home directory is **$HOME/.mtncloud**
|
|
310
|
+
|
|
311
|
+
To see how this works, run the following:
|
|
312
|
+
|
|
313
|
+
```shell
|
|
314
|
+
MTNCLOUD_CLI_HOME=~/.mtncloud_test mtncloud shell
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Now, in your new mtncloud shell, you can see that it is a fresh environment.
|
|
318
|
+
There are no remotes configured.
|
|
319
|
+
|
|
320
|
+
```shell
|
|
321
|
+
mtncloud> remote list
|
|
322
|
+
No remote appliances configured. See the command `remote add`.
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
You can use this to create isolated environments (sandboxes), within which to execute your mtncloud commands.
|
|
326
|
+
|
|
327
|
+
```shell
|
|
328
|
+
export MTNCLOUD_CLI_HOME=~/mtncloud_test
|
|
329
|
+
mtncloud remote add demo https://console.cloud.mtn.ng
|
|
330
|
+
mtncloud instances list
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
mtncloud saves the remote appliance information, including API access tokens,
|
|
334
|
+
to the CLI home directory. These files are saved with file permissions **0600**.
|
|
335
|
+
So, only one system user should be allowed to execute mtncloud with that home directory.
|
|
336
|
+
See [Configuration](#Configuration) for more information on the files mtncloud reads and writes.
|
|
337
|
+
|
|
338
|
+
## CONFIGURATION
|
|
339
|
+
|
|
340
|
+
mtncloud reads and writes several configuration files within the $MTNCLOUD_CLI_HOME directory.
|
|
341
|
+
|
|
342
|
+
**Note:** These files are maintained by the program. It is not recommended for you to manipulate them.
|
|
343
|
+
|
|
344
|
+
### appliances file
|
|
345
|
+
|
|
346
|
+
The `appliances` YAML file contains a list of known appliances, keyed by name.
|
|
347
|
+
|
|
348
|
+
Example:
|
|
349
|
+
```yaml
|
|
350
|
+
:mtncloud:
|
|
351
|
+
:url: https://console.cloud.mtn.ng
|
|
352
|
+
:test:
|
|
353
|
+
:url: https://test.example.com
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### credentials file
|
|
357
|
+
|
|
358
|
+
The `.mtncloud/credentials` YAML file contains access tokens for each known appliance.
|
|
359
|
+
|
|
360
|
+
### groups file
|
|
361
|
+
|
|
362
|
+
The `.mtncloud/groups` YAML file contains the active group information for each known appliance.
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
## Startup scripts
|
|
366
|
+
|
|
367
|
+
When mtncloud starts, it executes the commands in a couple of dot files.
|
|
368
|
+
|
|
369
|
+
These scripts are written in mtncloud commands, not bash, so they can only execute mtncloud commands and aliases.
|
|
370
|
+
|
|
371
|
+
### .mtncloud_profile file
|
|
372
|
+
|
|
373
|
+
It looks for `$MTNCLOUD_CLI_HOME/.mtncloud_profile`, and reads and executes it (if it exists).
|
|
374
|
+
|
|
375
|
+
This may be inhibited by using the `--noprofile` option.
|
|
376
|
+
|
|
377
|
+
### .mtncloudrc file
|
|
378
|
+
|
|
379
|
+
When started as an interactive shell with the `#{prog_name} shell` command,
|
|
380
|
+
mtncloud reads and executes `$MTNCLOUD_CLI_HOME/.mtncloudrc` (if it exists). This may be inhibited by using the `--norc` option.
|
|
381
|
+
|
|
382
|
+
An example startup script might look like this:
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
# .mtncloudrc
|
|
386
|
+
|
|
387
|
+
set-prompt "%cyan%username%reset@%magenta%remote %cyanmtncloud> %reset"
|
|
388
|
+
version
|
|
389
|
+
remote current
|
|
390
|
+
echo "Welcome back %username"
|
|
391
|
+
echo
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
ENDTEXT
|
|
396
|
+
|
|
397
|
+
end # end with_stdout(manpage)
|
|
398
|
+
|
|
399
|
+
ensure
|
|
400
|
+
manpage.close if manpage
|
|
401
|
+
# $stdout = previous_stdout if previous_stdout
|
|
402
|
+
# this is needed to re-establish instance with STDOUT, STDIN
|
|
403
|
+
#terminal = MtnCloud::Terminal.new()
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
return 0, nil
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
end
|