ey-core 3.4.2 → 3.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +26 -23
  3. data/.ruby-gemset +1 -1
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +23 -22
  6. data/CHANGELOG.md +166 -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/console +4 -0
  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/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 +23 -23
  29. data/features/step_definitions/applications_steps.rb +46 -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/environments_steps.rb +37 -37
  33. data/features/step_definitions/version_steps.rb +3 -3
  34. data/features/support/account_helpers.rb +89 -89
  35. data/features/support/app_helpers.rb +19 -19
  36. data/features/support/aruba.rb +1 -1
  37. data/features/support/boilerplate.rb +1 -1
  38. data/features/support/client_helpers.rb +36 -36
  39. data/features/support/config_file_helpers.rb +42 -42
  40. data/features/support/core.rb +19 -19
  41. data/features/support/deployment_helpers.rb +19 -19
  42. data/features/support/env.rb +40 -40
  43. data/features/support/environment_helpers.rb +23 -23
  44. data/features/support/fake_kernel.rb +23 -23
  45. data/features/support/io.rb +5 -5
  46. data/features/support/mock_api.rb +21 -21
  47. data/features/support/output_helpers.rb +7 -7
  48. data/features/support/resource_helpers.rb +189 -189
  49. data/features/support/server_helpers.rb +27 -27
  50. data/features/version.feature +8 -8
  51. data/features/whoami.feature +14 -14
  52. data/lib/ey-core/associations.rb +155 -155
  53. data/lib/ey-core/cli/accounts.rb +17 -17
  54. data/lib/ey-core/cli/applications.rb +36 -36
  55. data/lib/ey-core/cli/console.rb +28 -28
  56. data/lib/ey-core/cli/current_user.rb +16 -16
  57. data/lib/ey-core/cli/deploy.rb +123 -123
  58. data/lib/ey-core/cli/environments.rb +39 -39
  59. data/lib/ey-core/cli/errors.rb +11 -11
  60. data/lib/ey-core/cli/help.rb +30 -30
  61. data/lib/ey-core/cli/helpers/archive.rb +70 -70
  62. data/lib/ey-core/cli/helpers/chef.rb +51 -51
  63. data/lib/ey-core/cli/helpers/core.rb +196 -196
  64. data/lib/ey-core/cli/helpers/deprecated.rb +39 -39
  65. data/lib/ey-core/cli/helpers/log_streaming.rb +41 -41
  66. data/lib/ey-core/cli/helpers/server_sieve.rb +76 -76
  67. data/lib/ey-core/cli/helpers/stream_printer.rb +42 -42
  68. data/lib/ey-core/cli/init.rb +14 -14
  69. data/lib/ey-core/cli/login.rb +38 -38
  70. data/lib/ey-core/cli/logout.rb +22 -22
  71. data/lib/ey-core/cli/logs.rb +70 -70
  72. data/lib/ey-core/cli/main.rb +65 -65
  73. data/lib/ey-core/cli/recipes/apply.rb +65 -65
  74. data/lib/ey-core/cli/recipes/download.rb +52 -52
  75. data/lib/ey-core/cli/recipes/main.rb +21 -21
  76. data/lib/ey-core/cli/recipes/upload.rb +78 -78
  77. data/lib/ey-core/cli/recipes.rb +10 -10
  78. data/lib/ey-core/cli/scp.rb +14 -14
  79. data/lib/ey-core/cli/servers.rb +41 -41
  80. data/lib/ey-core/cli/ssh.rb +150 -150
  81. data/lib/ey-core/cli/status.rb +60 -60
  82. data/lib/ey-core/cli/subcommand.rb +53 -53
  83. data/lib/ey-core/cli/timeout_deploy.rb +58 -58
  84. data/lib/ey-core/cli/version.rb +16 -16
  85. data/lib/ey-core/cli/web/disable.rb +49 -49
  86. data/lib/ey-core/cli/web/enable.rb +46 -46
  87. data/lib/ey-core/cli/web/main.rb +21 -21
  88. data/lib/ey-core/cli/web/restart.rb +42 -42
  89. data/lib/ey-core/cli/web.rb +10 -10
  90. data/lib/ey-core/cli/whoami.rb +12 -12
  91. data/lib/ey-core/cli.rb +8 -8
  92. data/lib/ey-core/client/mock.rb +302 -301
  93. data/lib/ey-core/client/real.rb +93 -93
  94. data/lib/ey-core/client.rb +442 -434
  95. data/lib/ey-core/collection.rb +131 -131
  96. data/lib/ey-core/collections/account_cancellations.rb +6 -6
  97. data/lib/ey-core/collections/account_referrals.rb +10 -10
  98. data/lib/ey-core/collections/accounts.rb +8 -8
  99. data/lib/ey-core/collections/addons.rb +16 -16
  100. data/lib/ey-core/collections/addresses.rb +9 -9
  101. data/lib/ey-core/collections/alerts.rb +9 -9
  102. data/lib/ey-core/collections/application_archives.rb +9 -9
  103. data/lib/ey-core/collections/application_deployments.rb +9 -9
  104. data/lib/ey-core/collections/applications.rb +9 -9
  105. data/lib/ey-core/collections/auto_scaling_groups.rb +8 -0
  106. data/lib/ey-core/collections/backup_files.rb +9 -9
  107. data/lib/ey-core/collections/blueprints.rb +9 -9
  108. data/lib/ey-core/collections/components.rb +9 -9
  109. data/lib/ey-core/collections/contacts.rb +9 -9
  110. data/lib/ey-core/collections/costs.rb +8 -8
  111. data/lib/ey-core/collections/database_plan_usages.rb +7 -7
  112. data/lib/ey-core/collections/database_server_revisions.rb +7 -7
  113. data/lib/ey-core/collections/database_server_snapshots.rb +17 -17
  114. data/lib/ey-core/collections/database_server_usages.rb +7 -7
  115. data/lib/ey-core/collections/database_servers.rb +9 -9
  116. data/lib/ey-core/collections/database_services.rb +9 -9
  117. data/lib/ey-core/collections/deployments.rb +8 -8
  118. data/lib/ey-core/collections/environment_plan_usages.rb +7 -7
  119. data/lib/ey-core/collections/environments.rb +15 -15
  120. data/lib/ey-core/collections/features.rb +9 -9
  121. data/lib/ey-core/collections/firewall_rules.rb +9 -9
  122. data/lib/ey-core/collections/firewalls.rb +9 -9
  123. data/lib/ey-core/collections/gems.rb +6 -6
  124. data/lib/ey-core/collections/keypair_deployments.rb +9 -9
  125. data/lib/ey-core/collections/keypairs.rb +9 -9
  126. data/lib/ey-core/collections/legacy_alerts.rb +9 -9
  127. data/lib/ey-core/collections/load_balancer_nodes.rb +9 -9
  128. data/lib/ey-core/collections/load_balancer_services.rb +9 -9
  129. data/lib/ey-core/collections/load_balancers.rb +16 -16
  130. data/lib/ey-core/collections/logical_databases.rb +16 -16
  131. data/lib/ey-core/collections/logs.rb +9 -9
  132. data/lib/ey-core/collections/memberships.rb +9 -9
  133. data/lib/ey-core/collections/messages.rb +9 -9
  134. data/lib/ey-core/collections/plan_usages.rb +7 -7
  135. data/lib/ey-core/collections/provider_locations.rb +13 -13
  136. data/lib/ey-core/collections/providers.rb +15 -15
  137. data/lib/ey-core/collections/requests.rb +10 -10
  138. data/lib/ey-core/collections/server_events.rb +9 -9
  139. data/lib/ey-core/collections/server_usages.rb +7 -7
  140. data/lib/ey-core/collections/servers.rb +13 -9
  141. data/lib/ey-core/collections/services.rb +14 -14
  142. data/lib/ey-core/collections/ssl_certificates.rb +9 -9
  143. data/lib/ey-core/collections/storage_users.rb +10 -10
  144. data/lib/ey-core/collections/storages.rb +9 -9
  145. data/lib/ey-core/collections/tasks.rb +9 -9
  146. data/lib/ey-core/collections/tokens.rb +9 -9
  147. data/lib/ey-core/collections/untracked_addresses.rb +4 -4
  148. data/lib/ey-core/collections/untracked_servers.rb +9 -9
  149. data/lib/ey-core/collections/users.rb +12 -12
  150. data/lib/ey-core/collections/volumes.rb +9 -9
  151. data/lib/ey-core/logger.rb +31 -31
  152. data/lib/ey-core/memory_cache.rb +17 -17
  153. data/lib/ey-core/mock/helper.rb +104 -104
  154. data/lib/ey-core/mock/params.rb +31 -31
  155. data/lib/ey-core/mock/resources.rb +92 -92
  156. data/lib/ey-core/mock/searching.rb +115 -115
  157. data/lib/ey-core/mock/util.rb +23 -23
  158. data/lib/ey-core/model.rb +44 -44
  159. data/lib/ey-core/models/account.rb +70 -70
  160. data/lib/ey-core/models/account_cancellation.rb +6 -6
  161. data/lib/ey-core/models/account_referral.rb +8 -8
  162. data/lib/ey-core/models/account_trial.rb +15 -15
  163. data/lib/ey-core/models/addon.rb +37 -37
  164. data/lib/ey-core/models/address.rb +57 -57
  165. data/lib/ey-core/models/alert.rb +100 -99
  166. data/lib/ey-core/models/application.rb +32 -32
  167. data/lib/ey-core/models/application_archive.rb +67 -67
  168. data/lib/ey-core/models/application_deployment.rb +18 -18
  169. data/lib/ey-core/models/auto_scaling_group.rb +49 -0
  170. data/lib/ey-core/models/backup_file.rb +52 -52
  171. data/lib/ey-core/models/billing.rb +27 -27
  172. data/lib/ey-core/models/blueprint.rb +30 -30
  173. data/lib/ey-core/models/component.rb +11 -11
  174. data/lib/ey-core/models/contact.rb +14 -14
  175. data/lib/ey-core/models/cost.rb +16 -16
  176. data/lib/ey-core/models/database_plan_usage.rb +10 -10
  177. data/lib/ey-core/models/database_server.rb +56 -56
  178. data/lib/ey-core/models/database_server_revision.rb +10 -10
  179. data/lib/ey-core/models/database_server_snapshot.rb +43 -43
  180. data/lib/ey-core/models/database_server_usage.rb +15 -15
  181. data/lib/ey-core/models/database_service.rb +52 -52
  182. data/lib/ey-core/models/deployment.rb +30 -30
  183. data/lib/ey-core/models/environment.rb +242 -236
  184. data/lib/ey-core/models/environment_plan_usage.rb +10 -10
  185. data/lib/ey-core/models/feature.rb +33 -33
  186. data/lib/ey-core/models/firewall.rb +46 -46
  187. data/lib/ey-core/models/firewall_rule.rb +41 -41
  188. data/lib/ey-core/models/gem.rb +5 -5
  189. data/lib/ey-core/models/keypair.rb +38 -38
  190. data/lib/ey-core/models/keypair_deployment.rb +26 -26
  191. data/lib/ey-core/models/legacy_alert.rb +12 -12
  192. data/lib/ey-core/models/load_balancer.rb +43 -43
  193. data/lib/ey-core/models/load_balancer_node.rb +17 -17
  194. data/lib/ey-core/models/load_balancer_service.rb +22 -22
  195. data/lib/ey-core/models/log.rb +44 -44
  196. data/lib/ey-core/models/logical_database.rb +40 -40
  197. data/lib/ey-core/models/membership.rb +49 -49
  198. data/lib/ey-core/models/message.rb +27 -27
  199. data/lib/ey-core/models/plan_usage.rb +14 -14
  200. data/lib/ey-core/models/provider.rb +59 -59
  201. data/lib/ey-core/models/provider_location.rb +24 -24
  202. data/lib/ey-core/models/request.rb +105 -103
  203. data/lib/ey-core/models/server.rb +151 -149
  204. data/lib/ey-core/models/server_event.rb +11 -11
  205. data/lib/ey-core/models/server_usage.rb +15 -15
  206. data/lib/ey-core/models/service.rb +10 -10
  207. data/lib/ey-core/models/ssl_certificate.rb +44 -44
  208. data/lib/ey-core/models/storage.rb +38 -38
  209. data/lib/ey-core/models/storage_user.rb +44 -44
  210. data/lib/ey-core/models/support_trial.rb +10 -10
  211. data/lib/ey-core/models/task.rb +35 -35
  212. data/lib/ey-core/models/token.rb +24 -24
  213. data/lib/ey-core/models/untracked_address.rb +24 -24
  214. data/lib/ey-core/models/untracked_server.rb +45 -45
  215. data/lib/ey-core/models/user.rb +39 -39
  216. data/lib/ey-core/models/volume.rb +20 -20
  217. data/lib/ey-core/request.rb +21 -21
  218. data/lib/ey-core/request_failure.rb +11 -11
  219. data/lib/ey-core/requests/acknowledge_alert.rb +29 -29
  220. data/lib/ey-core/requests/apply_environment_updates.rb +54 -54
  221. data/lib/ey-core/requests/apply_server_updates.rb +52 -52
  222. data/lib/ey-core/requests/attach_address.rb +53 -53
  223. data/lib/ey-core/requests/authorized_channel.rb +22 -22
  224. data/lib/ey-core/requests/blueprint_environment.rb +72 -72
  225. data/lib/ey-core/requests/boot_environment.rb +187 -187
  226. data/lib/ey-core/requests/bootstrap_logical_database.rb +80 -80
  227. data/lib/ey-core/requests/cancel_account.rb +33 -33
  228. data/lib/ey-core/requests/change_environment_maintenance.rb +38 -38
  229. data/lib/ey-core/requests/create_account.rb +33 -33
  230. data/lib/ey-core/requests/create_addon.rb +35 -35
  231. data/lib/ey-core/requests/create_address.rb +53 -53
  232. data/lib/ey-core/requests/create_alert.rb +63 -63
  233. data/lib/ey-core/requests/create_application.rb +72 -72
  234. data/lib/ey-core/requests/create_application_archive.rb +44 -44
  235. data/lib/ey-core/requests/create_auto_scaling_group.rb +62 -0
  236. data/lib/ey-core/requests/create_backup_file.rb +52 -52
  237. data/lib/ey-core/requests/create_database_server.rb +72 -72
  238. data/lib/ey-core/requests/create_database_service.rb +57 -57
  239. data/lib/ey-core/requests/create_database_service_snapshot.rb +69 -69
  240. data/lib/ey-core/requests/create_environment.rb +76 -75
  241. data/lib/ey-core/requests/create_firewall.rb +62 -62
  242. data/lib/ey-core/requests/create_firewall_rule.rb +60 -60
  243. data/lib/ey-core/requests/create_keypair.rb +42 -42
  244. data/lib/ey-core/requests/create_keypair_deployment.rb +36 -36
  245. data/lib/ey-core/requests/create_load_balancer.rb +62 -62
  246. data/lib/ey-core/requests/create_log.rb +53 -53
  247. data/lib/ey-core/requests/create_logical_database.rb +56 -56
  248. data/lib/ey-core/requests/create_membership.rb +47 -47
  249. data/lib/ey-core/requests/create_message.rb +35 -35
  250. data/lib/ey-core/requests/create_password_reset.rb +38 -38
  251. data/lib/ey-core/requests/create_provider.rb +90 -90
  252. data/lib/ey-core/requests/create_server.rb +121 -121
  253. data/lib/ey-core/requests/create_ssl_certificate.rb +83 -83
  254. data/lib/ey-core/requests/create_storage.rb +64 -64
  255. data/lib/ey-core/requests/create_storage_user.rb +64 -64
  256. data/lib/ey-core/requests/create_task.rb +55 -55
  257. data/lib/ey-core/requests/create_token.rb +24 -24
  258. data/lib/ey-core/requests/create_untracked_address.rb +50 -50
  259. data/lib/ey-core/requests/create_untracked_server.rb +39 -39
  260. data/lib/ey-core/requests/create_user.rb +52 -52
  261. data/lib/ey-core/requests/deploy_environment_application.rb +60 -60
  262. data/lib/ey-core/requests/deprovision_environment.rb +17 -17
  263. data/lib/ey-core/requests/destroy_addon.rb +24 -24
  264. data/lib/ey-core/requests/destroy_auto_scaling_group.rb +44 -0
  265. data/lib/ey-core/requests/destroy_blueprint.rb +22 -22
  266. data/lib/ey-core/requests/destroy_database_server.rb +41 -41
  267. data/lib/ey-core/requests/destroy_database_server_snapshot.rb +42 -42
  268. data/lib/ey-core/requests/destroy_database_service.rb +57 -57
  269. data/lib/ey-core/requests/destroy_environment.rb +43 -43
  270. data/lib/ey-core/requests/destroy_firewall.rb +41 -41
  271. data/lib/ey-core/requests/destroy_firewall_rule.rb +41 -41
  272. data/lib/ey-core/requests/destroy_load_balancer.rb +30 -30
  273. data/lib/ey-core/requests/destroy_logical_database.rb +41 -41
  274. data/lib/ey-core/requests/destroy_provider.rb +34 -34
  275. data/lib/ey-core/requests/destroy_server.rb +48 -48
  276. data/lib/ey-core/requests/destroy_ssl_certificate.rb +28 -28
  277. data/lib/ey-core/requests/destroy_storage.rb +33 -33
  278. data/lib/ey-core/requests/destroy_storage_user.rb +38 -38
  279. data/lib/ey-core/requests/destroy_user.rb +29 -29
  280. data/lib/ey-core/requests/detach_address.rb +48 -48
  281. data/lib/ey-core/requests/disable_feature.rb +30 -30
  282. data/lib/ey-core/requests/discover_database_server.rb +66 -66
  283. data/lib/ey-core/requests/discover_database_server_snapshots.rb +69 -69
  284. data/lib/ey-core/requests/discover_provider_location.rb +57 -57
  285. data/lib/ey-core/requests/discover_server.rb +60 -0
  286. data/lib/ey-core/requests/download_file.rb +25 -25
  287. data/lib/ey-core/requests/enable_feature.rb +35 -35
  288. data/lib/ey-core/requests/get_account.rb +29 -29
  289. data/lib/ey-core/requests/get_account_cancellation.rb +21 -21
  290. data/lib/ey-core/requests/get_account_referrals.rb +28 -28
  291. data/lib/ey-core/requests/get_account_trial.rb +32 -32
  292. data/lib/ey-core/requests/get_accounts.rb +42 -42
  293. data/lib/ey-core/requests/get_addon.rb +25 -25
  294. data/lib/ey-core/requests/get_addons.rb +24 -24
  295. data/lib/ey-core/requests/get_address.rb +25 -25
  296. data/lib/ey-core/requests/get_addresses.rb +27 -27
  297. data/lib/ey-core/requests/get_alert.rb +21 -21
  298. data/lib/ey-core/requests/get_alerting_environments.rb +41 -41
  299. data/lib/ey-core/requests/get_alerts.rb +44 -44
  300. data/lib/ey-core/requests/get_api_token.rb +19 -19
  301. data/lib/ey-core/requests/get_application.rb +21 -21
  302. data/lib/ey-core/requests/get_application_archive.rb +32 -32
  303. data/lib/ey-core/requests/get_application_archives.rb +29 -29
  304. data/lib/ey-core/requests/get_application_deployment.rb +21 -21
  305. data/lib/ey-core/requests/get_application_deployments.rb +28 -28
  306. data/lib/ey-core/requests/get_applications.rb +28 -28
  307. data/lib/ey-core/requests/get_auto_scaling_group.rb +21 -0
  308. data/lib/ey-core/requests/get_auto_scaling_groups.rb +29 -0
  309. data/lib/ey-core/requests/get_backup_file.rb +21 -21
  310. data/lib/ey-core/requests/get_backup_files.rb +28 -28
  311. data/lib/ey-core/requests/get_billing.rb +24 -24
  312. data/lib/ey-core/requests/get_blueprint.rb +21 -21
  313. data/lib/ey-core/requests/get_blueprints.rb +29 -29
  314. data/lib/ey-core/requests/get_component.rb +21 -21
  315. data/lib/ey-core/requests/get_components.rb +29 -29
  316. data/lib/ey-core/requests/get_contacts.rb +34 -34
  317. data/lib/ey-core/requests/get_costs.rb +25 -25
  318. data/lib/ey-core/requests/get_current_user.rb +19 -19
  319. data/lib/ey-core/requests/get_database_plan_usages.rb +24 -24
  320. data/lib/ey-core/requests/get_database_server.rb +21 -21
  321. data/lib/ey-core/requests/get_database_server_revisions.rb +27 -27
  322. data/lib/ey-core/requests/get_database_server_snapshot.rb +20 -20
  323. data/lib/ey-core/requests/get_database_server_snapshots.rb +39 -39
  324. data/lib/ey-core/requests/get_database_server_usages.rb +24 -24
  325. data/lib/ey-core/requests/get_database_servers.rb +30 -30
  326. data/lib/ey-core/requests/get_database_servers_firewalls.rb +30 -30
  327. data/lib/ey-core/requests/get_database_service.rb +20 -20
  328. data/lib/ey-core/requests/get_database_services.rb +55 -55
  329. data/lib/ey-core/requests/get_deployment.rb +19 -19
  330. data/lib/ey-core/requests/get_deployments.rb +29 -29
  331. data/lib/ey-core/requests/get_environment.rb +21 -21
  332. data/lib/ey-core/requests/get_environment_database_services.rb +21 -21
  333. data/lib/ey-core/requests/get_environment_logical_databases.rb +20 -20
  334. data/lib/ey-core/requests/get_environment_plan_usages.rb +24 -24
  335. data/lib/ey-core/requests/get_environments.rb +29 -29
  336. data/lib/ey-core/requests/get_feature.rb +21 -21
  337. data/lib/ey-core/requests/get_features.rb +28 -28
  338. data/lib/ey-core/requests/get_firewall.rb +21 -21
  339. data/lib/ey-core/requests/get_firewall_rule.rb +21 -21
  340. data/lib/ey-core/requests/get_firewall_rules.rb +29 -29
  341. data/lib/ey-core/requests/get_firewalls.rb +45 -45
  342. data/lib/ey-core/requests/get_gem.rb +24 -24
  343. data/lib/ey-core/requests/get_keypair.rb +21 -21
  344. data/lib/ey-core/requests/get_keypair_deployment.rb +21 -21
  345. data/lib/ey-core/requests/get_keypair_deployments.rb +29 -29
  346. data/lib/ey-core/requests/get_keypairs.rb +34 -34
  347. data/lib/ey-core/requests/get_legacy_alert.rb +21 -21
  348. data/lib/ey-core/requests/get_legacy_alerts.rb +29 -29
  349. data/lib/ey-core/requests/get_load_balancer.rb +21 -21
  350. data/lib/ey-core/requests/get_load_balancer_node.rb +21 -21
  351. data/lib/ey-core/requests/get_load_balancer_nodes.rb +30 -30
  352. data/lib/ey-core/requests/get_load_balancer_service.rb +21 -21
  353. data/lib/ey-core/requests/get_load_balancer_services.rb +30 -30
  354. data/lib/ey-core/requests/get_load_balancers.rb +29 -29
  355. data/lib/ey-core/requests/get_log.rb +21 -21
  356. data/lib/ey-core/requests/get_logical_database.rb +23 -23
  357. data/lib/ey-core/requests/get_logical_databases.rb +36 -36
  358. data/lib/ey-core/requests/get_logs.rb +37 -37
  359. data/lib/ey-core/requests/get_membership.rb +21 -21
  360. data/lib/ey-core/requests/get_memberships.rb +29 -29
  361. data/lib/ey-core/requests/get_message.rb +28 -28
  362. data/lib/ey-core/requests/get_messages.rb +27 -27
  363. data/lib/ey-core/requests/get_metadata.rb +22 -22
  364. data/lib/ey-core/requests/get_operational_contact.rb +21 -21
  365. data/lib/ey-core/requests/get_operational_contacts.rb +20 -20
  366. data/lib/ey-core/requests/get_plan_usages.rb +24 -24
  367. data/lib/ey-core/requests/get_possible_provider_locations.rb +19 -19
  368. data/lib/ey-core/requests/get_provider.rb +21 -21
  369. data/lib/ey-core/requests/get_provider_location.rb +29 -29
  370. data/lib/ey-core/requests/get_provider_locations.rb +28 -28
  371. data/lib/ey-core/requests/get_providers.rb +28 -28
  372. data/lib/ey-core/requests/get_request.rb +71 -71
  373. data/lib/ey-core/requests/get_requests.rb +29 -29
  374. data/lib/ey-core/requests/get_server.rb +34 -34
  375. data/lib/ey-core/requests/get_server_event.rb +20 -20
  376. data/lib/ey-core/requests/get_server_events.rb +28 -28
  377. data/lib/ey-core/requests/get_server_usages.rb +24 -24
  378. data/lib/ey-core/requests/get_servers.rb +25 -25
  379. data/lib/ey-core/requests/get_ssl_certificate.rb +23 -23
  380. data/lib/ey-core/requests/get_ssl_certificates.rb +28 -28
  381. data/lib/ey-core/requests/get_storage.rb +21 -21
  382. data/lib/ey-core/requests/get_storage_user.rb +21 -21
  383. data/lib/ey-core/requests/get_storage_users.rb +28 -28
  384. data/lib/ey-core/requests/get_storages.rb +28 -28
  385. data/lib/ey-core/requests/get_support_trial.rb +51 -51
  386. data/lib/ey-core/requests/get_task.rb +21 -21
  387. data/lib/ey-core/requests/get_tasks.rb +28 -28
  388. data/lib/ey-core/requests/get_token.rb +21 -21
  389. data/lib/ey-core/requests/get_token_by_login.rb +30 -30
  390. data/lib/ey-core/requests/get_tokens.rb +32 -32
  391. data/lib/ey-core/requests/get_untracked_server.rb +18 -18
  392. data/lib/ey-core/requests/get_untracked_servers.rb +24 -24
  393. data/lib/ey-core/requests/get_user.rb +21 -21
  394. data/lib/ey-core/requests/get_users.rb +42 -42
  395. data/lib/ey-core/requests/get_volume.rb +21 -21
  396. data/lib/ey-core/requests/get_volumes.rb +28 -28
  397. data/lib/ey-core/requests/reboot_server.rb +39 -39
  398. data/lib/ey-core/requests/reconcile_server.rb +39 -39
  399. data/lib/ey-core/requests/request_callback.rb +26 -26
  400. data/lib/ey-core/requests/reset_password.rb +31 -31
  401. data/lib/ey-core/requests/reset_server_state.rb +32 -32
  402. data/lib/ey-core/requests/restart_environment_app_servers.rb +38 -38
  403. data/lib/ey-core/requests/run_cluster_application_action.rb +28 -28
  404. data/lib/ey-core/requests/run_environment_application_action.rb +29 -29
  405. data/lib/ey-core/requests/signup.rb +56 -56
  406. data/lib/ey-core/requests/start_server.rb +39 -39
  407. data/lib/ey-core/requests/stop_server.rb +39 -39
  408. data/lib/ey-core/requests/timeout_deployment.rb +27 -27
  409. data/lib/ey-core/requests/unassign_environment.rb +31 -31
  410. data/lib/ey-core/requests/update_addon.rb +28 -28
  411. data/lib/ey-core/requests/update_address.rb +29 -29
  412. data/lib/ey-core/requests/update_alert.rb +32 -32
  413. data/lib/ey-core/requests/update_application_archive.rb +23 -23
  414. data/lib/ey-core/requests/update_auto_scaling_group.rb +45 -0
  415. data/lib/ey-core/requests/update_billing.rb +26 -26
  416. data/lib/ey-core/requests/update_blueprint.rb +29 -29
  417. data/lib/ey-core/requests/update_connector.rb +32 -32
  418. data/lib/ey-core/requests/update_environment.rb +17 -17
  419. data/lib/ey-core/requests/update_membership.rb +29 -29
  420. data/lib/ey-core/requests/update_provider_location.rb +29 -29
  421. data/lib/ey-core/requests/update_server.rb +29 -29
  422. data/lib/ey-core/requests/update_ssl_certificate.rb +25 -25
  423. data/lib/ey-core/requests/update_untracked_server.rb +24 -24
  424. data/lib/ey-core/requests/upload_file.rb +44 -44
  425. data/lib/ey-core/requests/upload_recipes_for_environment.rb +28 -28
  426. data/lib/ey-core/response.rb +59 -59
  427. data/lib/ey-core/response_cache.rb +29 -29
  428. data/lib/ey-core/subscribable.rb +60 -60
  429. data/lib/ey-core/test_helpers/account_helpers.rb +73 -73
  430. data/lib/ey-core/test_helpers/alert_helpers.rb +16 -16
  431. data/lib/ey-core/test_helpers/client_helpers.rb +40 -40
  432. data/lib/ey-core/test_helpers/cucumber.rb +3 -3
  433. data/lib/ey-core/test_helpers/resource_helpers.rb +196 -196
  434. data/lib/ey-core/test_helpers/rspec.rb +5 -5
  435. data/lib/ey-core/test_helpers.rb +15 -15
  436. data/lib/ey-core/token_authentication.rb +13 -13
  437. data/lib/ey-core/version.rb +5 -5
  438. data/lib/ey-core.rb +59 -59
  439. data/spec/account_spec.rb +65 -65
  440. data/spec/account_trial_spec.rb +17 -17
  441. data/spec/accounts_referrals_spec.rb +20 -20
  442. data/spec/accounts_spec.rb +113 -113
  443. data/spec/addons_and_vars_spec.rb +62 -62
  444. data/spec/addresses_spec.rb +56 -56
  445. data/spec/alerts_spec.rb +155 -155
  446. data/spec/application_archives_spec.rb +39 -39
  447. data/spec/applications_spec.rb +65 -65
  448. data/spec/auto_scaling_groups_spec.rb +28 -0
  449. data/spec/billing_spec.rb +31 -31
  450. data/spec/blueprints_spec.rb +47 -47
  451. data/spec/client_spec.rb +16 -16
  452. data/spec/collection_spec.rb +43 -43
  453. data/spec/costs_spec.rb +22 -22
  454. data/spec/database_plan_usage_spec.rb +39 -39
  455. data/spec/database_server_snapshots_spec.rb +41 -41
  456. data/spec/database_server_usage_spec.rb +49 -49
  457. data/spec/database_servers_spec.rb +61 -61
  458. data/spec/database_services_spec.rb +76 -76
  459. data/spec/deployments_spec.rb +24 -24
  460. data/spec/environment_plan_usage_spec.rb +38 -38
  461. data/spec/environments_spec.rb +212 -194
  462. data/spec/ey-core/cli/accounts_spec.rb +20 -20
  463. data/spec/ey-core/cli/helpers/server_sieve_spec.rb +226 -226
  464. data/spec/ey-core/cli/recipes/apply_spec.rb +34 -34
  465. data/spec/ey-core/cli/recipes/download_spec.rb +93 -93
  466. data/spec/ey-core/cli/recipes/upload_spec.rb +80 -80
  467. data/spec/features_spec.rb +79 -79
  468. data/spec/firewalls_spec.rb +84 -84
  469. data/spec/gems_spec.rb +11 -11
  470. data/spec/keypair_deployments_spec.rb +33 -33
  471. data/spec/keypairs_spec.rb +51 -51
  472. data/spec/legacy_alerts_spec.rb +44 -44
  473. data/spec/load_balancers_spec.rb +31 -31
  474. data/spec/logical_databases_spec.rb +38 -38
  475. data/spec/logs_spec.rb +44 -44
  476. data/spec/memberships_spec.rb +73 -73
  477. data/spec/messages_spec.rb +27 -27
  478. data/spec/metadata_spec.rb +11 -11
  479. data/spec/plan_usage_spec.rb +65 -65
  480. data/spec/provider_locations_spec.rb +85 -85
  481. data/spec/providers_spec.rb +105 -105
  482. data/spec/requests/upload_file_spec.rb +25 -25
  483. data/spec/requests_spec.rb +23 -23
  484. data/spec/reset_password_spec.rb +22 -22
  485. data/spec/server_events_spec.rb +31 -31
  486. data/spec/server_usage_spec.rb +70 -70
  487. data/spec/servers_spec.rb +202 -194
  488. data/spec/services_spec.rb +9 -9
  489. data/spec/signups_spec.rb +45 -45
  490. data/spec/spec_helper.rb +20 -20
  491. data/spec/ssl_certificates_spec.rb +94 -94
  492. data/spec/storages_spec.rb +57 -57
  493. data/spec/support/cli_helpers.rb +47 -47
  494. data/spec/support/core.rb +23 -23
  495. data/spec/support/coverage.rb +43 -43
  496. data/spec/support/fake_kernel.rb +21 -21
  497. data/spec/support/helpers.rb +1 -1
  498. data/spec/support/timecop.rb +8 -8
  499. data/spec/support_trial_spec.rb +33 -33
  500. data/spec/tokens_spec.rb +59 -59
  501. data/spec/untracked_servers_spec.rb +59 -59
  502. data/spec/users_spec.rb +108 -108
  503. metadata +16 -5
