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