groove-ey-core 3.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (541) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +23 -0
  6. data/CHANGELOG.md +175 -0
  7. data/Gemfile +21 -0
  8. data/Guardfile +15 -0
  9. data/LICENSE.txt +19 -0
  10. data/README.md +78 -0
  11. data/Rakefile +18 -0
  12. data/bin/ey-core +4 -0
  13. data/examples/add_instance.rb +74 -0
  14. data/examples/boot_env.rb +60 -0
  15. data/examples/console/README.md +14 -0
  16. data/examples/console/address.md +51 -0
  17. data/examples/stop_env.rb +51 -0
  18. data/examples/terminate_instance.rb +62 -0
  19. data/ey-core.gemspec +51 -0
  20. data/features/accounts.feature +13 -0
  21. data/features/applications.feature +29 -0
  22. data/features/current_user.feature +14 -0
  23. data/features/docker_registry_credentials.feature +21 -0
  24. data/features/environment_variables.feature +54 -0
  25. data/features/environments.feature +30 -0
  26. data/features/init.feature +6 -0
  27. data/features/login.feature +6 -0
  28. data/features/scp.feature +6 -0
  29. data/features/step_definitions/accounts_steps.rb +37 -0
  30. data/features/step_definitions/applications_steps.rb +39 -0
  31. data/features/step_definitions/current_user_steps.rb +11 -0
  32. data/features/step_definitions/deprecated_command_steps.rb +3 -0
  33. data/features/step_definitions/docker_registry_credentials_steps.rb +3 -0
  34. data/features/step_definitions/environment_variables_steps.rb +51 -0
  35. data/features/step_definitions/environments_steps.rb +52 -0
  36. data/features/step_definitions/version_steps.rb +3 -0
  37. data/features/support/account_helpers.rb +89 -0
  38. data/features/support/app_helpers.rb +19 -0
  39. data/features/support/aruba.rb +1 -0
  40. data/features/support/boilerplate.rb +1 -0
  41. data/features/support/client_helpers.rb +36 -0
  42. data/features/support/config_file_helpers.rb +42 -0
  43. data/features/support/core.rb +19 -0
  44. data/features/support/deployment_helpers.rb +19 -0
  45. data/features/support/env.rb +40 -0
  46. data/features/support/environment_helpers.rb +23 -0
  47. data/features/support/environment_variable_helpers.rb +20 -0
  48. data/features/support/fake_kernel.rb +23 -0
  49. data/features/support/io.rb +5 -0
  50. data/features/support/mock_api.rb +21 -0
  51. data/features/support/output_helpers.rb +7 -0
  52. data/features/support/resource_helpers.rb +201 -0
  53. data/features/support/server_helpers.rb +27 -0
  54. data/features/version.feature +8 -0
  55. data/features/whoami.feature +14 -0
  56. data/lib/ey-core.rb +59 -0
  57. data/lib/ey-core/associations.rb +155 -0
  58. data/lib/ey-core/cli.rb +8 -0
  59. data/lib/ey-core/cli/accounts.rb +17 -0
  60. data/lib/ey-core/cli/applications.rb +36 -0
  61. data/lib/ey-core/cli/console.rb +28 -0
  62. data/lib/ey-core/cli/current_user.rb +16 -0
  63. data/lib/ey-core/cli/deploy.rb +123 -0
  64. data/lib/ey-core/cli/docker_registry_login.rb +29 -0
  65. data/lib/ey-core/cli/environment_variables.rb +71 -0
  66. data/lib/ey-core/cli/environments.rb +39 -0
  67. data/lib/ey-core/cli/errors.rb +11 -0
  68. data/lib/ey-core/cli/help.rb +30 -0
  69. data/lib/ey-core/cli/helpers/archive.rb +70 -0
  70. data/lib/ey-core/cli/helpers/chef.rb +51 -0
  71. data/lib/ey-core/cli/helpers/core.rb +225 -0
  72. data/lib/ey-core/cli/helpers/deprecated.rb +39 -0
  73. data/lib/ey-core/cli/helpers/log_streaming.rb +41 -0
  74. data/lib/ey-core/cli/helpers/server_sieve.rb +76 -0
  75. data/lib/ey-core/cli/helpers/stream_printer.rb +42 -0
  76. data/lib/ey-core/cli/init.rb +14 -0
  77. data/lib/ey-core/cli/login.rb +38 -0
  78. data/lib/ey-core/cli/logout.rb +22 -0
  79. data/lib/ey-core/cli/logs.rb +70 -0
  80. data/lib/ey-core/cli/main.rb +69 -0
  81. data/lib/ey-core/cli/recipes.rb +10 -0
  82. data/lib/ey-core/cli/recipes/apply.rb +65 -0
  83. data/lib/ey-core/cli/recipes/download.rb +52 -0
  84. data/lib/ey-core/cli/recipes/main.rb +21 -0
  85. data/lib/ey-core/cli/recipes/upload.rb +78 -0
  86. data/lib/ey-core/cli/scp.rb +14 -0
  87. data/lib/ey-core/cli/servers.rb +59 -0
  88. data/lib/ey-core/cli/ssh.rb +150 -0
  89. data/lib/ey-core/cli/status.rb +60 -0
  90. data/lib/ey-core/cli/subcommand.rb +53 -0
  91. data/lib/ey-core/cli/timeout_deploy.rb +58 -0
  92. data/lib/ey-core/cli/version.rb +16 -0
  93. data/lib/ey-core/cli/web.rb +10 -0
  94. data/lib/ey-core/cli/web/disable.rb +49 -0
  95. data/lib/ey-core/cli/web/enable.rb +46 -0
  96. data/lib/ey-core/cli/web/main.rb +21 -0
  97. data/lib/ey-core/cli/web/restart.rb +42 -0
  98. data/lib/ey-core/cli/whoami.rb +12 -0
  99. data/lib/ey-core/client.rb +469 -0
  100. data/lib/ey-core/client/mock.rb +306 -0
  101. data/lib/ey-core/client/real.rb +93 -0
  102. data/lib/ey-core/collection.rb +131 -0
  103. data/lib/ey-core/collections/account_cancellations.rb +6 -0
  104. data/lib/ey-core/collections/account_referrals.rb +10 -0
  105. data/lib/ey-core/collections/accounts.rb +8 -0
  106. data/lib/ey-core/collections/addons.rb +16 -0
  107. data/lib/ey-core/collections/addresses.rb +9 -0
  108. data/lib/ey-core/collections/alerts.rb +9 -0
  109. data/lib/ey-core/collections/application_archives.rb +9 -0
  110. data/lib/ey-core/collections/application_deployments.rb +9 -0
  111. data/lib/ey-core/collections/applications.rb +9 -0
  112. data/lib/ey-core/collections/auto_scaling_alarms.rb +8 -0
  113. data/lib/ey-core/collections/auto_scaling_groups.rb +8 -0
  114. data/lib/ey-core/collections/auto_scaling_policies.rb +33 -0
  115. data/lib/ey-core/collections/backup_files.rb +9 -0
  116. data/lib/ey-core/collections/blueprints.rb +9 -0
  117. data/lib/ey-core/collections/components.rb +9 -0
  118. data/lib/ey-core/collections/contacts.rb +9 -0
  119. data/lib/ey-core/collections/container_clusters.rb +9 -0
  120. data/lib/ey-core/collections/container_service_deployments.rb +17 -0
  121. data/lib/ey-core/collections/costs.rb +8 -0
  122. data/lib/ey-core/collections/database_plan_usages.rb +7 -0
  123. data/lib/ey-core/collections/database_server_revisions.rb +7 -0
  124. data/lib/ey-core/collections/database_server_snapshots.rb +17 -0
  125. data/lib/ey-core/collections/database_server_usages.rb +7 -0
  126. data/lib/ey-core/collections/database_servers.rb +9 -0
  127. data/lib/ey-core/collections/database_services.rb +9 -0
  128. data/lib/ey-core/collections/deployments.rb +8 -0
  129. data/lib/ey-core/collections/environment_plan_usages.rb +7 -0
  130. data/lib/ey-core/collections/environment_variables.rb +8 -0
  131. data/lib/ey-core/collections/environments.rb +15 -0
  132. data/lib/ey-core/collections/features.rb +9 -0
  133. data/lib/ey-core/collections/firewall_rules.rb +9 -0
  134. data/lib/ey-core/collections/firewalls.rb +9 -0
  135. data/lib/ey-core/collections/gems.rb +6 -0
  136. data/lib/ey-core/collections/keypair_deployments.rb +9 -0
  137. data/lib/ey-core/collections/keypairs.rb +9 -0
  138. data/lib/ey-core/collections/legacy_alerts.rb +9 -0
  139. data/lib/ey-core/collections/load_balancer_nodes.rb +9 -0
  140. data/lib/ey-core/collections/load_balancer_services.rb +9 -0
  141. data/lib/ey-core/collections/load_balancers.rb +16 -0
  142. data/lib/ey-core/collections/logical_databases.rb +16 -0
  143. data/lib/ey-core/collections/logs.rb +9 -0
  144. data/lib/ey-core/collections/memberships.rb +9 -0
  145. data/lib/ey-core/collections/messages.rb +9 -0
  146. data/lib/ey-core/collections/plan_usages.rb +7 -0
  147. data/lib/ey-core/collections/provider_locations.rb +13 -0
  148. data/lib/ey-core/collections/providers.rb +15 -0
  149. data/lib/ey-core/collections/requests.rb +10 -0
  150. data/lib/ey-core/collections/server_events.rb +9 -0
  151. data/lib/ey-core/collections/server_usages.rb +7 -0
  152. data/lib/ey-core/collections/servers.rb +13 -0
  153. data/lib/ey-core/collections/services.rb +14 -0
  154. data/lib/ey-core/collections/ssl_certificates.rb +9 -0
  155. data/lib/ey-core/collections/storage_users.rb +10 -0
  156. data/lib/ey-core/collections/storages.rb +9 -0
  157. data/lib/ey-core/collections/tasks.rb +9 -0
  158. data/lib/ey-core/collections/tokens.rb +9 -0
  159. data/lib/ey-core/collections/untracked_addresses.rb +4 -0
  160. data/lib/ey-core/collections/untracked_servers.rb +9 -0
  161. data/lib/ey-core/collections/users.rb +12 -0
  162. data/lib/ey-core/collections/volumes.rb +9 -0
  163. data/lib/ey-core/logger.rb +31 -0
  164. data/lib/ey-core/memory_cache.rb +17 -0
  165. data/lib/ey-core/mock/helper.rb +104 -0
  166. data/lib/ey-core/mock/params.rb +31 -0
  167. data/lib/ey-core/mock/resources.rb +92 -0
  168. data/lib/ey-core/mock/searching.rb +115 -0
  169. data/lib/ey-core/mock/util.rb +23 -0
  170. data/lib/ey-core/model.rb +44 -0
  171. data/lib/ey-core/models/account.rb +80 -0
  172. data/lib/ey-core/models/account_cancellation.rb +6 -0
  173. data/lib/ey-core/models/account_referral.rb +8 -0
  174. data/lib/ey-core/models/account_trial.rb +15 -0
  175. data/lib/ey-core/models/addon.rb +37 -0
  176. data/lib/ey-core/models/address.rb +59 -0
  177. data/lib/ey-core/models/alert.rb +99 -0
  178. data/lib/ey-core/models/application.rb +33 -0
  179. data/lib/ey-core/models/application_archive.rb +67 -0
  180. data/lib/ey-core/models/application_deployment.rb +18 -0
  181. data/lib/ey-core/models/auto_scaling_alarm.rb +54 -0
  182. data/lib/ey-core/models/auto_scaling_group.rb +75 -0
  183. data/lib/ey-core/models/backup_file.rb +52 -0
  184. data/lib/ey-core/models/base_auto_scaling_policy.rb +61 -0
  185. data/lib/ey-core/models/billing.rb +27 -0
  186. data/lib/ey-core/models/blueprint.rb +30 -0
  187. data/lib/ey-core/models/component.rb +11 -0
  188. data/lib/ey-core/models/contact.rb +14 -0
  189. data/lib/ey-core/models/container_service_deployment.rb +17 -0
  190. data/lib/ey-core/models/cost.rb +16 -0
  191. data/lib/ey-core/models/database_plan_usage.rb +10 -0
  192. data/lib/ey-core/models/database_server.rb +56 -0
  193. data/lib/ey-core/models/database_server_revision.rb +10 -0
  194. data/lib/ey-core/models/database_server_snapshot.rb +43 -0
  195. data/lib/ey-core/models/database_server_usage.rb +15 -0
  196. data/lib/ey-core/models/database_service.rb +52 -0
  197. data/lib/ey-core/models/deployment.rb +30 -0
  198. data/lib/ey-core/models/environment.rb +248 -0
  199. data/lib/ey-core/models/environment_plan_usage.rb +10 -0
  200. data/lib/ey-core/models/environment_variable.rb +29 -0
  201. data/lib/ey-core/models/feature.rb +33 -0
  202. data/lib/ey-core/models/firewall.rb +46 -0
  203. data/lib/ey-core/models/firewall_rule.rb +41 -0
  204. data/lib/ey-core/models/gem.rb +5 -0
  205. data/lib/ey-core/models/keypair.rb +38 -0
  206. data/lib/ey-core/models/keypair_deployment.rb +26 -0
  207. data/lib/ey-core/models/legacy_alert.rb +12 -0
  208. data/lib/ey-core/models/load_balancer.rb +43 -0
  209. data/lib/ey-core/models/load_balancer_node.rb +17 -0
  210. data/lib/ey-core/models/load_balancer_service.rb +22 -0
  211. data/lib/ey-core/models/log.rb +44 -0
  212. data/lib/ey-core/models/logical_database.rb +40 -0
  213. data/lib/ey-core/models/membership.rb +49 -0
  214. data/lib/ey-core/models/message.rb +27 -0
  215. data/lib/ey-core/models/plan_usage.rb +14 -0
  216. data/lib/ey-core/models/provider.rb +59 -0
  217. data/lib/ey-core/models/provider_location.rb +24 -0
  218. data/lib/ey-core/models/request.rb +109 -0
  219. data/lib/ey-core/models/server.rb +151 -0
  220. data/lib/ey-core/models/server_event.rb +11 -0
  221. data/lib/ey-core/models/server_usage.rb +15 -0
  222. data/lib/ey-core/models/service.rb +10 -0
  223. data/lib/ey-core/models/simple_auto_scaling_policy.rb +24 -0
  224. data/lib/ey-core/models/ssl_certificate.rb +44 -0
  225. data/lib/ey-core/models/step_auto_scaling_policy.rb +24 -0
  226. data/lib/ey-core/models/storage.rb +38 -0
  227. data/lib/ey-core/models/storage_user.rb +44 -0
  228. data/lib/ey-core/models/support_trial.rb +10 -0
  229. data/lib/ey-core/models/target_auto_scaling_policy.rb +24 -0
  230. data/lib/ey-core/models/task.rb +35 -0
  231. data/lib/ey-core/models/token.rb +24 -0
  232. data/lib/ey-core/models/untracked_address.rb +24 -0
  233. data/lib/ey-core/models/untracked_server.rb +45 -0
  234. data/lib/ey-core/models/user.rb +39 -0
  235. data/lib/ey-core/models/volume.rb +20 -0
  236. data/lib/ey-core/request.rb +21 -0
  237. data/lib/ey-core/request_failure.rb +11 -0
  238. data/lib/ey-core/requests/acknowledge_alert.rb +29 -0
  239. data/lib/ey-core/requests/apply_environment_updates.rb +54 -0
  240. data/lib/ey-core/requests/apply_server_updates.rb +52 -0
  241. data/lib/ey-core/requests/attach_address.rb +53 -0
  242. data/lib/ey-core/requests/authorized_channel.rb +22 -0
  243. data/lib/ey-core/requests/blueprint_environment.rb +72 -0
  244. data/lib/ey-core/requests/boot_environment.rb +187 -0
  245. data/lib/ey-core/requests/bootstrap_logical_database.rb +80 -0
  246. data/lib/ey-core/requests/cancel_account.rb +33 -0
  247. data/lib/ey-core/requests/change_environment_maintenance.rb +38 -0
  248. data/lib/ey-core/requests/create_account.rb +38 -0
  249. data/lib/ey-core/requests/create_addon.rb +35 -0
  250. data/lib/ey-core/requests/create_address.rb +54 -0
  251. data/lib/ey-core/requests/create_alert.rb +63 -0
  252. data/lib/ey-core/requests/create_application.rb +73 -0
  253. data/lib/ey-core/requests/create_application_archive.rb +44 -0
  254. data/lib/ey-core/requests/create_auto_scaling_alarm.rb +69 -0
  255. data/lib/ey-core/requests/create_auto_scaling_group.rb +62 -0
  256. data/lib/ey-core/requests/create_auto_scaling_policy.rb +68 -0
  257. data/lib/ey-core/requests/create_backup_file.rb +52 -0
  258. data/lib/ey-core/requests/create_database_server.rb +72 -0
  259. data/lib/ey-core/requests/create_database_service.rb +57 -0
  260. data/lib/ey-core/requests/create_database_service_snapshot.rb +69 -0
  261. data/lib/ey-core/requests/create_environment.rb +77 -0
  262. data/lib/ey-core/requests/create_environment_variable.rb +39 -0
  263. data/lib/ey-core/requests/create_firewall.rb +62 -0
  264. data/lib/ey-core/requests/create_firewall_rule.rb +60 -0
  265. data/lib/ey-core/requests/create_keypair.rb +42 -0
  266. data/lib/ey-core/requests/create_keypair_deployment.rb +36 -0
  267. data/lib/ey-core/requests/create_load_balancer.rb +62 -0
  268. data/lib/ey-core/requests/create_log.rb +53 -0
  269. data/lib/ey-core/requests/create_logical_database.rb +56 -0
  270. data/lib/ey-core/requests/create_membership.rb +47 -0
  271. data/lib/ey-core/requests/create_message.rb +35 -0
  272. data/lib/ey-core/requests/create_password_reset.rb +38 -0
  273. data/lib/ey-core/requests/create_provider.rb +90 -0
  274. data/lib/ey-core/requests/create_server.rb +121 -0
  275. data/lib/ey-core/requests/create_ssl_certificate.rb +83 -0
  276. data/lib/ey-core/requests/create_storage.rb +64 -0
  277. data/lib/ey-core/requests/create_storage_user.rb +64 -0
  278. data/lib/ey-core/requests/create_task.rb +55 -0
  279. data/lib/ey-core/requests/create_token.rb +24 -0
  280. data/lib/ey-core/requests/create_untracked_address.rb +50 -0
  281. data/lib/ey-core/requests/create_untracked_server.rb +39 -0
  282. data/lib/ey-core/requests/create_user.rb +54 -0
  283. data/lib/ey-core/requests/deploy_environment_application.rb +60 -0
  284. data/lib/ey-core/requests/deprovision_environment.rb +17 -0
  285. data/lib/ey-core/requests/destroy_addon.rb +24 -0
  286. data/lib/ey-core/requests/destroy_auto_scaling_alarm.rb +49 -0
  287. data/lib/ey-core/requests/destroy_auto_scaling_group.rb +44 -0
  288. data/lib/ey-core/requests/destroy_auto_scaling_policy.rb +49 -0
  289. data/lib/ey-core/requests/destroy_blueprint.rb +22 -0
  290. data/lib/ey-core/requests/destroy_database_server.rb +41 -0
  291. data/lib/ey-core/requests/destroy_database_server_snapshot.rb +42 -0
  292. data/lib/ey-core/requests/destroy_database_service.rb +57 -0
  293. data/lib/ey-core/requests/destroy_environment.rb +43 -0
  294. data/lib/ey-core/requests/destroy_firewall.rb +41 -0
  295. data/lib/ey-core/requests/destroy_firewall_rule.rb +41 -0
  296. data/lib/ey-core/requests/destroy_load_balancer.rb +30 -0
  297. data/lib/ey-core/requests/destroy_logical_database.rb +41 -0
  298. data/lib/ey-core/requests/destroy_provider.rb +34 -0
  299. data/lib/ey-core/requests/destroy_server.rb +48 -0
  300. data/lib/ey-core/requests/destroy_ssl_certificate.rb +28 -0
  301. data/lib/ey-core/requests/destroy_storage.rb +33 -0
  302. data/lib/ey-core/requests/destroy_storage_user.rb +38 -0
  303. data/lib/ey-core/requests/destroy_user.rb +29 -0
  304. data/lib/ey-core/requests/detach_address.rb +48 -0
  305. data/lib/ey-core/requests/disable_feature.rb +30 -0
  306. data/lib/ey-core/requests/discover_container_service_deployments.rb +71 -0
  307. data/lib/ey-core/requests/discover_database_server.rb +66 -0
  308. data/lib/ey-core/requests/discover_database_server_snapshots.rb +69 -0
  309. data/lib/ey-core/requests/discover_provider_location.rb +57 -0
  310. data/lib/ey-core/requests/discover_server.rb +60 -0
  311. data/lib/ey-core/requests/download_file.rb +25 -0
  312. data/lib/ey-core/requests/enable_feature.rb +35 -0
  313. data/lib/ey-core/requests/get_account.rb +29 -0
  314. data/lib/ey-core/requests/get_account_cancellation.rb +21 -0
  315. data/lib/ey-core/requests/get_account_referrals.rb +28 -0
  316. data/lib/ey-core/requests/get_account_trial.rb +32 -0
  317. data/lib/ey-core/requests/get_accounts.rb +42 -0
  318. data/lib/ey-core/requests/get_addon.rb +25 -0
  319. data/lib/ey-core/requests/get_addons.rb +24 -0
  320. data/lib/ey-core/requests/get_address.rb +25 -0
  321. data/lib/ey-core/requests/get_addresses.rb +27 -0
  322. data/lib/ey-core/requests/get_alert.rb +21 -0
  323. data/lib/ey-core/requests/get_alerting_environments.rb +41 -0
  324. data/lib/ey-core/requests/get_alerts.rb +44 -0
  325. data/lib/ey-core/requests/get_api_token.rb +19 -0
  326. data/lib/ey-core/requests/get_application.rb +21 -0
  327. data/lib/ey-core/requests/get_application_archive.rb +32 -0
  328. data/lib/ey-core/requests/get_application_archives.rb +29 -0
  329. data/lib/ey-core/requests/get_application_deployment.rb +21 -0
  330. data/lib/ey-core/requests/get_application_deployments.rb +28 -0
  331. data/lib/ey-core/requests/get_applications.rb +28 -0
  332. data/lib/ey-core/requests/get_auto_scaling_alarm.rb +27 -0
  333. data/lib/ey-core/requests/get_auto_scaling_alarms.rb +34 -0
  334. data/lib/ey-core/requests/get_auto_scaling_group.rb +21 -0
  335. data/lib/ey-core/requests/get_auto_scaling_groups.rb +29 -0
  336. data/lib/ey-core/requests/get_auto_scaling_policies.rb +46 -0
  337. data/lib/ey-core/requests/get_auto_scaling_policy.rb +27 -0
  338. data/lib/ey-core/requests/get_backup_file.rb +21 -0
  339. data/lib/ey-core/requests/get_backup_files.rb +28 -0
  340. data/lib/ey-core/requests/get_billing.rb +24 -0
  341. data/lib/ey-core/requests/get_blueprint.rb +21 -0
  342. data/lib/ey-core/requests/get_blueprints.rb +29 -0
  343. data/lib/ey-core/requests/get_component.rb +21 -0
  344. data/lib/ey-core/requests/get_components.rb +29 -0
  345. data/lib/ey-core/requests/get_contacts.rb +34 -0
  346. data/lib/ey-core/requests/get_costs.rb +25 -0
  347. data/lib/ey-core/requests/get_current_user.rb +19 -0
  348. data/lib/ey-core/requests/get_database_plan_usages.rb +24 -0
  349. data/lib/ey-core/requests/get_database_server.rb +21 -0
  350. data/lib/ey-core/requests/get_database_server_revisions.rb +27 -0
  351. data/lib/ey-core/requests/get_database_server_snapshot.rb +20 -0
  352. data/lib/ey-core/requests/get_database_server_snapshots.rb +39 -0
  353. data/lib/ey-core/requests/get_database_server_usages.rb +24 -0
  354. data/lib/ey-core/requests/get_database_servers.rb +30 -0
  355. data/lib/ey-core/requests/get_database_servers_firewalls.rb +30 -0
  356. data/lib/ey-core/requests/get_database_service.rb +20 -0
  357. data/lib/ey-core/requests/get_database_services.rb +55 -0
  358. data/lib/ey-core/requests/get_deployment.rb +19 -0
  359. data/lib/ey-core/requests/get_deployments.rb +29 -0
  360. data/lib/ey-core/requests/get_environment.rb +21 -0
  361. data/lib/ey-core/requests/get_environment_database_services.rb +21 -0
  362. data/lib/ey-core/requests/get_environment_logical_databases.rb +20 -0
  363. data/lib/ey-core/requests/get_environment_plan_usages.rb +24 -0
  364. data/lib/ey-core/requests/get_environment_variable.rb +19 -0
  365. data/lib/ey-core/requests/get_environment_variables.rb +29 -0
  366. data/lib/ey-core/requests/get_environments.rb +29 -0
  367. data/lib/ey-core/requests/get_feature.rb +21 -0
  368. data/lib/ey-core/requests/get_features.rb +28 -0
  369. data/lib/ey-core/requests/get_firewall.rb +21 -0
  370. data/lib/ey-core/requests/get_firewall_rule.rb +21 -0
  371. data/lib/ey-core/requests/get_firewall_rules.rb +29 -0
  372. data/lib/ey-core/requests/get_firewalls.rb +45 -0
  373. data/lib/ey-core/requests/get_gem.rb +24 -0
  374. data/lib/ey-core/requests/get_keypair.rb +21 -0
  375. data/lib/ey-core/requests/get_keypair_deployment.rb +21 -0
  376. data/lib/ey-core/requests/get_keypair_deployments.rb +29 -0
  377. data/lib/ey-core/requests/get_keypairs.rb +34 -0
  378. data/lib/ey-core/requests/get_legacy_alert.rb +21 -0
  379. data/lib/ey-core/requests/get_legacy_alerts.rb +29 -0
  380. data/lib/ey-core/requests/get_load_balancer.rb +21 -0
  381. data/lib/ey-core/requests/get_load_balancer_node.rb +21 -0
  382. data/lib/ey-core/requests/get_load_balancer_nodes.rb +30 -0
  383. data/lib/ey-core/requests/get_load_balancer_service.rb +21 -0
  384. data/lib/ey-core/requests/get_load_balancer_services.rb +30 -0
  385. data/lib/ey-core/requests/get_load_balancers.rb +29 -0
  386. data/lib/ey-core/requests/get_log.rb +21 -0
  387. data/lib/ey-core/requests/get_logical_database.rb +23 -0
  388. data/lib/ey-core/requests/get_logical_databases.rb +36 -0
  389. data/lib/ey-core/requests/get_logs.rb +37 -0
  390. data/lib/ey-core/requests/get_membership.rb +21 -0
  391. data/lib/ey-core/requests/get_memberships.rb +29 -0
  392. data/lib/ey-core/requests/get_message.rb +28 -0
  393. data/lib/ey-core/requests/get_messages.rb +27 -0
  394. data/lib/ey-core/requests/get_metadata.rb +22 -0
  395. data/lib/ey-core/requests/get_operational_contact.rb +21 -0
  396. data/lib/ey-core/requests/get_operational_contacts.rb +20 -0
  397. data/lib/ey-core/requests/get_plan_usages.rb +24 -0
  398. data/lib/ey-core/requests/get_possible_provider_locations.rb +19 -0
  399. data/lib/ey-core/requests/get_provider.rb +21 -0
  400. data/lib/ey-core/requests/get_provider_location.rb +29 -0
  401. data/lib/ey-core/requests/get_provider_locations.rb +28 -0
  402. data/lib/ey-core/requests/get_providers.rb +28 -0
  403. data/lib/ey-core/requests/get_request.rb +71 -0
  404. data/lib/ey-core/requests/get_requests.rb +29 -0
  405. data/lib/ey-core/requests/get_server.rb +34 -0
  406. data/lib/ey-core/requests/get_server_event.rb +20 -0
  407. data/lib/ey-core/requests/get_server_events.rb +28 -0
  408. data/lib/ey-core/requests/get_server_usages.rb +24 -0
  409. data/lib/ey-core/requests/get_servers.rb +26 -0
  410. data/lib/ey-core/requests/get_ssl_certificate.rb +23 -0
  411. data/lib/ey-core/requests/get_ssl_certificates.rb +28 -0
  412. data/lib/ey-core/requests/get_storage.rb +21 -0
  413. data/lib/ey-core/requests/get_storage_user.rb +21 -0
  414. data/lib/ey-core/requests/get_storage_users.rb +28 -0
  415. data/lib/ey-core/requests/get_storages.rb +28 -0
  416. data/lib/ey-core/requests/get_support_trial.rb +51 -0
  417. data/lib/ey-core/requests/get_task.rb +21 -0
  418. data/lib/ey-core/requests/get_tasks.rb +28 -0
  419. data/lib/ey-core/requests/get_token.rb +21 -0
  420. data/lib/ey-core/requests/get_token_by_login.rb +30 -0
  421. data/lib/ey-core/requests/get_tokens.rb +32 -0
  422. data/lib/ey-core/requests/get_untracked_server.rb +18 -0
  423. data/lib/ey-core/requests/get_untracked_servers.rb +24 -0
  424. data/lib/ey-core/requests/get_user.rb +21 -0
  425. data/lib/ey-core/requests/get_users.rb +42 -0
  426. data/lib/ey-core/requests/get_volume.rb +21 -0
  427. data/lib/ey-core/requests/get_volumes.rb +28 -0
  428. data/lib/ey-core/requests/reboot_server.rb +39 -0
  429. data/lib/ey-core/requests/reconcile_server.rb +39 -0
  430. data/lib/ey-core/requests/request_callback.rb +26 -0
  431. data/lib/ey-core/requests/reset_password.rb +31 -0
  432. data/lib/ey-core/requests/reset_server_state.rb +32 -0
  433. data/lib/ey-core/requests/restart_environment_app_servers.rb +38 -0
  434. data/lib/ey-core/requests/retrieve_docker_registry_credentials.rb +24 -0
  435. data/lib/ey-core/requests/run_cluster_application_action.rb +28 -0
  436. data/lib/ey-core/requests/run_environment_application_action.rb +29 -0
  437. data/lib/ey-core/requests/signup.rb +56 -0
  438. data/lib/ey-core/requests/start_server.rb +39 -0
  439. data/lib/ey-core/requests/stop_server.rb +39 -0
  440. data/lib/ey-core/requests/timeout_deployment.rb +27 -0
  441. data/lib/ey-core/requests/unassign_environment.rb +31 -0
  442. data/lib/ey-core/requests/update_addon.rb +28 -0
  443. data/lib/ey-core/requests/update_address.rb +29 -0
  444. data/lib/ey-core/requests/update_alert.rb +32 -0
  445. data/lib/ey-core/requests/update_application_archive.rb +23 -0
  446. data/lib/ey-core/requests/update_auto_scaling_alarm.rb +45 -0
  447. data/lib/ey-core/requests/update_auto_scaling_group.rb +45 -0
  448. data/lib/ey-core/requests/update_auto_scaling_policy.rb +46 -0
  449. data/lib/ey-core/requests/update_billing.rb +26 -0
  450. data/lib/ey-core/requests/update_blueprint.rb +29 -0
  451. data/lib/ey-core/requests/update_connector.rb +32 -0
  452. data/lib/ey-core/requests/update_environment.rb +17 -0
  453. data/lib/ey-core/requests/update_environment_variable.rb +25 -0
  454. data/lib/ey-core/requests/update_membership.rb +29 -0
  455. data/lib/ey-core/requests/update_provider_location.rb +29 -0
  456. data/lib/ey-core/requests/update_server.rb +29 -0
  457. data/lib/ey-core/requests/update_ssl_certificate.rb +25 -0
  458. data/lib/ey-core/requests/update_untracked_server.rb +24 -0
  459. data/lib/ey-core/requests/upload_file.rb +44 -0
  460. data/lib/ey-core/requests/upload_recipes_for_environment.rb +28 -0
  461. data/lib/ey-core/response.rb +59 -0
  462. data/lib/ey-core/response_cache.rb +29 -0
  463. data/lib/ey-core/subscribable.rb +60 -0
  464. data/lib/ey-core/test_helpers.rb +17 -0
  465. data/lib/ey-core/test_helpers/account_helpers.rb +73 -0
  466. data/lib/ey-core/test_helpers/alert_helpers.rb +16 -0
  467. data/lib/ey-core/test_helpers/auto_scaling_helpers.rb +35 -0
  468. data/lib/ey-core/test_helpers/client_helpers.rb +40 -0
  469. data/lib/ey-core/test_helpers/cucumber.rb +3 -0
  470. data/lib/ey-core/test_helpers/resource_helpers.rb +196 -0
  471. data/lib/ey-core/test_helpers/rspec.rb +5 -0
  472. data/lib/ey-core/token_authentication.rb +13 -0
  473. data/lib/ey-core/version.rb +5 -0
  474. data/spec/account_spec.rb +65 -0
  475. data/spec/account_trial_spec.rb +17 -0
  476. data/spec/accounts_referrals_spec.rb +20 -0
  477. data/spec/accounts_spec.rb +113 -0
  478. data/spec/addons_and_vars_spec.rb +62 -0
  479. data/spec/addresses_spec.rb +57 -0
  480. data/spec/alerts_spec.rb +155 -0
  481. data/spec/application_archives_spec.rb +39 -0
  482. data/spec/applications_spec.rb +65 -0
  483. data/spec/auto_scaling_alarms_spec.rb +40 -0
  484. data/spec/auto_scaling_groups_spec.rb +28 -0
  485. data/spec/auto_scaling_policies_spec.rb +94 -0
  486. data/spec/billing_spec.rb +31 -0
  487. data/spec/blueprints_spec.rb +47 -0
  488. data/spec/client_spec.rb +16 -0
  489. data/spec/collection_spec.rb +43 -0
  490. data/spec/costs_spec.rb +22 -0
  491. data/spec/database_plan_usage_spec.rb +39 -0
  492. data/spec/database_server_snapshots_spec.rb +41 -0
  493. data/spec/database_server_usage_spec.rb +49 -0
  494. data/spec/database_servers_spec.rb +61 -0
  495. data/spec/database_services_spec.rb +76 -0
  496. data/spec/deployments_spec.rb +24 -0
  497. data/spec/docker_registry_credentials_spec.rb +16 -0
  498. data/spec/environment_plan_usage_spec.rb +38 -0
  499. data/spec/environments_spec.rb +212 -0
  500. data/spec/ey-core/cli/accounts_spec.rb +20 -0
  501. data/spec/ey-core/cli/helpers/server_sieve_spec.rb +226 -0
  502. data/spec/ey-core/cli/recipes/apply_spec.rb +34 -0
  503. data/spec/ey-core/cli/recipes/download_spec.rb +93 -0
  504. data/spec/ey-core/cli/recipes/upload_spec.rb +80 -0
  505. data/spec/features_spec.rb +79 -0
  506. data/spec/firewalls_spec.rb +84 -0
  507. data/spec/gems_spec.rb +11 -0
  508. data/spec/keypair_deployments_spec.rb +33 -0
  509. data/spec/keypairs_spec.rb +51 -0
  510. data/spec/legacy_alerts_spec.rb +44 -0
  511. data/spec/load_balancers_spec.rb +31 -0
  512. data/spec/logical_databases_spec.rb +38 -0
  513. data/spec/logs_spec.rb +44 -0
  514. data/spec/memberships_spec.rb +73 -0
  515. data/spec/messages_spec.rb +27 -0
  516. data/spec/metadata_spec.rb +11 -0
  517. data/spec/plan_usage_spec.rb +65 -0
  518. data/spec/provider_locations_spec.rb +85 -0
  519. data/spec/providers_spec.rb +105 -0
  520. data/spec/requests/upload_file_spec.rb +25 -0
  521. data/spec/requests_spec.rb +23 -0
  522. data/spec/reset_password_spec.rb +22 -0
  523. data/spec/server_events_spec.rb +31 -0
  524. data/spec/server_usage_spec.rb +70 -0
  525. data/spec/servers_spec.rb +202 -0
  526. data/spec/services_spec.rb +9 -0
  527. data/spec/signups_spec.rb +45 -0
  528. data/spec/spec_helper.rb +27 -0
  529. data/spec/ssl_certificates_spec.rb +94 -0
  530. data/spec/storages_spec.rb +57 -0
  531. data/spec/support/cli_helpers.rb +47 -0
  532. data/spec/support/core.rb +23 -0
  533. data/spec/support/coverage.rb +43 -0
  534. data/spec/support/fake_kernel.rb +21 -0
  535. data/spec/support/helpers.rb +1 -0
  536. data/spec/support/timecop.rb +8 -0
  537. data/spec/support_trial_spec.rb +33 -0
  538. data/spec/tokens_spec.rb +59 -0
  539. data/spec/untracked_servers_spec.rb +59 -0
  540. data/spec/users_spec.rb +108 -0
  541. metadata +1052 -0
