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.
Files changed (499) hide show
  1. checksums.yaml +7 -0
  2. data/.dockerignore +20 -0
  3. data/.github/pull_request_template.md +14 -0
  4. data/.github/workflows/ci.yml +56 -0
  5. data/.github/workflows/release.yml +46 -0
  6. data/.gitignore +25 -0
  7. data/CLAUDE.md +24 -0
  8. data/CONTRIBUTING.md +91 -0
  9. data/Dockerfile +19 -0
  10. data/Gemfile +4 -0
  11. data/LICENSE.txt +23 -0
  12. data/README.md +187 -0
  13. data/Rakefile +26 -0
  14. data/bin/mcs +3 -0
  15. data/bin/mtncloud +27 -0
  16. data/lib/mtncloud/api/account_groups_interface.rb +48 -0
  17. data/lib/mtncloud/api/account_users_interface.rb +68 -0
  18. data/lib/mtncloud/api/accounts_interface.rb +9 -0
  19. data/lib/mtncloud/api/activity_interface.rb +9 -0
  20. data/lib/mtncloud/api/affinity_groups_interface.rb +46 -0
  21. data/lib/mtncloud/api/api_client.rb +1091 -0
  22. data/lib/mtncloud/api/appliance_settings_interface.rb +49 -0
  23. data/lib/mtncloud/api/approvals_interface.rb +32 -0
  24. data/lib/mtncloud/api/apps_interface.rb +180 -0
  25. data/lib/mtncloud/api/archive_buckets_interface.rb +116 -0
  26. data/lib/mtncloud/api/archive_files_interface.rb +173 -0
  27. data/lib/mtncloud/api/audit_interface.rb +9 -0
  28. data/lib/mtncloud/api/auth_interface.rb +58 -0
  29. data/lib/mtncloud/api/backup_jobs_interface.rb +13 -0
  30. data/lib/mtncloud/api/backup_restores_interface.rb +27 -0
  31. data/lib/mtncloud/api/backup_results_interface.rb +32 -0
  32. data/lib/mtncloud/api/backup_service_types_interface.rb +9 -0
  33. data/lib/mtncloud/api/backup_services_interface.rb +9 -0
  34. data/lib/mtncloud/api/backup_settings_interface.rb +20 -0
  35. data/lib/mtncloud/api/backup_types_interface.rb +9 -0
  36. data/lib/mtncloud/api/backups_interface.rb +21 -0
  37. data/lib/mtncloud/api/billing_interface.rb +34 -0
  38. data/lib/mtncloud/api/blueprints_interface.rb +70 -0
  39. data/lib/mtncloud/api/body_io.rb +22 -0
  40. data/lib/mtncloud/api/budgets_interface.rb +48 -0
  41. data/lib/mtncloud/api/catalog_item_types_interface.rb +29 -0
  42. data/lib/mtncloud/api/certificate_types_interface.rb +14 -0
  43. data/lib/mtncloud/api/certificates_interface.rb +9 -0
  44. data/lib/mtncloud/api/clients_interface.rb +41 -0
  45. data/lib/mtncloud/api/cloud_datastores_interface.rb +48 -0
  46. data/lib/mtncloud/api/cloud_folders_interface.rb +41 -0
  47. data/lib/mtncloud/api/cloud_policies_interface.rb +41 -0
  48. data/lib/mtncloud/api/cloud_resource_pools_interface.rb +66 -0
  49. data/lib/mtncloud/api/clouds_interface.rb +217 -0
  50. data/lib/mtncloud/api/clusters_interface.rb +471 -0
  51. data/lib/mtncloud/api/containers_interface.rb +145 -0
  52. data/lib/mtncloud/api/credential_types_interface.rb +9 -0
  53. data/lib/mtncloud/api/credentials_interface.rb +9 -0
  54. data/lib/mtncloud/api/custom_instance_types_interface.rb +99 -0
  55. data/lib/mtncloud/api/cypher_interface.rb +51 -0
  56. data/lib/mtncloud/api/dashboard_interface.rb +14 -0
  57. data/lib/mtncloud/api/datastores_interface.rb +21 -0
  58. data/lib/mtncloud/api/deploy_interface.rb +44 -0
  59. data/lib/mtncloud/api/deployments_interface.rb +79 -0
  60. data/lib/mtncloud/api/distributed_workers_interface.rb +41 -0
  61. data/lib/mtncloud/api/email_templates_interface.rb +53 -0
  62. data/lib/mtncloud/api/environments_interface.rb +48 -0
  63. data/lib/mtncloud/api/execute_schedules_interface.rb +71 -0
  64. data/lib/mtncloud/api/execution_request_interface.rb +27 -0
  65. data/lib/mtncloud/api/file_copy_request_interface.rb +68 -0
  66. data/lib/mtncloud/api/forgot_password_interface.rb +17 -0
  67. data/lib/mtncloud/api/group_policies_interface.rb +41 -0
  68. data/lib/mtncloud/api/groups_interface.rb +73 -0
  69. data/lib/mtncloud/api/guidance_interface.rb +44 -0
  70. data/lib/mtncloud/api/guidance_settings_interface.rb +17 -0
  71. data/lib/mtncloud/api/health_interface.rb +100 -0
  72. data/lib/mtncloud/api/host_vm_groups_interface.rb +37 -0
  73. data/lib/mtncloud/api/hub_interface.rb +25 -0
  74. data/lib/mtncloud/api/image_builder_boot_scripts_interface.rb +41 -0
  75. data/lib/mtncloud/api/image_builder_image_builds_interface.rb +73 -0
  76. data/lib/mtncloud/api/image_builder_interface.rb +20 -0
  77. data/lib/mtncloud/api/image_builder_preseed_scripts_interface.rb +41 -0
  78. data/lib/mtncloud/api/instance_types_interface.rb +20 -0
  79. data/lib/mtncloud/api/instances_interface.rb +453 -0
  80. data/lib/mtncloud/api/integration_types_interface.rb +14 -0
  81. data/lib/mtncloud/api/integrations_interface.rb +74 -0
  82. data/lib/mtncloud/api/invoice_line_items_interface.rb +9 -0
  83. data/lib/mtncloud/api/invoices_interface.rb +28 -0
  84. data/lib/mtncloud/api/jobs_interface.rb +83 -0
  85. data/lib/mtncloud/api/key_pairs_interface.rb +57 -0
  86. data/lib/mtncloud/api/library_cluster_layouts_interface.rb +47 -0
  87. data/lib/mtncloud/api/library_cluster_packages_interface.rb +60 -0
  88. data/lib/mtncloud/api/library_container_scripts_interface.rb +43 -0
  89. data/lib/mtncloud/api/library_container_templates_interface.rb +43 -0
  90. data/lib/mtncloud/api/library_container_types_interface.rb +59 -0
  91. data/lib/mtncloud/api/library_container_upgrades_interface.rb +60 -0
  92. data/lib/mtncloud/api/library_instance_types_interface.rb +74 -0
  93. data/lib/mtncloud/api/library_layouts_interface.rb +69 -0
  94. data/lib/mtncloud/api/library_operating_systems_interface.rb +63 -0
  95. data/lib/mtncloud/api/library_spec_template_types_interface.rb +43 -0
  96. data/lib/mtncloud/api/library_spec_templates_interface.rb +43 -0
  97. data/lib/mtncloud/api/license_interface.rb +30 -0
  98. data/lib/mtncloud/api/load_balancer_monitors_interface.rb +9 -0
  99. data/lib/mtncloud/api/load_balancer_pool_nodes_interface.rb +8 -0
  100. data/lib/mtncloud/api/load_balancer_pools_interface.rb +9 -0
  101. data/lib/mtncloud/api/load_balancer_pools_secondary_interface.rb +9 -0
  102. data/lib/mtncloud/api/load_balancer_profiles_interface.rb +9 -0
  103. data/lib/mtncloud/api/load_balancer_types_interface.rb +9 -0
  104. data/lib/mtncloud/api/load_balancer_virtual_servers_interface.rb +18 -0
  105. data/lib/mtncloud/api/load_balancers_interface.rb +14 -0
  106. data/lib/mtncloud/api/log_settings_interface.rb +44 -0
  107. data/lib/mtncloud/api/logs_interface.rb +37 -0
  108. data/lib/mtncloud/api/migrations_interface.rb +49 -0
  109. data/lib/mtncloud/api/monitoring_alerts_interface.rb +39 -0
  110. data/lib/mtncloud/api/monitoring_apps_interface.rb +69 -0
  111. data/lib/mtncloud/api/monitoring_checks_interface.rb +103 -0
  112. data/lib/mtncloud/api/monitoring_contacts_interface.rb +41 -0
  113. data/lib/mtncloud/api/monitoring_groups_interface.rb +77 -0
  114. data/lib/mtncloud/api/monitoring_incidents_interface.rb +107 -0
  115. data/lib/mtncloud/api/monitoring_interface.rb +35 -0
  116. data/lib/mtncloud/api/monitoring_settings_interface.rb +21 -0
  117. data/lib/mtncloud/api/network_dhcp_relays_interface.rb +36 -0
  118. data/lib/mtncloud/api/network_dhcp_servers_interface.rb +36 -0
  119. data/lib/mtncloud/api/network_domain_records_interface.rb +41 -0
  120. data/lib/mtncloud/api/network_domains_interface.rb +41 -0
  121. data/lib/mtncloud/api/network_edge_clusters_interface.rb +26 -0
  122. data/lib/mtncloud/api/network_floating_ips_interface.rb +40 -0
  123. data/lib/mtncloud/api/network_groups_interface.rb +41 -0
  124. data/lib/mtncloud/api/network_pool_ips_interface.rb +41 -0
  125. data/lib/mtncloud/api/network_pool_server_types_interface.rb +9 -0
  126. data/lib/mtncloud/api/network_pool_servers_interface.rb +48 -0
  127. data/lib/mtncloud/api/network_pools_interface.rb +41 -0
  128. data/lib/mtncloud/api/network_proxies_interface.rb +41 -0
  129. data/lib/mtncloud/api/network_routers_interface.rb +181 -0
  130. data/lib/mtncloud/api/network_security_server_types_interface.rb +9 -0
  131. data/lib/mtncloud/api/network_security_servers_interface.rb +27 -0
  132. data/lib/mtncloud/api/network_server_groups_interface.rb +7 -0
  133. data/lib/mtncloud/api/network_server_types_interface.rb +9 -0
  134. data/lib/mtncloud/api/network_servers_interface.rb +102 -0
  135. data/lib/mtncloud/api/network_services_interface.rb +63 -0
  136. data/lib/mtncloud/api/network_static_routes_interface.rb +36 -0
  137. data/lib/mtncloud/api/network_subnets_interface.rb +42 -0
  138. data/lib/mtncloud/api/network_types_interface.rb +20 -0
  139. data/lib/mtncloud/api/networks_interface.rb +48 -0
  140. data/lib/mtncloud/api/option_type_forms_interface.rb +9 -0
  141. data/lib/mtncloud/api/option_type_lists_interface.rb +53 -0
  142. data/lib/mtncloud/api/option_types_interface.rb +41 -0
  143. data/lib/mtncloud/api/options_interface.rb +17 -0
  144. data/lib/mtncloud/api/packages_interface.rb +112 -0
  145. data/lib/mtncloud/api/ping_interface.rb +22 -0
  146. data/lib/mtncloud/api/plugins_interface.rb +22 -0
  147. data/lib/mtncloud/api/policies_interface.rb +56 -0
  148. data/lib/mtncloud/api/power_schedules_interface.rb +71 -0
  149. data/lib/mtncloud/api/price_sets_interface.rb +39 -0
  150. data/lib/mtncloud/api/prices_interface.rb +71 -0
  151. data/lib/mtncloud/api/processes_interface.rb +40 -0
  152. data/lib/mtncloud/api/projects_interface.rb +33 -0
  153. data/lib/mtncloud/api/provision_types_interface.rb +24 -0
  154. data/lib/mtncloud/api/provisioning_license_types_interface.rb +31 -0
  155. data/lib/mtncloud/api/provisioning_licenses_interface.rb +60 -0
  156. data/lib/mtncloud/api/provisioning_settings_interface.rb +26 -0
  157. data/lib/mtncloud/api/read_interface.rb +24 -0
  158. data/lib/mtncloud/api/reports_interface.rb +70 -0
  159. data/lib/mtncloud/api/resource_pool_groups_interface.rb +51 -0
  160. data/lib/mtncloud/api/rest_interface.rb +37 -0
  161. data/lib/mtncloud/api/roles_interface.rb +151 -0
  162. data/lib/mtncloud/api/scale_thresholds_interface.rb +9 -0
  163. data/lib/mtncloud/api/search_interface.rb +13 -0
  164. data/lib/mtncloud/api/secondary_read_interface.rb +25 -0
  165. data/lib/mtncloud/api/secondary_rest_interface.rb +42 -0
  166. data/lib/mtncloud/api/security_group_rules_interface.rb +35 -0
  167. data/lib/mtncloud/api/security_groups_interface.rb +56 -0
  168. data/lib/mtncloud/api/security_package_types_interface.rb +9 -0
  169. data/lib/mtncloud/api/security_packages_interface.rb +9 -0
  170. data/lib/mtncloud/api/security_scans_interface.rb +9 -0
  171. data/lib/mtncloud/api/server_devices_interface.rb +30 -0
  172. data/lib/mtncloud/api/server_types_interface.rb +20 -0
  173. data/lib/mtncloud/api/servers_interface.rb +230 -0
  174. data/lib/mtncloud/api/service_catalog_interface.rb +89 -0
  175. data/lib/mtncloud/api/service_plans_interface.rb +62 -0
  176. data/lib/mtncloud/api/setup_interface.rb +46 -0
  177. data/lib/mtncloud/api/snapshots_interface.rb +19 -0
  178. data/lib/mtncloud/api/storage_datastores_interface.rb +44 -0
  179. data/lib/mtncloud/api/storage_providers_interface.rb +151 -0
  180. data/lib/mtncloud/api/storage_server_types_interface.rb +14 -0
  181. data/lib/mtncloud/api/storage_servers_interface.rb +9 -0
  182. data/lib/mtncloud/api/storage_volume_types_interface.rb +9 -0
  183. data/lib/mtncloud/api/storage_volumes_interface.rb +24 -0
  184. data/lib/mtncloud/api/subnet_types_interface.rb +20 -0
  185. data/lib/mtncloud/api/subnets_interface.rb +41 -0
  186. data/lib/mtncloud/api/support_bundles_interface.rb +46 -0
  187. data/lib/mtncloud/api/system_types_interface.rb +13 -0
  188. data/lib/mtncloud/api/systems_interface.rb +55 -0
  189. data/lib/mtncloud/api/task_sets_interface.rb +52 -0
  190. data/lib/mtncloud/api/tasks_interface.rb +66 -0
  191. data/lib/mtncloud/api/tokens_interface.rb +39 -0
  192. data/lib/mtncloud/api/usage_interface.rb +18 -0
  193. data/lib/mtncloud/api/user_groups_interface.rb +59 -0
  194. data/lib/mtncloud/api/user_settings_interface.rb +90 -0
  195. data/lib/mtncloud/api/user_sources_interface.rb +99 -0
  196. data/lib/mtncloud/api/users_interface.rb +33 -0
  197. data/lib/mtncloud/api/vdi_allocations_interface.rb +9 -0
  198. data/lib/mtncloud/api/vdi_apps_interface.rb +9 -0
  199. data/lib/mtncloud/api/vdi_gateways_interface.rb +9 -0
  200. data/lib/mtncloud/api/vdi_interface.rb +28 -0
  201. data/lib/mtncloud/api/vdi_pools_interface.rb +19 -0
  202. data/lib/mtncloud/api/virtual_images_interface.rb +210 -0
  203. data/lib/mtncloud/api/virtual_servers_interface.rb +9 -0
  204. data/lib/mtncloud/api/virtual_switches_interface.rb +9 -0
  205. data/lib/mtncloud/api/whitelabel_settings_interface.rb +57 -0
  206. data/lib/mtncloud/api/whoami_interface.rb +13 -0
  207. data/lib/mtncloud/api/wiki_interface.rb +48 -0
  208. data/lib/mtncloud/api.rb +12 -0
  209. data/lib/mtncloud/benchmarking.rb +259 -0
  210. data/lib/mtncloud/cli/cli_command.rb +2281 -0
  211. data/lib/mtncloud/cli/cli_registry.rb +337 -0
  212. data/lib/mtncloud/cli/commands/access_token_command.rb +201 -0
  213. data/lib/mtncloud/cli/commands/account_groups_command.rb +530 -0
  214. data/lib/mtncloud/cli/commands/activity_command.rb +149 -0
  215. data/lib/mtncloud/cli/commands/affinity_groups_command.rb +554 -0
  216. data/lib/mtncloud/cli/commands/alias_command.rb +278 -0
  217. data/lib/mtncloud/cli/commands/appliance_settings_command.rb +382 -0
  218. data/lib/mtncloud/cli/commands/approvals_command.rb +236 -0
  219. data/lib/mtncloud/cli/commands/apps.rb +2549 -0
  220. data/lib/mtncloud/cli/commands/archives_command.rb +2161 -0
  221. data/lib/mtncloud/cli/commands/audit.rb +188 -0
  222. data/lib/mtncloud/cli/commands/backup_jobs_command.rb +366 -0
  223. data/lib/mtncloud/cli/commands/backup_restores_command.rb +144 -0
  224. data/lib/mtncloud/cli/commands/backup_results_command.rb +149 -0
  225. data/lib/mtncloud/cli/commands/backup_services_command.rb +44 -0
  226. data/lib/mtncloud/cli/commands/backup_settings_command.rb +184 -0
  227. data/lib/mtncloud/cli/commands/backup_types_command.rb +53 -0
  228. data/lib/mtncloud/cli/commands/backups_command.rb +674 -0
  229. data/lib/mtncloud/cli/commands/benchmark_command.rb +458 -0
  230. data/lib/mtncloud/cli/commands/blueprints_command.rb +2297 -0
  231. data/lib/mtncloud/cli/commands/boot_scripts_command.rb +379 -0
  232. data/lib/mtncloud/cli/commands/budgets_command.rb +754 -0
  233. data/lib/mtncloud/cli/commands/cat_command.rb +45 -0
  234. data/lib/mtncloud/cli/commands/catalog_item_types_command.rb +858 -0
  235. data/lib/mtncloud/cli/commands/certificates_command.rb +575 -0
  236. data/lib/mtncloud/cli/commands/change_password_command.rb +132 -0
  237. data/lib/mtncloud/cli/commands/clients_command.rb +331 -0
  238. data/lib/mtncloud/cli/commands/cloud_datastores_command.rb +543 -0
  239. data/lib/mtncloud/cli/commands/cloud_folders_command.rb +512 -0
  240. data/lib/mtncloud/cli/commands/cloud_resource_pools_command.rb +870 -0
  241. data/lib/mtncloud/cli/commands/clouds.rb +2037 -0
  242. data/lib/mtncloud/cli/commands/clouds_types.rb +140 -0
  243. data/lib/mtncloud/cli/commands/cluster_types.rb +179 -0
  244. data/lib/mtncloud/cli/commands/clusters.rb +5855 -0
  245. data/lib/mtncloud/cli/commands/coloring_command.rb +82 -0
  246. data/lib/mtncloud/cli/commands/containers_command.rb +967 -0
  247. data/lib/mtncloud/cli/commands/credential_types_command.rb +36 -0
  248. data/lib/mtncloud/cli/commands/credentials_command.rb +124 -0
  249. data/lib/mtncloud/cli/commands/curl_command.rb +168 -0
  250. data/lib/mtncloud/cli/commands/cypher_command.rb +587 -0
  251. data/lib/mtncloud/cli/commands/dashboard_command.rb +300 -0
  252. data/lib/mtncloud/cli/commands/debug_command.rb +75 -0
  253. data/lib/mtncloud/cli/commands/deploy.rb +485 -0
  254. data/lib/mtncloud/cli/commands/deployments.rb +923 -0
  255. data/lib/mtncloud/cli/commands/deploys.rb +485 -0
  256. data/lib/mtncloud/cli/commands/distributed_workers_command.rb +282 -0
  257. data/lib/mtncloud/cli/commands/echo_command.rb +61 -0
  258. data/lib/mtncloud/cli/commands/edit_profile_command.rb +57 -0
  259. data/lib/mtncloud/cli/commands/edit_rc_command.rb +77 -0
  260. data/lib/mtncloud/cli/commands/email_templates_command.rb +373 -0
  261. data/lib/mtncloud/cli/commands/environments_command.rb +401 -0
  262. data/lib/mtncloud/cli/commands/execute_schedules_command.rb +735 -0
  263. data/lib/mtncloud/cli/commands/execution_request_command.rb +333 -0
  264. data/lib/mtncloud/cli/commands/exit_command.rb +34 -0
  265. data/lib/mtncloud/cli/commands/file_copy_request_command.rb +352 -0
  266. data/lib/mtncloud/cli/commands/forgot_password.rb +133 -0
  267. data/lib/mtncloud/cli/commands/get_prompt_command.rb +36 -0
  268. data/lib/mtncloud/cli/commands/groups.rb +818 -0
  269. data/lib/mtncloud/cli/commands/guidance_command.rb +529 -0
  270. data/lib/mtncloud/cli/commands/guidance_settings.rb +148 -0
  271. data/lib/mtncloud/cli/commands/health_command.rb +1046 -0
  272. data/lib/mtncloud/cli/commands/history_command.rb +60 -0
  273. data/lib/mtncloud/cli/commands/host_vm_groups_command.rb +423 -0
  274. data/lib/mtncloud/cli/commands/hosts.rb +2986 -0
  275. data/lib/mtncloud/cli/commands/hub.rb +215 -0
  276. data/lib/mtncloud/cli/commands/image_builder_command.rb +1197 -0
  277. data/lib/mtncloud/cli/commands/instance_types.rb +163 -0
  278. data/lib/mtncloud/cli/commands/instances.rb +5813 -0
  279. data/lib/mtncloud/cli/commands/integrations_command.rb +1412 -0
  280. data/lib/mtncloud/cli/commands/invoices_command.rb +1151 -0
  281. data/lib/mtncloud/cli/commands/jobs_command.rb +998 -0
  282. data/lib/mtncloud/cli/commands/key_pairs.rb +470 -0
  283. data/lib/mtncloud/cli/commands/library_cluster_layouts_command.rb +901 -0
  284. data/lib/mtncloud/cli/commands/library_cluster_packages_command.rb +552 -0
  285. data/lib/mtncloud/cli/commands/library_container_scripts_command.rb +446 -0
  286. data/lib/mtncloud/cli/commands/library_container_templates_command.rb +526 -0
  287. data/lib/mtncloud/cli/commands/library_container_types_command.rb +698 -0
  288. data/lib/mtncloud/cli/commands/library_forms_command.rb +625 -0
  289. data/lib/mtncloud/cli/commands/library_instance_types_command.rb +668 -0
  290. data/lib/mtncloud/cli/commands/library_layouts_command.rb +849 -0
  291. data/lib/mtncloud/cli/commands/library_operating_systems_command.rb +671 -0
  292. data/lib/mtncloud/cli/commands/library_option_lists_command.rb +503 -0
  293. data/lib/mtncloud/cli/commands/library_option_types_command.rb +329 -0
  294. data/lib/mtncloud/cli/commands/library_spec_templates_command.rb +547 -0
  295. data/lib/mtncloud/cli/commands/library_upgrades_command.rb +596 -0
  296. data/lib/mtncloud/cli/commands/license.rb +475 -0
  297. data/lib/mtncloud/cli/commands/load_balancer_monitors.rb +70 -0
  298. data/lib/mtncloud/cli/commands/load_balancer_pool_nodes.rb +87 -0
  299. data/lib/mtncloud/cli/commands/load_balancer_pools.rb +129 -0
  300. data/lib/mtncloud/cli/commands/load_balancer_profiles.rb +64 -0
  301. data/lib/mtncloud/cli/commands/load_balancer_types.rb +38 -0
  302. data/lib/mtncloud/cli/commands/load_balancer_virtual_servers.rb +147 -0
  303. data/lib/mtncloud/cli/commands/load_balancers.rb +189 -0
  304. data/lib/mtncloud/cli/commands/log_level_command.rb +54 -0
  305. data/lib/mtncloud/cli/commands/log_settings_command.rb +443 -0
  306. data/lib/mtncloud/cli/commands/login.rb +148 -0
  307. data/lib/mtncloud/cli/commands/logout.rb +63 -0
  308. data/lib/mtncloud/cli/commands/logs_command.rb +140 -0
  309. data/lib/mtncloud/cli/commands/man_command.rb +409 -0
  310. data/lib/mtncloud/cli/commands/migrations.rb +453 -0
  311. data/lib/mtncloud/cli/commands/monitoring_alerts_command.rb +791 -0
  312. data/lib/mtncloud/cli/commands/monitoring_apps_command.rb +716 -0
  313. data/lib/mtncloud/cli/commands/monitoring_checks_command.rb +766 -0
  314. data/lib/mtncloud/cli/commands/monitoring_contacts_command.rb +339 -0
  315. data/lib/mtncloud/cli/commands/monitoring_groups_command.rb +674 -0
  316. data/lib/mtncloud/cli/commands/monitoring_incidents_command.rb +835 -0
  317. data/lib/mtncloud/cli/commands/monitoring_settings.rb +212 -0
  318. data/lib/mtncloud/cli/commands/network_dhcp_relays_command.rb +375 -0
  319. data/lib/mtncloud/cli/commands/network_dhcp_servers_command.rb +366 -0
  320. data/lib/mtncloud/cli/commands/network_domains_command.rb +896 -0
  321. data/lib/mtncloud/cli/commands/network_edge_clusters_command.rb +288 -0
  322. data/lib/mtncloud/cli/commands/network_firewalls_command.rb +783 -0
  323. data/lib/mtncloud/cli/commands/network_floating_ips.rb +147 -0
  324. data/lib/mtncloud/cli/commands/network_groups_command.rb +654 -0
  325. data/lib/mtncloud/cli/commands/network_pool_server_types.rb +20 -0
  326. data/lib/mtncloud/cli/commands/network_pool_servers_command.rb +318 -0
  327. data/lib/mtncloud/cli/commands/network_pools_command.rb +903 -0
  328. data/lib/mtncloud/cli/commands/network_proxies_command.rb +578 -0
  329. data/lib/mtncloud/cli/commands/network_routers_command.rb +2628 -0
  330. data/lib/mtncloud/cli/commands/network_security_server_types.rb +20 -0
  331. data/lib/mtncloud/cli/commands/network_server_groups_command.rb +222 -0
  332. data/lib/mtncloud/cli/commands/network_server_types_command.rb +20 -0
  333. data/lib/mtncloud/cli/commands/network_servers_command.rb +398 -0
  334. data/lib/mtncloud/cli/commands/network_services_command.rb +198 -0
  335. data/lib/mtncloud/cli/commands/network_static_routes_command.rb +451 -0
  336. data/lib/mtncloud/cli/commands/network_transport_zones_command.rb +412 -0
  337. data/lib/mtncloud/cli/commands/networks_command.rb +1692 -0
  338. data/lib/mtncloud/cli/commands/open_command.rb +30 -0
  339. data/lib/mtncloud/cli/commands/options.rb +231 -0
  340. data/lib/mtncloud/cli/commands/packages_command.rb +822 -0
  341. data/lib/mtncloud/cli/commands/ping.rb +242 -0
  342. data/lib/mtncloud/cli/commands/plugins.rb +214 -0
  343. data/lib/mtncloud/cli/commands/policies_command.rb +990 -0
  344. data/lib/mtncloud/cli/commands/power_schedules_command.rb +731 -0
  345. data/lib/mtncloud/cli/commands/preseed_scripts_command.rb +378 -0
  346. data/lib/mtncloud/cli/commands/price_sets_command.rb +557 -0
  347. data/lib/mtncloud/cli/commands/prices_command.rb +692 -0
  348. data/lib/mtncloud/cli/commands/processes_command.rb +469 -0
  349. data/lib/mtncloud/cli/commands/projects_command.rb +537 -0
  350. data/lib/mtncloud/cli/commands/provisioning_licenses_command.rb +509 -0
  351. data/lib/mtncloud/cli/commands/provisioning_settings_command.rb +238 -0
  352. data/lib/mtncloud/cli/commands/recent_activity_command.rb +171 -0
  353. data/lib/mtncloud/cli/commands/remote.rb +1818 -0
  354. data/lib/mtncloud/cli/commands/reports_command.rb +724 -0
  355. data/lib/mtncloud/cli/commands/resource_pool_groups_command.rb +586 -0
  356. data/lib/mtncloud/cli/commands/rm_command.rb +14 -0
  357. data/lib/mtncloud/cli/commands/roles.rb +3120 -0
  358. data/lib/mtncloud/cli/commands/scale_thresholds.rb +103 -0
  359. data/lib/mtncloud/cli/commands/search_command.rb +184 -0
  360. data/lib/mtncloud/cli/commands/security_group_rules.rb +230 -0
  361. data/lib/mtncloud/cli/commands/security_groups.rb +1294 -0
  362. data/lib/mtncloud/cli/commands/security_package_types.rb +32 -0
  363. data/lib/mtncloud/cli/commands/security_packages.rb +84 -0
  364. data/lib/mtncloud/cli/commands/security_scans.rb +107 -0
  365. data/lib/mtncloud/cli/commands/self_service_command.rb +17 -0
  366. data/lib/mtncloud/cli/commands/server_devices_command.rb +207 -0
  367. data/lib/mtncloud/cli/commands/service_catalog_command.rb +1528 -0
  368. data/lib/mtncloud/cli/commands/service_plans_command.rb +895 -0
  369. data/lib/mtncloud/cli/commands/set_prompt_command.rb +51 -0
  370. data/lib/mtncloud/cli/commands/setup.rb +423 -0
  371. data/lib/mtncloud/cli/commands/shell.rb +717 -0
  372. data/lib/mtncloud/cli/commands/sleep_command.rb +43 -0
  373. data/lib/mtncloud/cli/commands/snapshots.rb +156 -0
  374. data/lib/mtncloud/cli/commands/source_command.rb +30 -0
  375. data/lib/mtncloud/cli/commands/ssl_verification_command.rb +47 -0
  376. data/lib/mtncloud/cli/commands/storage_datastores.rb +457 -0
  377. data/lib/mtncloud/cli/commands/storage_providers_command.rb +1401 -0
  378. data/lib/mtncloud/cli/commands/storage_server_types.rb +45 -0
  379. data/lib/mtncloud/cli/commands/storage_servers.rb +116 -0
  380. data/lib/mtncloud/cli/commands/storage_volume_types.rb +45 -0
  381. data/lib/mtncloud/cli/commands/storage_volumes.rb +236 -0
  382. data/lib/mtncloud/cli/commands/subnets_command.rb +819 -0
  383. data/lib/mtncloud/cli/commands/support_bundles_command.rb +606 -0
  384. data/lib/mtncloud/cli/commands/systems.rb +1203 -0
  385. data/lib/mtncloud/cli/commands/tasks.rb +1391 -0
  386. data/lib/mtncloud/cli/commands/tee_command.rb +14 -0
  387. data/lib/mtncloud/cli/commands/tenants_command.rb +315 -0
  388. data/lib/mtncloud/cli/commands/tokens_command.rb +391 -0
  389. data/lib/mtncloud/cli/commands/update_command.rb +46 -0
  390. data/lib/mtncloud/cli/commands/usage_command.rb +203 -0
  391. data/lib/mtncloud/cli/commands/user_groups_command.rb +512 -0
  392. data/lib/mtncloud/cli/commands/user_settings_command.rb +849 -0
  393. data/lib/mtncloud/cli/commands/user_sources_command.rb +1065 -0
  394. data/lib/mtncloud/cli/commands/users.rb +897 -0
  395. data/lib/mtncloud/cli/commands/vdi_allocations_command.rb +159 -0
  396. data/lib/mtncloud/cli/commands/vdi_apps_command.rb +317 -0
  397. data/lib/mtncloud/cli/commands/vdi_command.rb +359 -0
  398. data/lib/mtncloud/cli/commands/vdi_gateways_command.rb +290 -0
  399. data/lib/mtncloud/cli/commands/vdi_pools_command.rb +574 -0
  400. data/lib/mtncloud/cli/commands/version_command.rb +38 -0
  401. data/lib/mtncloud/cli/commands/view.rb +107 -0
  402. data/lib/mtncloud/cli/commands/virtual_images.rb +1362 -0
  403. data/lib/mtncloud/cli/commands/virtual_switches_command.rb +336 -0
  404. data/lib/mtncloud/cli/commands/whitelabel_settings_command.rb +653 -0
  405. data/lib/mtncloud/cli/commands/whoami.rb +323 -0
  406. data/lib/mtncloud/cli/commands/wiki_command.rb +448 -0
  407. data/lib/mtncloud/cli/commands/workflows.rb +1022 -0
  408. data/lib/mtncloud/cli/credentials.rb +482 -0
  409. data/lib/mtncloud/cli/dot_file.rb +180 -0
  410. data/lib/mtncloud/cli/error_handler.rb +307 -0
  411. data/lib/mtncloud/cli/errors.rb +53 -0
  412. data/lib/mtncloud/cli/expression_parser.rb +153 -0
  413. data/lib/mtncloud/cli/mixins/accounts_helper.rb +484 -0
  414. data/lib/mtncloud/cli/mixins/affinity_helper.rb +118 -0
  415. data/lib/mtncloud/cli/mixins/backups_helper.rb +200 -0
  416. data/lib/mtncloud/cli/mixins/deployments_helper.rb +163 -0
  417. data/lib/mtncloud/cli/mixins/execution_request_helper.rb +50 -0
  418. data/lib/mtncloud/cli/mixins/infrastructure_helper.rb +966 -0
  419. data/lib/mtncloud/cli/mixins/jobs_helper.rb +202 -0
  420. data/lib/mtncloud/cli/mixins/library_helper.rb +539 -0
  421. data/lib/mtncloud/cli/mixins/load_balancers_helper.rb +176 -0
  422. data/lib/mtncloud/cli/mixins/logs_helper.rb +131 -0
  423. data/lib/mtncloud/cli/mixins/monitoring_helper.rb +876 -0
  424. data/lib/mtncloud/cli/mixins/networks_helper.rb +62 -0
  425. data/lib/mtncloud/cli/mixins/operations_helper.rb +41 -0
  426. data/lib/mtncloud/cli/mixins/option_source_helper.rb +254 -0
  427. data/lib/mtncloud/cli/mixins/print_helper.rb +1631 -0
  428. data/lib/mtncloud/cli/mixins/processes_helper.rb +286 -0
  429. data/lib/mtncloud/cli/mixins/prompt_helper.rb +136 -0
  430. data/lib/mtncloud/cli/mixins/provisioning_helper.rb +2963 -0
  431. data/lib/mtncloud/cli/mixins/remote_helper.rb +139 -0
  432. data/lib/mtncloud/cli/mixins/rest_command.rb +994 -0
  433. data/lib/mtncloud/cli/mixins/secondary_rest_command.rb +700 -0
  434. data/lib/mtncloud/cli/mixins/storage_servers_helper.rb +93 -0
  435. data/lib/mtncloud/cli/mixins/storage_volumes_helper.rb +76 -0
  436. data/lib/mtncloud/cli/mixins/vdi_helper.rb +246 -0
  437. data/lib/mtncloud/cli/mixins/whoami_helper.rb +73 -0
  438. data/lib/mtncloud/cli/option_parser.rb +127 -0
  439. data/lib/mtncloud/cli/option_types.rb +1622 -0
  440. data/lib/mtncloud/cli/version.rb +6 -0
  441. data/lib/mtncloud/cli.rb +105 -0
  442. data/lib/mtncloud/currency.rb +184 -0
  443. data/lib/mtncloud/ext/hash.rb +109 -0
  444. data/lib/mtncloud/ext/nil_class.rb +5 -0
  445. data/lib/mtncloud/ext/rest_client.rb +37 -0
  446. data/lib/mtncloud/ext/string.rb +66 -0
  447. data/lib/mtncloud/formatters.rb +511 -0
  448. data/lib/mtncloud/logging.rb +185 -0
  449. data/lib/mtncloud/morpkg.rb +119 -0
  450. data/lib/mtncloud/rest_client.rb +104 -0
  451. data/lib/mtncloud/routes.rb +304 -0
  452. data/lib/mtncloud/terminal.rb +528 -0
  453. data/lib/mtncloud/util.rb +29 -0
  454. data/lib/mtncloud.rb +5 -0
  455. data/mtncloud-cli.gemspec +38 -0
  456. data/test/api/affinity_groups_interface_test.rb +43 -0
  457. data/test/api/clients_interface_test.rb +23 -0
  458. data/test/api/clouds_interface_test.rb +67 -0
  459. data/test/api/containers_interface_test.rb +68 -0
  460. data/test/api/host_vm_groups_interface_test.rb +35 -0
  461. data/test/api/instances_interface_test.rb +22 -0
  462. data/test/api/network_routers_interface_test.rb +22 -0
  463. data/test/api/systems_interface_test.rb +26 -0
  464. data/test/api/whoami_interface_test.rb +14 -0
  465. data/test/branding_test.rb +160 -0
  466. data/test/cli/access_token_test.rb +36 -0
  467. data/test/cli/affinity_groups_cloud_cluster_scope_test.rb +270 -0
  468. data/test/cli/affinity_groups_cluster_scope_test.rb +171 -0
  469. data/test/cli/affinity_groups_test.rb +57 -0
  470. data/test/cli/affinity_groups_violations_scope_test.rb +141 -0
  471. data/test/cli/affinity_helper_test.rb +367 -0
  472. data/test/cli/auth_test.rb +88 -0
  473. data/test/cli/backups_test.rb +212 -0
  474. data/test/cli/cli_test.rb +48 -0
  475. data/test/cli/clients_test.rb +45 -0
  476. data/test/cli/clusters_uuid_test.rb +146 -0
  477. data/test/cli/containers_test.rb +92 -0
  478. data/test/cli/distributed_workers_test.rb +68 -0
  479. data/test/cli/help_test.rb +25 -0
  480. data/test/cli/host_vm_groups_cluster_scope_test.rb +187 -0
  481. data/test/cli/host_vm_groups_test.rb +63 -0
  482. data/test/cli/infrastructure_helper_cluster_resolver_test.rb +250 -0
  483. data/test/cli/instances_test.rb +37 -0
  484. data/test/cli/man_test.rb +14 -0
  485. data/test/cli/migrations_test.rb +39 -0
  486. data/test/cli/network_routers_test.rb +65 -0
  487. data/test/cli/remote_test.rb +89 -0
  488. data/test/cli/roles_test.rb +47 -0
  489. data/test/cli/shell_test.rb +81 -0
  490. data/test/cli/storage_volumes_test.rb +79 -0
  491. data/test/cli/systems_test.rb +206 -0
  492. data/test/cli/version_test.rb +23 -0
  493. data/test/cli/view_test.rb +55 -0
  494. data/test/cli/whoami_test.rb +17 -0
  495. data/test/mtncloud_test.rb +16 -0
  496. data/test/test_case.rb +342 -0
  497. data/test/test_config.rb +137 -0
  498. data/test/test_data_helper.rb +97 -0
  499. metadata +807 -0
