ey-core 3.4.5 → 3.5.0

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