@@ -0,0 +1,58 @@
1
+ require 'ey-core/cli/subcommand'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ class TimeoutDeploy < Subcommand
7
+ title "timeout-deploy"
8
+ summary "Fail a stuck unfinished deployment"
9
+ description <<-DESC
10
+ NOTICE: Timing out a deploy does not stop currently running deploy
11
+ processes.
12
+
13
+ The latest running deployment will be marked as failed, allowing a
14
+ new deployment to be run. It is possible to mark a potentially successful
15
+ deployment as failed. Only run this when a deployment is known to be
16
+ wrongly unfinished/stuck and when further deployments are blocked.
17
+ DESC
18
+
19
+ option :environment,
20
+ short: "e",
21
+ long: "environment",
22
+ description: "Name or id of the environment to deploy to.",
23
+ argument: "Environment"
24
+
25
+ option :account,
26
+ short: 'c',
27
+ long: 'account',
28
+ description: 'Name or ID of the account that the environment resides in. If no account is specified, the app will deploy to the first environment that meets the criteria, in the accounts you have access to.',
29
+ argument: 'Account name or id'
30
+
31
+ option :app,
32
+ short: "a",
33
+ long: "app",
34
+ description: "Application name or ID to deploy. If :account is not specified, this will be the first app that matches the criteria in the accounts you have access to.",
35
+ argument: "app"
36
+
37
+ option :message,
38
+ short: "m",
39
+ long: "message",
40
+ description: "Custom message for why the deploy is timed out",
41
+ argument: "message"
42
+
43
+ def handle
44
+ operator, environment = core_operator_and_environment_for(self.options)
45
+ app = core_application_for(environment, options)
46
+ deployment = core_client.
47
+ deployments.
48
+ first(environment_id: environment.id, application_id: app.id)
49
+
50
+ puts "Timing out the most recent deployment (deploy started at: #{deployment.started_at})".green
51
+
52
+ deployment.timeout(option(:message))
53
+ ap deployment
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,16 @@
1
+ require 'ey-core/cli/subcommand'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ class Version < Subcommand
7
+ title "version"
8
+ summary "Print the version of the gem"
9
+
10
+ def handle
11
+ puts Ey::Core::VERSION
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ require 'ey-core/cli/web/main'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ module Web
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,49 @@
1
+ require 'ey-core/cli/subcommand'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ module Web
7
+ class Disable < Ey::Core::Cli::Subcommand
8
+ title "disable"
9
+ summary "Put up the maintenance page for this application in the given environment."
10
+
11
+ option :app,
12
+ short: "a",
13
+ long: "app",
14
+ description: "Name or id of the application whose maintenance page will be put up",
15
+ argument: "app"
16
+
17
+ option :environment,
18
+ short: "e",
19
+ long: "environment",
20
+ description: "Name or id of the environment to deploy to.",
21
+ argument: "Environment"
22
+
23
+ option :account,
24
+ short: 'c',
25
+ long: 'account',
26
+ description: 'Name or ID of the account that the environment resides in.',
27
+ argument: 'Account name or id'
28
+
29
+ def handle
30
+ operator, environment = core_operator_and_environment_for(self.options)
31
+ application = core_application_for(environment, self.options)
32
+
33
+ puts "Enabling maintenance page for #{application.name} on #{environment.name}".green
34
+
35
+ request = environment.maintenance(application, "enable")
36
+ request.wait_for { |r| r.ready? }
37
+
38
+ if request.successful
39
+ puts "Successfully put up maintenance page".green
40
+ else
41
+ puts "Enabling maintenance mode was not successful".red
42
+ ap request
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,46 @@
1
+ require 'ey-core/cli/subcommand'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ module Web
7
+ class Enable < Ey::Core::Cli::Subcommand
8
+ title "enable"
9
+ summary "Remove the maintenance page for this application in the given environment."
10
+
11
+ option :app,
12
+ short: "a",
13
+ long: "app",
14
+ description: "Name or id of the application whose maintenance page will be removed",
15
+ argument: "app"
16
+
17
+ option :environment,
18
+ short: "e",
19
+ long: "environment",
20
+ description: "Name or id of the environment to deploy to.",
21
+ argument: "Environment"
22
+
23
+ option :account,
24
+ short: 'c',
25
+ long: 'account',
26
+ description: 'Name or ID of the account that the environment resides in.',
27
+ argument: 'account'
28
+
29
+ def handle
30
+ operator, environment = core_operator_and_environment_for(self.options)
31
+ application = core_application_for(environment, options)
32
+ puts "Disabling maintenance for #{application.name} on #{environment.name}".green
33
+ request = environment.maintenance(application, "disable")
34
+ request.wait_for { |r| r.ready? }
35
+ if request.successful
36
+ puts "Successfully disabled maintenance page".green
37
+ else
38
+ puts "Disabling maintenance mode was not successful".red
39
+ ap request
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,21 @@
1
+ require 'ey-core/cli/subcommand'
2
+ require 'ey-core/cli/web/disable'
3
+ require 'ey-core/cli/web/enable'
4
+ require 'ey-core/cli/web/restart'
5
+
6
+ module Ey
7
+ module Core
8
+ module Cli
9
+ module Web
10
+ class Main < Ey::Core::Cli::Subcommand
11
+ title "web"
12
+ summary "Web related commands"
13
+
14
+ mount Disable
15
+ mount Enable
16
+ mount Restart
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,42 @@
1
+ require 'ey-core/cli/subcommand'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ module Web
7
+ class Restart < Ey::Core::Cli::Subcommand
8
+ title "restart"
9
+ summary "Restart all application servers in an environment"
10
+
11
+ option :environment,
12
+ short: "e",
13
+ long: "environment",
14
+ description: "Name or id of the environment to deploy to.",
15
+ argument: "environment"
16
+
17
+ option :account,
18
+ short: "c",
19
+ long: "account",
20
+ description: "Name or id of the account that the environment resides in.",
21
+ argument: "account"
22
+
23
+ def handle
24
+ operator, environment = core_operator_and_environment_for(options)
25
+
26
+ puts "Restarting application servers in #{environment.name}".green
27
+
28
+ request = environment.restart_app_servers
29
+ request.wait_for { |r| r.ready? }
30
+
31
+ if request.successful
32
+ puts "Successfully restarted application servers".green
33
+ else
34
+ puts "Restarting application servers has failed".red
35
+ ap request
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,12 @@
1
+ require 'ey-core/cli/current_user'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ class Whoami < CurrentUser
7
+ title "whoami"
8
+ summary "Print the current user information (alias for current_user)"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,469 @@
1
+ class Ey::Core::Client < Cistern::Service
2
+ NotPermitted = Class.new(StandardError)
3
+
4
+ collection_path "ey-core/collections"
5
+ model_path "ey-core/models"
6
+ request_path "ey-core/requests"
7
+
8
+ collection :account_cancellations
9
+ collection :account_referrals
10
+ collection :accounts
11
+ collection :addons
12
+ collection :addresses
13
+ collection :alerts
14
+ collection :application_archives
15
+ collection :application_deployments
16
+ collection :applications
17
+ collection :auto_scaling_alarms
18
+ collection :auto_scaling_groups
19
+ collection :auto_scaling_policies
20
+ collection :backup_files
21
+ collection :blueprints
22
+ collection :components
23
+ collection :contacts
24
+ collection :container_service_deployments
25
+ collection :costs
26
+ collection :database_plan_usages
27
+ collection :database_server_revisions
28
+ collection :database_server_snapshots
29
+ collection :database_server_usages
30
+ collection :database_servers
31
+ collection :database_services
32
+ collection :deployments
33
+ collection :environment_plan_usages
34
+ collection :environments
35
+ collection :environment_variables
36
+ collection :features
37
+ collection :firewall_rules
38
+ collection :firewalls
39
+ collection :gems
40
+ collection :keypair_deployments
41
+ collection :keypairs
42
+ collection :legacy_alerts
43
+ collection :load_balancer_nodes
44
+ collection :load_balancer_services
45
+ collection :load_balancers
46
+ collection :logical_databases
47
+ collection :logs
48
+ collection :memberships
49
+ collection :messages
50
+ collection :plan_usages
51
+ collection :provider_locations
52
+ collection :providers
53
+ collection :requests
54
+ collection :server_events
55
+ collection :server_usages
56
+ collection :servers
57
+ collection :services
58
+ collection :ssl_certificates
59
+ collection :storage_users
60
+ collection :storages
61
+ collection :tasks
62
+ collection :tokens
63
+ collection :untracked_addresses
64
+ collection :untracked_servers
65
+ collection :users
66
+ collection :volumes
67
+
68
+ model :account
69
+ model :account_cancellation
70
+ model :account_referral
71
+ model :account_trial
72
+ model :addon
73
+ model :address
74
+ model :alert
75
+ model :application
76
+ model :application_archive
77
+ model :application_deployment
78
+ model :auto_scaling_alarm
79
+ model :auto_scaling_group
80
+ model :backup_file
81
+ model :base_auto_scaling_policy
82
+ model :billing
83
+ model :blueprint
84
+ model :component
85
+ model :contact
86
+ model :container_service_deployment
87
+ model :cost
88
+ model :database_plan_usage
89
+ model :database_server
90
+ model :database_server_revision
91
+ model :database_server_snapshot
92
+ model :database_server_usage
93
+ model :database_service
94
+ model :deployment
95
+ model :environment
96
+ model :environment_plan_usage
97
+ model :environment_variable
98
+ model :feature
99
+ model :firewall
100
+ model :firewall_rule
101
+ model :gem
102
+ model :keypair
103
+ model :keypair_deployment
104
+ model :legacy_alert
105
+ model :load_balancer
106
+ model :load_balancer_node
107
+ model :load_balancer_service
108
+ model :log
109
+ model :logical_database
110
+ model :membership
111
+ model :message
112
+ model :plan_usage
113
+ model :provider
114
+ model :provider_location
115
+ model :request
116
+ model :server
117
+ model :server_event
118
+ model :server_usage
119
+ model :service
120
+ model :simple_auto_scaling_policy
121
+ model :ssl_certificate
122
+ model :step_auto_scaling_policy
123
+ model :storage
124
+ model :storage_user
125
+ model :support_trial
126
+ model :target_auto_scaling_policy
127
+ model :task
128
+ model :token
129
+ model :untracked_address
130
+ model :untracked_server
131
+ model :user
132
+ model :volume
133
+
134
+ request :acknowledge_alert
135
+ request :apply_environment_updates
136
+ request :apply_server_updates
137
+ request :attach_address
138
+ request :authorized_channel
139
+ request :blueprint_environment
140
+ request :boot_environment
141
+ request :bootstrap_logical_database
142
+ request :cancel_account
143
+ request :change_environment_maintenance
144
+ request :create_account
145
+ request :create_addon
146
+ request :create_address
147
+ request :create_alert
148
+ request :create_application
149
+ request :create_application_archive
150
+ request :create_auto_scaling_alarm
151
+ request :create_auto_scaling_group
152
+ request :create_backup_file
153
+ request :create_database_server
154
+ request :create_database_service
155
+ request :create_database_service_snapshot
156
+ request :create_environment
157
+ request :create_environment_variable
158
+ request :create_firewall
159
+ request :create_firewall_rule
160
+ request :create_keypair
161
+ request :create_keypair_deployment
162
+ request :create_load_balancer
163
+ request :create_log
164
+ request :create_logical_database
165
+ request :create_membership
166
+ request :create_message
167
+ request :create_password_reset
168
+ request :create_provider
169
+ request :create_server
170
+ request :create_auto_scaling_policy
171
+ request :create_ssl_certificate
172
+ request :create_storage
173
+ request :create_storage_user
174
+ request :create_task
175
+ request :create_token
176
+ request :create_untracked_address
177
+ request :create_untracked_server
178
+ request :create_user
179
+ request :deploy_environment_application
180
+ request :deprovision_environment
181
+ request :destroy_addon
182
+ request :destroy_auto_scaling_alarm
183
+ request :destroy_auto_scaling_group
184
+ request :destroy_blueprint
185
+ request :destroy_database_server
186
+ request :destroy_database_server_snapshot
187
+ request :destroy_database_service
188
+ request :destroy_environment
189
+ request :destroy_firewall
190
+ request :destroy_firewall_rule
191
+ request :destroy_load_balancer
192
+ request :destroy_logical_database
193
+ request :destroy_provider
194
+ request :destroy_server
195
+ request :destroy_auto_scaling_policy
196
+ request :destroy_ssl_certificate
197
+ request :destroy_storage
198
+ request :destroy_storage_user
199
+ request :destroy_user
200
+ request :detach_address
201
+ request :disable_feature
202
+ request :discover_container_service_deployments
203
+ request :discover_database_server
204
+ request :discover_database_server_snapshots
205
+ request :discover_provider_location
206
+ request :discover_server
207
+ request :download_file
208
+ request :enable_feature
209
+ request :get_account
210
+ request :get_account_cancellation
211
+ request :get_account_referrals
212
+ request :get_account_trial
213
+ request :get_accounts
214
+ request :get_addon
215
+ request :get_addons
216
+ request :get_address
217
+ request :get_addresses
218
+ request :get_alert
219
+ request :get_alerting_environments
220
+ request :get_alerts
221
+ request :get_api_token
222
+ request :get_application
223
+ request :get_application_archive
224
+ request :get_application_archives
225
+ request :get_application_deployment
226
+ request :get_application_deployments
227
+ request :get_applications
228
+ request :get_auto_scaling_alarm
229
+ request :get_auto_scaling_alarms
230
+ request :get_auto_scaling_group
231
+ request :get_auto_scaling_groups
232
+ request :get_backup_file
233
+ request :get_backup_files
234
+ request :get_billing
235
+ request :get_blueprint
236
+ request :get_blueprints
237
+ request :get_component
238
+ request :get_components
239
+ request :get_contacts
240
+ request :get_costs
241
+ request :get_current_user
242
+ request :get_database_plan_usages
243
+ request :get_database_server
244
+ request :get_database_server_revisions
245
+ request :get_database_server_snapshot
246
+ request :get_database_server_snapshots
247
+ request :get_database_server_usages
248
+ request :get_database_servers
249
+ request :get_database_servers_firewalls
250
+ request :get_database_service
251
+ request :get_database_services
252
+ request :get_deployment
253
+ request :get_deployments
254
+ request :get_environment
255
+ request :get_environment_database_services
256
+ request :get_environment_logical_databases
257
+ request :get_environment_plan_usages
258
+ request :get_environment_variable
259
+ request :get_environment_variables
260
+ request :get_environments
261
+ request :get_feature
262
+ request :get_features
263
+ request :get_firewall
264
+ request :get_firewall_rule
265
+ request :get_firewall_rules
266
+ request :get_firewalls
267
+ request :get_gem
268
+ request :get_keypair
269
+ request :get_keypair_deployment
270
+ request :get_keypair_deployments
271
+ request :get_keypairs
272
+ request :get_legacy_alert
273
+ request :get_legacy_alerts
274
+ request :get_load_balancer
275
+ request :get_load_balancer_node
276
+ request :get_load_balancer_nodes
277
+ request :get_load_balancer_service
278
+ request :get_load_balancer_services
279
+ request :get_load_balancers
280
+ request :get_log
281
+ request :get_logical_database
282
+ request :get_logical_databases
283
+ request :get_logs
284
+ request :get_membership
285
+ request :get_memberships
286
+ request :get_message
287
+ request :get_messages
288
+ request :get_metadata
289
+ request :get_plan_usages
290
+ request :get_possible_provider_locations
291
+ request :get_provider
292
+ request :get_provider_location
293
+ request :get_provider_locations
294
+ request :get_providers
295
+ request :get_request
296
+ request :get_requests
297
+ request :get_server
298
+ request :get_server_event
299
+ request :get_server_events
300
+ request :get_server_usages
301
+ request :get_servers
302
+ request :get_auto_scaling_policy
303
+ request :get_auto_scaling_policies
304
+ request :get_ssl_certificate
305
+ request :get_ssl_certificates
306
+ request :get_storage
307
+ request :get_storage_user
308
+ request :get_storage_users
309
+ request :get_storages
310
+ request :get_support_trial
311
+ request :get_task
312
+ request :get_tasks
313
+ request :get_token
314
+ request :get_token_by_login
315
+ request :get_tokens
316
+ request :get_untracked_server
317
+ request :get_untracked_servers
318
+ request :get_user
319
+ request :get_users
320
+ request :get_volumes
321
+ request :reboot_server
322
+ request :reconcile_server
323
+ request :request_callback
324
+ request :reset_password
325
+ request :reset_server_state
326
+ request :restart_environment_app_servers
327
+ request :retrieve_docker_registry_credentials
328
+ request :run_cluster_application_action
329
+ request :run_environment_application_action
330
+ request :signup
331
+ request :start_server
332
+ request :stop_server
333
+ request :timeout_deployment
334
+ request :unassign_environment
335
+ request :update_addon
336
+ request :update_address
337
+ request :update_alert
338
+ request :update_application_archive
339
+ request :update_auto_scaling_alarm
340
+ request :update_auto_scaling_group
341
+ request :update_auto_scaling_policy
342
+ request :update_billing
343
+ request :update_blueprint
344
+ request :update_environment
345
+ request :update_environment_variable
346
+ request :update_membership
347
+ request :update_provider_location
348
+ request :update_server
349
+ request :update_ssl_certificate
350
+ request :update_untracked_server
351
+ request :upload_file
352
+ request :upload_recipes_for_environment
353
+
354
+ recognizes :token, :url, :logger, :adapter, :builder, :connection_options, :auth_id, :auth_key, :cache, :config_file
355
+
356
+ module Shared
357
+ attr_reader :authentication, :url, :cache
358
+
359
+ def setup(options)
360
+ token_dotfile = begin
361
+ if options[:config_file]
362
+ YAML.load_file(options[:config_file]) || {} # if the file is empty, yaml returns false
363
+ else
364
+ YAML.load_file(File.expand_path("~/.ey-core"))
365
+ end
366
+ rescue Errno::ENOENT
367
+ {}
368
+ end
369
+
370
+ resolved_url = options[:url] || ENV["CORE_URL"] || "https://api.engineyard.com/"
371
+ @url = File.join(resolved_url, "/") # trailing slash # consistency # hash tag you're welcome
372
+ @cache = if options[:cache] == true
373
+ Ey::Core::MemoryCache
374
+ else options[:cache]
375
+ end
376
+
377
+ @authentication = nil
378
+ @token = if ENV["CORE_TOKEN"]
379
+ ENV["CORE_TOKEN"]
380
+ elsif options.has_key?(:token) && options[:token].nil?
381
+ @authentication = :none
382
+ else
383
+ options[:token] || token_dotfile[@url] || token_dotfile[@url.gsub(/\/$/, "")] # matching with or without trailing slash
384
+ end
385
+
386
+ # For HMAC
387
+ @auth_id = options[:auth_id]
388
+ @auth_key = options[:auth_key]
389
+
390
+ unless @authentication == :none
391
+ if !@auth_id && !@auth_key && !@token
392
+ raise "Missing token. Use Ey::Core::Client.new(token: mytoken) or add \"'#{@url}': mytoken\" to your ~/.ey-core file (see: https://cloud.engineyard.com/cli)" unless @token
393
+ elsif options[:token] || (@token && !@auth_id) # token was explicitly provided
394
+ @authentication = :token
395
+ else
396
+ @authentication = :hmac
397
+ @token = nil
398
+ end
399
+ end
400
+
401
+ @logger = options[:logger] || Logger.new(nil)
402
+ end
403
+
404
+ # strong parameter emulation
405
+ def require_parameters(_params, *_requirements)
406
+ params = Cistern::Hash.stringify_keys(_params)
407
+ requirements = _requirements.map(&:to_s)
408
+
409
+ requirements.each do |requirement|
410
+ unless !params[requirement].nil?
411
+ if self.class == Ey::Core::Client::Real
412
+ raise ArgumentError, "param is missing or the value is empty: #{requirement}"
413
+ else
414
+ response(
415
+ :status => 400,
416
+ :body => "param is missing or the value is empty: #{requirement}")
417
+ end
418
+ end
419
+ end
420
+ values = params.values_at(*requirements)
421
+ values.size == 1 ? values.first : values
422
+ end
423
+
424
+ def require_arguments(_params, *_requirements)
425
+ params = Cistern::Hash.stringify_keys(_params)
426
+ requirements = _requirements.map(&:to_s)
427
+
428
+ values = requirements.map do |requirement|
429
+ if params[requirement].nil?
430
+ raise ArgumentError, "argument is missing or the value is empty: #{requirement}"
431
+ end
432
+ params[requirement]
433
+ end
434
+ [params, *values]
435
+ end
436
+
437
+ def require_argument(_params, *_requirements)
438
+ params = Cistern::Hash.stringify_keys(_params)
439
+ requirements = _requirements.map(&:to_s)
440
+
441
+ values = params.values_at(*requirements)
442
+ values.all?(&:nil?) && raise(ArgumentError.new("argument is missing or the value is empty: #{requirement}"))
443
+ values.size == 1 ? values.first : values
444
+ end
445
+
446
+ def require_argument!(_params, *_requirements)
447
+ params = Cistern::Hash.stringify_keys(_params)
448
+ requirements = _requirements.map(&:to_s)
449
+
450
+ values = params.values_at(*requirements)
451
+ values.all?(&:nil?) && raise(ArgumentError.new("argument is missing or the value is empty: #{requirement}"))
452
+ requirements.each { |r| params.delete(r) }
453
+ values.size == 1 ? values.first : values
454
+ end
455
+
456
+ def url_for(*args)
457
+ File.join(@url.to_s, *args.map(&:to_s))
458
+ end
459
+
460
+ # @deprecated will be removed in 3.x
461
+ # @see {#services}
462
+ def metadata
463
+ services.get("core")
464
+ end
465
+ end
466
+ end # Ey::Core::Client
467
+
468
+ require 'ey-core/client/real'
469
+ require 'ey-core/client/mock'