@@ -0,0 +1,352 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::FileCopyRequestCommand
4
+ include MtnCloud::Cli::CliCommand
5
+
6
+ set_command_name :'file-copy-request'
7
+
8
+ register_subcommands :get, :execute, :download
9
+ #register_subcommands :'execute-against-lease' => :execute_against_lease
10
+
11
+ # set_default_subcommand :list
12
+
13
+ def initialize()
14
+ # @appliance_name, @appliance_url = MtnCloud::Cli::Remote.active_appliance
15
+ end
16
+
17
+ def connect(opts)
18
+ @api_client = establish_remote_appliance_connection(opts)
19
+ # @instances_interface = @api_client.instances
20
+ # @containers_interface = @api_client.containers
21
+ # @servers_interface = @api_client.servers
22
+ @file_copy_request_interface = @api_client.file_copy_request
23
+ end
24
+
25
+ def handle(args)
26
+ handle_subcommand(args)
27
+ end
28
+
29
+ def get(args)
30
+ raw_args = args
31
+ options = {}
32
+ params = {}
33
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
34
+ opts.banner = subcommand_usage("[uid]")
35
+ build_common_options(opts, options, [:query, :json, :yaml, :csv, :fields, :dry_run, :remote])
36
+ opts.on('--refresh [SECONDS]', String, "Refresh until execution is finished. Default interval is #{default_refresh_interval} seconds.") do |val|
37
+ options[:refresh_until_finished] = true
38
+ if !val.to_s.empty?
39
+ options[:refresh_interval] = val.to_f
40
+ end
41
+ end
42
+ opts.footer = "Get details about a file copy request." + "\n" +
43
+ "[uid] is required. This is the unique id of a file copy request."
44
+ end
45
+ optparse.parse!(args)
46
+ connect(options)
47
+ if args.count != 1
48
+ print_error MtnCloud::Terminal.angry_prompt
49
+ puts_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args.inspect}\n#{optparse}"
50
+ return 1
51
+ end
52
+ file_copy_request_id = args[0]
53
+ begin
54
+ params.merge!(parse_list_options(options))
55
+ @file_copy_request_interface.setopts(options)
56
+ if options[:dry_run]
57
+ print_dry_run @file_copy_request_interface.dry.get(file_copy_request_id, params)
58
+ return
59
+ end
60
+ json_response = @file_copy_request_interface.get(file_copy_request_id, params)
61
+ if options[:json]
62
+ puts as_json(json_response, options, "fileCopyRequest")
63
+ return 0
64
+ elsif options[:yaml]
65
+ puts as_yaml(json_response, options, "fileCopyRequest")
66
+ return 0
67
+ elsif options[:csv]
68
+ puts records_as_csv([json_response['fileCopyRequest']], options)
69
+ return 0
70
+ end
71
+
72
+ file_copy_request = json_response['fileCopyRequest']
73
+
74
+ # refresh until a status is reached
75
+ if options[:refresh_until_finished]
76
+ if options[:refresh_interval].nil? || options[:refresh_interval].to_f < 0
77
+ options[:refresh_interval] = default_refresh_interval
78
+ end
79
+ if ['complete','failed','expired'].include?(file_copy_request['status'])
80
+ # it is finished
81
+ else
82
+ print cyan
83
+ refresh_display_seconds = options[:refresh_interval] % 1.0 == 0 ? options[:refresh_interval].to_i : options[:refresh_interval]
84
+ print "File copy request has not yet finished. Refreshing every #{refresh_display_seconds} seconds"
85
+ while !['complete','failed','expired'].include?(file_copy_request['status']) do
86
+ sleep(options[:refresh_interval])
87
+ print cyan,".",reset
88
+ json_response = @file_copy_request_interface.get(file_copy_request_id, params)
89
+ file_copy_request = json_response['fileCopyRequest']
90
+ end
91
+ #sleep_with_dots(options[:refresh_interval])
92
+ print "\n", reset
93
+ # get(raw_args)
94
+ end
95
+ end
96
+
97
+ print_h1 "File Copy Request Details"
98
+ print cyan
99
+ description_cols = {
100
+ #"ID" => lambda {|it| it['id'] },
101
+ "Unique ID" => lambda {|it| it['uniqueId'] },
102
+ "Server ID" => lambda {|it| it['serverId'] },
103
+ "Instance ID" => lambda {|it| it['instanceId'] },
104
+ "Container ID" => lambda {|it| it['containerId'] },
105
+ "Expires At" => lambda {|it| format_local_dt it['expiresAt'] },
106
+ #"Exit Code" => lambda {|it| it['exitCode'] },
107
+ "Status" => lambda {|it| format_file_copy_request_status(it) },
108
+ #"Created By" => lambda {|it| it['createdById'] },
109
+ #"Subdomain" => lambda {|it| it['subdomain'] },
110
+ }
111
+ print_description_list(description_cols, file_copy_request)
112
+
113
+ if file_copy_request['stdErr']
114
+ print_h2 "Error"
115
+ puts file_copy_request['stdErr'].to_s.strip
116
+ end
117
+ if file_copy_request['stdOut']
118
+ print_h2 "Output"
119
+ puts file_copy_request['stdOut'].to_s.strip
120
+ end
121
+ print reset, "\n"
122
+ return 0
123
+ rescue RestClient::Exception => e
124
+ print_rest_exception(e, options)
125
+ return 1
126
+ end
127
+ end
128
+
129
+ def execute(args)
130
+ options = {}
131
+ params = {}
132
+ script_content = nil
133
+ do_refresh = true
134
+ filename = nil
135
+ optparse = MtnCloud::Cli::OptionParser.new do|opts|
136
+ opts.banner = subcommand_usage("[options]")
137
+ opts.on('--server ID', String, "Server ID") do |val|
138
+ params['serverId'] = val
139
+ end
140
+ opts.on('--instance ID', String, "Instance ID") do |val|
141
+ params['instanceId'] = val
142
+ end
143
+ opts.on('--container ID', String, "Container ID") do |val|
144
+ params['containerId'] = val
145
+ end
146
+ opts.on('--request ID', String, "File Copy Request ID") do |val|
147
+ params['requestId'] = val
148
+ end
149
+ opts.on('--file FILE', "Local file to be copied." ) do |val|
150
+ filename = val
151
+ end
152
+ opts.on('--target-path PATH', "Target path for file on destination host." ) do |val|
153
+ params['targetPath'] = val
154
+ end
155
+ opts.on(nil, '--no-refresh', "Do not refresh until finished" ) do
156
+ do_refresh = false
157
+ end
158
+ #build_option_type_options(opts, options, add_user_source_option_types())
159
+ build_common_options(opts, options, [:options, :json, :dry_run, :quiet, :remote])
160
+ opts.footer = "Copy a file to a remote host(s)." + "\n" +
161
+ "[server] or [instance] or [container] is required. This is the id of a server, instance or container." + "\n" +
162
+ "[file] is required. This is the local filename that is to be copied." + "\n" +
163
+ "[target-path] is required. This is the target path for the file on the destination host."
164
+ end
165
+ optparse.parse!(args)
166
+ connect(options)
167
+ if args.count != 0
168
+ print_error MtnCloud::Terminal.angry_prompt
169
+ puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.inspect}\n#{optparse}"
170
+ return 1
171
+ end
172
+ if params['serverId'].nil? && params['instanceId'].nil? && params['containerId'].nil? && params['requestId'].nil?
173
+ puts_error "#{MtnCloud::Terminal.angry_prompt}missing required option: --server or --instance or --container\n#{optparse}"
174
+ return 1
175
+ end
176
+ # if filename.nil?
177
+ # puts_error "#{MtnCloud::Terminal.angry_prompt}missing required option: --file\n#{optparse}"
178
+ # return 1
179
+ # end
180
+ # if params['targetPath'].nil?
181
+ # puts_error "#{MtnCloud::Terminal.angry_prompt}missing required option: --target-path\n#{optparse}"
182
+ # return 1
183
+ # end
184
+ begin
185
+ # construct payload
186
+ params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
187
+ full_filename = nil
188
+ if filename.nil?
189
+ v_prompt = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'file', 'type' => 'file', 'fieldLabel' => 'File', 'required' => true, 'description' => 'The local file to be copied'}], options[:options])
190
+ filename = v_prompt['file']
191
+ end
192
+ full_filename = File.expand_path(filename)
193
+ if !File.exist?(full_filename)
194
+ print_red_alert "File not found: #{full_filename}"
195
+ return 1
196
+ end
197
+ local_file = File.new(full_filename, 'rb')
198
+
199
+ if params['targetPath'].nil?
200
+ v_prompt = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'targetPath', 'type' => 'text', 'fieldLabel' => 'Target Path', 'required' => true, 'description' => 'The target path for the file on the destination host.'}], options[:options])
201
+ params['targetPath'] = v_prompt['targetPath']
202
+ end
203
+
204
+ @file_copy_request_interface.setopts(options)
205
+ if options[:dry_run]
206
+ print_dry_run @file_copy_request_interface.dry.create(local_file, params)
207
+ return 0
208
+ end
209
+ # do it
210
+ json_response = @file_copy_request_interface.create(local_file, params)
211
+ # print and return result
212
+ if options[:quiet]
213
+ return 0
214
+ elsif options[:json]
215
+ puts as_json(json_response, options)
216
+ return 0
217
+ end
218
+ file_copy_request = json_response['fileCopyRequest']
219
+ print_green_success "Executing file copy request #{file_copy_request['uniqueId']}"
220
+ if do_refresh
221
+ get([file_copy_request['uniqueId'], "--refresh"])
222
+ else
223
+ get([file_copy_request['uniqueId']])
224
+ end
225
+ return 0
226
+ rescue RestClient::Exception => e
227
+ print_rest_exception(e, options)
228
+ exit 1
229
+ end
230
+ end
231
+
232
+ def download(args)
233
+ options = {}
234
+ params = {}
235
+ script_content = nil
236
+ filename = nil
237
+ do_overwrite = false
238
+ do_mkdir = false
239
+ optparse = MtnCloud::Cli::OptionParser.new do|opts|
240
+ opts.banner = subcommand_usage("[uid] [file]")
241
+ opts.on('--file FILE', "Local file destination for the downloaded file." ) do |val|
242
+ filename = val
243
+ end
244
+ opts.on( '-f', '--force', "Overwrite existing [file] if it exists." ) do
245
+ do_overwrite = true
246
+ # do_mkdir = true
247
+ end
248
+ opts.on( '-p', '--mkdir', "Create missing directories for [file] if they do not exist." ) do
249
+ do_mkdir = true
250
+ end
251
+ #build_option_type_options(opts, options, add_user_source_option_types())
252
+ build_common_options(opts, options, [:options, :json, :dry_run, :quiet, :remote])
253
+ opts.footer = "Download a file associated with a file copy request." + "\n" +
254
+ "[uid] is required. This is the unique id of a file copy request." + "\n" +
255
+ "[file] is required. This is the full local filepath for the downloaded file."
256
+ end
257
+ optparse.parse!(args)
258
+ connect(options)
259
+ if args.count < 1 || args.count > 2
260
+ print_error MtnCloud::Terminal.angry_prompt
261
+ puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.inspect}\n#{optparse}"
262
+ return 1
263
+ end
264
+ file_copy_request_id = args[0]
265
+ if args[1]
266
+ filename = args[1]
267
+ end
268
+ outfile = File.expand_path(filename)
269
+ if Dir.exist?(outfile)
270
+ print_red_alert "[file] is invalid. It is the name of an existing directory: #{outfile}"
271
+ return 1
272
+ end
273
+ destination_dir = File.dirname(outfile)
274
+ if !Dir.exist?(destination_dir)
275
+ if do_mkdir
276
+ print cyan,"Creating local directory #{destination_dir}",reset,"\n"
277
+ FileUtils.mkdir_p(destination_dir)
278
+ else
279
+ print_red_alert "[file] is invalid. Directory not found: #{destination_dir}"
280
+ return 1
281
+ end
282
+ end
283
+ if File.exist?(outfile)
284
+ if do_overwrite
285
+ # uhh need to be careful wih the passed filepath here..
286
+ # don't delete, just overwrite.
287
+ # File.delete(outfile)
288
+ else
289
+ print_error MtnCloud::Terminal.angry_prompt
290
+ puts_error "[file] is invalid. File already exists: #{outfile}", "Use -f to overwrite the existing file."
291
+ # puts_error optparse
292
+ return 1
293
+ end
294
+ end
295
+ begin
296
+ # construct payload
297
+
298
+ @file_copy_request_interface.setopts(options)
299
+ if options[:dry_run]
300
+ print_dry_run @file_copy_request_interface.dry.download_file_chunked(file_copy_request_id, outfile, params)
301
+ return 0
302
+ end
303
+ # do it
304
+
305
+ if !options[:quiet]
306
+ print cyan + "Downloading file copy request #{file_copy_request_id} to #{outfile} ... "
307
+ end
308
+
309
+ http_response = @file_copy_request_interface.download_file_chunked(file_copy_request_id, outfile, params)
310
+
311
+ # FileUtils.chmod(0600, outfile)
312
+ success = http_response.code.to_i == 200
313
+ if success
314
+ if !options[:quiet]
315
+ print green + "SUCCESS" + reset + "\n"
316
+ end
317
+ return 0
318
+ else
319
+ if !options[:quiet]
320
+ print red + "ERROR" + reset + " HTTP #{http_response.code}" + "\n"
321
+ end
322
+ # F it, just remove a bad result
323
+ if File.exist?(outfile) && File.file?(outfile)
324
+ MtnCloud::Logging::DarkPrinter.puts "Deleting bad file download: #{outfile}" if MtnCloud::Logging.debug?
325
+ File.delete(outfile)
326
+ end
327
+ if options[:debug]
328
+ puts_error http_response.inspect
329
+ end
330
+ return 1
331
+ end
332
+
333
+ rescue RestClient::Exception => e
334
+ print_rest_exception(e, options)
335
+ exit 1
336
+ end
337
+ end
338
+
339
+ def format_file_copy_request_status(file_copy_request, return_color=cyan)
340
+ out = ""
341
+ status_str = file_copy_request['status']
342
+ if status_str == 'complete'
343
+ out << "#{green}#{status_str.upcase}#{return_color}"
344
+ elsif status_str == 'failed' || status_str == 'expired'
345
+ out << "#{red}#{status_str.upcase}#{return_color}"
346
+ else
347
+ out << "#{cyan}#{status_str.upcase}#{return_color}"
348
+ end
349
+ out
350
+ end
351
+
352
+ end
@@ -0,0 +1,133 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::ForgotPassword
4
+ include MtnCloud::Cli::CliCommand
5
+
6
+ set_command_name :'forgot'
7
+ set_command_description "Send a forgot password email and reset your password."
8
+
9
+ def connect(opts)
10
+ @api_client = establish_remote_appliance_connection(opts)
11
+ @forgot_interface = @api_client.forgot
12
+ end
13
+
14
+ def handle(args)
15
+ # handle_subcommand(args)
16
+ # end
17
+
18
+ # def email(args)
19
+ options = {}
20
+ params = {}
21
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
22
+ opts.banner = "Usage: #{prog_name} #{command_name} [username]"
23
+ opts.on( '-U', '--username USERNAME', "Username of the user to be emailed." ) do |val|
24
+ options[:options]['username'] = val
25
+ end
26
+ opts.on("--email [USERNAME]", String, "Email only. Only send an email, skip the reset password.") do |val|
27
+ options[:email_only] = true
28
+ if !val.to_s.empty?
29
+ options[:options]['username'] = val
30
+ end
31
+ end
32
+ opts.on("--reset [TOKEN]", "Reset only. Only reset password, skip sending an email.") do |val|
33
+ options[:reset_only] = true
34
+ if !val.to_s.empty?
35
+ options[:options]['token'] = val
36
+ end
37
+ end
38
+ opts.on( '-T', '--token TOKEN', "Token, the secret token that was emailed to the user. Only reset password, skip sending an email." ) do |val|
39
+ options[:reset_only] = true
40
+ options[:options]['token'] = val
41
+ end
42
+ opts.on( '-P', '--password PASSWORD', "New Password, the new password for the user." ) do |val|
43
+ options[:options]['password'] = val
44
+ end
45
+
46
+ build_standard_post_options(opts, options, [], [:remote_username,:remote_password,:remote_token])
47
+ opts.footer = <<-EOT
48
+ Send a forgot password email and reset your password.
49
+ [username] is required. This is the username to be notified.
50
+ By default this command prompts to perform two actions.
51
+ First it sends a forgot password email to the specified user.
52
+ Then it attempts to reset the password with the secret token and a new password.
53
+ Use the --email and --token options to only perform one of these actions, instead of prompting to do both.
54
+ That is, only send the email or only reset the password.
55
+
56
+ EOT
57
+ end
58
+ optparse.parse!(args)
59
+ connect(options)
60
+ verify_args!(args:args, optparse:optparse, max:1)
61
+
62
+ if options[:email_only] && options[:options]['token']
63
+ raise_command_error "Invalid usage. --email cannot be used with --token or --reset, use one or the other", args, optparse
64
+ end
65
+
66
+ if args[0]
67
+ options[:options]['username'] = args[0]
68
+ end
69
+
70
+ params.merge!(parse_query_options(options))
71
+
72
+ # Step 1. Send Forgot Password Email
73
+ if options[:reset_only] != true
74
+ print_h1 "Forgot Password", [], options unless options[:quiet] || options[:json] || options[:yaml]
75
+ payload = {}
76
+ payload['username'] = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'username', 'fieldLabel' => 'Username', 'type' => 'text', 'description' => "Enter the username of your MTN Cloud user.", 'required' => true, :fmt => :natural}], options[:options],@api_client)['username']
77
+ @forgot_interface.setopts(options)
78
+ if options[:dry_run]
79
+ print_dry_run @forgot_interface.dry.send_email(payload, params)
80
+ return
81
+ end
82
+ json_response = @forgot_interface.send_email(payload, params)
83
+ if options[:email_only]
84
+ render_response(json_response, options) do
85
+ print_green_success(json_response["msg"] || "Email has been sent") unless options[:quiet]
86
+ end
87
+ return 0, nil
88
+ else
89
+ print_green_success(json_response["msg"] || "Email has been sent") unless options[:quiet]
90
+ end
91
+ end
92
+
93
+ # Step 2. Reset Password
94
+ print_h1 "Reset Password", [], options unless options[:quiet] || options[:json] || options[:yaml]
95
+ payload = {}
96
+ if options[:payload]
97
+ payload = options[:payload]
98
+ payload.deep_merge!(parse_passed_options(options))
99
+ else
100
+ payload.deep_merge!(parse_passed_options(options))
101
+ # prompt for Token
102
+ payload['token'] = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'token', 'fieldLabel' => 'Token', 'type' => 'text', 'description' => "Enter the token that you obtained from the forgot password email.", 'required' => true, :fmt => :natural}], options[:options],@api_client)['token']
103
+ # New Password
104
+ # todo: prompt_password_with_confirmation()
105
+ password_value = options[:options]['password']
106
+ confirm_password_value = password_value
107
+ while password_value.to_s.empty?
108
+ password_value = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'password', 'fieldLabel' => 'New Password', 'type' => 'password', 'description' => "Enter your new password.", 'required' => true, :fmt => :natural}], options[:options],@api_client)['password']
109
+ confirm_password_value = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'password', 'fieldLabel' => 'Confirm New Password', 'type' => 'password', 'description' => "Enter your new password again to confirm it is what you intend.", 'required' => true, :fmt => :natural}], options[:options],@api_client)['password']
110
+ if password_value != confirm_password_value
111
+ print_red_alert("Passwords did not match. Please try again.")
112
+ password_value = nil
113
+ end
114
+ end
115
+ payload['password'] = password_value
116
+ end
117
+
118
+ @forgot_interface.setopts(options)
119
+ if options[:dry_run]
120
+ print_dry_run @forgot_interface.dry.reset_password(payload, params)
121
+ return
122
+ end
123
+ json_response = @forgot_interface.reset_password(payload, params)
124
+ render_response(json_response, options) do
125
+ print_green_success(json_response["msg"] || "Password has been updated") unless options[:quiet]
126
+ end
127
+ return 0, nil
128
+ end
129
+
130
+ protected
131
+
132
+ end
133
+
@@ -0,0 +1,36 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::GetPromptCommand
4
+ include MtnCloud::Cli::CliCommand
5
+ set_command_name :'get-prompt'
6
+ set_command_hidden
7
+
8
+ def handle(args)
9
+ use_echo = false
10
+ options = {}
11
+ optparse = MtnCloud::Cli::OptionParser.new do|opts|
12
+ opts.banner = "Usage: #{prog_name} #{command_name}"
13
+ build_common_options(opts, options, [])
14
+ opts.on('-e', '--echo', "Use echo to display the prompt, displaying ansi colors and variables." ) do
15
+ use_echo = true
16
+ end
17
+ opts.footer = <<-EOT
18
+ Display the current #{prog_name} shell prompt value.
19
+ This value can be set using `set-prompt [shell-prompt]`.
20
+ EOT
21
+ end
22
+ optparse.parse!(args)
23
+ if args.count != 0
24
+ print_error MtnCloud::Terminal.angry_prompt
25
+ puts_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args.inspect}\n#{optparse}"
26
+ return 1
27
+ end
28
+ if use_echo
29
+ my_terminal.execute("echo #{my_terminal.prompt}")
30
+ else
31
+ puts self.my_terminal.prompt
32
+ end
33
+ return 0
34
+ end
35
+
36
+ end