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,1091 @@
1
+ require 'json'
2
+ require 'uri'
3
+ require 'cgi'
4
+ require 'mtncloud/rest_client'
5
+ #require 'mtncloud/api/body_io'
6
+ # require 'rest-client'
7
+
8
+ class MtnCloud::APIClient
9
+
10
+ # This is the OAuth client ID the appliance accepts for CLI logins.
11
+ # It is not branding, do not rename it for MTN Cloud or authentication will break.
12
+ CLIENT_ID = 'morph-cli' unless defined?(CLIENT_ID)
13
+
14
+ # Initialize a new APIClient
15
+ # client = APIClient.new(url:"https://mtncloud.example.com", verify_ssl:false)
16
+ # This old method signature is being deprecated:
17
+ # client = APIClient.new(access_token, refresh_token, expires_in, base_url, verify_ssl, options={})
18
+ #
19
+ # def initialize(attrs={}, options={})
20
+ def initialize(access_token, refresh_token=nil,expires_in = nil, base_url=nil, verify_ssl=true, options={})
21
+ self.client_id = CLIENT_ID
22
+ attrs = {}
23
+ if access_token.is_a?(Hash)
24
+ attrs = access_token.clone()
25
+ access_token = attrs[:access_token]
26
+ refresh_token = attrs[:refresh_token]
27
+ base_url = attrs[:url] || attrs[:base_url]
28
+ expires_in = attrs[:expires_in]
29
+ verify_ssl = attrs.key?(:verify_ssl) ? attrs[:verify_ssl] : true
30
+ self.client_id = attrs[:client_id] ? attrs[:client_id] : CLIENT_ID
31
+ if attrs[:client_id]
32
+ self.client_id = attrs[:client_id]
33
+ end
34
+ options = refresh_token.is_a?(Hash) ? refresh_token.clone() : {}
35
+ end
36
+ @access_token = access_token
37
+ @refresh_token = refresh_token
38
+ @base_url = base_url
39
+ if @base_url.to_s.empty?
40
+ raise "#{self.class} initialized without a required option :url"
41
+ end
42
+ @base_url = @base_url.chomp("/")
43
+ # todo: validate URI
44
+ @expires_at = nil
45
+ if expires_in != nil
46
+ @expires_at = Time.now + expires_in
47
+ end
48
+ @dry_run = false
49
+ set_ssl_verification_enabled(verify_ssl)
50
+ setopts(options)
51
+ end
52
+
53
+ def url
54
+ @base_url
55
+ end
56
+
57
+ def to_s
58
+ "<##{self.class}:#{self.object_id.to_s(8)} @url=#{@base_url} @verify_ssl=#{@verify_ssl} @access_token=#{@access_token ? '************' : nil} @refresh_token=#{@access_token ? '************' : nil} @expires_at=#{@expires_at} @client_id=#{@client_id} @options=#{@options}>"
59
+ end
60
+
61
+ def inspect
62
+ to_s
63
+ end
64
+
65
+ def dry_run(val=true)
66
+ @dry_run = !!val
67
+ self
68
+ end
69
+
70
+ def dry()
71
+ dry_run(true)
72
+ end
73
+
74
+ def ssl_verification_enabled?
75
+ @verify_ssl
76
+ end
77
+
78
+ def set_ssl_verification_enabled(val)
79
+ @verify_ssl = !!val
80
+ end
81
+
82
+ # set this in your interface, eg. to 'application/json'
83
+ # or let it it default to json when payload is present.
84
+ def default_content_type
85
+ nil
86
+ end
87
+
88
+ # set default seconds for interface to timeout after
89
+ # or let it use system default? none, it should not timeout by default..
90
+ # I think execute() may use 30 seconds for get by default.
91
+ # and it should remove timeout when method is post, put, or delete
92
+ def default_timeout
93
+ nil
94
+ end
95
+
96
+ # Authorization is required, except for a couple commands like Ping and Setup
97
+ def authorization_required?
98
+ true
99
+ end
100
+
101
+ # common global options, hooray.
102
+ # this is probably needed for CliCommand too..
103
+ # maybe make this a mixin...
104
+
105
+ # need this accessor?
106
+ # def get_options
107
+ # @options
108
+ # end
109
+
110
+ # set common global @options for use with all requests
111
+ # meant for inline use just like dry(), set_options(dry_run:true) can be used in place of dry()
112
+ # @param opts [Hash] globally supported options like :dry_run, :json, :curl, :headers, :timeout, etc
113
+ # Example:
114
+ # Prints curl -XGET .../whoami -H "Bearer" instead of actually request
115
+ # APIClient.new(token).whoami.setopts(curl:true).get({})
116
+ # @return self (APIClient)
117
+ def setopts(new_options)
118
+ @options = new_options
119
+ if @options[:dry_run]
120
+ dry_run(true)
121
+ end
122
+ self
123
+ end
124
+
125
+ # with_options sets common global @options for the duration of the block only
126
+ # then returns the options to their prior values
127
+ # @param opts [Hash] globally supported options like :dry_run, :json, :curl, :headers, :timeout, etc
128
+ # @return result of block, usually the a result Hash from client.execute({})
129
+ def withopts(tmp_options, &block)
130
+ @_old_options = @options
131
+ begin
132
+ @options = tmp_options
133
+ result = block.call()
134
+ ensure
135
+ @options = @_old_options
136
+ end
137
+ return result
138
+ end
139
+
140
+ alias :set_options :setopts
141
+ alias :with_options :withopts
142
+ # Execute an HTTP request with this client.
143
+ # opts - Hash of options for HTTP Request.
144
+ # :url - The full url
145
+ # :method - The default method is :get (GET)
146
+ # :headers - Hash of headers to include in the request.
147
+ # eg. {'Content-Type' => 'application/json'}. :params is a special key for query parameters.
148
+ # :params - query parameters
149
+ # :payload - The body of the request.
150
+ # :timeout - A custom timeout in seconds for api requests. The default is 30. todo: separate timeout options
151
+ # options - Hash of common global options that commands parse. eg. :headers, :timeout, :dry_run, :curl, etc
152
+ # :headers - Extra headers to add. This expects a Hash like {'Content-Type' => 'application/json'}.
153
+ # :timeout - A custom timeout in seconds for api requests. The default is 30. todo: separate timeout options
154
+ def execute(opts, options={})
155
+ # MtnCloud::Logging::DarkPrinter.puts "MtnCloud::RestClient.execute(#{opts})" if MtnCloud::Logging.debug?
156
+ # ok, always prepend @base_url, let the caller specify it exactly or leave it off.
157
+ # this allows the Interface definition be lazy and not specify the base_url in every call to execute()
158
+ # it will be used though...
159
+ if opts[:url]
160
+ if !opts[:url].include?(@base_url)
161
+ opts[:url] = "#{@base_url}#{opts[:url]}"
162
+ end
163
+ end
164
+ # merge in common global @options
165
+ if @options
166
+ options = options.merge(@options)
167
+ else
168
+ options = options.clone
169
+ end
170
+
171
+ # determine HTTP method
172
+ if opts[:method].nil?
173
+ opts[:method] = :get
174
+ else
175
+ # convert to lowercase Symbol like :get, :post, :put, or :delete
176
+ opts[:method] = opts[:method].to_s.downcase.to_sym
177
+ end
178
+
179
+ # could validate method here...
180
+
181
+ # apply default headers
182
+ opts[:headers] ||= {}
183
+
184
+ is_multipart = (opts[:payload].is_a?(Hash) && opts[:payload][:multipart] == true)
185
+
186
+ # Authorization: apply our access token
187
+ if authorization_required?
188
+ if @access_token
189
+ if opts[:headers][:authorization].nil? && opts[:headers]['Authorization'].nil?
190
+ opts[:headers][:authorization] = "Bearer #{@access_token}"
191
+ else
192
+ # authorization header has already been set.
193
+ end
194
+ end
195
+ end
196
+
197
+ # POST and PUT requests default Content-Type is application/json
198
+ # set Content-Type or pass :form_data => true if you want application/x-www-form-urlencoded
199
+ # or use opts[:payload][:multipart] = true if you need multipart/form-data
200
+ if opts[:method] == :post || opts[:method] == :put
201
+ if opts[:headers]['Content-Type'].nil? && opts[:payload] && is_multipart != true && opts[:form_data] != true
202
+ opts[:headers]['Content-Type'] = (default_content_type || 'application/json')
203
+ end
204
+
205
+ # Auto encode payload as JSON, just to be nice
206
+ if opts[:headers]['Content-Type'] == 'application/json' && !opts[:payload].is_a?(String)
207
+ opts[:payload] = opts[:payload].to_json
208
+ end
209
+
210
+ end
211
+
212
+ # always use custom timeout eg. from --timeout option
213
+ # or use default_timeout for GET requests only.
214
+ if opts[:timeout].nil?
215
+ if options[:timeout]
216
+ opts[:timeout] = options[:timeout].to_f
217
+ elsif default_timeout && opts[:method] == :get
218
+ opts[:timeout] = default_timeout.to_f
219
+ end
220
+ end
221
+
222
+ # add extra headers, eg. from --header option
223
+ # headers should be a Hash and not an Array, dont make me split you here!
224
+ if options[:headers]
225
+ opts[:headers] = opts[:headers].merge(options[:headers])
226
+ end
227
+
228
+ # this is confusing, but RestClient expects :params inside the headers...?
229
+ # move/copy params to headers.params for simplification.
230
+ # remove this if issues arise
231
+ # if opts[:params] && (opts[:headers][:params].nil? || opts[:headers][:params].empty?)
232
+ # opts[:headers][:params] = opts.delete(:params) # .delete(:params) maybe?
233
+ # end
234
+
235
+ # :command_options for these
236
+ # if options[:curl]
237
+ # opts[:curl] = options[:curl]
238
+ # end
239
+ # if options.key?(:pretty_json)
240
+ # opts[:pretty_json] = options[:pretty_json]
241
+ # end
242
+ # if options.key?(:scrub)
243
+ # opts[:scrub] = options[:scrub]
244
+ # end
245
+
246
+ # @verify_ssl is not used atm
247
+ # todo: finish this and use it instead of the global variable RestClient.ssl_verification_enabled?
248
+ # gotta clean up all APIClient subclasses new() methods to support this
249
+ # the CliCommand subclasses should be changed to @foos_interface = @api_client.foos
250
+ # also.. Credentials.new()
251
+ if @verify_ssl == false
252
+ opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE
253
+ end
254
+
255
+ if @dry_run
256
+ # JD: could return a Request object instead...
257
+ # print_dry_run needs options somehow...
258
+ opts[:command_options] = options # trash this..we got @options with setopts now
259
+ return opts
260
+ end
261
+
262
+ # uhh can't use LIST at the moment
263
+ # fix it!
264
+ # if opts[:method] == :list
265
+ # opts[:method]
266
+ # end
267
+
268
+ # MtnCloud::Logging::DarkPrinter.puts "MtnCloud::RestClient.execute(#{opts})" if MtnCloud::Logging.debug?
269
+ # instead, using ::RestClient.log = STDOUT
270
+ response = MtnCloud::RestClient.execute(opts)
271
+ if opts[:parse_json] != false && options[:parse_json] != false
272
+ return JSON.parse(response.to_s)
273
+ else
274
+ return response
275
+ end
276
+ end
277
+
278
+ def logged_in?
279
+ !!@access_token
280
+ end
281
+
282
+ def client_id
283
+ @client_id
284
+ end
285
+
286
+ def client_id=(val)
287
+ @client_id = val
288
+ end
289
+
290
+ def login(username, password, use_client_id=nil)
291
+ if use_client_id
292
+ self.client_id = use_client_id
293
+ end
294
+ @access_token, @refresh_token, @expires_at = nil, nil, nil
295
+ response = auth.login(username, password, self.client_id)
296
+ @access_token = response['access_token']
297
+ @refresh_token = response['refresh_token']
298
+ if response['expires_in'] != nil
299
+ @expires_at = Time.now + response['expires_in']
300
+ end
301
+ # return response
302
+ return self
303
+ end
304
+
305
+ def use_refresh_token(t=nil)
306
+ if t.nil?
307
+ t = @refresh_token
308
+ end
309
+ if t.nil?
310
+ raise "#{self.class} does not currently have a refresh_token"
311
+ end
312
+ response = auth.use_refresh_token(t, self.client_id)
313
+ @access_token = response['access_token']
314
+ @refresh_token = response['refresh_token']
315
+ if response['expires_in'] != nil
316
+ @expires_at = Time.now + response['expires_in']
317
+ end
318
+ @access_token = response['access_token']
319
+ # return response
320
+ return self
321
+ end
322
+
323
+ def logout
324
+ @access_token = nil
325
+ @refresh_token = nil
326
+ @expires_at = nil
327
+ return self
328
+ end
329
+
330
+ def common_interface_options
331
+ {
332
+ url: @base_url,
333
+ access_token: @access_token,
334
+ refresh_token: @refresh_token,
335
+ expires_at: @expires_at,
336
+ client_id: @client_id,
337
+ verify_ssl: @verify_ssl
338
+ }
339
+ end
340
+
341
+ def ping
342
+ MtnCloud::PingInterface.new(common_interface_options).setopts(@options)
343
+ end
344
+
345
+ def setup
346
+ MtnCloud::SetupInterface.new(common_interface_options).setopts(@options)
347
+ end
348
+
349
+ def auth
350
+ MtnCloud::AuthInterface.new({url: @base_url, client_id: @client_id, verify_ssl: @verify_ssl}).setopts(@options)
351
+ end
352
+
353
+ def forgot
354
+ MtnCloud::ForgotPasswordInterface.new(common_interface_options).setopts(@options)
355
+ end
356
+
357
+ def whoami
358
+ MtnCloud::WhoamiInterface.new(common_interface_options).setopts(@options)
359
+ end
360
+
361
+ def search
362
+ MtnCloud::SearchInterface.new(common_interface_options).setopts(@options)
363
+ end
364
+
365
+ def user_settings
366
+ MtnCloud::UserSettingsInterface.new(common_interface_options).setopts(@options)
367
+ end
368
+
369
+ def dashboard
370
+ MtnCloud::DashboardInterface.new(common_interface_options).setopts(@options)
371
+ end
372
+
373
+ def activity
374
+ MtnCloud::ActivityInterface.new(common_interface_options).setopts(@options)
375
+ end
376
+
377
+ def options
378
+ MtnCloud::OptionsInterface.new(common_interface_options).setopts(@options)
379
+ end
380
+
381
+ def groups
382
+ MtnCloud::GroupsInterface.new(common_interface_options).setopts(@options)
383
+ end
384
+
385
+ def account_groups
386
+ MtnCloud::AccountGroupsInterface.new(common_interface_options).setopts(@options)
387
+ end
388
+
389
+ def clouds
390
+ MtnCloud::CloudsInterface.new(common_interface_options).setopts(@options)
391
+ end
392
+
393
+ def cloud_datastores
394
+ MtnCloud::CloudDatastoresInterface.new(common_interface_options).setopts(@options)
395
+ end
396
+
397
+ def cloud_resource_pools
398
+ MtnCloud::CloudResourcePoolsInterface.new(common_interface_options).setopts(@options)
399
+ end
400
+
401
+ def resource_pool_groups
402
+ MtnCloud::ResourcePoolGroupsInterface.new(common_interface_options).setopts(@options)
403
+ end
404
+
405
+ def cloud_folders
406
+ MtnCloud::CloudFoldersInterface.new(common_interface_options).setopts(@options)
407
+ end
408
+
409
+ def datastores
410
+ MtnCloud::DatastoresInterface.new(common_interface_options).setopts(@options)
411
+ end
412
+
413
+ def servers
414
+ MtnCloud::ServersInterface.new(common_interface_options).setopts(@options)
415
+ end
416
+
417
+ def systems
418
+ MtnCloud::SystemsInterface.new(common_interface_options).setopts(@options)
419
+ end
420
+
421
+ def system_types
422
+ MtnCloud::SystemTypesInterface.new(common_interface_options).setopts(@options)
423
+ end
424
+
425
+ def server_devices
426
+ MtnCloud::ServerDevicesInterface.new(common_interface_options).setopts(@options)
427
+ end
428
+
429
+ def instances
430
+ MtnCloud::InstancesInterface.new(common_interface_options).setopts(@options)
431
+ end
432
+
433
+ def appliance_settings
434
+ MtnCloud::ApplianceSettingsInterface.new(common_interface_options).setopts(@options)
435
+ end
436
+
437
+ def provisioning_settings
438
+ MtnCloud::ProvisioningSettingsInterface.new(common_interface_options).setopts(@options)
439
+ end
440
+
441
+ def provisioning_licenses
442
+ MtnCloud::ProvisioningLicensesInterface.new(common_interface_options).setopts(@options)
443
+ end
444
+
445
+ def provisioning_license_types
446
+ MtnCloud::ProvisioningLicenseTypesInterface.new(common_interface_options).setopts(@options)
447
+ end
448
+
449
+ def containers
450
+ MtnCloud::ContainersInterface.new(common_interface_options).setopts(@options)
451
+ end
452
+
453
+ def instance_types
454
+ MtnCloud::InstanceTypesInterface.new(common_interface_options).setopts(@options)
455
+ end
456
+
457
+ def integrations
458
+ MtnCloud::IntegrationsInterface.new(common_interface_options).setopts(@options)
459
+ end
460
+
461
+ def integration_types
462
+ MtnCloud::IntegrationTypesInterface.new(common_interface_options).setopts(@options)
463
+ end
464
+
465
+ def jobs
466
+ MtnCloud::JobsInterface.new(common_interface_options).setopts(@options)
467
+ end
468
+
469
+ def server_types
470
+ MtnCloud::ServerTypesInterface.new(common_interface_options).setopts(@options)
471
+ end
472
+
473
+ def provision_types
474
+ MtnCloud::ProvisionTypesInterface.new(common_interface_options).setopts(@options)
475
+ end
476
+
477
+ def service_plans
478
+ MtnCloud::ServicePlansInterface.new(common_interface_options).setopts(@options)
479
+ end
480
+
481
+ def price_sets
482
+ MtnCloud::PriceSetsInterface.new(common_interface_options).setopts(@options)
483
+ end
484
+
485
+ def prices
486
+ MtnCloud::PricesInterface.new(common_interface_options).setopts(@options)
487
+ end
488
+
489
+ def load_balancers
490
+ MtnCloud::LoadBalancersInterface.new(common_interface_options).setopts(@options)
491
+ end
492
+
493
+ def load_balancer_types
494
+ MtnCloud::LoadBalancerTypesInterface.new(common_interface_options).setopts(@options)
495
+ end
496
+
497
+ def load_balancer_virtual_servers
498
+ MtnCloud::LoadBalancerVirtualServersInterface.new(common_interface_options).setopts(@options)
499
+ end
500
+
501
+ def load_balancer_pools
502
+ MtnCloud::LoadBalancerPoolsInterface.new(common_interface_options).setopts(@options)
503
+ end
504
+
505
+ def load_balancer_pools_secondary
506
+ MtnCloud::LoadBalancerPoolsSecondaryInterface.new(common_interface_options).setopts(@options)
507
+ end
508
+
509
+ def load_balancer_profiles
510
+ MtnCloud::LoadBalancerProfilesInterface.new(common_interface_options).setopts(@options)
511
+ end
512
+
513
+ def load_balancer_monitors
514
+ MtnCloud::LoadBalancerMonitorsInterface.new(common_interface_options).setopts(@options)
515
+ end
516
+
517
+ def load_balancer_pool_nodes
518
+ MtnCloud::LoadBalancerPoolNodesInterface.new(common_interface_options).setopts(@options)
519
+ end
520
+
521
+ def tasks
522
+ MtnCloud::TasksInterface.new(common_interface_options).setopts(@options)
523
+ end
524
+
525
+ def task_sets
526
+ MtnCloud::TaskSetsInterface.new(common_interface_options).setopts(@options)
527
+ end
528
+
529
+ def virtual_images
530
+ MtnCloud::VirtualImagesInterface.new(common_interface_options).setopts(@options)
531
+ end
532
+
533
+ def apps
534
+ MtnCloud::AppsInterface.new(common_interface_options).setopts(@options)
535
+ end
536
+
537
+ def blueprints
538
+ MtnCloud::BlueprintsInterface.new(common_interface_options).setopts(@options)
539
+ end
540
+
541
+ def deploy
542
+ MtnCloud::DeployInterface.new(common_interface_options).setopts(@options)
543
+ end
544
+
545
+ def deployments
546
+ MtnCloud::DeploymentsInterface.new(common_interface_options).setopts(@options)
547
+ end
548
+
549
+ def security_groups
550
+ MtnCloud::SecurityGroupsInterface.new(common_interface_options).setopts(@options)
551
+ end
552
+
553
+ def security_group_rules
554
+ MtnCloud::SecurityGroupRulesInterface.new(common_interface_options).setopts(@options)
555
+ end
556
+
557
+ def clusters
558
+ MtnCloud::ClustersInterface.new(common_interface_options).setopts(@options)
559
+ end
560
+
561
+ def affinity_groups
562
+ MtnCloud::AffinityGroupsInterface.new(common_interface_options).setopts(@options)
563
+ end
564
+
565
+ def host_vm_groups
566
+ MtnCloud::HostVmGroupsInterface.new(common_interface_options).setopts(@options)
567
+ end
568
+
569
+
570
+ def accounts
571
+ MtnCloud::AccountsInterface.new(common_interface_options).setopts(@options)
572
+ end
573
+
574
+ def approvals
575
+ MtnCloud::ApprovalsInterface.new(common_interface_options).setopts(@options)
576
+ end
577
+
578
+ def users
579
+ MtnCloud::UsersInterface.new(common_interface_options).setopts(@options)
580
+ end
581
+
582
+ def account_users
583
+ MtnCloud::AccountUsersInterface.new(common_interface_options).setopts(@options)
584
+ end
585
+
586
+ def user_groups
587
+ MtnCloud::UserGroupsInterface.new(common_interface_options).setopts(@options)
588
+ end
589
+
590
+ def user_sources
591
+ MtnCloud::UserSourcesInterface.new(common_interface_options).setopts(@options)
592
+ end
593
+
594
+ def logs
595
+ MtnCloud::LogsInterface.new(common_interface_options).setopts(@options)
596
+ end
597
+
598
+ def roles
599
+ MtnCloud::RolesInterface.new(common_interface_options).setopts(@options)
600
+ end
601
+
602
+ def key_pairs
603
+ MtnCloud::KeyPairsInterface.new(common_interface_options).setopts(@options)
604
+ end
605
+
606
+ def distributed_workers
607
+ MtnCloud::DistributedWorkersInterface.new(common_interface_options).setopts(@options)
608
+ end
609
+
610
+ def certificates
611
+ MtnCloud::CertificatesInterface.new(common_interface_options).setopts(@options)
612
+ end
613
+
614
+ def certificate_types
615
+ MtnCloud::CertificateTypesInterface.new(common_interface_options).setopts(@options)
616
+ end
617
+
618
+ def license
619
+ MtnCloud::LicenseInterface.new(common_interface_options).setopts(@options)
620
+ end
621
+
622
+ def option_types
623
+ MtnCloud::OptionTypesInterface.new(common_interface_options).setopts(@options)
624
+ end
625
+
626
+ def option_type_lists
627
+ MtnCloud::OptionTypeListsInterface.new(common_interface_options).setopts(@options)
628
+ end
629
+
630
+ def option_type_forms
631
+ MtnCloud::OptionTypeFormsInterface.new(common_interface_options).setopts(@options)
632
+ end
633
+
634
+ def scale_thresholds
635
+ MtnCloud::ScaleThresholdsInterface.new(common_interface_options).setopts(@options)
636
+ end
637
+
638
+ def power_schedules
639
+ MtnCloud::PowerSchedulesInterface.new(common_interface_options).setopts(@options)
640
+ end
641
+
642
+ def execute_schedules
643
+ MtnCloud::ExecuteSchedulesInterface.new(common_interface_options).setopts(@options)
644
+ end
645
+
646
+ def monitoring
647
+ MtnCloud::MonitoringInterface.new(common_interface_options).setopts(@options)
648
+ end
649
+
650
+ # def checks
651
+ # # MtnCloud::MonitoringChecksInterface.new(common_interface_options).setopts(@options)
652
+ # monitoring.checks
653
+ # end
654
+
655
+ # def incidents
656
+ # # MtnCloud::MonitoringIncidentsInterface.new(common_interface_options).setopts(@options)
657
+ # monitoring.incidents
658
+ # end
659
+
660
+ def policies
661
+ MtnCloud::PoliciesInterface.new(common_interface_options).setopts(@options)
662
+ end
663
+
664
+ def group_policies
665
+ MtnCloud::GroupPoliciesInterface.new(common_interface_options).setopts(@options)
666
+ end
667
+
668
+ def cloud_policies
669
+ MtnCloud::CloudPoliciesInterface.new(common_interface_options).setopts(@options)
670
+ end
671
+
672
+ def networks
673
+ MtnCloud::NetworksInterface.new(common_interface_options).setopts(@options)
674
+ end
675
+
676
+ def network_types
677
+ MtnCloud::NetworkTypesInterface.new(common_interface_options).setopts(@options)
678
+ end
679
+
680
+ def subnets
681
+ MtnCloud::SubnetsInterface.new(common_interface_options).setopts(@options)
682
+ end
683
+
684
+ def subnet_types
685
+ MtnCloud::SubnetTypesInterface.new(common_interface_options).setopts(@options)
686
+ end
687
+
688
+ def network_groups
689
+ MtnCloud::NetworkGroupsInterface.new(common_interface_options).setopts(@options)
690
+ end
691
+
692
+ def network_pools
693
+ MtnCloud::NetworkPoolsInterface.new(common_interface_options).setopts(@options)
694
+ end
695
+
696
+ def network_pool_ips
697
+ MtnCloud::NetworkPoolIpsInterface.new(common_interface_options).setopts(@options)
698
+ end
699
+
700
+ def network_routers
701
+ MtnCloud::NetworkRoutersInterface.new(common_interface_options).setopts(@options)
702
+ end
703
+
704
+ def network_services
705
+ MtnCloud::NetworkServicesInterface.new(common_interface_options).setopts(@options)
706
+ end
707
+
708
+ # def network_service_types
709
+ # MtnCloud::NetworkServiceTypesInterface.new(common_interface_options).setopts(@options)
710
+ # end
711
+
712
+ def network_security_servers
713
+ MtnCloud::NetworkSecurityServersInterface.new(common_interface_options).setopts(@options)
714
+ end
715
+
716
+ def network_security_server_types
717
+ MtnCloud::NetworkSecurityServerTypesInterface.new(common_interface_options).setopts(@options)
718
+ end
719
+
720
+ def network_pool_servers
721
+ MtnCloud::NetworkPoolServersInterface.new(common_interface_options).setopts(@options)
722
+ end
723
+
724
+ def network_pool_server_types
725
+ MtnCloud::NetworkPoolServerTypesInterface.new(common_interface_options).setopts(@options)
726
+ end
727
+
728
+ def network_domains
729
+ MtnCloud::NetworkDomainsInterface.new(common_interface_options).setopts(@options)
730
+ end
731
+
732
+ def network_domain_records
733
+ MtnCloud::NetworkDomainRecordsInterface.new(common_interface_options).setopts(@options)
734
+ end
735
+
736
+ def network_proxies
737
+ MtnCloud::NetworkProxiesInterface.new(common_interface_options).setopts(@options)
738
+ end
739
+
740
+ def archive_buckets
741
+ MtnCloud::ArchiveBucketsInterface.new(common_interface_options).setopts(@options)
742
+ end
743
+
744
+ def archive_files
745
+ MtnCloud::ArchiveFilesInterface.new(common_interface_options).setopts(@options)
746
+ end
747
+
748
+ def image_builder
749
+ MtnCloud::ImageBuilderInterface.new(common_interface_options).setopts(@options)
750
+ end
751
+
752
+ def storage_providers
753
+ MtnCloud::StorageProvidersInterface.new(common_interface_options).setopts(@options)
754
+ end
755
+
756
+ def storage_servers
757
+ MtnCloud::StorageServersInterface.new(common_interface_options).setopts(@options)
758
+ end
759
+
760
+ def storage_server_types
761
+ MtnCloud::StorageServerTypesInterface.new(common_interface_options).setopts(@options)
762
+ end
763
+
764
+ def storage_volumes
765
+ MtnCloud::StorageVolumesInterface.new(common_interface_options).setopts(@options)
766
+ end
767
+
768
+ def storage_volume_types
769
+ MtnCloud::StorageVolumeTypesInterface.new(common_interface_options).setopts(@options)
770
+ end
771
+
772
+ def storage_datastores
773
+ MtnCloud::StorageDatastoresInterface.new(common_interface_options).setopts(@options)
774
+ end
775
+
776
+ def library_instance_types
777
+ MtnCloud::LibraryInstanceTypesInterface.new(common_interface_options).setopts(@options)
778
+ end
779
+
780
+ def library_layouts
781
+ MtnCloud::LibraryLayoutsInterface.new(common_interface_options).setopts(@options)
782
+ end
783
+
784
+ def library_container_upgrades
785
+ MtnCloud::LibraryContainerUpgradesInterface.new(common_interface_options).setopts(@options)
786
+ end
787
+
788
+ def library_container_types
789
+ MtnCloud::LibraryContainerTypesInterface.new(common_interface_options).setopts(@options)
790
+ end
791
+
792
+ def library_container_scripts
793
+ MtnCloud::LibraryContainerScriptsInterface.new(common_interface_options).setopts(@options)
794
+ end
795
+
796
+ def library_container_templates
797
+ MtnCloud::LibraryContainerTemplatesInterface.new(common_interface_options).setopts(@options)
798
+ end
799
+
800
+ def library_cluster_layouts
801
+ MtnCloud::LibraryClusterLayoutsInterface.new(common_interface_options).setopts(@options)
802
+ end
803
+
804
+ def library_cluster_packages
805
+ MtnCloud::LibraryClusterPackagesInterface.new(common_interface_options).setopts(@options)
806
+ end
807
+
808
+ def library_spec_templates
809
+ MtnCloud::LibrarySpecTemplatesInterface.new(common_interface_options).setopts(@options)
810
+ end
811
+
812
+ def library_spec_template_types
813
+ MtnCloud::LibrarySpecTemplateTypesInterface.new(common_interface_options).setopts(@options)
814
+ end
815
+
816
+ def packages
817
+ MtnCloud::PackagesInterface.new(common_interface_options).setopts(@options)
818
+ end
819
+
820
+ def plugins
821
+ MtnCloud::PluginsInterface.new(common_interface_options).setopts(@options)
822
+ end
823
+
824
+ def cypher
825
+ MtnCloud::CypherInterface.new(common_interface_options).setopts(@options)
826
+ end
827
+
828
+ def old_cypher
829
+ MtnCloud::OldCypherInterface.new(common_interface_options).setopts(@options)
830
+ end
831
+
832
+ def execution_request
833
+ MtnCloud::ExecutionRequestInterface.new(common_interface_options).setopts(@options)
834
+ end
835
+
836
+ def file_copy_request
837
+ MtnCloud::FileCopyRequestInterface.new(common_interface_options).setopts(@options)
838
+ end
839
+
840
+ def processes
841
+ MtnCloud::ProcessesInterface.new(common_interface_options).setopts(@options)
842
+ end
843
+
844
+ def reports
845
+ MtnCloud::ReportsInterface.new(common_interface_options).setopts(@options)
846
+ end
847
+
848
+ def environments
849
+ MtnCloud::EnvironmentsInterface.new(common_interface_options).setopts(@options)
850
+ end
851
+
852
+ def backup_settings
853
+ MtnCloud::BackupSettingsInterface.new(common_interface_options).setopts(@options)
854
+ end
855
+
856
+ def guidance_settings
857
+ MtnCloud::GuidanceSettingsInterface.new(common_interface_options).setopts(@options)
858
+ end
859
+
860
+ def log_settings
861
+ MtnCloud::LogSettingsInterface.new(common_interface_options).setopts(@options)
862
+ end
863
+
864
+ def monitoring_settings
865
+ MtnCloud::MonitoringSettingsInterface.new(common_interface_options).setopts(@options)
866
+ end
867
+
868
+ def whitelabel_settings
869
+ MtnCloud::WhitelabelSettingsInterface.new(common_interface_options).setopts(@options)
870
+ end
871
+
872
+ def wiki
873
+ MtnCloud::WikiInterface.new(common_interface_options).setopts(@options)
874
+ end
875
+
876
+ def health
877
+ MtnCloud::HealthInterface.new(common_interface_options).setopts(@options)
878
+ end
879
+
880
+ def hub
881
+ MtnCloud::HubInterface.new(common_interface_options).setopts(@options)
882
+ end
883
+
884
+ def audit
885
+ MtnCloud::AuditInterface.new(common_interface_options).setopts(@options)
886
+ end
887
+
888
+ def budgets
889
+ MtnCloud::BudgetsInterface.new(common_interface_options).setopts(@options)
890
+ end
891
+
892
+ def invoices
893
+ MtnCloud::InvoicesInterface.new(common_interface_options).setopts(@options)
894
+ end
895
+
896
+ def invoice_line_items
897
+ MtnCloud::InvoiceLineItemsInterface.new(common_interface_options).setopts(@options)
898
+ end
899
+
900
+ def guidance
901
+ MtnCloud::GuidanceInterface.new(common_interface_options).setopts(@options)
902
+ end
903
+
904
+ def projects
905
+ MtnCloud::ProjectsInterface.new(common_interface_options).setopts(@options)
906
+ end
907
+
908
+ def backups
909
+ MtnCloud::BackupsInterface.new(common_interface_options).setopts(@options)
910
+ end
911
+
912
+ def backup_jobs
913
+ MtnCloud::BackupJobsInterface.new(common_interface_options).setopts(@options)
914
+ end
915
+
916
+ def backup_results
917
+ MtnCloud::BackupResultsInterface.new(common_interface_options).setopts(@options)
918
+ end
919
+
920
+ def backup_restores
921
+ MtnCloud::BackupRestoresInterface.new(common_interface_options).setopts(@options)
922
+ end
923
+
924
+ def backup_services
925
+ MtnCloud::BackupServicesInterface.new(common_interface_options).setopts(@options)
926
+ end
927
+
928
+ def backup_service_types
929
+ MtnCloud::BackupServiceTypesInterface.new(common_interface_options).setopts(@options)
930
+ end
931
+
932
+ def backup_types
933
+ MtnCloud::BackupTypesInterface.new(common_interface_options).setopts(@options)
934
+ end
935
+
936
+ def catalog_item_types
937
+ MtnCloud::CatalogItemTypesInterface.new(common_interface_options).setopts(@options)
938
+ end
939
+
940
+ def catalog
941
+ MtnCloud::ServiceCatalogInterface.new(common_interface_options).setopts(@options)
942
+ end
943
+
944
+ def usage
945
+ MtnCloud::UsageInterface.new(common_interface_options).setopts(@options)
946
+ end
947
+
948
+ def billing
949
+ MtnCloud::BillingInterface.new(common_interface_options).setopts(@options)
950
+ end
951
+
952
+ def vdi
953
+ MtnCloud::VdiInterface.new(common_interface_options).setopts(@options)
954
+ end
955
+
956
+ def vdi_pools
957
+ MtnCloud::VdiPoolsInterface.new(common_interface_options).setopts(@options)
958
+ end
959
+
960
+ def vdi_allocations
961
+ MtnCloud::VdiAllocationsInterface.new(common_interface_options).setopts(@options)
962
+ end
963
+
964
+ def vdi_apps
965
+ MtnCloud::VdiAppsInterface.new(common_interface_options).setopts(@options)
966
+ end
967
+
968
+ def vdi_gateways
969
+ MtnCloud::VdiGatewaysInterface.new(common_interface_options).setopts(@options)
970
+ end
971
+
972
+ def network_servers
973
+ MtnCloud::NetworkServersInterface.new(common_interface_options).setopts(@options)
974
+ end
975
+
976
+ def network_server_types
977
+ MtnCloud::NetworkServerTypesInterface.new(common_interface_options).setopts(@options)
978
+ end
979
+
980
+ def network_server_groups
981
+ MtnCloud::NetworkServerGroupsInterface.new(common_interface_options).setopts(@options)
982
+ end
983
+
984
+ def network_server_services
985
+ MtnCloud::NetworkServerServicesInterface.new(common_interface_options).setopts(@options)
986
+ end
987
+
988
+ def network_resource_types
989
+ MtnCloud::NetworkResourceTypesInterface.new(common_interface_options).setopts(@options)
990
+ end
991
+
992
+ def network_edge_clusters
993
+ MtnCloud::NetworkEdgeClustersInterface.new(common_interface_options).setopts(@options)
994
+ end
995
+
996
+ def network_dhcp_servers
997
+ MtnCloud::NetworkDhcpServersInterface.new(common_interface_options).setopts(@options)
998
+ end
999
+
1000
+ def network_dhcp_relays
1001
+ MtnCloud::NetworkDhcpRelaysInterface.new(common_interface_options).setopts(@options)
1002
+ end
1003
+
1004
+ def network_static_routes
1005
+ MtnCloud::NetworkStaticRoutesInterface.new(common_interface_options).setopts(@options)
1006
+ end
1007
+
1008
+ def snapshots
1009
+ MtnCloud::SnapshotsInterface.new(common_interface_options).setopts(@options)
1010
+ end
1011
+
1012
+ def credentials
1013
+ MtnCloud::CredentialsInterface.new(common_interface_options).setopts(@options)
1014
+ end
1015
+
1016
+ def credential_types
1017
+ MtnCloud::CredentialTypesInterface.new(common_interface_options).setopts(@options)
1018
+ end
1019
+
1020
+ def clients
1021
+ MtnCloud::ClientsInterface.new(common_interface_options).setopts(@options)
1022
+ end
1023
+
1024
+ def security_packages
1025
+ MtnCloud::SecurityPackagesInterface.new(common_interface_options).setopts(@options)
1026
+ end
1027
+
1028
+ def security_package_types
1029
+ MtnCloud::SecurityPackageTypesInterface.new(common_interface_options).setopts(@options)
1030
+ end
1031
+
1032
+ def security_scans
1033
+ MtnCloud::SecurityScansInterface.new(common_interface_options).setopts(@options)
1034
+ end
1035
+
1036
+ def network_floating_ips
1037
+ MtnCloud::NetworkFloatingIpsInterface.new(common_interface_options).setopts(@options)
1038
+ end
1039
+
1040
+ def email_templates
1041
+ MtnCloud::EmailTemplatesInterface.new(common_interface_options).setopts(@options)
1042
+ end
1043
+
1044
+ def library_operating_systems
1045
+ MtnCloud::LibraryOperatingSystemsInterface.new(common_interface_options).setopts(@options)
1046
+ end
1047
+
1048
+ def migrations
1049
+ MtnCloud::MigrationsInterface.new(common_interface_options).setopts(@options)
1050
+ end
1051
+
1052
+ def tokens
1053
+ MtnCloud::TokensInterface.new(common_interface_options).setopts(@options)
1054
+ end
1055
+
1056
+ def virtual_switches
1057
+ MtnCloud::VirtualSwitchesInterface.new(common_interface_options).setopts(@options)
1058
+ end
1059
+
1060
+ def rest(endpoint)
1061
+ MtnCloud::RestInterface.new(common_interface_options).setopts(@options.merge({base_path: "#{@base_url}/api/#{endpoint}"}))
1062
+ end
1063
+
1064
+ def interface(type)
1065
+ type = type.to_s.singularize.underscore
1066
+ interface_name = type.pluralize
1067
+ if !respond_to?(interface_name)
1068
+ raise "#{self.class} has not defined an interface method named '#{interface_name}'"
1069
+ end
1070
+ return send(interface_name)
1071
+ end
1072
+ alias :get_interface :interface
1073
+
1074
+ def support_bundles
1075
+ MtnCloud::SupportBundlesInterface.new(common_interface_options).setopts(@options)
1076
+ end
1077
+
1078
+ # add new interfaces here
1079
+
1080
+ protected
1081
+
1082
+ def validate_id!(id, param_name='id')
1083
+ if !(id.is_a?(String) || id.is_a?(Integer))
1084
+ raise "#{self.class} passed an invalid #{param_name}! Expected String or Integer and got (#{id.class}) #{id.inspect}"
1085
+ elsif id.to_s.strip.empty?
1086
+ raise "#{self.class} passed a blank #{param_name}!"
1087
+ end
1088
+ return true
1089
+ end
1090
+
1091
+ end