ey-core 3.4.5 → 3.6.0.autoscaling1

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