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,67 @@
1
+ require 'test/unit'
2
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __dir__))
3
+ require 'mtncloud/api/clouds_interface'
4
+
5
+ class CloudsInterfaceTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @clouds_interface = MtnCloud::CloudsInterface.new(access_token: 'token', url: 'https://example.test', verify_ssl: false)
9
+ end
10
+
11
+ def test_affinity_group_form_options_builds_bearer_authorization_header
12
+ request = @clouds_interface.dry.affinity_group_form_options(59, phase: 'create')
13
+ assert_equal :get, request[:method]
14
+ assert_equal 'https://example.test/api/zones/59/affinity-groups/form-options', request[:url]
15
+ assert_equal({phase: 'create'}, request[:headers][:params])
16
+ assert_equal 'Bearer token', request[:headers][:authorization]
17
+ end
18
+
19
+ def test_list_host_vm_groups_builds_bearer_authorization_header
20
+ request = @clouds_interface.dry.list_host_vm_groups(59, phrase: 'group')
21
+ assert_equal :get, request[:method]
22
+ assert_equal 'https://example.test/api/zones/59/host-vm-groups', request[:url]
23
+ assert_equal({phrase: 'group'}, request[:headers][:params])
24
+ assert_equal 'Bearer token', request[:headers][:authorization]
25
+ end
26
+
27
+ def test_get_host_vm_group_builds_bearer_authorization_header
28
+ request = @clouds_interface.dry.get_host_vm_group(59, 415, details: true)
29
+ assert_equal :get, request[:method]
30
+ assert_equal 'https://example.test/api/zones/59/host-vm-groups/415', request[:url]
31
+ assert_equal({details: true}, request[:headers][:params])
32
+ assert_equal 'Bearer token', request[:headers][:authorization]
33
+ end
34
+
35
+ def test_create_host_vm_group_builds_bearer_authorization_header
36
+ request = @clouds_interface.dry.create_host_vm_group(59, {name: 'group-a'})
37
+ assert_equal :post, request[:method]
38
+ assert_equal 'https://example.test/api/zones/59/host-vm-groups', request[:url]
39
+ assert_equal({name: 'group-a'}.to_json, request[:payload])
40
+ assert_equal 'Bearer token', request[:headers][:authorization]
41
+ end
42
+
43
+ def test_update_host_vm_group_builds_bearer_authorization_header
44
+ request = @clouds_interface.dry.update_host_vm_group(59, 415, {name: 'group-b'})
45
+ assert_equal :put, request[:method]
46
+ assert_equal 'https://example.test/api/zones/59/host-vm-groups/415', request[:url]
47
+ assert_equal({name: 'group-b'}.to_json, request[:payload])
48
+ assert_equal 'Bearer token', request[:headers][:authorization]
49
+ end
50
+
51
+ def test_destroy_host_vm_group_builds_bearer_authorization_header
52
+ request = @clouds_interface.dry.destroy_host_vm_group(59, 415, force: true)
53
+ assert_equal :delete, request[:method]
54
+ assert_equal 'https://example.test/api/zones/59/host-vm-groups/415', request[:url]
55
+ assert_equal({force: true}, request[:headers][:params])
56
+ assert_equal 'Bearer token', request[:headers][:authorization]
57
+ end
58
+
59
+ def test_host_vm_group_form_options_builds_bearer_authorization_header
60
+ request = @clouds_interface.dry.host_vm_group_form_options(59, scope: 'qa')
61
+ assert_equal :get, request[:method]
62
+ assert_equal 'https://example.test/api/zones/59/host-vm-groups/form-options', request[:url]
63
+ assert_equal({scope: 'qa'}, request[:headers][:params])
64
+ assert_equal 'Bearer token', request[:headers][:authorization]
65
+ end
66
+
67
+ end
@@ -0,0 +1,68 @@
1
+ require 'mtncloud_test'
2
+
3
+ # Tests for MtnCloud::ContainersInterface
4
+ class MtnCloudTest::ContainersInterfaceTest < MtnCloudTest::TestCase
5
+
6
+ include MtnCloudTest::TestDataHelper
7
+
8
+ def setup()
9
+ super
10
+ #load_container_test_data()
11
+ end
12
+
13
+ def test_get
14
+ container_id = find_first_container_id()
15
+ response = client.containers.get(container_id)
16
+ assert response['container'].is_a?(Hash)
17
+ assert_equal response['container']['id'], container_id
18
+ end
19
+
20
+ # todo: need to wait and refresh status for this to work well
21
+
22
+ =begin
23
+ def test_stop
24
+ response = client.containers.stop(@id, {})
25
+ assert_equal response['success'], true
26
+ end
27
+
28
+ def test_start
29
+ response = client.containers.start(@id, {})
30
+ assert_equal response['success'], true
31
+ end
32
+
33
+ def test_restart
34
+ response = client.containers.restart(@id, {})
35
+ assert_equal response['success'], true
36
+ end
37
+
38
+ def test_suspend
39
+ response = client.containers.suspend(@id, {})
40
+ assert_equal response['success'], true
41
+ end
42
+
43
+ def test_eject
44
+ response = client.containers.eject(@id, {})
45
+ assert_equal response['success'], true
46
+ end
47
+
48
+ def test_available_actions
49
+ response = client.containers.available_actions(@id)
50
+ assert response['actions'].is_a?(Array)
51
+ end
52
+
53
+ def test_action
54
+ response = client.containers.action(@id, {})
55
+ assert_equal response['success'], true
56
+ end
57
+
58
+ def test_import
59
+ response = client.containers.import(@id, {})
60
+ assert_equal response['success'], true
61
+ end
62
+
63
+ def test_clone_image
64
+ response = client.containers.clone_image(@id, {})
65
+ assert_equal response['success'], true
66
+ end
67
+ =end
68
+ end
@@ -0,0 +1,35 @@
1
+ require 'test/unit'
2
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __dir__))
3
+ require 'mtncloud/api/host_vm_groups_interface'
4
+
5
+ class HostVmGroupsInterfaceTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @host_vm_groups_interface = MtnCloud::HostVmGroupsInterface.new(access_token: 'token', url: 'https://example.test', verify_ssl: false)
9
+ end
10
+
11
+ def test_get_builds_bearer_authorization_header
12
+ request = @host_vm_groups_interface.dry.get(415, details: true)
13
+ assert_equal :get, request[:method]
14
+ assert_equal 'https://example.test/api/host-vm-groups/415', request[:url]
15
+ assert_equal({details: true}, request[:headers][:params])
16
+ assert_equal 'Bearer token', request[:headers][:authorization]
17
+ end
18
+
19
+ def test_update_builds_bearer_authorization_header
20
+ request = @host_vm_groups_interface.dry.update(415, {name: 'group-a'})
21
+ assert_equal :put, request[:method]
22
+ assert_equal 'https://example.test/api/host-vm-groups/415', request[:url]
23
+ assert_equal({name: 'group-a'}.to_json, request[:payload])
24
+ assert_equal 'Bearer token', request[:headers][:authorization]
25
+ end
26
+
27
+ def test_destroy_builds_bearer_authorization_header
28
+ request = @host_vm_groups_interface.dry.destroy(415, force: true)
29
+ assert_equal :delete, request[:method]
30
+ assert_equal 'https://example.test/api/host-vm-groups/415', request[:url]
31
+ assert_equal({force: true}, request[:headers][:params])
32
+ assert_equal 'Bearer token', request[:headers][:authorization]
33
+ end
34
+
35
+ end
@@ -0,0 +1,22 @@
1
+ require 'mtncloud_test'
2
+
3
+ # Tests for MtnCloud::InstancesInterface
4
+ class MtnCloudTest::InstancesInterfaceTest < MtnCloudTest::TestCase
5
+
6
+ def test_instances_interface
7
+ @instances_interface = client.instances
8
+ response = @instances_interface.list()
9
+ instances = response['instances']
10
+ assert instances.is_a?(Array)
11
+ if !instances.empty?
12
+ response = @instances_interface.get(instances[0]['id'])
13
+ instance = response['instance']
14
+ assert instance.is_a?(Hash)
15
+ assert_equal instance['id'], instances[0]['id']
16
+ else
17
+ #puts "No instances found in this environment"
18
+ end
19
+ #todo: create and delete
20
+ end
21
+
22
+ end
@@ -0,0 +1,22 @@
1
+ require 'mtncloud_test'
2
+
3
+ # Tests for MtnCloud::InstancesInterface
4
+ class MtnCloudTest::NetworkRoutersInterfaceTest < MtnCloudTest::TestCase
5
+
6
+ def test_network_routers_interface
7
+ @network_routers_interface = client.network_routers
8
+ response = @network_routers_interface.list()
9
+ network_routers = response['networkRouters']
10
+ assert network_routers.is_a?(Array)
11
+ if !network_routers.empty?
12
+ response = @network_routers_interface.get(network_routers[0]['id'])
13
+ network_router = response['networkRouter']
14
+ assert network_router.is_a?(Hash)
15
+ assert_equal network_router['id'], network_routers[0]['id']
16
+ else
17
+ #puts "No network routers found in this environment"
18
+ end
19
+ #todo: create and delete
20
+ end
21
+
22
+ end
@@ -0,0 +1,26 @@
1
+ require 'test/unit'
2
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __dir__))
3
+ require 'mtncloud/api/systems_interface'
4
+
5
+ class SystemsInterfaceTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @systems_interface = MtnCloud::SystemsInterface.new(access_token: 'token', url: 'https://example.test', verify_ssl: false)
9
+ end
10
+
11
+ def test_list_network_server_update_definitions_builds_expected_request
12
+ request = @systems_interface.dry.list_network_server_update_definitions(2, 3, {phrase: 'fw'})
13
+ assert_equal :get, request[:method]
14
+ assert_equal 'https://example.test/api/infrastructure/systems/2/network-servers/3/update-definitions', request[:url]
15
+ assert_equal({phrase: 'fw'}, request[:params])
16
+ end
17
+
18
+ def test_apply_network_server_update_definition_builds_expected_request
19
+ request = @systems_interface.dry.apply_network_server_update_definition(2, 3, 4, {dryRun: true}, {foo: 'bar'})
20
+ assert_equal :post, request[:method]
21
+ assert_equal 'https://example.test/api/infrastructure/systems/2/network-servers/3/update-definitions/4', request[:url]
22
+ assert_equal({foo: 'bar'}, request[:params])
23
+ assert_equal({dryRun: true}.to_json, request[:payload])
24
+ end
25
+
26
+ end
@@ -0,0 +1,14 @@
1
+ require 'mtncloud_test'
2
+
3
+ # Tests for MtnCloud::WhoamiInterface
4
+ class MtnCloudTest::WhoamiInterfaceTest < MtnCloudTest::TestCase
5
+
6
+ def test_whoami_interface
7
+ @whoami_interface = client.whoami
8
+ response = @whoami_interface.get()
9
+ assert_equal response['user']['username'], @config.username
10
+ # todo: fix this, can be cached and fail
11
+ #assert_equal response['appliance']['buildVersion'], MtnCloud::Cli::Remote.load_remote(@config.remote_name)[:build_version]
12
+ end
13
+
14
+ end
@@ -0,0 +1,160 @@
1
+ require 'test/unit'
2
+ require 'stringio'
3
+ require 'timeout'
4
+ require 'tmpdir'
5
+ require 'fileutils'
6
+ require 'mtncloud'
7
+
8
+ # Offline branding checks for the MTN Cloud CLI, no appliance needed.
9
+ #
10
+ # Renders --help for every command and subcommand and fails if any line still
11
+ # mentions morpheus (other than approved server-side values), or if any help
12
+ # screen raises a Ruby error.
13
+ #
14
+ # bundle exec ruby -Ilib -Itest test/branding_test.rb
15
+ class BrandingTest < Test::Unit::TestCase
16
+
17
+ # Approved keep-list. These are values the appliance or API depends on,
18
+ # or names of external services, so they must not be rebranded.
19
+ ALLOWED = [
20
+ /morph-(cli|api)/, # OAuth client IDs
21
+ /X-Morpheus-(Token|Lease)/, # API headers
22
+ /\$?MORPHEUS_LEASE_TOKEN/, # set by the appliance
23
+ /morpheus\.(task|workflow|securityScan)/, # job type codes
24
+ /Default is morpheus\./, # blueprint type value, marketplace organization
25
+ /Morpheus Hub/, # HPE's external service
26
+ /\.morpkg/, # package file format
27
+ /morpheus\.yml/, # deploy file fallback
28
+ ]
29
+
30
+ # Known lines still to be rebranded, keyed by the step that removes them.
31
+ # Remove an entry in the same commit that fixes it, the test fails if an entry no longer appears.
32
+ PENDING = {
33
+ }
34
+
35
+ class << self
36
+ attr_reader :screens, :errors
37
+
38
+ def startup
39
+ @screens = {}
40
+ @errors = []
41
+ saved_terminal = MtnCloud::Terminal.instance_variable_get(:@morphterm)
42
+ saved_home = MtnCloud::Cli.home_directory
43
+ home = Dir.mktmpdir("mtncloud_branding_test")
44
+ out, err = StringIO.new, StringIO.new
45
+ # commands print through MtnCloud::Terminal.instance, so point a terminal at StringIOs
46
+ MtnCloud::Terminal.new(stdin: StringIO.new(""), stdout: out, stderr: err, homedir: home)
47
+ # include hidden commands, they can still be invoked
48
+ commands = MtnCloud::Cli::CliRegistry.instance.instance_variable_get(:@commands)
49
+ commands.sort_by {|name, _| name.to_s }.each do |name, klass|
50
+ invocations = [["--help"]] + klass.subcommands.keys.map {|sub| [sub.to_s, "--help"] }
51
+ invocations.each do |args|
52
+ label = ([name] + args[0..-2]).join(" ")
53
+ @screens[label] = capture(out, err, label) { klass.new.handle(args.dup) }
54
+ end
55
+ end
56
+ ensure
57
+ MtnCloud::Terminal.instance_variable_set(:@morphterm, saved_terminal)
58
+ MtnCloud::Cli.home_directory = saved_home
59
+ FileUtils.rm_rf(home) if home
60
+ end
61
+
62
+ def capture(out, err, label)
63
+ [out, err].each {|io| io.truncate(0); io.rewind }
64
+ old_stdout, old_stderr, old_stdin = $stdout, $stderr, $stdin
65
+ $stdout, $stderr, $stdin = out, err, StringIO.new("")
66
+ begin
67
+ Timeout.timeout(15) { yield }
68
+ rescue SystemExit
69
+ # --help exits after printing
70
+ rescue Timeout::Error
71
+ @errors << "#{label}: timed out"
72
+ rescue NameError, NoMethodError, ArgumentError, TypeError => e
73
+ @errors << "#{label}: #{e.class}: #{e.message.lines.first.strip}"
74
+ rescue StandardError
75
+ # other errors, such as no remote configured, are expected offline
76
+ ensure
77
+ $stdout, $stderr, $stdin = old_stdout, old_stderr, old_stdin
78
+ end
79
+ out.string + err.string
80
+ end
81
+ end
82
+
83
+ def morpheus_lines
84
+ lines = []
85
+ self.class.screens.each do |label, text|
86
+ text.each_line do |line|
87
+ line = line.strip
88
+ next unless line =~ /morpheus/i
89
+ next if ALLOWED.any? {|re| line =~ re }
90
+ lines << [label, line]
91
+ end
92
+ end
93
+ lines
94
+ end
95
+
96
+ def test_help_screens_were_rendered
97
+ assert_operator self.class.screens.size, :>, 1000, "expected to render help for every command and subcommand"
98
+ end
99
+
100
+ def test_help_screens_raise_no_errors
101
+ assert_empty self.class.errors, "help screens raised errors:\n" + self.class.errors.join("\n")
102
+ end
103
+
104
+ def test_help_has_no_unapproved_morpheus
105
+ unexpected = morpheus_lines.reject {|_, line| PENDING.keys.any? {|re| line =~ re } }
106
+ assert_empty unexpected, "help text still mentions morpheus:\n" +
107
+ unexpected.map {|label, line| " #{label}: #{line}" }.join("\n")
108
+ end
109
+
110
+ def test_pending_lines_still_exist
111
+ lines = morpheus_lines.map(&:last)
112
+ stale = PENDING.reject {|re, _| lines.any? {|line| line =~ re } }
113
+ assert_empty stale, "these PENDING entries are fixed, remove them from the list:\n" +
114
+ stale.map {|re, step| " (#{step}) #{re.inspect}" }.join("\n")
115
+ end
116
+
117
+ def test_version_banner_is_mtn_cloud
118
+ out = StringIO.new
119
+ saved_terminal = MtnCloud::Terminal.instance_variable_get(:@morphterm)
120
+ saved_home = MtnCloud::Cli.home_directory
121
+ MtnCloud::Terminal.new(stdin: StringIO.new(""), stdout: out, stderr: StringIO.new, homedir: Dir.tmpdir)
122
+ MtnCloud::Cli::VersionCommand.new.handle([])
123
+ assert_include out.string, "MTN Cloud CLI"
124
+ assert_include out.string, "Client Version: #{MtnCloud::Cli::VERSION}"
125
+ # the old banner spelled Morpheus in ASCII art, which a text search cannot see
126
+ assert_not_match(/__ ___/, out.string)
127
+ ensure
128
+ MtnCloud::Terminal.instance_variable_set(:@morphterm, saved_terminal)
129
+ MtnCloud::Cli.home_directory = saved_home
130
+ end
131
+
132
+ # update must not make network requests, it only prints the update command
133
+ def test_update_prints_manual_instructions_without_network
134
+ out = StringIO.new
135
+ saved_terminal = MtnCloud::Terminal.instance_variable_get(:@morphterm)
136
+ saved_home = MtnCloud::Cli.home_directory
137
+ MtnCloud::Terminal.new(stdin: StringIO.new(""), stdout: out, stderr: StringIO.new, homedir: Dir.tmpdir)
138
+ HTTP.define_singleton_method(:get) {|*args| raise "update must not make HTTP requests" }
139
+ # -f and -y are ignored but still accepted
140
+ exit_code, err = MtnCloud::Cli::UpdateCommand.new.handle(["-f", "-y"])
141
+ assert_equal 0, exit_code
142
+ assert_include out.string, "Installed version: #{MtnCloud::Cli::VERSION}"
143
+ assert_include out.string, "gem update mtncloud-cli"
144
+ ensure
145
+ HTTP.singleton_class.send(:remove_method, :get) if HTTP.singleton_methods(false).include?(:get)
146
+ MtnCloud::Terminal.instance_variable_set(:@morphterm, saved_terminal)
147
+ MtnCloud::Cli.home_directory = saved_home
148
+ end
149
+
150
+ def test_prog_name_follows_invoked_name
151
+ original = $0
152
+ { "/usr/local/bin/mcs" => "mcs", "C:/Ruby33-x64/bin/mcs" => "mcs", "bin/mtncloud" => "mtncloud",
153
+ "rake" => "mtncloud", "/usr/bin/morpheus" => "mtncloud" }.each do |program, expected|
154
+ $0 = program
155
+ assert_equal expected, MtnCloud::Cli.prog_name, "prog_name when invoked as #{program}"
156
+ end
157
+ ensure
158
+ $0 = original
159
+ end
160
+ end
@@ -0,0 +1,36 @@
1
+ require 'mtncloud_test'
2
+
3
+ # Tests for MtnCloud::Cli::AccessTokenCommand
4
+ class MtnCloudTest::AccessTokenTest < MtnCloudTest::TestCase
5
+
6
+ def test_access_token
7
+ assert_execute("access-token")
8
+ assert_execute("access-token get")
9
+ assert_equal(is_logged_in(), true, "is_logged_in() should be true after access-token refresh")
10
+ end
11
+
12
+ def test_access_token_details
13
+ assert_execute("access-token details")
14
+ end
15
+
16
+ def test_access_token_refresh
17
+ previous_token = get_access_token()
18
+ without_authentication do
19
+ login()
20
+ assert_execute("access-token refresh -y")
21
+ assert_equal(is_logged_in(), true, "is_logged_in() should be true after access-token refresh")
22
+ new_token = get_access_token()
23
+ assert_not_equal(previous_token, new_token, "Access token should have changed")
24
+ assert_error("login --test --token #{previous_token} ", "Old token should no longer be valid after refresh")
25
+ assert_execute("login --token #{new_token} ", "New token should be valid after refresh")
26
+ end
27
+ end
28
+
29
+ def test_access_token_unauthenticated
30
+ without_authentication do
31
+ assert_error("access-token")
32
+ assert_error("access-token get")
33
+ end
34
+ end
35
+
36
+ end