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,286 @@
|
|
|
1
|
+
require 'mtncloud/cli/mixins/print_helper'
|
|
2
|
+
|
|
3
|
+
# Mixin for MtnCloud::Cli command classes
|
|
4
|
+
# Provides common methods for viewing process history
|
|
5
|
+
module MtnCloud::Cli::ProcessesHelper
|
|
6
|
+
|
|
7
|
+
def self.included(klass)
|
|
8
|
+
klass.send :include, MtnCloud::Cli::PrintHelper
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def api_client
|
|
12
|
+
raise "#{self.class} has not defined @api_client" if @api_client.nil?
|
|
13
|
+
@api_client
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def processes_interface
|
|
17
|
+
# get_interface('processes')
|
|
18
|
+
api_client.processes
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def print_process_details(process, options={})
|
|
22
|
+
description_cols = {
|
|
23
|
+
"Process ID" => lambda {|it| it['id'] },
|
|
24
|
+
"Name" => lambda {|it| it['displayName'] },
|
|
25
|
+
"Description" => lambda {|it| it['description'] },
|
|
26
|
+
"Process Type" => lambda {|it| it['processType'] ? (it['processType']['name'] || it['processType']['code']) : it['processTypeName'] },
|
|
27
|
+
"Created By" => lambda {|it| it['createdBy'] ? (it['createdBy']['displayName'] || it['createdBy']['username']) : '' },
|
|
28
|
+
"Start Date" => lambda {|it| format_local_dt(it['startDate']) },
|
|
29
|
+
"End Date" => lambda {|it| format_local_dt(it['endDate']) },
|
|
30
|
+
"Duration" => lambda {|it| format_process_duration(it) },
|
|
31
|
+
}
|
|
32
|
+
if process['message'].to_s.strip != ''
|
|
33
|
+
description_cols.merge!({ "Message" => lambda {|it| it['message']}
|
|
34
|
+
})
|
|
35
|
+
end
|
|
36
|
+
description_cols.merge!({
|
|
37
|
+
"Status" => lambda {|it| format_process_status(it) },
|
|
38
|
+
# "# Events" => lambda {|it| (it['events'] || []).size() },
|
|
39
|
+
})
|
|
40
|
+
print_description_list(description_cols, process, options)
|
|
41
|
+
|
|
42
|
+
if process['error']
|
|
43
|
+
print_h2 "Error"
|
|
44
|
+
print reset
|
|
45
|
+
#puts format_process_error(process_event)
|
|
46
|
+
puts process['error'].to_s.strip
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
if process['output']
|
|
50
|
+
print_h2 "Output"
|
|
51
|
+
print reset
|
|
52
|
+
#puts format_process_error(process_event)
|
|
53
|
+
puts process['output'].to_s.strip
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def print_process_event_details(process_event, options={})
|
|
58
|
+
# process_event =~ process
|
|
59
|
+
description_cols = {
|
|
60
|
+
"Process ID" => lambda {|it| it['processId'] },
|
|
61
|
+
"Event ID" => lambda {|it| it['id'] },
|
|
62
|
+
"Name" => lambda {|it| it['displayName'] },
|
|
63
|
+
"Description" => lambda {|it| it['description'] },
|
|
64
|
+
"Process Type" => lambda {|it| it['processType'] ? (it['processType']['name'] || it['processType']['code']) : it['processTypeName'] },
|
|
65
|
+
"Created By" => lambda {|it| it['createdBy'] ? (it['createdBy']['displayName'] || it['createdBy']['username']) : '' },
|
|
66
|
+
"Start Date" => lambda {|it| format_local_dt(it['startDate']) },
|
|
67
|
+
"End Date" => lambda {|it| format_local_dt(it['endDate']) },
|
|
68
|
+
"Duration" => lambda {|it| format_process_duration(it) },
|
|
69
|
+
"Status" => lambda {|it| format_process_status(it) },
|
|
70
|
+
}
|
|
71
|
+
print_description_list(description_cols, process_event, options)
|
|
72
|
+
|
|
73
|
+
if process_event['error']
|
|
74
|
+
print_h2 "Error"
|
|
75
|
+
print reset
|
|
76
|
+
#puts format_process_error(process_event)
|
|
77
|
+
puts process_event['error'].to_s.strip
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
if process_event['output']
|
|
81
|
+
print_h2 "Output"
|
|
82
|
+
print reset
|
|
83
|
+
#puts format_process_error(process_event)
|
|
84
|
+
puts process_event['output'].to_s.strip
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def format_process_status(process, return_color=cyan)
|
|
90
|
+
out = ""
|
|
91
|
+
status_string = process['status'].to_s
|
|
92
|
+
if status_string == 'complete'
|
|
93
|
+
out << "#{green}#{status_string.upcase}#{return_color}"
|
|
94
|
+
elsif status_string == 'failed'
|
|
95
|
+
out << "#{red}#{status_string.upcase}#{return_color}"
|
|
96
|
+
elsif status_string == 'expired'
|
|
97
|
+
out << "#{red}#{status_string.upcase}#{return_color}"
|
|
98
|
+
else
|
|
99
|
+
out << "#{cyan}#{status_string.upcase}#{return_color}"
|
|
100
|
+
end
|
|
101
|
+
out
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# decolorize, remove newlines and truncate for table cell
|
|
105
|
+
def format_process_error(process, max_length=20, return_color=cyan)
|
|
106
|
+
truncate_string(process['error'].to_s.strip.gsub("\n", " "), max_length)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# decolorize, remove newlines and truncate for table cell
|
|
110
|
+
def format_process_output(process, max_length=20, return_color=cyan)
|
|
111
|
+
truncate_string(process['output'].to_s.strip.gsub("\n", " "), max_length)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# format for either ETA/Duration
|
|
115
|
+
def format_process_duration(process, time_format="%H:%M:%S")
|
|
116
|
+
out = ""
|
|
117
|
+
if process['duration'] && process['duration'] > 0
|
|
118
|
+
out = format_duration_milliseconds(process['duration'], time_format)
|
|
119
|
+
elsif process['statusEta'] && process['statusEta'] > 0
|
|
120
|
+
out = format_duration_milliseconds(process['statusEta'], time_format)
|
|
121
|
+
elsif process['startDate'] && process['endDate']
|
|
122
|
+
out = format_duration(process['startDate'], process['endDate'], time_format)
|
|
123
|
+
else
|
|
124
|
+
""
|
|
125
|
+
end
|
|
126
|
+
out
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def wait_for_process_execution(process_id, options={}, print_output = true)
|
|
130
|
+
refresh_interval = 10
|
|
131
|
+
if options[:refresh_interval].to_i > 0
|
|
132
|
+
refresh_interval = options[:refresh_interval]
|
|
133
|
+
end
|
|
134
|
+
refresh_display_seconds = refresh_interval % 1.0 == 0 ? refresh_interval.to_i : refresh_interval
|
|
135
|
+
unless options[:quiet]
|
|
136
|
+
print cyan, "Refreshing every #{refresh_display_seconds} seconds until process is complete...", "\n", reset
|
|
137
|
+
end
|
|
138
|
+
process = processes_interface.get(process_id)['process']
|
|
139
|
+
while ['new','queued','pending','running'].include?(process['status']) do
|
|
140
|
+
sleep(refresh_interval)
|
|
141
|
+
process = processes_interface.get(process_id)['process']
|
|
142
|
+
end
|
|
143
|
+
if print_output && options[:quiet] != true
|
|
144
|
+
print_h1 "Process Details", [], options
|
|
145
|
+
print_process_details(process, options)
|
|
146
|
+
end
|
|
147
|
+
return process
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def handle_history_command(args, arg_name, label, ref_type, &block)
|
|
151
|
+
raw_args = args.dup
|
|
152
|
+
options = {}
|
|
153
|
+
#options[:show_output] = true
|
|
154
|
+
optparse = MtnCloud::Cli::OptionParser.new do |opts|
|
|
155
|
+
opts.banner = "Usage: #{prog_name} #{command_name} history [#{arg_name}]"
|
|
156
|
+
opts.on( nil, '--events', "Display sub processes (events)." ) do
|
|
157
|
+
options[:show_events] = true
|
|
158
|
+
end
|
|
159
|
+
opts.on( nil, '--output', "Display process output." ) do
|
|
160
|
+
options[:show_output] = true
|
|
161
|
+
end
|
|
162
|
+
opts.on('--details', "Display more details: memory and storage usage used / max values." ) do
|
|
163
|
+
options[:show_events] = true
|
|
164
|
+
options[:show_output] = true
|
|
165
|
+
options[:details] = true
|
|
166
|
+
end
|
|
167
|
+
# opts.on('--process-id ID', String, "Display details about a specfic process only." ) do |val|
|
|
168
|
+
# options[:process_id] = val
|
|
169
|
+
# end
|
|
170
|
+
# opts.on('--event-id ID', String, "Display details about a specfic process event only." ) do |val|
|
|
171
|
+
# options[:event_id] = val
|
|
172
|
+
# end
|
|
173
|
+
build_standard_list_options(opts, options)
|
|
174
|
+
opts.footer = "List historical processes for a specific #{label}.\n" +
|
|
175
|
+
"[#{arg_name}] is required. This is the name or id of an #{label}."
|
|
176
|
+
end
|
|
177
|
+
optparse.parse!(args)
|
|
178
|
+
|
|
179
|
+
# shortcut to other actions
|
|
180
|
+
# if options[:process_id]
|
|
181
|
+
# return history_details(raw_args)
|
|
182
|
+
# elsif options[:event_id]
|
|
183
|
+
# return history_event_details(raw_args)
|
|
184
|
+
# end
|
|
185
|
+
|
|
186
|
+
verify_args!(args:args, optparse:optparse, count:1)
|
|
187
|
+
connect(options)
|
|
188
|
+
|
|
189
|
+
record = block.call(args[0])
|
|
190
|
+
# block should raise_command_error if not found
|
|
191
|
+
if record.nil?
|
|
192
|
+
raise_command_error "#{label} not found for name or id '#{args[0]}'"
|
|
193
|
+
end
|
|
194
|
+
params = {}
|
|
195
|
+
params.merge!(parse_list_options(options))
|
|
196
|
+
# params['query'] = params.delete('phrase') if params['phrase']
|
|
197
|
+
params['refType'] = ref_type
|
|
198
|
+
params['refId'] = record['id']
|
|
199
|
+
@processes_interface.setopts(options)
|
|
200
|
+
if options[:dry_run]
|
|
201
|
+
print_dry_run @processes_interface.dry.list(params)
|
|
202
|
+
return
|
|
203
|
+
end
|
|
204
|
+
json_response = @processes_interface.list(params)
|
|
205
|
+
render_response(json_response, options, "processes") do
|
|
206
|
+
title = "#{label} History: #{record['name'] || record['id']}"
|
|
207
|
+
subtitles = parse_list_subtitles(options)
|
|
208
|
+
print_h1 title, subtitles, options
|
|
209
|
+
processes = json_response['processes']
|
|
210
|
+
if processes.empty?
|
|
211
|
+
print "#{cyan}No process history found.#{reset}\n\n"
|
|
212
|
+
else
|
|
213
|
+
history_records = []
|
|
214
|
+
processes.each do |process|
|
|
215
|
+
row = {
|
|
216
|
+
id: process['id'],
|
|
217
|
+
eventId: nil,
|
|
218
|
+
uniqueId: process['uniqueId'],
|
|
219
|
+
name: process['displayName'],
|
|
220
|
+
description: process['description'],
|
|
221
|
+
processType: process['processType'] ? (process['processType']['name'] || process['processType']['code']) : process['processTypeName'],
|
|
222
|
+
createdBy: process['createdBy'] ? (process['createdBy']['displayName'] || process['createdBy']['username']) : '',
|
|
223
|
+
startDate: format_local_dt(process['startDate']),
|
|
224
|
+
duration: format_process_duration(process),
|
|
225
|
+
status: format_process_status(process),
|
|
226
|
+
error: format_process_error(process, options[:details] ? nil : 20),
|
|
227
|
+
output: format_process_output(process, options[:details] ? nil : 20)
|
|
228
|
+
}
|
|
229
|
+
history_records << row
|
|
230
|
+
process_events = process['events'] || process['processEvents']
|
|
231
|
+
if options[:show_events]
|
|
232
|
+
if process_events
|
|
233
|
+
process_events.each do |process_event|
|
|
234
|
+
event_row = {
|
|
235
|
+
id: process['id'],
|
|
236
|
+
eventId: process_event['id'],
|
|
237
|
+
uniqueId: process_event['uniqueId'],
|
|
238
|
+
name: process_event['displayName'], # blank like the UI
|
|
239
|
+
description: process_event['description'],
|
|
240
|
+
processType: process_event['processType'] ? (process_event['processType']['name'] || process_event['processType']['code']) : process['processTypeName'],
|
|
241
|
+
createdBy: process_event['createdBy'] ? (process_event['createdBy']['displayName'] || process_event['createdBy']['username']) : '',
|
|
242
|
+
startDate: format_local_dt(process_event['startDate']),
|
|
243
|
+
duration: format_process_duration(process_event),
|
|
244
|
+
status: format_process_status(process_event),
|
|
245
|
+
error: format_process_error(process_event, options[:details] ? nil : 20),
|
|
246
|
+
output: format_process_output(process_event, options[:details] ? nil : 20)
|
|
247
|
+
}
|
|
248
|
+
history_records << event_row
|
|
249
|
+
end
|
|
250
|
+
else
|
|
251
|
+
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
columns = [
|
|
256
|
+
{:id => {:display_name => "PROCESS ID"} },
|
|
257
|
+
:name,
|
|
258
|
+
:description,
|
|
259
|
+
{:processType => {:display_name => "PROCESS TYPE"} },
|
|
260
|
+
{:createdBy => {:display_name => "CREATED BY"} },
|
|
261
|
+
{:startDate => {:display_name => "START DATE"} },
|
|
262
|
+
{:duration => {:display_name => "ETA/DURATION"} },
|
|
263
|
+
:status,
|
|
264
|
+
:error
|
|
265
|
+
]
|
|
266
|
+
if options[:show_events]
|
|
267
|
+
columns.insert(1, {:eventId => {:display_name => "EVENT ID"} })
|
|
268
|
+
end
|
|
269
|
+
if options[:show_output]
|
|
270
|
+
columns << :output
|
|
271
|
+
end
|
|
272
|
+
# custom pretty table columns ...
|
|
273
|
+
if options[:include_fields]
|
|
274
|
+
columns = options[:include_fields]
|
|
275
|
+
end
|
|
276
|
+
print cyan
|
|
277
|
+
print as_pretty_table(history_records, columns, options)
|
|
278
|
+
#print_results_pagination(json_response)
|
|
279
|
+
print_results_pagination(json_response, {:label => "process", :n_label => "processes"})
|
|
280
|
+
print reset, "\n"
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
return 0, nil
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
require 'mtncloud/cli/option_types'
|
|
2
|
+
|
|
3
|
+
# Mixin for MtnCloud::Cli command classes
|
|
4
|
+
# Provides common methods for prompting for option type inputs and forms.
|
|
5
|
+
# Prompting is delegated to the {MtnCloud::Cli::OptionTypes} module
|
|
6
|
+
# while the provided {#prompt} simplifies the required parameters
|
|
7
|
+
# The command class must establish the +@api_client+ on its own.
|
|
8
|
+
#
|
|
9
|
+
module MtnCloud::Cli::PromptHelper
|
|
10
|
+
|
|
11
|
+
# Prompt for a list of inputs (OptionType) and return a Hash containing
|
|
12
|
+
# all of the provides values. The user is prompted to provide a value
|
|
13
|
+
# for each input, unless the value is already set in the options.
|
|
14
|
+
# @param [Array, Hash] option_types the list of OptionType inputs with fieldName, fieldLabel, etc.
|
|
15
|
+
# A single option type Hash can be passed instead.
|
|
16
|
+
# @param [Hash] options the standard command options
|
|
17
|
+
# This map is a mixture of keys that are Symbols that provide some common
|
|
18
|
+
# functionality like :no_prompt, :context_map, etc.
|
|
19
|
+
# Any keys that are Strings get used to lookup input values, along with
|
|
20
|
+
# +options[:options]+ and +options[:params]+.
|
|
21
|
+
# The precedence for providing option values is as follows:
|
|
22
|
+
# 1. options['foo'] 2. options[:params]['foo'] 3. options[:options]['foo'] 4. User is prompted.
|
|
23
|
+
# @option options [Hash] :options map of values provided by the user via the generic -O OPTIONS switch, gets merged into the context used for providing input values
|
|
24
|
+
# @option options [Hash] :params map of additional values provided by the user via explicite options, gets merged into the context used for providing input values
|
|
25
|
+
# @option options [Hash] :no_prompt supresses prompting, use default values and error if a required input is not provided. Default is of course +false+.
|
|
26
|
+
# @option options [Hash] :context_map Can to change the fieldContext of the option_types, eg. :context_map => {'networkDhcpRelay' => ''}
|
|
27
|
+
# @option options [APIClient] :api_client The {APIClient} to use for option types that request api calls. Default is the @api_client established by the class
|
|
28
|
+
# @option options [Hash] :api_params Optional map of parameters to include in API request for select option types
|
|
29
|
+
# @option options [Boolean] :paging_enabled Enable paging if there are a lot of available options to display. Default is +false+.
|
|
30
|
+
# @option options [Boolean] :ignore_empty Ignore inputs that have no options, this can be used to allow prompting to continue without error if a select input has no options.
|
|
31
|
+
# @option options [Boolean] :skip_sort Do not sort the inputs by displayOrder, assume they are already sorted. Default is +true+.
|
|
32
|
+
# @return [Hash] containing the values provided for each option type, the key is the input fieldName
|
|
33
|
+
#
|
|
34
|
+
# @example Prompt for name
|
|
35
|
+
#
|
|
36
|
+
# results = prompt([{'fieldName' => 'name', 'fieldLabel' => 'Name', 'type' => 'text', 'required' => true}], options)
|
|
37
|
+
# puts "Name: #{results['name']}"
|
|
38
|
+
#
|
|
39
|
+
def prompt(option_types, options={})
|
|
40
|
+
# option types can be passed as a single input instead of an array
|
|
41
|
+
option_types = option_types.is_a?(Hash) ? [option_types] : option_types #Array(option_types)
|
|
42
|
+
# construct options parameter for MtnCloud::Cli::OptionTypes.prompt
|
|
43
|
+
options = construct_prompt_options(options)
|
|
44
|
+
# by default the @api_client established by the command is used
|
|
45
|
+
api_client = options.key?(:api_client) ? options[:api_client] : @api_client
|
|
46
|
+
api_params = options.key?(:api_params) ? options[:api_params] : {}
|
|
47
|
+
no_prompt = options.key?(:no_prompt) ? options[:no_prompt] : false
|
|
48
|
+
paging_enabled = options.key?(:paging_enabled) ? options[:paging_enabled] : true
|
|
49
|
+
ignore_empty = options.key?(:ignore_empty) ? options[:ignore_empty] : false
|
|
50
|
+
# Defaulting skip_sort to true which is the opposite of OptionTypes.prompt()
|
|
51
|
+
# The API handles sorting most of the time now, calling function can sort before prompting if needed
|
|
52
|
+
# maybe switch this later if needed, removing skip_sort would be nice though...
|
|
53
|
+
skip_sort = options.key?(:skip_sort) ? options[:skip_sort] : true
|
|
54
|
+
results = MtnCloud::Cli::OptionTypes.prompt(option_types, options, api_client, api_params, no_prompt, paging_enabled, ignore_empty, skip_sort)
|
|
55
|
+
# trying to get rid of the need to do these compact and booleanize calls..
|
|
56
|
+
# for now you can use options.merge({compact: true,booleanize: true}) or modify the results yourself
|
|
57
|
+
results.deep_compact! if options[:compact]
|
|
58
|
+
results.booleanize! if options[:booleanize] # 'on' => true
|
|
59
|
+
return results
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Process 1-N inputs (OptionType) in a special 'edit mode' that supresses user interaction.
|
|
63
|
+
# This is used by +update+ commands where we want to process option types
|
|
64
|
+
# without prompting the user so that the results only contains values that are passed in explicitely as options and default values are not used.
|
|
65
|
+
# @see {#prompt} method for details on the supported options
|
|
66
|
+
#
|
|
67
|
+
def no_prompt(option_types, options={})
|
|
68
|
+
options = options.merge({:edit_mode => true, :no_prompt => true})
|
|
69
|
+
options.delete(:no_prompt) if options[:always_prompt] # --prompt to always prompt
|
|
70
|
+
return prompt(option_types, options)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Prompt for a single input and return only the value
|
|
74
|
+
# @param [Hash] option_type the OptionType input record to prompt for, contains fieldName, fieldLabel, etc.
|
|
75
|
+
# @param [Hash] options the standard command options
|
|
76
|
+
# @see {#prompt} method for details on the supported options
|
|
77
|
+
# @return [String, Number, Hash, Array, nil] value provided by the options or user input, usually a string or a number or nil if no value is provided.
|
|
78
|
+
#
|
|
79
|
+
# @example Prompt for name value
|
|
80
|
+
#
|
|
81
|
+
# chosen_name = prompt_value({'fieldName' => 'name', 'fieldLabel' => 'Name', 'type' => 'text', 'required' => true}, options)
|
|
82
|
+
# puts "Chosen Name: #{chosen_name}"
|
|
83
|
+
#
|
|
84
|
+
def prompt_value(option_type, options={})
|
|
85
|
+
# this does not need with fieldContext, so get rid of it
|
|
86
|
+
# option_types = [option_type.merge({'fieldContext' => nil})]
|
|
87
|
+
# results = prompt(Array(option_type), options)
|
|
88
|
+
# return results[option_type['fieldName']]
|
|
89
|
+
|
|
90
|
+
# this works with fieldContext now, hooray
|
|
91
|
+
# use get_object_value() to traverse object to get the value
|
|
92
|
+
option_types = [option_type] # Array(option_type)
|
|
93
|
+
results = prompt(option_types, options)
|
|
94
|
+
return get_option_type_value(results, option_types.first)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Process inputs of a form, prompting for its options and field groups
|
|
98
|
+
# @param [Hash] form the OptionTypeForm to process
|
|
99
|
+
# @param [Hash] options the standard command options
|
|
100
|
+
# @see {#prompt} method for defailts on the supported options
|
|
101
|
+
# @return Hash containing the values provided for each option type, the key is the fieldName
|
|
102
|
+
#
|
|
103
|
+
def prompt_form(form, options={})
|
|
104
|
+
form_results = {}
|
|
105
|
+
results = prompt(Array(form['options']), options.merge(form_results))
|
|
106
|
+
form_results.deep_merge!(results)
|
|
107
|
+
# prompt for each field group, merging results into options context as we go
|
|
108
|
+
Array(form['fieldGroups']).each do |field_group|
|
|
109
|
+
# todo: look at isCollapsible, defaultCollapsed and visibleOnCode to see if the group should
|
|
110
|
+
# if collapsed then just use options.merge({:no_prompt => true}) and maybe need to set :required => false ?
|
|
111
|
+
results = prompt(field_group['options'], options.merge(form_results))
|
|
112
|
+
form_results.deep_merge!(results)
|
|
113
|
+
end
|
|
114
|
+
return form_results
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
protected
|
|
118
|
+
|
|
119
|
+
# construct options parameter for MtnCloud::Cli::OptionTypes.prompt
|
|
120
|
+
# This options Hash is a mixture of Symbols that provide some common functionality like :no_prompt, and :context_map, etc.
|
|
121
|
+
# String keys are used to lookup values being passed into the command in order to prevent prompting the user
|
|
122
|
+
# The precedence for providing option values is as follows:
|
|
123
|
+
# 1. options['foo'] 2. options[:params]['foo'] 3. options[:options]['foo']
|
|
124
|
+
#
|
|
125
|
+
def construct_prompt_options(options)
|
|
126
|
+
passed_options = Hash(options[:options]).select {|k,v| k.is_a?(String) }
|
|
127
|
+
params = Hash(options[:params]).select {|k,v| k.is_a?(String) }
|
|
128
|
+
return passed_options.deep_merge(params).deep_merge!(options)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def get_option_type_value(results, option_type)
|
|
132
|
+
field_key = [option_type['fieldContext'], option_type['fieldName']].select {|it| it && it != '' }.join('.')
|
|
133
|
+
get_object_value(results, field_key)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
end
|