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,716 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::MonitoringAppsCommand
4
+ include MtnCloud::Cli::CliCommand
5
+ include MtnCloud::Cli::MonitoringHelper
6
+
7
+ set_command_name :'monitor-apps'
8
+
9
+ register_subcommands :list, :get, :add, :update, :remove
10
+ register_subcommands :mute, :unmute
11
+ register_subcommands :'mute-all' => :mute_all
12
+ register_subcommands :'unmute-all' => :unmute_all
13
+ #register_subcommands :history
14
+
15
+ def connect(opts)
16
+ @api_client = establish_remote_appliance_connection(opts)
17
+ @monitoring_interface = @api_client.monitoring
18
+ @monitoring_apps_interface = @api_client.monitoring.apps
19
+ end
20
+
21
+ def handle(args)
22
+ handle_subcommand(args)
23
+ end
24
+
25
+ def list(args)
26
+ options = {}
27
+ params = {}
28
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
29
+ opts.banner = subcommand_usage()
30
+ opts.on('--status LIST', Array, "Filter by status. error,healthy,warning,muted") do |list|
31
+ params['status'] = list
32
+ end
33
+ build_common_options(opts, options, [:list, :query, :last_updated, :json, :yaml, :csv, :fields, :dry_run, :remote])
34
+ end
35
+ optparse.parse!(args)
36
+ connect(options)
37
+ begin
38
+ params.merge!(parse_list_options(options))
39
+ @monitoring_apps_interface.setopts(options)
40
+ if options[:dry_run]
41
+ print_dry_run @monitoring_apps_interface.dry.list(params)
42
+ return
43
+ end
44
+
45
+ json_response = @monitoring_apps_interface.list(params)
46
+ if options[:json]
47
+ puts as_json(json_response, options, "monitorApps")
48
+ return 0
49
+ elsif options[:csv]
50
+ puts records_as_csv(json_response['monitorApps'], options)
51
+ return 0
52
+ elsif options[:yaml]
53
+ puts as_yaml(json_response, options, "monitorApps")
54
+ return 0
55
+ end
56
+ monitor_apps = json_response['monitorApps']
57
+ title = "Monitoring Apps"
58
+ subtitles = []
59
+ subtitles += parse_list_subtitles(options)
60
+ print_h1 title, subtitles
61
+ if monitor_apps.empty?
62
+ print cyan,"No monitoring apps found.",reset,"\n"
63
+ else
64
+ print_monitoring_apps_table(monitor_apps, options)
65
+ print_results_pagination(json_response, {:label => "monitoring app", :n_label => "monitoring apps"})
66
+ # print_results_pagination(json_response)
67
+ end
68
+ print reset,"\n"
69
+ rescue RestClient::Exception => e
70
+ print_rest_exception(e, options)
71
+ exit 1
72
+ end
73
+ end
74
+
75
+ def get(args)
76
+ options = {}
77
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
78
+ opts.banner = subcommand_usage("[id list]")
79
+ opts.on(nil,'--history', "Display Monitoring App History") do |val|
80
+ options[:show_history] = true
81
+ end
82
+ # opts.on(nil,'--statistics', "Display Statistics") do |val|
83
+ # options[:show_statistics] = true
84
+ # end
85
+ opts.on('-a','--all', "Display All Details (History, Notifications)") do
86
+ options[:show_history] = true
87
+ options[:show_notifications] = true
88
+ options[:show_statistics] = true
89
+ end
90
+ build_common_options(opts, options, [:json, :yaml, :csv, :fields, :dry_run, :remote])
91
+ end
92
+ optparse.parse!(args)
93
+ if args.count < 1
94
+ puts optparse
95
+ exit 1
96
+ end
97
+ connect(options)
98
+ id_list = parse_id_list(args)
99
+ return run_command_for_each_arg(id_list) do |arg|
100
+ _get(arg, options)
101
+ end
102
+ end
103
+
104
+ def _get(id, options)
105
+
106
+ begin
107
+ monitor_app = find_monitoring_app_by_name_or_id(id)
108
+ @monitoring_apps_interface.setopts(options)
109
+ if options[:dry_run]
110
+ print_dry_run @monitoring_apps_interface.dry.get(monitor_app['id'])
111
+ return
112
+ end
113
+ # get by ID to sideload associated checks
114
+ json_response = @monitoring_apps_interface.get(monitor_app['id'])
115
+ monitor_app = json_response['monitorApp']
116
+ if options[:json]
117
+ puts as_json(json_response, options, "monitorApp")
118
+ return 0
119
+ elsif options[:yaml]
120
+ puts as_yaml(json_response, options, "monitorApp")
121
+ return 0
122
+ elsif options[:csv]
123
+ puts records_as_csv([json_response['monitorApp']], options)
124
+ return 0
125
+ end
126
+
127
+ print_h1 "Monitoring App Details", [], options
128
+ print cyan
129
+ description_cols = {
130
+ "ID" => lambda {|it| it['id'] },
131
+ "Status" => lambda {|it| format_monitoring_check_status(it, true) },
132
+ "Name" => lambda {|it| it['name'] },
133
+ "Description" => lambda {|it| it['description'] },
134
+ "Time" => lambda {|it| format_local_dt(it['lastRunDate']) },
135
+ "Availability" => lambda {|it| it['availability'] ? "#{it['availability'].to_f.round(3).to_s}%" : "N/A"},
136
+ "Response Time" => lambda {|it| it['lastTimer'] ? "#{it['lastTimer']}ms" : "N/A" }
137
+ }
138
+ print_description_list(description_cols, monitor_app, options)
139
+
140
+ ## Chart Stats
141
+
142
+
143
+ ## Checks in this app
144
+ checks = json_response["checks"]
145
+ if checks && !checks.empty?
146
+ print_h2 "Checks", options
147
+ print_checks_table(checks, options)
148
+ else
149
+ # print "\n"
150
+ # puts "No checks in this monitoring app"
151
+ end
152
+
153
+ ## Check Groups in this app
154
+ check_groups = json_response["checkGroups"]
155
+ if check_groups && !check_groups.empty?
156
+ print_h2 "Groups", options
157
+ print_check_groups_table(check_groups, options)
158
+ else
159
+ # print "\n"
160
+ # puts "No check groups in this monitoring app"
161
+ end
162
+
163
+ ## Checks in this check group
164
+ if (!checks || checks.empty?) && (check_groups || check_groups.empty?)
165
+ print "\n", yellow
166
+ puts "This monitor app is empty, it contains no checks or groups."
167
+ end
168
+
169
+ ## Open Incidents
170
+ open_incidents = json_response["openIncidents"]
171
+ if open_incidents && !open_incidents.empty?
172
+ print_h2 "Open Incidents"
173
+ print_incidents_table(open_incidents)
174
+ # print_results_pagination(size: open_incidents.size, total: open_incidents.size)
175
+ else
176
+ print "\n", cyan
177
+ puts "No open incidents for this monitoring app"
178
+ end
179
+
180
+ ## History (plain old Hash)
181
+ if options[:show_history]
182
+ # history_items = json_response["history"]
183
+ # gotta go get it
184
+ history_json_response = @monitoring_apps_interface.history(monitor_app["id"], {})
185
+ history_items = history_json_response["history"] || history_json_response["events"] || history_json_response["issues"]
186
+ issues = history_items
187
+ if history_items && !history_items.empty?
188
+ print_h2 "History"
189
+ print_monitor_app_history_table(history_items, options)
190
+ print_results_pagination(history_json_response, {:label => "event", :n_label => "events"})
191
+ else
192
+ print "\n"
193
+ puts "No history found for this monitoring app"
194
+ end
195
+ end
196
+
197
+ ## Statistics (Hash)
198
+ if options[:show_statistics]
199
+ # todo....
200
+ end
201
+
202
+ print reset,"\n"
203
+
204
+ rescue RestClient::Exception => e
205
+ print_rest_exception(e, options)
206
+ exit 1
207
+ end
208
+ end
209
+
210
+ def history(args)
211
+ options = {}
212
+ params = {}
213
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
214
+ opts.banner = subcommand_usage("[name] [options]")
215
+ # opts.on('--status LIST', Array, "Filter by status. open, closed") do |list|
216
+ # params['status'] = list
217
+ # end
218
+ opts.on('--severity LIST', Array, "Filter by severity. critical, warning, info") do |list|
219
+ params['severity'] = list
220
+ end
221
+ build_common_options(opts, options, [:list, :last_updated, :json, :yaml, :csv, :fields, :json, :dry_run, :remote])
222
+ end
223
+ optparse.parse!(args)
224
+ if args.count < 1
225
+ puts optparse
226
+ exit 1
227
+ end
228
+ connect(options)
229
+ begin
230
+ monitor_app = find_monitoring_app_by_name_or_id(args[0])
231
+ return 1 if monitor_app.nil?
232
+
233
+ [:phrase, :offset, :max, :sort, :direction, :lastUpdated].each do |k|
234
+ params[k] = options[k] unless options[k].nil?
235
+ end
236
+ # JD: lastUpdated 500ing, checks don't have that property ? =o Fix it!
237
+ @monitoring_apps_interface.setopts(options)
238
+ if options[:dry_run]
239
+ print_dry_run @monitoring_apps_interface.dry.history(monitor_app['id'], params)
240
+ return
241
+ end
242
+
243
+ json_response = @monitoring_apps_interface.history(monitor_app['id'], params)
244
+ if options[:json]
245
+ puts as_json(json_response, options, "history")
246
+ return 0
247
+ end
248
+ if options[:csv]
249
+ puts records_as_csv(json_response['history'], options)
250
+ return 0
251
+ end
252
+ history_items = json_response['history']
253
+ title = "Monitoring App History: #{monitor_app['name']}"
254
+ subtitles = []
255
+ if params[:phrase]
256
+ subtitles << "Search: #{params[:phrase]}".strip
257
+ end
258
+ print_h1 title, subtitles
259
+ if history_items.empty?
260
+ print cyan,"No history found.",reset,"\n"
261
+ else
262
+ print_monitor_app_history_table(history_items, options)
263
+ print_results_pagination(json_response, {:label => "event", :n_label => "events"})
264
+ end
265
+ print reset,"\n"
266
+ rescue RestClient::Exception => e
267
+ print_rest_exception(e, options)
268
+ exit 1
269
+ end
270
+ end
271
+
272
+ def add(args)
273
+ options = {}
274
+ params = {'inUptime' => true, 'severity' => 'critical'}
275
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
276
+ opts.banner = subcommand_usage("[name]")
277
+ opts.on('--name VALUE', String, "Name") do |val|
278
+ params['name'] = val
279
+ end
280
+ opts.on('--description VALUE', String, "Description") do |val|
281
+ params['description'] = val
282
+ end
283
+ opts.on('--minHappy VALUE', String, "Min Checks. This specifies the minimum number of checks within the app that must be happy to keep the app from becoming unhealthy.") do |val|
284
+ params['minHappy'] = val.to_i
285
+ end
286
+ opts.on('--severity VALUE', String, "Max Severity. Determines the maximum severity level this app can incur on an incident when failing. Default is critical") do |val|
287
+ params['severity'] = val
288
+ end
289
+ opts.on('--inUptime [on|off]', String, "Affects Availability. Default is on.") do |val|
290
+ params['inUptime'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
291
+ end
292
+ opts.on('--muted [on|off]', String, "Muted, Turns Affects Availability off.") do |val|
293
+ params['muted'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
294
+ end
295
+ opts.on('--checks LIST', Array, "Checks to include in this app, comma separated list of names or IDs.") do |list|
296
+ if list.size == 1 && ('[]' == list[0]) # clear array
297
+ params['checks'] = []
298
+ else
299
+ params['checks'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
300
+ end
301
+ end
302
+ opts.on('--groups LIST', Array, "Check Groups to include in this app, comma separated list of names or IDs.") do |list|
303
+ if list.size == 1 && ('[]' == list[0]) # clear array
304
+ params['checkGroups'] = []
305
+ else
306
+ params['checkGroups'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
307
+ end
308
+ end
309
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote, :quiet])
310
+ opts.footer = "Create a new app of monitoring checks." + "\n" +
311
+ "[name] is required and can be passed as --name instead."
312
+ end
313
+ optparse.parse!(args)
314
+ if args.count > 1
315
+ print_error MtnCloud::Terminal.angry_prompt
316
+ puts_error "wrong number of arguments, expected 0-1 and got #{args.count}\n#{optparse}"
317
+ return 1
318
+ end
319
+ # support [name] as first argument
320
+ if args[0]
321
+ params['name'] = args[0]
322
+ end
323
+ connect(options)
324
+ begin
325
+ # construct payload
326
+ payload = nil
327
+ if options[:payload]
328
+ payload = options[:payload]
329
+ else
330
+ # merge -O options into normally parsed options
331
+ params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
332
+ if params['name'].nil?
333
+ v_prompt = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'name', 'type' => 'text', 'fieldLabel' => 'Name', 'required' => true, 'description' => 'The name of this alert rule.'}], options[:options])
334
+ params['name'] = v_prompt['name']
335
+ end
336
+ if params['severity'].nil?
337
+ v_prompt = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'severity', 'type' => 'text', 'fieldLabel' => 'Severity', 'required' => false, 'description' => 'Max Severity. Determines the maximum severity level this app can incur on an incident when failing. Default is critical', 'defaultValue' => 'critical'}], options[:options])
338
+ params['severity'] = v_prompt['severity'] unless v_prompt['severity'].to_s.empty?
339
+ end
340
+ if params['inUptime'].nil? && params['muted'].nil?
341
+ v_prompt = MtnCloud::Cli::OptionTypes.prompt([{'fieldName' => 'inUptime', 'type' => 'checkbox', 'fieldLabel' => 'Affects Availability', 'required' => false, 'description' => 'Affects Availability. Default is on.', 'defaultValue' => true}], options[:options])
342
+ params['inUptime'] = v_prompt['inUptime'] unless v_prompt['inUptime'].to_s.empty?
343
+ end
344
+
345
+ # Checks
346
+ prompt_results = prompt_for_checks(params, options, @api_client)
347
+ if prompt_results[:success]
348
+ params['checks'] = prompt_results[:data] unless prompt_results[:data].nil?
349
+ else
350
+ return 1
351
+ end
352
+
353
+ # Check Groups
354
+ prompt_results = prompt_for_check_groups(params, options, @api_client)
355
+ if prompt_results[:success]
356
+ params['checkGroups'] = prompt_results[:data] unless prompt_results[:data].nil?
357
+ else
358
+ return 1
359
+ end
360
+
361
+ payload = {'monitorApp' => params}
362
+ end
363
+ @monitoring_apps_interface.setopts(options)
364
+ if options[:dry_run]
365
+ print_dry_run @monitoring_apps_interface.dry.create(payload)
366
+ return
367
+ end
368
+ json_response = @monitoring_apps_interface.create(payload)
369
+ if options[:json]
370
+ puts as_json(json_response, options)
371
+ elsif !options[:quiet]
372
+ monitor_app = json_response['monitorApp']
373
+ print_green_success "Added monitoring app #{monitor_app['name']}"
374
+ _get(monitor_app['id'], {})
375
+ end
376
+ return 0
377
+ rescue RestClient::Exception => e
378
+ print_rest_exception(e, options)
379
+ exit 1
380
+ end
381
+ end
382
+
383
+ def update(args)
384
+ options = {}
385
+ params = {}
386
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
387
+ opts.banner = subcommand_usage("[name]")
388
+ opts.on('--name VALUE', String, "Name") do |val|
389
+ params['name'] = val
390
+ end
391
+ opts.on('--description VALUE', String, "Description") do |val|
392
+ params['description'] = val
393
+ end
394
+ opts.on('--minHappy VALUE', String, "Min Checks. This specifies the minimum number of checks within the app that must be happy to keep the app from becoming unhealthy.") do |val|
395
+ params['minHappy'] = val.to_i
396
+ end
397
+ opts.on('--severity VALUE', String, "Max Severity. Determines the maximum severity level this app can incur on an incident when failing. Default is critical") do |val|
398
+ params['severity'] = val
399
+ end
400
+ opts.on('--inUptime [on|off]', String, "Affects Availability. Default is on.") do |val|
401
+ params['inUptime'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
402
+ end
403
+ opts.on('--muted [on|off]', String, "Muted, Turns Affects Availability off.") do |val|
404
+ params['muted'] = val.nil? || val.to_s == 'on' || val.to_s == 'true'
405
+ end
406
+ opts.on('--checks LIST', Array, "Checks to include in this app, comma separated list of names or IDs.") do |list|
407
+ if list.size == 1 && ('[]' == list[0]) # clear array
408
+ params['checks'] = []
409
+ else
410
+ params['checks'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
411
+ end
412
+ end
413
+ opts.on('--groups LIST', Array, "Check Groups to include in this app, comma separated list of names or IDs.") do |list|
414
+ if list.size == 1 && ('[]' == list[0]) # clear array
415
+ params['checkGroups'] = []
416
+ else
417
+ params['checkGroups'] = list.collect {|it| it.to_s.strip.empty? ? nil : it.to_s.strip }.compact.uniq
418
+ end
419
+ end
420
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote, :quiet])
421
+ opts.footer = "Update a monitoring app." + "\n" +
422
+ "[name] is required. This is the name or id of a monitoring app."
423
+ end
424
+ optparse.parse!(args)
425
+ if args.count != 1
426
+ print_error MtnCloud::Terminal.angry_prompt
427
+ puts_error "wrong number of arguments, expected 1 and got #{args.count}\n#{optparse}"
428
+ return 1
429
+ end
430
+ connect(options)
431
+ begin
432
+ monitor_app = find_monitoring_app_by_name_or_id(args[0])
433
+ # construct payload
434
+ payload = nil
435
+ if options[:payload]
436
+ payload = options[:payload]
437
+ else
438
+ # merge -O options into normally parsed options
439
+ params.deep_merge!(options[:options].reject {|k,v| k.is_a?(Symbol) }) if options[:options]
440
+
441
+ # Checks
442
+ if params['checks']
443
+ prompt_results = prompt_results(params, options, @api_client)
444
+ if prompt_results[:success]
445
+ params['checks'] = prompt_results[:data] unless prompt_results[:data].nil?
446
+ else
447
+ return 1
448
+ end
449
+ end
450
+
451
+ # Check Groups
452
+ if params['checkGroups']
453
+ prompt_results = prompt_for_check_groups(params, options, @api_client)
454
+ if prompt_results[:success]
455
+ params['checkGroups'] = prompt_results[:data] unless prompt_results[:data].nil?
456
+ else
457
+ return 1
458
+ end
459
+ end
460
+
461
+ payload = {'monitorApp' => params}
462
+ end
463
+ @monitoring_apps_interface.setopts(options)
464
+ if options[:dry_run]
465
+ print_dry_run @monitoring_apps_interface.dry.update(monitor_app["id"], payload)
466
+ return
467
+ end
468
+ json_response = @monitoring_apps_interface.update(monitor_app["id"], payload)
469
+ if options[:json]
470
+ puts as_json(json_response, options)
471
+ elsif !options[:quiet]
472
+ print_green_success "Updated monitoring app #{monitor_app['name']}"
473
+ _get(monitor_app['id'], {})
474
+ end
475
+ return 0
476
+ rescue RestClient::Exception => e
477
+ print_rest_exception(e, options)
478
+ exit 1
479
+ end
480
+ end
481
+
482
+ def mute(args)
483
+ options = {}
484
+ params = {}
485
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
486
+ opts.banner = subcommand_usage("[name]")
487
+ opts.on(nil, "--disable", "Unmute instead, the same as the unmute command") do
488
+ params['muted'] = false
489
+ params['enabled'] = false
490
+ end
491
+ opts.footer = "Mute a monitoring app. This prevents it from creating new incidents." + "\n" +
492
+ "[name] is required. This is the name or id of a monitoring app."
493
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote, :quiet])
494
+ end
495
+ optparse.parse!(args)
496
+ if args.count < 1
497
+ puts optparse
498
+ exit 1
499
+ end
500
+ connect(options)
501
+ begin
502
+ monitor_app = find_monitoring_app_by_name_or_id(args[0])
503
+ # construct payload
504
+ payload = nil
505
+ if options[:payload]
506
+ payload = options[:payload]
507
+ else
508
+ payload = params
509
+ end
510
+ @monitoring_apps_interface.setopts(options)
511
+ if options[:dry_run]
512
+ print_dry_run @monitoring_apps_interface.dry.mute(monitor_app["id"], payload)
513
+ return 0
514
+ end
515
+ json_response = @monitoring_apps_interface.mute(monitor_app["id"], payload)
516
+ if options[:json]
517
+ puts as_json(json_response, options)
518
+ elsif !options[:quiet]
519
+ if params['muted'] != false
520
+ print_green_success "Muted app #{monitor_app['name']}"
521
+ else
522
+ print_green_success "Unmuted app #{monitor_app['name']}"
523
+ end
524
+ _get(monitor_app['id'], {})
525
+ end
526
+ return 0
527
+ rescue RestClient::Exception => e
528
+ print_rest_exception(e, options)
529
+ exit 1
530
+ end
531
+ end
532
+
533
+ def unmute(args)
534
+ options = {}
535
+ params = {'muted' => false, 'enabled' => false}
536
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
537
+ opts.banner = subcommand_usage("[name]")
538
+ build_common_options(opts, options, [:payload, :json, :dry_run, :remote, :quiet])
539
+ opts.footer = "Unmute a monitoring app." + "\n" +
540
+ "[name] is required. This is the name or id of a monitoring app."
541
+ end
542
+ optparse.parse!(args)
543
+ if args.count < 1
544
+ puts optparse
545
+ exit 1
546
+ end
547
+ connect(options)
548
+
549
+ begin
550
+ monitor_app = find_monitoring_app_by_name_or_id(args[0])
551
+ # construct payload
552
+ payload = nil
553
+ if options[:payload]
554
+ payload = options[:payload]
555
+ else
556
+ payload = params
557
+ end
558
+ @monitoring_apps_interface.setopts(options)
559
+ if options[:dry_run]
560
+ print_dry_run @monitoring_apps_interface.dry.mute(monitor_app["id"], payload)
561
+ return 0
562
+ end
563
+ json_response = @monitoring_apps_interface.mute(monitor_app["id"], payload)
564
+ if options[:json]
565
+ puts as_json(json_response, options)
566
+ elsif !options[:quiet]
567
+ print_green_success "Unmuted app #{monitor_app['name']}"
568
+ _get(monitor_app['id'], {})
569
+ end
570
+ return 0
571
+ rescue RestClient::Exception => e
572
+ print_rest_exception(e, options)
573
+ exit 1
574
+ end
575
+ end
576
+
577
+ def mute_all(args)
578
+ options = {}
579
+ params = {}
580
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
581
+ opts.banner = subcommand_usage()
582
+ opts.on(nil, "--disable", "Unmute instead, the same as the unmute-all command") do
583
+ params['muted'] = false
584
+ params['enabled'] = false
585
+ end
586
+ opts.footer = "Mute all monitoring apps. This prevents the creation of new incidents."
587
+ build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote, :quiet])
588
+ end
589
+ optparse.parse!(args)
590
+ if args.count != 0
591
+ puts optparse
592
+ return 1
593
+ end
594
+ connect(options)
595
+ begin
596
+ # construct payload
597
+ payload = nil
598
+ if options[:payload]
599
+ payload = options[:payload]
600
+ else
601
+ payload = params
602
+ end
603
+ @monitoring_apps_interface.setopts(options)
604
+ if options[:dry_run]
605
+ print_dry_run @monitoring_apps_interface.dry.mute_all(payload)
606
+ return 0
607
+ end
608
+ json_response = @monitoring_apps_interface.mute_all(payload)
609
+ if options[:json]
610
+ puts as_json(json_response, options)
611
+ elsif !options[:quiet]
612
+ num_updated = json_response['updated']
613
+ if params['muted'] != false
614
+ print_green_success "Muted #{num_updated} apps"
615
+ else
616
+ print_green_success "Unmuted #{num_updated} apps"
617
+ end
618
+ end
619
+ return 0
620
+ rescue RestClient::Exception => e
621
+ print_rest_exception(e, options)
622
+ exit 1
623
+ end
624
+ end
625
+
626
+ def unmute_all(args)
627
+ options = {}
628
+ params = {'muted' => false, 'enabled' => false}
629
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
630
+ opts.banner = subcommand_usage()
631
+ build_common_options(opts, options, [:payload, :json, :dry_run, :remote, :quiet])
632
+ opts.footer = "Unmute all monitoring apps."
633
+ end
634
+ optparse.parse!(args)
635
+ if args.count != 0
636
+ puts optparse
637
+ return 1
638
+ end
639
+ connect(options)
640
+
641
+ begin
642
+ # construct payload
643
+ payload = nil
644
+ if options[:payload]
645
+ payload = options[:payload]
646
+ else
647
+ payload = params
648
+ end
649
+ @monitoring_apps_interface.setopts(options)
650
+ if options[:dry_run]
651
+ print_dry_run @monitoring_apps_interface.dry.mute_all(payload)
652
+ return 0
653
+ end
654
+ json_response = @monitoring_apps_interface.mute_all(payload)
655
+ if options[:json]
656
+ puts as_json(json_response, options)
657
+ elsif !options[:quiet]
658
+ num_updated = json_response['updated']
659
+ print_green_success "Unmuted #{num_updated} apps"
660
+ end
661
+ return 0
662
+ rescue RestClient::Exception => e
663
+ print_rest_exception(e, options)
664
+ exit 1
665
+ end
666
+ end
667
+
668
+ def remove(args)
669
+ options = {}
670
+ params = {}
671
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
672
+ opts.banner = subcommand_usage("[name]")
673
+ build_common_options(opts, options, [:auto_confirm, :json, :dry_run, :quiet, :remote])
674
+ end
675
+ optparse.parse!(args)
676
+ if args.count < 1
677
+ puts optparse
678
+ return 127
679
+ end
680
+ connect(options)
681
+
682
+ begin
683
+ monitor_app = find_monitoring_app_by_name_or_id(args[0])
684
+
685
+ unless options[:yes] || ::MtnCloud::Cli::OptionTypes::confirm("Are you sure you would like to delete monitoring app '#{monitor_app['name']}'?", options)
686
+ return false
687
+ end
688
+
689
+ # payload = {
690
+ # 'monitorApp' => {id: monitor_app["id"]}
691
+ # }
692
+ # payload['monitorApp'].merge!(monitor_app)
693
+ payload = params
694
+ @monitoring_apps_interface.setopts(options)
695
+ if options[:dry_run]
696
+ print_dry_run @monitoring_apps_interface.dry.destroy(monitor_app["id"])
697
+ return
698
+ end
699
+
700
+ json_response = @monitoring_apps_interface.destroy(monitor_app["id"])
701
+ if options[:json]
702
+ puts as_json(json_response, options)
703
+ elsif !options[:quiet]
704
+ print_green_success "Deleted check app #{monitor_app['name']}"
705
+ end
706
+ return 0, nil
707
+ rescue RestClient::Exception => e
708
+ print_rest_exception(e, options)
709
+ return 1
710
+ end
711
+ end
712
+
713
+
714
+ private
715
+
716
+ end