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,653 @@
1
+ require 'mtncloud/cli/cli_command'
2
+
3
+ class MtnCloud::Cli::WhitelabelSettingsCommand
4
+ include MtnCloud::Cli::CliCommand
5
+ include MtnCloud::Cli::AccountsHelper
6
+
7
+ set_command_name :'whitelabel-settings'
8
+
9
+ register_subcommands :get, :update
10
+ register_subcommands :update_images, :reset_image, :download_image, :view_image
11
+ set_default_subcommand :get
12
+
13
+ def initialize()
14
+ @image_types = {'header-logo' => 'headerLogo', 'footer-logo' => 'footerLogo', 'login-logo' => 'loginLogo', 'favicon' => 'favicon'}
15
+ end
16
+
17
+ def connect(opts)
18
+ @api_client = establish_remote_appliance_connection(opts)
19
+ @whitelabel_settings_interface = @api_client.whitelabel_settings
20
+ @accounts_interface = @api_client.accounts
21
+ end
22
+
23
+ def handle(args)
24
+ handle_subcommand(args)
25
+ end
26
+
27
+ def get(args)
28
+ options = {}
29
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
30
+ opts.banner = subcommand_usage()
31
+ opts.on( '--tenant TENANT', String, "Tenant Name or ID" ) do |val|
32
+ options[:account] = val
33
+ end
34
+ opts.on( '-a', '--account ACCOUNT', "Tenant Name or ID" ) do |val|
35
+ options[:account] = val
36
+ end
37
+ opts.add_hidden_option('-a, --account') if opts.is_a?(MtnCloud::Cli::OptionParser)
38
+ opts.on('--details', "Show full (not truncated) contents of Terms of Use, Privacy Policy, Override CSS" ) do
39
+ options[:details] = true
40
+ end
41
+ build_common_options(opts, options, [:query, :json, :yaml, :csv, :fields, :dry_run, :remote])
42
+ opts.footer = "Get whitelabel settings."
43
+ end
44
+
45
+ optparse.parse!(args)
46
+ connect(options)
47
+
48
+ if args.count != 0
49
+ raise_command_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args}\n#{optparse}"
50
+ return 1
51
+ end
52
+
53
+ begin
54
+ params = parse_list_options(options)
55
+ account = nil
56
+ if options[:account]
57
+ account = find_account_by_name_or_id(options[:account])
58
+ if account.nil?
59
+ return 1
60
+ else
61
+ params['accountId'] = account['id']
62
+ end
63
+ end
64
+ @whitelabel_settings_interface.setopts(options)
65
+ if options[:dry_run]
66
+ print_dry_run @whitelabel_settings_interface.dry.get(params)
67
+ return
68
+ end
69
+ json_response = @whitelabel_settings_interface.get(params)
70
+ if options[:json]
71
+ puts as_json(json_response, options, "whitelabelSettings")
72
+ return 0
73
+ elsif options[:yaml]
74
+ puts as_yaml(json_response, options, "whitelabelSettings")
75
+ return 0
76
+ elsif options[:csv]
77
+ puts records_as_csv([json_response['whitelabelSettings']], options)
78
+ return 0
79
+ end
80
+
81
+ whitelabel_settings = json_response['whitelabelSettings']
82
+
83
+ print_h1 "Whitelabel Settings"
84
+ print cyan
85
+ description_cols = {
86
+ "Tenant" => lambda {|it| it['account']['name'] rescue '' },
87
+ "Enabled" => lambda {|it| format_boolean(it['enabled']) },
88
+ "Appliance Name" => lambda {|it| it['applianceName'] },
89
+ "Disable Support Menu" => lambda {|it| format_boolean(it['disableSupportMenu'])},
90
+ "Header Logo" => lambda {|it| it['headerLogo'] ? it['headerLogo'].split('/').last : '' },
91
+ "Footer Logo" => lambda {|it| it['footerLogo'] ? it['footerLogo'].split('/').last : '' },
92
+ "Login Logo" => lambda {|it| it['loginLogo'] ? it['loginLogo'].split('/').last : '' },
93
+ "Favicon" => lambda {|it| it['favicon'] ? it['favicon'].split('/').last : '' },
94
+ "Header Background" => lambda {|it| it['headerBgColor']},
95
+ "Header Foreground" => lambda {|it| it['headerFgColor']},
96
+ "Nav Background" => lambda {|it| it['navBgColor']},
97
+ "Nav Foreground" => lambda {|it| it['navFgColor']},
98
+ "Nav Hover" => lambda {|it| it['navHoverColor']},
99
+ "Primary Button Background" => lambda {|it| it['primaryButtonBgColor']},
100
+ "Primary Button Foreground" => lambda {|it| it['primaryButtonFgColor']},
101
+ "Primary Button Hover Background" => lambda {|it| it['primaryButtonHoverBgColor']},
102
+ "Primary Button Hover Foreground" => lambda {|it| it['primaryButtonHoverFgColor']},
103
+ "Footer Background" => lambda {|it| it['footerBgColor']},
104
+ "Footer Foreground" => lambda {|it| it['footerFgColor']},
105
+ "Login Background" => lambda {|it| it['loginBgColor']},
106
+ "Copyright String" => lambda {|it| it['copyrightString']}
107
+ }
108
+
109
+ print_description_list(description_cols, whitelabel_settings)
110
+
111
+ # Support Menu Links
112
+ if !whitelabel_settings['supportMenuLinks'].empty?
113
+ print_h2 "Support Menu Links"
114
+ print cyan
115
+ print as_pretty_table(whitelabel_settings['supportMenuLinks'], [:url, :label, :labelCode])
116
+ end
117
+
118
+ trunc_len = 80
119
+ if !(content = whitelabel_settings['overrideCss']).nil? && content.length
120
+ title = "Override CSS"
121
+ title = title + ' (truncated, use --details for all content)' if content && content.length > trunc_len && !options[:details]
122
+ print_h2 title
123
+ print cyan
124
+ print options[:details] ? content : truncate_string(content, trunc_len), "\n"
125
+ end
126
+ if !(content = whitelabel_settings['termsOfUse']).nil? && content.length
127
+ title = "Terms of Use"
128
+ title = title + ' (truncated, use --details for all content)' if content && content.length > trunc_len && !options[:details]
129
+ print_h2 title
130
+ print cyan
131
+ print options[:details] ? content : truncate_string(content, trunc_len), "\n"
132
+ end
133
+ if !(content = whitelabel_settings['privacyPolicy']).nil? && content.length
134
+ title = "Privacy Policy"
135
+ title = title + ' (truncated, use --details for all content)' if content && content.length > trunc_len && !options[:details]
136
+ print_h2 title
137
+ print cyan
138
+ print options[:details] ? content : truncate_string(content, trunc_len), "\n"
139
+ end
140
+ print reset, "\n"
141
+ return 0
142
+ rescue RestClient::Exception => e
143
+ print_rest_exception(e, options)
144
+ return 1
145
+ end
146
+ end
147
+
148
+ def update(args)
149
+ options = {}
150
+ params = {}
151
+ query_params = {}
152
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
153
+ opts.banner = opts.banner = subcommand_usage()
154
+ opts.on( '--tenant TENANT', String, "Tenant Name or ID" ) do |val|
155
+ options[:account] = val
156
+ end
157
+ opts.on( '-a', '--account ACCOUNT', "Tenant Name or ID" ) do |val|
158
+ options[:account] = val
159
+ end
160
+ opts.add_hidden_option('-a, --account') if opts.is_a?(MtnCloud::Cli::OptionParser)
161
+ opts.on('--active [on|off]', String, "Can be used to enable / disable whitelabel feature") do |val|
162
+ params['enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
163
+ end
164
+ opts.on("--appliance-name NAME", String, "Appliance name. Only available to master tenant") do |val|
165
+ params['applianceName'] = val == 'null' ? nil : val
166
+ end
167
+ opts.on("--disable-support-menu [on|off]", ['on','off'], "Can be used to disable support menu") do |val|
168
+ params['disableSupportMenu'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
169
+ end
170
+ opts.on("--reset-header-logo", String, "Resets header logo to default header logo") do |val|
171
+ params['resetHeaderLogo'] = true
172
+ end
173
+ opts.on("--reset-footer-logo", String, "Resets footer logo to default footer logo") do |val|
174
+ params['resetFooterLogo'] = true
175
+ end
176
+ opts.on("--reset-login-logo", String, "Resets login logo to default login logo") do |val|
177
+ params['resetLoginLogo'] = true
178
+ end
179
+ opts.on("--reset-favicon", String, "Resets favicon default favicon") do |val|
180
+ params['resetFavicon'] = true
181
+ end
182
+ opts.on("--header-bg-color VALUE", String, "Header background color") do |val|
183
+ params['headerBgColor'] = val == 'null' ? nil : val
184
+ end
185
+ opts.on("--header-fg-color VALUE", String, "Header foreground color") do |val|
186
+ params['headerFgColor'] = val == 'null' ? nil : val
187
+ end
188
+ opts.on("--nav-bg-color VALUE", String, "Nav background color") do |val|
189
+ params['navBgColor'] = val == 'null' ? nil : val
190
+ end
191
+ opts.on("--nav-fg-color VALUE", String, "Nav foreground color") do |val|
192
+ params['navFgColor'] = val == 'null' ? nil : val
193
+ end
194
+ opts.on("--nav-hover-color VALUE", String, "Nav hover color") do |val|
195
+ params['navHoverColor'] = val == 'null' ? nil : val
196
+ end
197
+ opts.on("--primary-button-bg-color VALUE", String, "Primary button background color") do |val|
198
+ params['primaryButtonBgColor'] = val == 'null' ? nil : val
199
+ end
200
+ opts.on("--primary-button-fg-color VALUE", String, "Primary button foreground color") do |val|
201
+ params['primaryButtonFgColor'] = val == 'null' ? nil : val
202
+ end
203
+ opts.on("--primary-button-hover-bg-color VALUE", String, "Primary button hover background color") do |val|
204
+ params['primaryButtonHoverBgColor'] = val == 'null' ? nil : val
205
+ end
206
+ opts.on("--primary-button-hover-fg-color VALUE", String, "Primary button hover foreground color") do |val|
207
+ params['primaryButtonHoverFgColor'] = val == 'null' ? nil : val
208
+ end
209
+ opts.on("--footer-bg-color VALUE", String, "Footer background color") do |val|
210
+ params['footerBgColor'] = val == 'null' ? nil : val
211
+ end
212
+ opts.on("--footer-fg-color VALUE", String, "Footer foreground color") do |val|
213
+ params['footerFgColor'] = val == 'null' ? nil : val
214
+ end
215
+ opts.on("--login-bg-color VALUE", String, "Login background color") do |val|
216
+ params['loginBgColor'] = val == 'null' ? nil : val
217
+ end
218
+ opts.on("--copyright TEXT", String, "Copyright String") do |val|
219
+ params['copyrightString'] = val == 'null' ? nil : val
220
+ end
221
+ opts.on("--css TEXT", String, "Override CSS") do |val|
222
+ params['overrideCss'] = val == 'null' ? nil : val
223
+ end
224
+ opts.on("--css-file FILE", String, "Override CSS from local file") do |val|
225
+ options[:overrideCssFile] = val
226
+ end
227
+ opts.on("--terms TEXT", String, "Terms of use content") do |val|
228
+ params['termsOfUse'] = val == 'null' ? nil : val
229
+ end
230
+ opts.on("--terms-file FILE", String, "Terms of use content from local file") do |val|
231
+ options[:termsOfUseFile] = val
232
+ end
233
+ opts.on("--privacy-policy TEXT", String, "Privacy policy content") do |val|
234
+ params['privacyPolicy'] = val == 'null' ? nil : val
235
+ end
236
+ opts.on("--privacy-policy-file FILE", String, "Privacy policy content from local file") do |val|
237
+ options[:privacyPolicyFile] = val
238
+ end
239
+ opts.on('--support-menu-links JSON', String, "Support menu links JSON") do |val|
240
+ begin
241
+ support_menu_links = JSON.parse(val.to_s)
242
+ params['supportMenuLinks'] = support_menu_links.kind_of?(Array) ? support_menu_links : [support_menu_links]
243
+ rescue JSON::ParserError => e
244
+ print_red_alert "Unable to parse support menu links JSON"
245
+ exit 1
246
+ end
247
+ end
248
+ opts.on('--support-menu-links-list LIST', Array, "Support menu links list. Comma delimited list of menu links. Each menu link is pipe delimited url1|label1|code1,url2|label2|code2") do |val|
249
+ params['supportMenuLinks'] = val.collect { |link|
250
+ parts = link.split('|')
251
+ {'url' => parts[0].strip, 'label' => (parts.count > 1 ? parts[1].strip : ''), 'labelCode' => (parts.count > 2 ? parts[2].strip : '')}
252
+ }
253
+ end
254
+ build_common_options(opts, options, [:json, :payload, :dry_run, :quiet, :remote])
255
+ end
256
+
257
+ optparse.parse!(args)
258
+ connect(options)
259
+
260
+ if args.count != 0
261
+ raise_command_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args}\n#{optparse}"
262
+ return 1
263
+ end
264
+
265
+ begin
266
+ account = nil
267
+ if options[:account]
268
+ account = find_account_by_name_or_id(options[:account])
269
+ if account.nil?
270
+ return 1
271
+ else
272
+ query_params['accountId'] = account['id']
273
+ end
274
+ end
275
+ payload = parse_payload(options)
276
+ image_files = {}
277
+
278
+ if !payload
279
+ [:overrideCssFile, :termsOfUseFile, :privacyPolicyFile].each do |sym|
280
+ if options[sym]
281
+ filename = File.expand_path(options[sym])
282
+
283
+ if filename && File.file?(filename)
284
+ params[sym.to_s.delete_suffix('File')] = File.read(filename)
285
+ else
286
+ print_red_alert("File not found: #{filename}")
287
+ exit 1
288
+ end
289
+ end
290
+ end
291
+ payload = {'whitelabelSettings' => params}
292
+ end
293
+
294
+ @whitelabel_settings_interface.setopts(options)
295
+ if options[:dry_run]
296
+ print_dry_run @whitelabel_settings_interface.dry.update(payload, query_params)
297
+ return
298
+ end
299
+ json_response = @whitelabel_settings_interface.update(payload, query_params)
300
+
301
+ if options[:json]
302
+ puts as_json(json_response, options)
303
+ elsif !options[:quiet]
304
+ if json_response['success']
305
+ print_green_success "Updated whitelabel settings"
306
+ get([] + (options[:account] ? ["-a",options[:account]] : []) + (options[:remote] ? ["-r",options[:remote]] : []))
307
+ else
308
+ print_red_alert "Error updating whitelabel settings: #{json_response['msg'] || json_response['errors']}"
309
+ end
310
+ end
311
+ return 0
312
+ rescue RestClient::Exception => e
313
+ print_rest_exception(e, options)
314
+ exit 1
315
+ end
316
+ end
317
+
318
+ def update_images(args)
319
+ params = {}
320
+ query_params = {}
321
+ options = {}
322
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
323
+ opts.banner = opts.banner = subcommand_usage()
324
+ opts.on( '--tenant TENANT', String, "Tenant Name or ID" ) do |val|
325
+ options[:account] = val
326
+ end
327
+ opts.on( '-a', '--account ACCOUNT', "Tenant Name or ID" ) do |val|
328
+ options[:account] = val
329
+ end
330
+ opts.add_hidden_option('-a, --account') if opts.is_a?(MtnCloud::Cli::OptionParser)
331
+ opts.on("--header-logo FILE", String, "Header logo image. Local path of a file to upload (png|jpg|svg)") do |val|
332
+ options[:headerLogo] = val
333
+ end
334
+ opts.on("--reset-header-logo", String, "Resets header logo to default header logo") do |val|
335
+ params['resetHeaderLogo'] = true
336
+ end
337
+ opts.on("--footer-logo FILE", String, "Footer logo image. Local path of a file to upload (png|jpg|svg)") do |val|
338
+ options[:footerLogo] = val
339
+ end
340
+ opts.on("--reset-footer-logo", String, "Resets footer logo to default footer logo") do |val|
341
+ params['resetFooterLogo'] = true
342
+ end
343
+ opts.on("--login-logo FILE", String, "Login logo image. Local path of a file to upload (png|jpg|svg)") do |val|
344
+ options[:loginLogo] = val
345
+ end
346
+ opts.on("--reset-login-logo", String, "Resets login logo to default login logo") do |val|
347
+ params['resetLoginLogo'] = true
348
+ end
349
+ opts.on("--favicon FILE", String, "Favicon icon image. Local path of a file to upload") do |val|
350
+ options[:favicon] = val
351
+ end
352
+ opts.on("--reset-favicon", String, "Resets favicon default favicon") do |val|
353
+ params['resetFavicon'] = true
354
+ end
355
+ build_common_options(opts, options, [:json, :payload, :dry_run, :quiet, :remote])
356
+ opts.footer = "Update your whitelabel images."
357
+ end
358
+
359
+ optparse.parse!(args)
360
+ connect(options)
361
+
362
+ if args.count != 0
363
+ raise_command_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args}\n#{optparse}"
364
+ return 1
365
+ end
366
+
367
+ begin
368
+ account = nil
369
+ if options[:account]
370
+ account = find_account_by_name_or_id(options[:account])
371
+ if account.nil?
372
+ return 1
373
+ else
374
+ query_params['accountId'] = account['id']
375
+ end
376
+ end
377
+ payload = parse_payload(options)
378
+
379
+ if !payload
380
+ payload = params
381
+
382
+ [:headerLogo, :footerLogo, :loginLogo, :favicon].each do |sym|
383
+ if options[sym]
384
+ filename = File.expand_path(options[sym])
385
+
386
+ if filename && File.file?(filename)
387
+ payload["#{sym.to_s}.file"] = File.new(filename, 'rb')
388
+ else
389
+ print_red_alert("File not found: #{filename}")
390
+ exit 1
391
+ end
392
+ end
393
+ end
394
+ end
395
+
396
+ if payload.empty?
397
+ print_green_success "Nothing to update"
398
+ exit 1
399
+ end
400
+
401
+ @whitelabel_settings_interface.setopts(options)
402
+ if options[:dry_run]
403
+ print_dry_run @whitelabel_settings_interface.dry.update_images(payload, query_params)
404
+ return
405
+ end
406
+
407
+ json_response = @whitelabel_settings_interface.update_images(payload, query_params)
408
+
409
+ if options[:json]
410
+ puts as_json(json_response, options)
411
+ elsif !options[:quiet]
412
+ print_red_alert "Error updating whitelabel image: #{json_response['msg'] || json_response['errors']}" if json_response['success'] == false
413
+ print_green_success "Updated whitelabel image" if json_response['success'] == true
414
+ end
415
+ rescue RestClient::Exception => e
416
+ print_rest_exception(e, options)
417
+ exit 1
418
+ end
419
+ end
420
+
421
+ def reset_image(args)
422
+ query_params = {}
423
+ options = {}
424
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
425
+ opts.banner = opts.banner = subcommand_usage("[image-type]")
426
+ opts.on( '--tenant TENANT', String, "Tenant Name or ID" ) do |val|
427
+ options[:account] = val
428
+ end
429
+ opts.on( '-a', '--account ACCOUNT', "Tenant Name or ID" ) do |val|
430
+ options[:account] = val
431
+ end
432
+ opts.add_hidden_option('-a, --account') if opts.is_a?(MtnCloud::Cli::OptionParser)
433
+ build_common_options(opts, options, [:json, :dry_run, :quiet, :remote])
434
+ opts.footer = "Reset your whitelabel image.\n" +
435
+ "[image-type] is required. This is the whitelabel image type (#{@image_types.collect {|k,v| k}.join('|')})"
436
+ end
437
+
438
+ optparse.parse!(args)
439
+ connect(options)
440
+
441
+ if args.count != 1
442
+ raise_command_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args}\n#{optparse}"
443
+ return 1
444
+ end
445
+ if !@image_types[args[0]]
446
+ raise_command_error "Invalid image type specified: #{args[0]}. Must be one of the following (#{@image_types.collect {|k,v| k}.join('|')})"
447
+ return 1
448
+ end
449
+
450
+ begin
451
+ account = nil
452
+ if options[:account]
453
+ account = find_account_by_name_or_id(options[:account])
454
+ if account.nil?
455
+ return 1
456
+ else
457
+ query_params['accountId'] = account['id']
458
+ end
459
+ end
460
+ image_type = @image_types[args[0]]
461
+ @whitelabel_settings_interface.setopts(options)
462
+ if options[:dry_run]
463
+ print_dry_run @whitelabel_settings_interface.dry.reset_image(image_type, query_params)
464
+ return
465
+ end
466
+
467
+ json_response = @whitelabel_settings_interface.reset_image(image_type, query_params)
468
+
469
+ if options[:json]
470
+ puts as_json(json_response, options)
471
+ elsif !options[:quiet]
472
+ print_red_alert "Error resetting whitelabel image: #{json_response['msg'] || json_response['errors']}" if json_response['success'] == false
473
+ print_green_success "Reset whitelabel image" if json_response['success'] == true
474
+ end
475
+ rescue RestClient::Exception => e
476
+ print_rest_exception(e, options)
477
+ exit 1
478
+ end
479
+ end
480
+
481
+ def view_image(args)
482
+ params = {}
483
+ options = {}
484
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
485
+ opts.banner = opts.banner = subcommand_usage("[image-type]")
486
+ opts.on( '--tenant TENANT', String, "Tenant Name or ID" ) do |val|
487
+ options[:account] = val
488
+ end
489
+ opts.on( '-a', '--account ACCOUNT', "Tenant Name or ID" ) do |val|
490
+ options[:account] = val
491
+ end
492
+ opts.add_hidden_option('-a, --account') if opts.is_a?(MtnCloud::Cli::OptionParser)
493
+ build_common_options(opts, options, [:json, :dry_run, :quiet, :remote])
494
+ opts.footer = "View your image of specified [image-type].\n" +
495
+ "[image-type] is required. This is the whitelabel image type (#{@image_types.collect {|k,v| k}.join('|')})\n" +
496
+ "This opens the image url with a web browser."
497
+ end
498
+
499
+ optparse.parse!(args)
500
+ connect(options)
501
+
502
+ if args.count != 1
503
+ raise_command_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args}\n#{optparse}"
504
+ return 1
505
+ end
506
+ if !@image_types[args[0]]
507
+ raise_command_error "Invalid image type specified: #{args[0]}. Must be one of the following (#{@image_types.collect {|k,v| k}.join('|')})"
508
+ return 1
509
+ end
510
+
511
+ begin
512
+ account = nil
513
+ if options[:account]
514
+ account = find_account_by_name_or_id(options[:account])
515
+ if account.nil?
516
+ return 1
517
+ else
518
+ params['accountId'] = account['id']
519
+ end
520
+ end
521
+ image_type = @image_types[args[0]]
522
+ @whitelabel_settings_interface.setopts(options)
523
+ if options[:dry_run]
524
+ print_dry_run @whitelabel_settings_interface.dry.get(params)
525
+ return
526
+ end
527
+
528
+ whitelabel_settings = @whitelabel_settings_interface.get(params)['whitelabelSettings']
529
+
530
+ if link = whitelabel_settings[image_type]
531
+ if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
532
+ system "start #{link}"
533
+ elsif RbConfig::CONFIG['host_os'] =~ /darwin/
534
+ system "open #{link}"
535
+ elsif RbConfig::CONFIG['host_os'] =~ /linux|bsd/
536
+ system "xdg-open #{link}"
537
+ end
538
+ return 0, nil
539
+ else
540
+ print_error red,"No image found for #{image_type}.",reset,"\n"
541
+ return 1
542
+ end
543
+ rescue RestClient::Exception => e
544
+ print_rest_exception(e, options)
545
+ return 1
546
+ end
547
+ end
548
+
549
+ def download_image(args)
550
+ params = {}
551
+ options = {}
552
+ optparse = MtnCloud::Cli::OptionParser.new do |opts|
553
+ opts.banner = opts.banner = subcommand_usage("[image-type] [local-file]")
554
+ opts.on( '--tenant TENANT', String, "Tenant Name or ID" ) do |val|
555
+ options[:account] = val
556
+ end
557
+ opts.on( '-a', '--account ACCOUNT', "Tenant Name or ID" ) do |val|
558
+ options[:account] = val
559
+ end
560
+ opts.add_hidden_option('-a, --account') if opts.is_a?(MtnCloud::Cli::OptionParser)
561
+ opts.on( '-f', '--force', "Overwrite existing [local-file] if it exists." ) do
562
+ options[:overwrite] = true
563
+ end
564
+ opts.on( '-p', '--mkdir', "Create missing directories for [local-file] if they do not exist." ) do
565
+ options[:mkdir] = true
566
+ end
567
+ build_common_options(opts, options, [:dry_run, :quiet, :remote])
568
+ opts.footer = "Download an image file.\n" +
569
+ "[image-type] is required. This is the whitelabel image type (#{@image_types.collect {|k,v| k}.join('|')}) to be downloaded.\n" +
570
+ "[local-file] is required. This is the full local filepath for the downloaded file."
571
+ end
572
+
573
+ optparse.parse!(args)
574
+ connect(options)
575
+
576
+ if args.count != 2
577
+ raise_command_error "wrong number of arguments, expected 2 and got (#{args.count}) #{args}\n#{optparse}"
578
+ return 1
579
+ end
580
+ if !@image_types[args[0]]
581
+ raise_command_error "Invalid image type specified: #{args[0]}. Must be one of the following (#{@image_types.collect {|k,v| k}.join('|')})"
582
+ return 1
583
+ end
584
+
585
+ begin
586
+ account = nil
587
+ if options[:account]
588
+ account = find_account_by_name_or_id(options[:account])
589
+ if account.nil?
590
+ return 1
591
+ else
592
+ params['accountId'] = account['id']
593
+ end
594
+ end
595
+ image_type = @image_types[args[0]]
596
+ outfile = File.expand_path(args[1])
597
+ outdir = File.dirname(outfile)
598
+
599
+ if Dir.exist?(outfile)
600
+ print_red_alert "[local-file] is invalid. It is the name of an existing directory: #{outfile}"
601
+ return 1
602
+ end
603
+ if !Dir.exist?(outdir)
604
+ if options[:mkdir]
605
+ print cyan,"Creating local directory #{outdir}",reset,"\n"
606
+ FileUtils.mkdir_p(outdir)
607
+ else
608
+ print_red_alert "[local-file] is invalid. Directory not found: #{outdir}"
609
+ return 1
610
+ end
611
+ end
612
+ if File.exist?(outfile) && !options[:overwrite]
613
+ print_red_alert "[local-file] is invalid. File already exists: #{outfile}\nUse -f to overwrite the existing file."
614
+ return 1
615
+ end
616
+
617
+ @whitelabel_settings_interface.setopts(options)
618
+ if options[:dry_run]
619
+ print_dry_run @whitelabel_settings_interface.dry.download_image(image_type, outfile, params)
620
+ return
621
+ end
622
+
623
+ if !options[:quite]
624
+ print cyan + "Downloading #{args[0]} to #{outfile} ... "
625
+ end
626
+
627
+ http_response = @whitelabel_settings_interface.download_image(image_type, outfile, params)
628
+
629
+ success = http_response.code.to_i == 200
630
+ if success
631
+ if !options[:quiet]
632
+ print green + "SUCCESS" + reset + "\n"
633
+ end
634
+ return 0
635
+ else
636
+ if !options[:quiet]
637
+ print red + "ERROR" + reset + " HTTP #{http_response.code}" + "\n"
638
+ end
639
+ if File.exist?(outfile) && File.file?(outfile)
640
+ MtnCloud::Logging::DarkPrinter.puts "Deleting bad file download: #{outfile}" if MtnCloud::Logging.debug?
641
+ File.delete(outfile)
642
+ end
643
+ if options[:debug]
644
+ puts_error http_response.inspect
645
+ end
646
+ return 1
647
+ end
648
+ rescue RestClient::Exception => e
649
+ print_rest_exception(e, options)
650
+ return 1
651
+ end
652
+ end
653
+ end