@@ -1,123 +1,123 @@
1
- require 'ey-core/cli/subcommand'
2
- require 'ey-core/cli/helpers/log_streaming'
3
-
4
- module Ey
5
- module Core
6
- module Cli
7
- class Deploy < Subcommand
8
- include Ey::Core::Cli::Helpers::LogStreaming
9
- title "deploy"
10
- summary "Deploy your application"
11
-
12
- option :environment,
13
- short: "e",
14
- long: "environment",
15
- description: "Name or id of the environment to deploy to.",
16
- argument: "Environment"
17
-
18
- option :account,
19
- short: 'c',
20
- long: 'account',
21
- description: 'Name or ID of the account that the environment resides in. If no account is specified, the app will deploy to the first environment that meets the criteria, in the accounts you have access to.',
22
- argument: 'Account name or id'
23
-
24
- option :ref,
25
- short: "r",
26
- long: "ref",
27
- description: "A git reference to deploy.",
28
- argument: "ref"
29
-
30
- option :migrate,
31
- short: "m",
32
- long: "migrate",
33
- description: "The migration command to run. This option has a 50 character limit.",
34
- argument: "migrate"
35
-
36
- option :app,
37
- short: "a",
38
- long: "app",
39
- description: "Application name or ID to deploy. If :account is not specified, this will be the first app that matches the criteria in the accounts you have access to.",
40
- argument: "app"
41
-
42
- switch :no_wait,
43
- long: "no-wait",
44
- description: "Don't wait for deploy to finish, exit after deploy is started"
45
-
46
- switch :verbose,
47
- short: "v",
48
- long: "verbose",
49
- description: "Deploy with verbose output"
50
-
51
- switch :verbose,
52
- short: "v",
53
- long: "verbose",
54
- description: "Stream deploy output to this console. Alias to stream for backwards compatibility."
55
-
56
- switch :no_migrate,
57
- long: "no-migrate",
58
- description: "Skip migration."
59
-
60
- def handle
61
- operator, environment = core_operator_and_environment_for(self.options)
62
- if operator.is_a?(Ey::Core::Client::Account)
63
- abort <<-EOF
64
- Found account #{operator.name} but requested account #{option(:account)}.
65
- Use the ID of the account instead of the name.
66
- This can be retrieved by running "ey accounts".
67
- EOF
68
- .red unless operator.name == option(:account) || operator.id == option(:account)
69
- end
70
-
71
- unless environment
72
- abort "Unable to locate environment #{option[:environment]} in #{operator.name}".red
73
- end
74
-
75
- unless option(:account)
76
- self.options.merge!(environment: environment)
77
- end
78
-
79
- app = core_application_for(environment, self.options)
80
-
81
- deploy_options = {verbose: options[:verbose], cli_args: ARGV}
82
- latest_deploy = nil
83
- if options[:ref]
84
- deploy_options.merge!(ref: option(:ref))
85
- else
86
- puts "--ref not provided, checking latest deploy...".yellow
87
- latest_deploy ||= environment.latest_deploy(app)
88
- if latest_deploy && latest_deploy.ref
89
- deploy_options[:ref] = latest_deploy.ref
90
- else
91
- raise "--ref is required (HEAD is the typical choice)"
92
- end
93
- end
94
- if (switch_active?(:migrate) || switch_active?(:no_migrate))
95
- deploy_options.merge!(migrate_command: option(:migrate)) if switch_active?(:migrate)
96
- deploy_options.merge!(migrate_command: '') if switch_active?(:no_migrate)
97
- else
98
- puts "missing migrate option (--migrate or --no-migrate), checking latest deploy...".yellow
99
- latest_deploy ||= environment.latest_deploy(app)
100
- if latest_deploy
101
- deploy_options.merge!(migrate_command: (latest_deploy.migrate && latest_deploy.migrate_command) || '')
102
- else
103
- raise "either --migrate or --no-migrate needs to be specified"
104
- end
105
- end
106
- request = environment.deploy(app, deploy_options)
107
-
108
- puts <<-EOF
109
- Deploy started to environment: #{environment.name} with application: #{app.name}
110
- Request ID: #{request.id}
111
- EOF
112
- ap request
113
- ap request.resource
114
- if switch_active?(:no_wait)
115
- puts("Deploy started".green + " (use status command with --tail to view output)")
116
- else
117
- stream_deploy_log(request)
118
- end
119
- end
120
- end
121
- end
122
- end
123
- end
1
+ require 'ey-core/cli/subcommand'
2
+ require 'ey-core/cli/helpers/log_streaming'
3
+
4
+ module Ey
5
+ module Core
6
+ module Cli
7
+ class Deploy < Subcommand
8
+ include Ey::Core::Cli::Helpers::LogStreaming
9
+ title "deploy"
10
+ summary "Deploy your application"
11
+
12
+ option :environment,
13
+ short: "e",
14
+ long: "environment",
15
+ description: "Name or id of the environment to deploy to.",
16
+ argument: "Environment"
17
+
18
+ option :account,
19
+ short: 'c',
20
+ long: 'account',
21
+ description: 'Name or ID of the account that the environment resides in. If no account is specified, the app will deploy to the first environment that meets the criteria, in the accounts you have access to.',
22
+ argument: 'Account name or id'
23
+
24
+ option :ref,
25
+ short: "r",
26
+ long: "ref",
27
+ description: "A git reference to deploy.",
28
+ argument: "ref"
29
+
30
+ option :migrate,
31
+ short: "m",
32
+ long: "migrate",
33
+ description: "The migration command to run. This option has a 50 character limit.",
34
+ argument: "migrate"
35
+
36
+ option :app,
37
+ short: "a",
38
+ long: "app",
39
+ description: "Application name or ID to deploy. If :account is not specified, this will be the first app that matches the criteria in the accounts you have access to.",
40
+ argument: "app"
41
+
42
+ switch :no_wait,
43
+ long: "no-wait",
44
+ description: "Don't wait for deploy to finish, exit after deploy is started"
45
+
46
+ switch :verbose,
47
+ short: "v",
48
+ long: "verbose",
49
+ description: "Deploy with verbose output"
50
+
51
+ switch :verbose,
52
+ short: "v",
53
+ long: "verbose",
54
+ description: "Stream deploy output to this console. Alias to stream for backwards compatibility."
55
+
56
+ switch :no_migrate,
57
+ long: "no-migrate",
58
+ description: "Skip migration."
59
+
60
+ def handle
61
+ operator, environment = core_operator_and_environment_for(self.options)
62
+ if operator.is_a?(Ey::Core::Client::Account)
63
+ abort <<-EOF
64
+ Found account #{operator.name} but requested account #{option(:account)}.
65
+ Use the ID of the account instead of the name.
66
+ This can be retrieved by running "ey accounts".
67
+ EOF
68
+ .red unless operator.name == option(:account) || operator.id == option(:account)
69
+ end
70
+
71
+ unless environment
72
+ abort "Unable to locate environment #{option[:environment]} in #{operator.name}".red
73
+ end
74
+
75
+ unless option(:account)
76
+ self.options.merge!(environment: environment)
77
+ end
78
+
79
+ app = core_application_for(environment, self.options)
80
+
81
+ deploy_options = {verbose: options[:verbose], cli_args: ARGV}
82
+ latest_deploy = nil
83
+ if options[:ref]
84
+ deploy_options.merge!(ref: option(:ref))
85
+ else
86
+ puts "--ref not provided, checking latest deploy...".yellow
87
+ latest_deploy ||= environment.latest_deploy(app)
88
+ if latest_deploy && latest_deploy.ref
89
+ deploy_options[:ref] = latest_deploy.ref
90
+ else
91
+ raise "--ref is required (HEAD is the typical choice)"
92
+ end
93
+ end
94
+ if (option(:migrate) || switch_active?(:no_migrate))
95
+ deploy_options.merge!(migrate_command: option(:migrate)) if option(:migrate)
96
+ deploy_options.merge!(migrate_command: '') if switch_active?(:no_migrate)
97
+ else
98
+ puts "missing migrate option (--migrate or --no-migrate), checking latest deploy...".yellow
99
+ latest_deploy ||= environment.latest_deploy(app)
100
+ if latest_deploy
101
+ deploy_options.merge!(migrate_command: (latest_deploy.migrate && latest_deploy.migrate_command) || '')
102
+ else
103
+ raise "either --migrate or --no-migrate needs to be specified"
104
+ end
105
+ end
106
+ request = environment.deploy(app, deploy_options)
107
+
108
+ puts <<-EOF
109
+ Deploy started to environment: #{environment.name} with application: #{app.name}
110
+ Request ID: #{request.id}
111
+ EOF
112
+ ap request
113
+ ap request.resource
114
+ if switch_active?(:no_wait)
115
+ puts("Deploy started".green + " (use status command with --tail to view output)")
116
+ else
117
+ stream_deploy_log(request)
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
@@ -1,39 +1,39 @@
1
- require 'ey-core/cli/subcommand'
2
- require 'ey-core/cli/helpers/stream_printer'
3
-
4
- module Ey
5
- module Core
6
- module Cli
7
- class Environments < Subcommand
8
- include Ey::Core::Cli::Helpers::StreamPrinter
9
- title "environments"
10
- summary "Retrieve a list of Engine Yard environments that you have access to."
11
-
12
- option :account,
13
- short: 'c',
14
- long: 'account',
15
- description: 'Filter by account name or id',
16
- argument: 'Account'
17
-
18
- def handle
19
- if option(:account)
20
- stream_print("ID" => 10, "Name" => 50) do |printer|
21
- core_account.environments.each_entry do |env|
22
- printer.print(env.id, env.name)
23
- end
24
- end
25
- else
26
- stream_print("ID" => 10, "Name" => 50, "Account" => 50) do |printer|
27
- core_accounts.each_entry do |account|
28
- account.environments.each_entry do |env|
29
- printer.print(env.id, env.name, account.name)
30
- end
31
- end
32
- end
33
- end
34
- end
35
-
36
- end
37
- end
38
- end
39
- end
1
+ require 'ey-core/cli/subcommand'
2
+ require 'ey-core/cli/helpers/stream_printer'
3
+
4
+ module Ey
5
+ module Core
6
+ module Cli
7
+ class Environments < Subcommand
8
+ include Ey::Core::Cli::Helpers::StreamPrinter
9
+ title "environments"
10
+ summary "Retrieve a list of Engine Yard environments that you have access to."
11
+
12
+ option :account,
13
+ short: 'c',
14
+ long: 'account',
15
+ description: 'Filter by account name or id',
16
+ argument: 'Account'
17
+
18
+ def handle
19
+ if option(:account)
20
+ stream_print("ID" => 10, "Name" => 50) do |printer|
21
+ core_account.environments.each_entry do |env|
22
+ printer.print(env.id, env.name)
23
+ end
24
+ end
25
+ else
26
+ stream_print("ID" => 10, "Name" => 50, "Account" => 50) do |printer|
27
+ core_accounts.each_entry do |account|
28
+ account.environments.each_entry do |env|
29
+ printer.print(env.id, env.name, account.name)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,11 +1,11 @@
1
- module Ey
2
- module Core
3
- module Cli
4
- RecipesNotFound = Class.new(ArgumentError)
5
- NoCommand = Class.new(ArgumentError)
6
- NoRepository = Class.new(ArgumentError)
7
- RecipesExist = Class.new(ArgumentError)
8
- AmbiguousSearch = Class.new(ArgumentError)
9
- end
10
- end
11
- end
1
+ module Ey
2
+ module Core
3
+ module Cli
4
+ RecipesNotFound = Class.new(ArgumentError)
5
+ NoCommand = Class.new(ArgumentError)
6
+ NoRepository = Class.new(ArgumentError)
7
+ RecipesExist = Class.new(ArgumentError)
8
+ AmbiguousSearch = Class.new(ArgumentError)
9
+ end
10
+ end
11
+ end
@@ -1,30 +1,30 @@
1
- require 'belafonte'
2
-
3
- module Ey
4
- module Core
5
- module Cli
6
- class Help < Belafonte::App
7
- title 'help'
8
- summary 'Print out the help docs'
9
-
10
- arg :command_line,
11
- times: :unlimited
12
-
13
- def handle
14
- Main.new(
15
- command_line.unshift('-h'),
16
- stdin,
17
- stdout,
18
- stderr,
19
- kernel
20
- ).execute!
21
- end
22
-
23
- private
24
- def command_line
25
- arg(:command_line)
26
- end
27
- end
28
- end
29
- end
30
- end
1
+ require 'belafonte'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ class Help < Belafonte::App
7
+ title 'help'
8
+ summary 'Print out the help docs'
9
+
10
+ arg :command_line,
11
+ times: :unlimited
12
+
13
+ def handle
14
+ Main.new(
15
+ command_line.unshift('-h'),
16
+ stdin,
17
+ stdout,
18
+ stderr,
19
+ kernel
20
+ ).execute!
21
+ end
22
+
23
+ private
24
+ def command_line
25
+ arg(:command_line)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,70 +1,70 @@
1
- require 'stringio'
2
- require 'rubygems/package'
3
- require 'zlib'
4
-
5
- module Ey
6
- module Core
7
- module Cli
8
- module Helpers
9
- module Archive
10
- def gzip(tarfile)
11
- gz = StringIO.new("")
12
- zipper = Zlib::GzipWriter.new(gz)
13
- zipper.write tarfile.string
14
- zipper.close # this is necessary!
15
-
16
- # z was closed to write the gzip footer, so
17
- # now we need a new StringIO
18
- StringIO.new gz.string
19
- end
20
-
21
- def archive_directory(path)
22
- tarfile = StringIO.new("")
23
- Gem::Package::TarWriter.new(tarfile) do |tar|
24
- Dir[File.join(path, "**/*")].each do |file|
25
- mode = File.stat(file).mode
26
- relative_file = "cookbooks/#{file.sub(/^#{Regexp::escape path}\/?/, '')}"
27
-
28
- if File.directory?(file)
29
- tar.mkdir relative_file, mode
30
- else
31
- tar.add_file relative_file, mode do |tf|
32
- File.open(file, "rb") { |f| tf.write f.read }
33
- end
34
- end
35
- end
36
- end
37
-
38
- tarfile.rewind
39
- gzip(tarfile)
40
- end
41
-
42
- def ungzip(tarfile)
43
- zipped = Zlib::GzipReader.new(tarfile)
44
- unzipped = StringIO.new(zipped.read)
45
- zipped.close
46
- unzipped
47
- end
48
-
49
- def untar(io, destination)
50
- Gem::Package::TarReader.new io do |tar|
51
- tar.each do |tarfile|
52
- destination_file = File.join destination, tarfile.full_name
53
-
54
- if tarfile.directory?
55
- FileUtils.mkdir_p destination_file
56
- else
57
- destination_directory = File.dirname(destination_file)
58
- FileUtils.mkdir_p destination_directory unless File.directory?(destination_directory)
59
- File.open destination_file, "wb" do |file|
60
- file.print tarfile.read
61
- end
62
- end
63
- end
64
- end
65
- end
66
- end
67
- end
68
- end
69
- end
70
- end
1
+ require 'stringio'
2
+ require 'rubygems/package'
3
+ require 'zlib'
4
+
5
+ module Ey
6
+ module Core
7
+ module Cli
8
+ module Helpers
9
+ module Archive
10
+ def gzip(tarfile)
11
+ gz = StringIO.new("")
12
+ zipper = Zlib::GzipWriter.new(gz)
13
+ zipper.write tarfile.string
14
+ zipper.close # this is necessary!
15
+
16
+ # z was closed to write the gzip footer, so
17
+ # now we need a new StringIO
18
+ StringIO.new gz.string
19
+ end
20
+
21
+ def archive_directory(path)
22
+ tarfile = StringIO.new("")
23
+ Gem::Package::TarWriter.new(tarfile) do |tar|
24
+ Dir[File.join(path, "**/*")].each do |file|
25
+ mode = File.stat(file).mode
26
+ relative_file = "cookbooks/#{file.sub(/^#{Regexp::escape path}\/?/, '')}"
27
+
28
+ if File.directory?(file)
29
+ tar.mkdir relative_file, mode
30
+ else
31
+ tar.add_file relative_file, mode do |tf|
32
+ File.open(file, "rb") { |f| tf.write f.read }
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ tarfile.rewind
39
+ gzip(tarfile)
40
+ end
41
+
42
+ def ungzip(tarfile)
43
+ zipped = Zlib::GzipReader.new(tarfile)
44
+ unzipped = StringIO.new(zipped.read)
45
+ zipped.close
46
+ unzipped
47
+ end
48
+
49
+ def untar(io, destination)
50
+ Gem::Package::TarReader.new io do |tar|
51
+ tar.each do |tarfile|
52
+ destination_file = File.join destination, tarfile.full_name
53
+
54
+ if tarfile.directory?
55
+ FileUtils.mkdir_p destination_file
56
+ else
57
+ destination_directory = File.dirname(destination_file)
58
+ FileUtils.mkdir_p destination_directory unless File.directory?(destination_directory)
59
+ File.open destination_file, "wb" do |file|
60
+ file.print tarfile.read
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,51 +1,51 @@
1
- require 'ey-core/cli/errors'
2
-
3
- module Ey
4
- module Core
5
- module Cli
6
- module Helpers
7
- module Chef
8
- def run_chef(type, environment, options = {})
9
- no_wait = options.delete(:no_wait)
10
- options[:streaming] = true unless no_wait
11
- request = environment.apply(type, options)
12
- puts "Started #{type} chef run".green
13
- if no_wait
14
- return
15
- end
16
- streamable_instance_update = nil
17
- if request.read_channel
18
- request.subscribe do |m|
19
- print m["message"] if m.is_a?(Hash)
20
- end
21
- puts "" # fix console output from stream
22
- else
23
- request.wait_for { |r| r.ready? }
24
- end
25
- if request.successful
26
- puts "#{type.capitalize} chef run completed".green
27
- else
28
- puts "#{type.capitalize} chef run failed".red
29
- ap request
30
- if server = environment.servers.first
31
- puts "For logs try `ey logs --server #{server.provisioned_id}` --environment #{environment.name}"
32
- end
33
- end
34
- end
35
-
36
- def upload_recipes(environment, path="cookbooks/")
37
- recipes_path = Pathname.new(path)
38
-
39
- if recipes_path.exist? && recipes_path.to_s.match(/\.(tgz|tar\.gz)/)
40
- environment.upload_recipes(recipes_path)
41
- elsif recipes_path.exist?
42
- environment.upload_recipes(archive_directory(path))
43
- else
44
- raise RecipesNotFound, "Recipes not found, expected to find chef recipes in: #{File.expand_path(recipes_path)}, use --file to specify a different path"
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
1
+ require 'ey-core/cli/errors'
2
+
3
+ module Ey
4
+ module Core
5
+ module Cli
6
+ module Helpers
7
+ module Chef
8
+ def run_chef(type, environment, options = {})
9
+ no_wait = options.delete(:no_wait)
10
+ options[:streaming] = true unless no_wait
11
+ request = environment.apply(type, options)
12
+ puts "Started #{type} chef run".green
13
+ if no_wait
14
+ return
15
+ end
16
+ streamable_instance_update = nil
17
+ if request.read_channel
18
+ request.subscribe do |m|
19
+ print m["message"] if m.is_a?(Hash)
20
+ end
21
+ puts "" # fix console output from stream
22
+ else
23
+ request.wait_for { |r| r.ready? }
24
+ end
25
+ if request.successful
26
+ puts "#{type.capitalize} chef run completed".green
27
+ else
28
+ puts "#{type.capitalize} chef run failed".red
29
+ ap request
30
+ if server = environment.servers.first
31
+ puts "For logs try `ey logs --server #{server.provisioned_id}` --environment #{environment.name}"
32
+ end
33
+ end
34
+ end
35
+
36
+ def upload_recipes(environment, path="cookbooks/")
37
+ recipes_path = Pathname.new(path)
38
+
39
+ if recipes_path.exist? && recipes_path.to_s.match(/\.(tgz|tar\.gz)/)
40
+ environment.upload_recipes(recipes_path)
41
+ elsif recipes_path.exist?
42
+ environment.upload_recipes(archive_directory(path))
43
+ else
44
+ raise RecipesNotFound, "Recipes not found, expected to find chef recipes in: #{File.expand_path(recipes_path)}, use --file to specify a different path"
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end