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,443 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::LogSettingsCommand
4
+ include MtnCloud::Cli::CliCommand
5
+ include MtnCloud::Cli::AccountsHelper
6
+
7
+ set_command_name :'log-settings'
8
+
9
+ register_subcommands :get, :update
10
+ register_subcommands :add_syslog_rule, :remove_syslog_rule
11
+
12
+ # these command are deprecated in 5.3.3 and can be removed
13
+ register_subcommands :enable_integration, :disable_integration, :remove_integration
14
+ set_subcommands_hidden :enable_integration, :disable_integration, :remove_integration
15
+
16
+ def connect(opts)
17
+ @api_client = establish_remote_appliance_connection(opts)
18
+ @log_settings_interface = @api_client.log_settings
19
+ end
20
+
21
+ def handle(args)
22
+ handle_subcommand(args)
23
+ end
24
+
25
+ def get(args)
26
+ options = {}
27
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
28
+ opts.banner = subcommand_usage()
29
+ build_common_options(opts, options, [:query, :json, :yaml, :csv, :fields, :dry_run, :remote])
30
+ opts.footer = "Get log settings."
31
+ end
32
+ optparse.parse!(args)
33
+ connect(options)
34
+ if args.count != 0
35
+ raise_command_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args}\n#{optparse}"
36
+ return 1
37
+ end
38
+
39
+ begin
40
+ @log_settings_interface.setopts(options)
41
+
42
+ if options[:dry_run]
43
+ print_dry_run @log_settings_interface.dry.get()
44
+ return
45
+ end
46
+ json_response = @log_settings_interface.get()
47
+ if options[:json]
48
+ puts as_json(json_response, options, "logSettings")
49
+ return 0
50
+ elsif options[:yaml]
51
+ puts as_yaml(json_response, options, "logSettings")
52
+ return 0
53
+ elsif options[:csv]
54
+ puts records_as_csv([json_response['logSettings']], options)
55
+ return 0
56
+ end
57
+
58
+ log_settings = json_response['logSettings']
59
+
60
+ print_h1 "Log Settings"
61
+ print cyan
62
+ description_cols = {
63
+ "Logs Enabled" => lambda {|it| format_boolean(it['enabled']) },
64
+ "Availability Time Frame" => lambda {|it| it['retentionDays'] }
65
+ }
66
+ print_description_list(description_cols, log_settings)
67
+
68
+ # Syslog Forwarding Rules
69
+ if !log_settings['syslogRules'].empty?
70
+ print_h2 "Syslog Forwarding Rules"
71
+ print cyan
72
+ print as_pretty_table(log_settings['syslogRules'], [:id, :name, :rule])
73
+ end
74
+
75
+ # Integrations
76
+ if !log_settings['integrations'].empty?
77
+ print_h2 "Integrations"
78
+ print cyan
79
+ print as_pretty_table(log_settings['integrations'], [:name, :enabled, :host, :port])
80
+ end
81
+ print reset, "\n"
82
+ return 0
83
+ rescue RestClient::Exception => e
84
+ print_rest_exception(e, options)
85
+ return 1
86
+ end
87
+ end
88
+
89
+ def update(args)
90
+ options = {}
91
+ params = {}
92
+
93
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
94
+ opts.banner = opts.banner = subcommand_usage()
95
+ opts.on("--enabled [on|off]", ['on','off'], "Logs enabled") do |val|
96
+ params['enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
97
+ end
98
+ opts.on("-R", "--retention NUMBER", Integer, "Availability time frame in days") do |val|
99
+ params['retentionDays'] = val.to_i
100
+ end
101
+ opts.on("-s", "--syslog JSON", String, "Syslog rules JSON") do |val|
102
+ begin
103
+ syslog_rules = JSON.parse(val.to_s)
104
+ options[:syslogRules] = syslog_rules.kind_of?(Array) ? syslog_rules : [syslog_rules]
105
+ rescue JSON::ParserError => e
106
+ print_red_alert "Unable to parse syslog rules JSON"
107
+ exit 1
108
+ end
109
+ end
110
+ opts.on('--syslog-list LIST', Array, "Syslog rules list in form of name value pairs: name1=rule1,name2=rule2") do |val|
111
+ options[:syslogRules] = val.collect { |nv|
112
+ parts = nv.split('=')
113
+ {'name' => parts[0].strip, 'rule' => (parts.count > 1 ? parts[1].strip : '')}
114
+ }
115
+ end
116
+ opts.on( '-i', '--integrations JSON', "Integrations") do |val|
117
+ begin
118
+ ints = JSON.parse(val.to_s)
119
+ options[:integrations] = ints.kind_of?(Array) ? ints : [ints]
120
+ rescue JSON::ParserError => e
121
+ print_red_alert "Unable to parse integrations JSON"
122
+ exit 1
123
+ end
124
+ end
125
+ build_common_options(opts, options, [:json, :payload, :dry_run, :quiet, :remote])
126
+ opts.footer = "Update your log settings."
127
+ end
128
+
129
+ optparse.parse!(args)
130
+ connect(options)
131
+ if args.count != 0
132
+ raise_command_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args}\n#{optparse}"
133
+ return 1
134
+ end
135
+
136
+ begin
137
+ payload = parse_payload(options)
138
+
139
+ if !payload
140
+ payload = {'logSettings' => params}
141
+
142
+ if !options[:syslogRules].nil?
143
+ if options[:syslogRules].reject { |rule| rule['name'] }.count > 0
144
+ print_red_alert "Invalid forwarding rule(s), name is required"
145
+ return 1
146
+ end
147
+ payload['logSettings']['syslogRules'] = options[:syslogRules]
148
+ end
149
+
150
+ if !options[:integrations].nil?
151
+ if options[:integrations].reject { |rule| rule['name'] }.count > 0
152
+ print_red_alert "Invalid integration: name is required"
153
+ return 1
154
+ end
155
+ payload['logSettings']['integrations'] = options[:integrations]
156
+ end
157
+ end
158
+
159
+ if payload['logSettings'].empty?
160
+ print_green_success "Nothing to update"
161
+ exit 1
162
+ end
163
+
164
+ @log_settings_interface.setopts(options)
165
+ if options[:dry_run]
166
+ print_dry_run @log_settings_interface.dry.update(payload)
167
+ return
168
+ end
169
+ json_response = @log_settings_interface.update(payload)
170
+
171
+ if options[:json]
172
+ puts as_json(json_response, options)
173
+ elsif !options[:quiet]
174
+ if json_response['success']
175
+ print_green_success "Updated log settings"
176
+ get([] + (options[:remote] ? ["-r",options[:remote]] : []))
177
+ else
178
+ print_red_alert "Error updating log settings: #{json_response['msg'] || json_response['errors']}"
179
+ end
180
+ end
181
+ return 0
182
+
183
+ rescue RestClient::Exception => e
184
+ print_rest_exception(e, options)
185
+ exit 1
186
+ end
187
+ end
188
+
189
+ def enable_integration(args)
190
+ print_error yellow,"[DEPRECATED] The command `#{command_name} enable-integration` is deprecated.",reset,"\n"
191
+ options = {}
192
+
193
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
194
+ opts.banner = opts.banner = subcommand_usage("[name] [host] [port]")
195
+ build_common_options(opts, options, [:json, :payload, :dry_run, :quiet, :remote])
196
+ opts.footer = "Enables specifed integration.\n" +
197
+ "[name] is required. Currently supports splunk and logrhythm integrations.\n" +
198
+ "[host] is required. Host of the integration.\n" +
199
+ "[port] is required. Port of the integration."
200
+ end
201
+
202
+ optparse.parse!(args)
203
+ connect(options)
204
+ if args.count != 3
205
+ raise_command_error "wrong number of arguments, expected 3 and got (#{args.count}) #{args}\n#{optparse}"
206
+ return 1
207
+ end
208
+ if !args[2].to_i
209
+ raise_command_error "port argument must be a number"
210
+ end
211
+
212
+ begin
213
+ payload = parse_payload(options)
214
+
215
+ if !payload
216
+ payload = {'integration' => {'enabled' => true, 'host' => args[1], 'port' => args[2]}}
217
+ end
218
+
219
+ @log_settings_interface.setopts(options)
220
+ if options[:dry_run]
221
+ print_dry_run @log_settings_interface.dry.update_integration(args[0], payload)
222
+ return
223
+ end
224
+ json_response = @log_settings_interface.update_integration(args[0], payload)
225
+
226
+ if options[:json]
227
+ puts as_json(json_response, options)
228
+ elsif !options[:quiet]
229
+ if json_response['success']
230
+ print_green_success "Integration added"
231
+ get([] + (options[:remote] ? ["-r",options[:remote]] : []))
232
+ else
233
+ print_red_alert "Error enabling integration: #{json_response['msg'] || json_response['errors']}"
234
+ end
235
+ end
236
+ return 0
237
+
238
+ rescue RestClient::Exception => e
239
+ print_rest_exception(e, options)
240
+ exit 1
241
+ end
242
+ end
243
+
244
+ def disable_integration(args)
245
+ print_error yellow,"[DEPRECATED] The command `#{command_name} disable-integration` is deprecated.",reset,"\n"
246
+ options = {}
247
+
248
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
249
+ opts.banner = opts.banner = subcommand_usage("[name]")
250
+ build_common_options(opts, options, [:json, :dry_run, :quiet, :remote])
251
+ opts.footer = "Disabled specifed integration.\n" +
252
+ "[name] is required. Currently supports splunk and logrhythm integrations."
253
+ end
254
+
255
+ optparse.parse!(args)
256
+ connect(options)
257
+ if args.count != 1
258
+ raise_command_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args}\n#{optparse}"
259
+ return 1
260
+ end
261
+
262
+ begin
263
+ payload = {'integration' => {'enabled' => false}}
264
+
265
+ @log_settings_interface.setopts(options)
266
+ if options[:dry_run]
267
+ print_dry_run @log_settings_interface.dry.update_integration(args[0], payload)
268
+ return
269
+ end
270
+ json_response = @log_settings_interface.update_integration(args[0], payload)
271
+
272
+ if options[:json]
273
+ puts as_json(json_response, options)
274
+ elsif !options[:quiet]
275
+ if json_response['success']
276
+ print_green_success "Integration removed"
277
+ get([] + (options[:remote] ? ["-r",options[:remote]] : []))
278
+ else
279
+ print_red_alert "Error disabling integration: #{json_response['msg'] || json_response['errors']}"
280
+ end
281
+ end
282
+ return 0
283
+
284
+ rescue RestClient::Exception => e
285
+ print_rest_exception(e, options)
286
+ exit 1
287
+ end
288
+ end
289
+
290
+ def remove_integration(args)
291
+ print_error yellow,"[DEPRECATED] The command `#{command_name } remove-integration` is deprecated.",reset,"\n"
292
+ options = {}
293
+
294
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
295
+ opts.banner = opts.banner = subcommand_usage("[name]")
296
+ build_common_options(opts, options, [:json, :dry_run, :quiet, :remote])
297
+ opts.footer = "Deletes specifed integration.\n" +
298
+ "[name] is required. Currently supports splunk and logrhythm integrations."
299
+ end
300
+
301
+ optparse.parse!(args)
302
+ connect(options)
303
+ if args.count != 1
304
+ raise_command_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args}\n#{optparse}"
305
+ return 1
306
+ end
307
+
308
+ begin
309
+ @log_settings_interface.setopts(options)
310
+ if options[:dry_run]
311
+ print_dry_run @log_settings_interface.dry.destroy_integration(args[0])
312
+ return
313
+ end
314
+ json_response = @log_settings_interface.destroy_integration(args[0])
315
+
316
+ if options[:json]
317
+ puts as_json(json_response, options)
318
+ elsif !options[:quiet]
319
+ if json_response['success']
320
+ print_green_success "Integration removed"
321
+ get([] + (options[:remote] ? ["-r",options[:remote]] : []))
322
+ else
323
+ print_red_alert "Error removing integration: #{json_response['msg'] || json_response['errors']}"
324
+ end
325
+ end
326
+ return 0
327
+
328
+ rescue RestClient::Exception => e
329
+ print_rest_exception(e, options)
330
+ exit 1
331
+ end
332
+ end
333
+
334
+ def add_syslog_rule(args)
335
+ options = {}
336
+
337
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
338
+ opts.banner = opts.banner = subcommand_usage("[name] [rule]")
339
+ build_common_options(opts, options, [:json, :payload, :dry_run, :quiet, :remote])
340
+ opts.footer = "Add syslog rule.\n" +
341
+ "[name] is required. If syslog already exists, the specified rule will be updated\n" +
342
+ "[rule] is required"
343
+ end
344
+
345
+ optparse.parse!(args)
346
+ connect(options)
347
+ if args.count != 2
348
+ raise_command_error "wrong number of arguments, expected 2 and got (#{args.count}) #{args}\n#{optparse}"
349
+ return 1
350
+ end
351
+
352
+ begin
353
+ payload = parse_payload(options)
354
+
355
+ if !payload
356
+ payload = {'syslogRule' => {'name' => args[0], 'rule' => args[1]}}
357
+ end
358
+
359
+ @log_settings_interface.setopts(options)
360
+ if options[:dry_run]
361
+ print_dry_run @log_settings_interface.dry.add_syslog_rule(payload)
362
+ return
363
+ end
364
+ json_response = @log_settings_interface.add_syslog_rule(payload)
365
+
366
+ if options[:json]
367
+ puts as_json(json_response, options)
368
+ elsif !options[:quiet]
369
+ if json_response['success']
370
+ print_green_success "Syslog rule added"
371
+ get([] + (options[:remote] ? ["-r",options[:remote]] : []))
372
+ else
373
+ print_red_alert "Error adding syslog rule: #{json_response['msg'] || json_response['errors']}"
374
+ end
375
+ end
376
+ return 0
377
+
378
+ rescue RestClient::Exception => e
379
+ print_rest_exception(e, options)
380
+ exit 1
381
+ end
382
+ end
383
+
384
+ def remove_syslog_rule(args)
385
+ options = {}
386
+
387
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
388
+ opts.banner = opts.banner = subcommand_usage("[syslog-rule]")
389
+ build_common_options(opts, options, [:json, :dry_run, :quiet, :remote])
390
+ opts.footer = "Delete a syslog rule.\n" +
391
+ "[syslog-rule] is required. This is the name or id of an syslog rule."
392
+ end
393
+
394
+ optparse.parse!(args)
395
+ connect(options)
396
+ if args.count != 1
397
+ raise_command_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args}\n#{optparse}"
398
+ return 1
399
+ end
400
+
401
+ begin
402
+ syslog_rule = find_syslog_rule_by_name_or_id(args[0])
403
+
404
+ if syslog_rule.nil?
405
+ print_red_alert "Syslog rule not found for: #{args[0]}"
406
+ return 1
407
+ end
408
+
409
+ @log_settings_interface.setopts(options)
410
+ if options[:dry_run]
411
+ print_dry_run @log_settings_interface.dry.destroy_syslog_rule(syslog_rule['id'])
412
+ return
413
+ end
414
+ json_response = @log_settings_interface.destroy_syslog_rule(syslog_rule['id'])
415
+
416
+ if options[:json]
417
+ puts as_json(json_response, options)
418
+ elsif !options[:quiet]
419
+ if json_response['success']
420
+ print_green_success "Syslog rule removed"
421
+ get([] + (options[:remote] ? ["-r",options[:remote]] : []))
422
+ else
423
+ print_red_alert "Error removing syslog rule: #{json_response['msg'] || json_response['errors']}"
424
+ end
425
+ end
426
+ return 0
427
+
428
+ rescue RestClient::Exception => e
429
+ print_rest_exception(e, options)
430
+ exit 1
431
+ end
432
+ end
433
+
434
+ private
435
+
436
+ def find_syslog_rule_by_name_or_id(val)
437
+ log_settings = @log_settings_interface.get()['logSettings']
438
+ log_settings['syslogRules'].find do |rule|
439
+ val.casecmp(rule['name']) == 0 || rule['id'] == val.to_i
440
+ end
441
+ end
442
+
443
+ end
@@ -0,0 +1,148 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::Login
4
+ include MtnCloud::Cli::CliCommand
5
+ # include MtnCloud::Cli::WhoamiHelper
6
+ # include MtnCloud::Cli::AccountsHelper
7
+ def initialize()
8
+
9
+ end
10
+
11
+ def connect(opts)
12
+ # @api_client = establish_remote_appliance_connection({:skip_verify_access_token => true, :skip_login => true}.merge(opts))
13
+ end
14
+
15
+ def usage
16
+ "Usage: #{prog_name} login [username] [password]"
17
+ end
18
+
19
+ def handle(args)
20
+ login(args)
21
+ end
22
+
23
+ def login(args)
24
+ options = {}
25
+ username, password = nil, nil
26
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
27
+ opts.banner = usage
28
+ opts.on( '-u', '--username USERNAME', "Username. Sub-tenant users must format their username with a prefix like {subdomain}\\{username}" ) do |val|
29
+ username = val
30
+ end
31
+ opts.on( '-p', '--password PASSWORD', "Password" ) do |val|
32
+ password = val
33
+ end
34
+ opts.on( '--password-file FILE', String, "Password File, read a file containing the password." ) do |val|
35
+ password_file = File.expand_path(val)
36
+ if !File.exist?(password_file) || !File.file?(password_file) # check readable too
37
+ raise ::OptionParser::InvalidOption.new("File not found: #{password_file}")
38
+ end
39
+ password = File.read(password_file) #.to_s.split("\n").first.strip
40
+ end
41
+ opts.on( '-t', '--test', "Test credentials only, does not update stored credentials for the appliance." ) do
42
+ options[:test_only] = true
43
+ end
44
+ opts.on( '--client-id CLIENT', "Used to test authentication with a client_id other than #{MtnCloud::APIClient::CLIENT_ID}. Currently behaves like --test, credentials are not stored." ) do |val|
45
+ options[:client_id] = val.to_s
46
+ options[:test_only] = true
47
+ end
48
+ opts.on( '-T', '--token ACCESS_TOKEN', "Use an existing access token to login instead of authenticating with a username and password." ) do |val|
49
+ options[:remote_token] = val
50
+ end
51
+ build_common_options(opts, options, [:json, :dry_run, :remote, :quiet], [:remote_username, :remote_password, :remote_token])
52
+ opts.footer = <<-EOT
53
+ Login to a remote appliance with a username and password or using an access token.
54
+ Logging in with username and password will make an authentication api request to obtain an access token.
55
+ [username] is required, this is the username of the MTN Cloud user
56
+ [password] is required, this is the password of the MTN Cloud user
57
+ Sub-tenant users will need to pass their tenant subdomain prefix. ie. {subdomain}\\{username}
58
+ By default, the subdomain is the tenant account ID. Example: 2\\neo
59
+ The --token option can be used to login with a valid access token instead of username and password.
60
+ The specified token will be verified by making a whoami api request
61
+ If successful, the access token will be saved with the active session for the remote appliance.
62
+ This command will first logout any active session before attempting authentication.
63
+ The --test option can be used to test credentials without updating the stored credentials for the appliance, neither logging you in or out.
64
+ EOT
65
+
66
+ end
67
+ optparse.parse!(args)
68
+ verify_args!(args:args, max:2, optparse:optparse)
69
+ username = args[0] if args[0]
70
+ password = args[1] if args[1]
71
+
72
+ # connect(options)
73
+ @api_client = establish_remote_appliance_connection(options.merge({:no_prompt => true, :skip_verify_access_token => true, :skip_login => true}))
74
+
75
+ if options[:test_only]
76
+ puts "Testing credentials, your current session will not be modified."
77
+ elsif @remote_appliance[:authenticated]
78
+ puts "You will be automatically logged out of your current session as '#{@remote_appliance[:username]}'"
79
+ end
80
+
81
+ begin
82
+ if (options[:quiet] && (!options[:remote_token]) && !(username && password))
83
+ print_error yellow,"Please specify username and password, or token.", reset, "\n"
84
+ return 1
85
+ end
86
+
87
+ options[:username] = username if username
88
+ options[:password] = password if password
89
+
90
+ do_save = true
91
+ if options[:test_only] || options[:remote_url]
92
+ do_save = false
93
+ end
94
+ #old_wallet = MtnCloud::Cli::Credentials.new(@appliance_name, @appliance_url).load_saved_credentials()
95
+
96
+ login_result = MtnCloud::Cli::Credentials.new(@appliance_name, @appliance_url).login(options, do_save)
97
+ if options[:dry_run]
98
+ return 0
99
+ end
100
+ wallet = login_result
101
+
102
+ # needed here too?
103
+ ::MtnCloud::Cli::Remote.recalculate_variable_map()
104
+
105
+ # should happen here, not in Credentials.login()
106
+ # if options[:json]
107
+ # puts as_json(login_result)
108
+ # return (login_result && login_result['access_token']) ? 0 : 1
109
+ # end
110
+
111
+ if wallet && wallet['access_token']
112
+ # Login Success!
113
+ if !options[:quiet]
114
+ if options[:test_only]
115
+ print green,"Success! Test Credentials verified for #{wallet['username']}", reset, "\n"
116
+ else
117
+ # clear whoami cache, it will be lazily load_saved_credentials
118
+ ::MtnCloud::Cli::Whoami.clear_whoami(@appliance_name, wallet['username'])
119
+ print green,"Success! Logged in as #{wallet['username']}", reset, "\n"
120
+ end
121
+ end
122
+ return 0 # , nil
123
+ else
124
+ # Login Failed
125
+ # so login() already prints 'Bad Credentials' (deprecate class Credentials plz)
126
+ # tell them if they're logged out now.
127
+ if !options[:quiet]
128
+ if options[:test_only]
129
+ # you are fine, nothing has changed
130
+ else
131
+ # if old_wallet && old_wallet['access_token']
132
+ # #print reset,"You are no longer logged in. Goodbye #{old_wallet['username']}!", reset, "\n"
133
+ # # todo: prompt to recover wallet ?
134
+ # end
135
+ end
136
+ end
137
+ return 1, "Login failed"
138
+ end
139
+
140
+ rescue RestClient::Exception => e
141
+ print_rest_exception(e, options)
142
+ return 1
143
+ end
144
+
145
+ end
146
+
147
+
148
+ end
@@ -0,0 +1,63 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::Logout
4
+ include MtnCloud::Cli::CliCommand
5
+
6
+ def connect(options)
7
+ @api_client = establish_remote_appliance_connection(options.merge({:no_prompt => true, :skip_verify_access_token => true, :skip_login => true}))
8
+ end
9
+
10
+ def usage
11
+ "Usage: #{prog_name} logout"
12
+ end
13
+
14
+ def handle(args)
15
+ logout(args)
16
+ end
17
+
18
+ def logout(args)
19
+ options = {}
20
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
21
+ opts.banner = usage
22
+ build_common_options(opts, options, [:remote, :quiet])
23
+ opts.footer = <<-EOT
24
+ Logout of a remote appliance.
25
+ This clears your credentials so that you will need to login again.
26
+ EOT
27
+ end
28
+ optparse.parse!(args)
29
+ verify_args!(args:args,count:0,optpare:optparse)
30
+ connect(options)
31
+
32
+ if !@appliance_name
33
+ print_error MtnCloud::Terminal.angry_prompt
34
+ puts_error "Please specify an MTN Cloud appliance to logout of with -r or see the command `remote use`"
35
+ return 1
36
+ end
37
+ wallet = MtnCloud::Cli::Credentials.new(@appliance_name, @appliance_url).load_saved_credentials
38
+ token = wallet ? wallet['access_token'] : nil
39
+ if !token
40
+ if !options[:quiet]
41
+ puts "You are not currently logged in to #{display_appliance(@appliance_name, @appliance_url)}"
42
+ end
43
+ else
44
+ # todo: need to tell the server to delete the token too..
45
+ # delete token from credentials file
46
+ # note: this also handles updating appliance session info
47
+ MtnCloud::Cli::Credentials.new(@appliance_name, @appliance_url).logout()
48
+ if !options[:quiet]
49
+ puts "#{cyan}Logged out of #{@appliance_name}. Goodbye #{wallet['username']}!#{reset}"
50
+ end
51
+ end
52
+ # recalcuate echo vars
53
+ MtnCloud::Cli::Echo.recalculate_variable_map()
54
+ # recalculate shell prompt after this change
55
+ if MtnCloud::Cli::Shell.has_instance?
56
+ MtnCloud::Cli::Shell.instance.reinitialize()
57
+ end
58
+ return 0
59
+
60
+ end
61
+
62
+
63
+ end