ey-core 3.6.4 → 3.6.5
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.
- checksums.yaml +4 -4
- data/.gitignore +23 -23
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.travis.yml +23 -23
- data/CHANGELOG.md +189 -189
- data/Gemfile +26 -20
- data/Guardfile +15 -15
- data/LICENSE.txt +19 -19
- data/README.md +135 -135
- data/Rakefile +18 -18
- data/bin/ey-core +4 -4
- data/docs/development.md +6 -0
- data/examples/add_instance.rb +74 -74
- data/examples/boot_env.rb +60 -60
- data/examples/console/README.md +14 -14
- data/examples/console/address.md +51 -51
- data/examples/stop_env.rb +51 -51
- data/examples/terminate_instance.rb +62 -62
- data/ey-core.gemspec +52 -52
- data/features/accounts.feature +13 -13
- data/features/applications.feature +29 -29
- data/features/current_user.feature +14 -14
- data/features/docker_registry_credentials.feature +21 -21
- data/features/environment_variables.feature +54 -54
- data/features/environments.feature +30 -30
- data/features/init.feature +6 -6
- data/features/login.feature +6 -6
- data/features/scp.feature +6 -6
- data/features/step_definitions/accounts_steps.rb +37 -37
- data/features/step_definitions/applications_steps.rb +39 -39
- data/features/step_definitions/current_user_steps.rb +11 -11
- data/features/step_definitions/deprecated_command_steps.rb +3 -3
- data/features/step_definitions/docker_registry_credentials_steps.rb +3 -3
- data/features/step_definitions/environment_variables_steps.rb +51 -51
- data/features/step_definitions/environments_steps.rb +52 -52
- data/features/step_definitions/version_steps.rb +3 -3
- data/features/support/account_helpers.rb +89 -89
- data/features/support/app_helpers.rb +19 -19
- data/features/support/aruba.rb +1 -1
- data/features/support/boilerplate.rb +1 -1
- data/features/support/client_helpers.rb +36 -36
- data/features/support/config_file_helpers.rb +42 -42
- data/features/support/core.rb +19 -19
- data/features/support/deployment_helpers.rb +19 -19
- data/features/support/env.rb +40 -40
- data/features/support/environment_helpers.rb +23 -23
- data/features/support/environment_variable_helpers.rb +20 -20
- data/features/support/fake_kernel.rb +23 -23
- data/features/support/io.rb +5 -5
- data/features/support/mock_api.rb +20 -20
- data/features/support/output_helpers.rb +7 -7
- data/features/support/resource_helpers.rb +201 -201
- data/features/support/server_helpers.rb +27 -27
- data/features/version.feature +8 -8
- data/features/whoami.feature +14 -14
- data/lib/ey-core/associations.rb +155 -155
- data/lib/ey-core/cli/accounts.rb +17 -17
- data/lib/ey-core/cli/applications.rb +36 -36
- data/lib/ey-core/cli/console.rb +28 -28
- data/lib/ey-core/cli/current_user.rb +16 -16
- data/lib/ey-core/cli/deploy.rb +126 -126
- data/lib/ey-core/cli/docker_registry_login.rb +29 -29
- data/lib/ey-core/cli/environment_variables.rb +71 -71
- data/lib/ey-core/cli/environments.rb +39 -39
- data/lib/ey-core/cli/errors.rb +11 -11
- data/lib/ey-core/cli/help.rb +30 -30
- data/lib/ey-core/cli/helpers/archive.rb +70 -70
- data/lib/ey-core/cli/helpers/chef.rb +51 -51
- data/lib/ey-core/cli/helpers/core.rb +225 -225
- data/lib/ey-core/cli/helpers/deprecated.rb +39 -39
- data/lib/ey-core/cli/helpers/log_streaming.rb +41 -41
- data/lib/ey-core/cli/helpers/server_sieve.rb +83 -83
- data/lib/ey-core/cli/helpers/stream_printer.rb +42 -42
- data/lib/ey-core/cli/init.rb +14 -14
- data/lib/ey-core/cli/login.rb +38 -38
- data/lib/ey-core/cli/logout.rb +22 -22
- data/lib/ey-core/cli/logs.rb +70 -70
- data/lib/ey-core/cli/main.rb +66 -66
- data/lib/ey-core/cli/recipes/apply.rb +65 -65
- data/lib/ey-core/cli/recipes/download.rb +52 -52
- data/lib/ey-core/cli/recipes/main.rb +21 -21
- data/lib/ey-core/cli/recipes/upload.rb +78 -78
- data/lib/ey-core/cli/recipes.rb +10 -10
- data/lib/ey-core/cli/scp.rb +14 -14
- data/lib/ey-core/cli/servers.rb +59 -59
- data/lib/ey-core/cli/ssh.rb +156 -156
- data/lib/ey-core/cli/status.rb +60 -60
- data/lib/ey-core/cli/subcommand.rb +53 -53
- data/lib/ey-core/cli/timeout_deploy.rb +58 -58
- data/lib/ey-core/cli/version.rb +16 -16
- data/lib/ey-core/cli/web/disable.rb +49 -49
- data/lib/ey-core/cli/web/enable.rb +46 -46
- data/lib/ey-core/cli/web/main.rb +21 -21
- data/lib/ey-core/cli/web/restart.rb +42 -42
- data/lib/ey-core/cli/web.rb +10 -10
- data/lib/ey-core/cli/whoami.rb +12 -12
- data/lib/ey-core/cli.rb +8 -8
- data/lib/ey-core/client/mock.rb +306 -306
- data/lib/ey-core/client/real.rb +93 -93
- data/lib/ey-core/client.rb +469 -469
- data/lib/ey-core/collection.rb +131 -131
- data/lib/ey-core/collections/account_cancellations.rb +6 -6
- data/lib/ey-core/collections/account_referrals.rb +10 -10
- data/lib/ey-core/collections/accounts.rb +8 -8
- data/lib/ey-core/collections/addons.rb +16 -16
- data/lib/ey-core/collections/addresses.rb +9 -9
- data/lib/ey-core/collections/alerts.rb +9 -9
- data/lib/ey-core/collections/application_archives.rb +9 -9
- data/lib/ey-core/collections/application_deployments.rb +9 -9
- data/lib/ey-core/collections/applications.rb +9 -9
- data/lib/ey-core/collections/auto_scaling_alarms.rb +8 -8
- data/lib/ey-core/collections/auto_scaling_groups.rb +8 -8
- data/lib/ey-core/collections/auto_scaling_policies.rb +33 -33
- data/lib/ey-core/collections/backup_files.rb +9 -9
- data/lib/ey-core/collections/blueprints.rb +9 -9
- data/lib/ey-core/collections/components.rb +9 -9
- data/lib/ey-core/collections/contacts.rb +9 -9
- data/lib/ey-core/collections/container_clusters.rb +9 -9
- data/lib/ey-core/collections/container_service_deployments.rb +17 -17
- data/lib/ey-core/collections/costs.rb +8 -8
- data/lib/ey-core/collections/database_plan_usages.rb +7 -7
- data/lib/ey-core/collections/database_server_revisions.rb +7 -7
- data/lib/ey-core/collections/database_server_snapshots.rb +17 -17
- data/lib/ey-core/collections/database_server_usages.rb +7 -7
- data/lib/ey-core/collections/database_servers.rb +9 -9
- data/lib/ey-core/collections/database_services.rb +9 -9
- data/lib/ey-core/collections/deployments.rb +8 -8
- data/lib/ey-core/collections/environment_plan_usages.rb +7 -7
- data/lib/ey-core/collections/environment_variables.rb +8 -8
- data/lib/ey-core/collections/environments.rb +15 -15
- data/lib/ey-core/collections/features.rb +9 -9
- data/lib/ey-core/collections/firewall_rules.rb +9 -9
- data/lib/ey-core/collections/firewalls.rb +9 -9
- data/lib/ey-core/collections/gems.rb +6 -6
- data/lib/ey-core/collections/keypair_deployments.rb +9 -9
- data/lib/ey-core/collections/keypairs.rb +9 -9
- data/lib/ey-core/collections/legacy_alerts.rb +9 -9
- data/lib/ey-core/collections/load_balancer_nodes.rb +9 -9
- data/lib/ey-core/collections/load_balancer_services.rb +9 -9
- data/lib/ey-core/collections/load_balancers.rb +16 -16
- data/lib/ey-core/collections/logical_databases.rb +16 -16
- data/lib/ey-core/collections/logs.rb +9 -9
- data/lib/ey-core/collections/memberships.rb +9 -9
- data/lib/ey-core/collections/messages.rb +9 -9
- data/lib/ey-core/collections/plan_usages.rb +7 -7
- data/lib/ey-core/collections/provider_locations.rb +13 -13
- data/lib/ey-core/collections/providers.rb +15 -15
- data/lib/ey-core/collections/requests.rb +10 -10
- data/lib/ey-core/collections/server_events.rb +9 -9
- data/lib/ey-core/collections/server_usages.rb +7 -7
- data/lib/ey-core/collections/servers.rb +13 -13
- data/lib/ey-core/collections/services.rb +14 -14
- data/lib/ey-core/collections/ssl_certificates.rb +9 -9
- data/lib/ey-core/collections/storage_users.rb +10 -10
- data/lib/ey-core/collections/storages.rb +9 -9
- data/lib/ey-core/collections/tasks.rb +9 -9
- data/lib/ey-core/collections/tokens.rb +9 -9
- data/lib/ey-core/collections/untracked_addresses.rb +4 -4
- data/lib/ey-core/collections/untracked_servers.rb +9 -9
- data/lib/ey-core/collections/users.rb +12 -12
- data/lib/ey-core/collections/volumes.rb +9 -9
- data/lib/ey-core/logger.rb +31 -31
- data/lib/ey-core/memory_cache.rb +17 -17
- data/lib/ey-core/mock/helper.rb +104 -104
- data/lib/ey-core/mock/params.rb +31 -31
- data/lib/ey-core/mock/resources.rb +92 -92
- data/lib/ey-core/mock/searching.rb +115 -115
- data/lib/ey-core/mock/util.rb +23 -23
- data/lib/ey-core/model.rb +44 -44
- data/lib/ey-core/models/account.rb +80 -80
- data/lib/ey-core/models/account_cancellation.rb +6 -6
- data/lib/ey-core/models/account_referral.rb +8 -8
- data/lib/ey-core/models/account_trial.rb +15 -15
- data/lib/ey-core/models/addon.rb +37 -37
- data/lib/ey-core/models/address.rb +59 -59
- data/lib/ey-core/models/alert.rb +99 -99
- data/lib/ey-core/models/application.rb +33 -33
- data/lib/ey-core/models/application_archive.rb +67 -67
- data/lib/ey-core/models/application_deployment.rb +18 -18
- data/lib/ey-core/models/auto_scaling_alarm.rb +54 -54
- data/lib/ey-core/models/auto_scaling_group.rb +75 -75
- data/lib/ey-core/models/backup_file.rb +52 -52
- data/lib/ey-core/models/base_auto_scaling_policy.rb +61 -61
- data/lib/ey-core/models/billing.rb +27 -27
- data/lib/ey-core/models/blueprint.rb +30 -30
- data/lib/ey-core/models/component.rb +11 -11
- data/lib/ey-core/models/contact.rb +14 -14
- data/lib/ey-core/models/container_service_deployment.rb +17 -17
- data/lib/ey-core/models/cost.rb +16 -16
- data/lib/ey-core/models/database_plan_usage.rb +10 -10
- data/lib/ey-core/models/database_server.rb +56 -56
- data/lib/ey-core/models/database_server_revision.rb +10 -10
- data/lib/ey-core/models/database_server_snapshot.rb +43 -43
- data/lib/ey-core/models/database_server_usage.rb +15 -15
- data/lib/ey-core/models/database_service.rb +52 -52
- data/lib/ey-core/models/deployment.rb +31 -31
- data/lib/ey-core/models/environment.rb +248 -248
- data/lib/ey-core/models/environment_plan_usage.rb +10 -10
- data/lib/ey-core/models/environment_variable.rb +29 -29
- data/lib/ey-core/models/feature.rb +33 -33
- data/lib/ey-core/models/firewall.rb +46 -46
- data/lib/ey-core/models/firewall_rule.rb +41 -41
- data/lib/ey-core/models/gem.rb +5 -5
- data/lib/ey-core/models/keypair.rb +38 -38
- data/lib/ey-core/models/keypair_deployment.rb +26 -26
- data/lib/ey-core/models/legacy_alert.rb +12 -12
- data/lib/ey-core/models/load_balancer.rb +43 -43
- data/lib/ey-core/models/load_balancer_node.rb +17 -17
- data/lib/ey-core/models/load_balancer_service.rb +22 -22
- data/lib/ey-core/models/log.rb +44 -44
- data/lib/ey-core/models/logical_database.rb +40 -40
- data/lib/ey-core/models/membership.rb +49 -49
- data/lib/ey-core/models/message.rb +27 -27
- data/lib/ey-core/models/plan_usage.rb +14 -14
- data/lib/ey-core/models/provider.rb +59 -59
- data/lib/ey-core/models/provider_location.rb +24 -24
- data/lib/ey-core/models/request.rb +109 -109
- data/lib/ey-core/models/server.rb +151 -151
- data/lib/ey-core/models/server_event.rb +11 -11
- data/lib/ey-core/models/server_usage.rb +15 -15
- data/lib/ey-core/models/service.rb +10 -10
- data/lib/ey-core/models/simple_auto_scaling_policy.rb +24 -24
- data/lib/ey-core/models/ssl_certificate.rb +44 -44
- data/lib/ey-core/models/step_auto_scaling_policy.rb +24 -24
- data/lib/ey-core/models/storage.rb +38 -38
- data/lib/ey-core/models/storage_user.rb +44 -44
- data/lib/ey-core/models/support_trial.rb +10 -10
- data/lib/ey-core/models/target_auto_scaling_policy.rb +24 -24
- data/lib/ey-core/models/task.rb +35 -35
- data/lib/ey-core/models/token.rb +24 -24
- data/lib/ey-core/models/untracked_address.rb +24 -24
- data/lib/ey-core/models/untracked_server.rb +45 -45
- data/lib/ey-core/models/user.rb +39 -39
- data/lib/ey-core/models/volume.rb +20 -20
- data/lib/ey-core/request.rb +21 -21
- data/lib/ey-core/request_failure.rb +11 -11
- data/lib/ey-core/requests/acknowledge_alert.rb +29 -29
- data/lib/ey-core/requests/apply_environment_updates.rb +54 -54
- data/lib/ey-core/requests/apply_server_updates.rb +52 -52
- data/lib/ey-core/requests/attach_address.rb +53 -53
- data/lib/ey-core/requests/authorized_channel.rb +22 -22
- data/lib/ey-core/requests/blueprint_environment.rb +72 -72
- data/lib/ey-core/requests/boot_environment.rb +187 -187
- data/lib/ey-core/requests/bootstrap_logical_database.rb +80 -80
- data/lib/ey-core/requests/cancel_account.rb +33 -33
- data/lib/ey-core/requests/change_environment_maintenance.rb +38 -38
- data/lib/ey-core/requests/create_account.rb +38 -38
- data/lib/ey-core/requests/create_addon.rb +35 -35
- data/lib/ey-core/requests/create_address.rb +54 -54
- data/lib/ey-core/requests/create_alert.rb +63 -63
- data/lib/ey-core/requests/create_application.rb +73 -73
- data/lib/ey-core/requests/create_application_archive.rb +44 -44
- data/lib/ey-core/requests/create_auto_scaling_alarm.rb +69 -69
- data/lib/ey-core/requests/create_auto_scaling_group.rb +62 -62
- data/lib/ey-core/requests/create_auto_scaling_policy.rb +68 -68
- data/lib/ey-core/requests/create_backup_file.rb +52 -52
- data/lib/ey-core/requests/create_database_server.rb +72 -72
- data/lib/ey-core/requests/create_database_service.rb +57 -57
- data/lib/ey-core/requests/create_database_service_snapshot.rb +69 -69
- data/lib/ey-core/requests/create_environment.rb +77 -77
- data/lib/ey-core/requests/create_environment_variable.rb +39 -39
- data/lib/ey-core/requests/create_firewall.rb +62 -62
- data/lib/ey-core/requests/create_firewall_rule.rb +60 -60
- data/lib/ey-core/requests/create_keypair.rb +42 -42
- data/lib/ey-core/requests/create_keypair_deployment.rb +36 -36
- data/lib/ey-core/requests/create_load_balancer.rb +62 -62
- data/lib/ey-core/requests/create_log.rb +53 -53
- data/lib/ey-core/requests/create_logical_database.rb +56 -56
- data/lib/ey-core/requests/create_membership.rb +47 -47
- data/lib/ey-core/requests/create_message.rb +35 -35
- data/lib/ey-core/requests/create_password_reset.rb +38 -38
- data/lib/ey-core/requests/create_provider.rb +90 -90
- data/lib/ey-core/requests/create_server.rb +121 -121
- data/lib/ey-core/requests/create_ssl_certificate.rb +83 -83
- data/lib/ey-core/requests/create_storage.rb +64 -64
- data/lib/ey-core/requests/create_storage_user.rb +64 -64
- data/lib/ey-core/requests/create_task.rb +55 -55
- data/lib/ey-core/requests/create_token.rb +24 -24
- data/lib/ey-core/requests/create_untracked_address.rb +50 -50
- data/lib/ey-core/requests/create_untracked_server.rb +39 -39
- data/lib/ey-core/requests/create_user.rb +54 -54
- data/lib/ey-core/requests/deploy_environment_application.rb +61 -61
- data/lib/ey-core/requests/deprovision_environment.rb +17 -17
- data/lib/ey-core/requests/destroy_addon.rb +24 -24
- data/lib/ey-core/requests/destroy_auto_scaling_alarm.rb +49 -49
- data/lib/ey-core/requests/destroy_auto_scaling_group.rb +44 -44
- data/lib/ey-core/requests/destroy_auto_scaling_policy.rb +49 -49
- data/lib/ey-core/requests/destroy_blueprint.rb +22 -22
- data/lib/ey-core/requests/destroy_database_server.rb +41 -41
- data/lib/ey-core/requests/destroy_database_server_snapshot.rb +42 -42
- data/lib/ey-core/requests/destroy_database_service.rb +57 -57
- data/lib/ey-core/requests/destroy_environment.rb +43 -43
- data/lib/ey-core/requests/destroy_firewall.rb +41 -41
- data/lib/ey-core/requests/destroy_firewall_rule.rb +41 -41
- data/lib/ey-core/requests/destroy_load_balancer.rb +30 -30
- data/lib/ey-core/requests/destroy_logical_database.rb +41 -41
- data/lib/ey-core/requests/destroy_provider.rb +34 -34
- data/lib/ey-core/requests/destroy_server.rb +48 -48
- data/lib/ey-core/requests/destroy_ssl_certificate.rb +28 -28
- data/lib/ey-core/requests/destroy_storage.rb +33 -33
- data/lib/ey-core/requests/destroy_storage_user.rb +38 -38
- data/lib/ey-core/requests/destroy_user.rb +29 -29
- data/lib/ey-core/requests/detach_address.rb +48 -48
- data/lib/ey-core/requests/disable_feature.rb +30 -30
- data/lib/ey-core/requests/discover_container_service_deployments.rb +71 -71
- data/lib/ey-core/requests/discover_database_server.rb +66 -66
- data/lib/ey-core/requests/discover_database_server_snapshots.rb +69 -69
- data/lib/ey-core/requests/discover_provider_location.rb +57 -57
- data/lib/ey-core/requests/discover_server.rb +60 -60
- data/lib/ey-core/requests/download_file.rb +25 -25
- data/lib/ey-core/requests/enable_feature.rb +35 -35
- data/lib/ey-core/requests/get_account.rb +29 -29
- data/lib/ey-core/requests/get_account_cancellation.rb +21 -21
- data/lib/ey-core/requests/get_account_referrals.rb +28 -28
- data/lib/ey-core/requests/get_account_trial.rb +32 -32
- data/lib/ey-core/requests/get_accounts.rb +42 -42
- data/lib/ey-core/requests/get_addon.rb +25 -25
- data/lib/ey-core/requests/get_addons.rb +24 -24
- data/lib/ey-core/requests/get_address.rb +25 -25
- data/lib/ey-core/requests/get_addresses.rb +27 -27
- data/lib/ey-core/requests/get_alert.rb +21 -21
- data/lib/ey-core/requests/get_alerting_environments.rb +41 -41
- data/lib/ey-core/requests/get_alerts.rb +44 -44
- data/lib/ey-core/requests/get_api_token.rb +19 -19
- data/lib/ey-core/requests/get_application.rb +21 -21
- data/lib/ey-core/requests/get_application_archive.rb +32 -32
- data/lib/ey-core/requests/get_application_archives.rb +29 -29
- data/lib/ey-core/requests/get_application_deployment.rb +21 -21
- data/lib/ey-core/requests/get_application_deployments.rb +28 -28
- data/lib/ey-core/requests/get_applications.rb +28 -28
- data/lib/ey-core/requests/get_auto_scaling_alarm.rb +27 -27
- data/lib/ey-core/requests/get_auto_scaling_alarms.rb +34 -34
- data/lib/ey-core/requests/get_auto_scaling_group.rb +21 -21
- data/lib/ey-core/requests/get_auto_scaling_groups.rb +29 -29
- data/lib/ey-core/requests/get_auto_scaling_policies.rb +46 -46
- data/lib/ey-core/requests/get_auto_scaling_policy.rb +27 -27
- data/lib/ey-core/requests/get_backup_file.rb +21 -21
- data/lib/ey-core/requests/get_backup_files.rb +28 -28
- data/lib/ey-core/requests/get_billing.rb +24 -24
- data/lib/ey-core/requests/get_blueprint.rb +21 -21
- data/lib/ey-core/requests/get_blueprints.rb +29 -29
- data/lib/ey-core/requests/get_component.rb +21 -21
- data/lib/ey-core/requests/get_components.rb +29 -29
- data/lib/ey-core/requests/get_contacts.rb +34 -34
- data/lib/ey-core/requests/get_costs.rb +25 -25
- data/lib/ey-core/requests/get_current_user.rb +19 -19
- data/lib/ey-core/requests/get_database_plan_usages.rb +24 -24
- data/lib/ey-core/requests/get_database_server.rb +21 -21
- data/lib/ey-core/requests/get_database_server_revisions.rb +27 -27
- data/lib/ey-core/requests/get_database_server_snapshot.rb +20 -20
- data/lib/ey-core/requests/get_database_server_snapshots.rb +39 -39
- data/lib/ey-core/requests/get_database_server_usages.rb +24 -24
- data/lib/ey-core/requests/get_database_servers.rb +30 -30
- data/lib/ey-core/requests/get_database_servers_firewalls.rb +30 -30
- data/lib/ey-core/requests/get_database_service.rb +20 -20
- data/lib/ey-core/requests/get_database_services.rb +55 -55
- data/lib/ey-core/requests/get_deployment.rb +19 -19
- data/lib/ey-core/requests/get_deployments.rb +29 -29
- data/lib/ey-core/requests/get_environment.rb +21 -21
- data/lib/ey-core/requests/get_environment_database_services.rb +21 -21
- data/lib/ey-core/requests/get_environment_logical_databases.rb +20 -20
- data/lib/ey-core/requests/get_environment_plan_usages.rb +24 -24
- data/lib/ey-core/requests/get_environment_variable.rb +19 -19
- data/lib/ey-core/requests/get_environment_variables.rb +29 -29
- data/lib/ey-core/requests/get_environments.rb +29 -29
- data/lib/ey-core/requests/get_feature.rb +21 -21
- data/lib/ey-core/requests/get_features.rb +28 -28
- data/lib/ey-core/requests/get_firewall.rb +21 -21
- data/lib/ey-core/requests/get_firewall_rule.rb +21 -21
- data/lib/ey-core/requests/get_firewall_rules.rb +29 -29
- data/lib/ey-core/requests/get_firewalls.rb +45 -45
- data/lib/ey-core/requests/get_gem.rb +24 -24
- data/lib/ey-core/requests/get_keypair.rb +21 -21
- data/lib/ey-core/requests/get_keypair_deployment.rb +21 -21
- data/lib/ey-core/requests/get_keypair_deployments.rb +29 -29
- data/lib/ey-core/requests/get_keypairs.rb +34 -34
- data/lib/ey-core/requests/get_legacy_alert.rb +21 -21
- data/lib/ey-core/requests/get_legacy_alerts.rb +29 -29
- data/lib/ey-core/requests/get_load_balancer.rb +21 -21
- data/lib/ey-core/requests/get_load_balancer_node.rb +21 -21
- data/lib/ey-core/requests/get_load_balancer_nodes.rb +30 -30
- data/lib/ey-core/requests/get_load_balancer_service.rb +21 -21
- data/lib/ey-core/requests/get_load_balancer_services.rb +30 -30
- data/lib/ey-core/requests/get_load_balancers.rb +29 -29
- data/lib/ey-core/requests/get_log.rb +21 -21
- data/lib/ey-core/requests/get_logical_database.rb +23 -23
- data/lib/ey-core/requests/get_logical_databases.rb +36 -36
- data/lib/ey-core/requests/get_logs.rb +37 -37
- data/lib/ey-core/requests/get_membership.rb +21 -21
- data/lib/ey-core/requests/get_memberships.rb +29 -29
- data/lib/ey-core/requests/get_message.rb +28 -28
- data/lib/ey-core/requests/get_messages.rb +27 -27
- data/lib/ey-core/requests/get_metadata.rb +22 -22
- data/lib/ey-core/requests/get_operational_contact.rb +21 -21
- data/lib/ey-core/requests/get_operational_contacts.rb +20 -20
- data/lib/ey-core/requests/get_plan_usages.rb +24 -24
- data/lib/ey-core/requests/get_possible_provider_locations.rb +19 -19
- data/lib/ey-core/requests/get_provider.rb +21 -21
- data/lib/ey-core/requests/get_provider_location.rb +29 -29
- data/lib/ey-core/requests/get_provider_locations.rb +28 -28
- data/lib/ey-core/requests/get_providers.rb +28 -28
- data/lib/ey-core/requests/get_request.rb +71 -71
- data/lib/ey-core/requests/get_requests.rb +29 -29
- data/lib/ey-core/requests/get_server.rb +34 -34
- data/lib/ey-core/requests/get_server_event.rb +20 -20
- data/lib/ey-core/requests/get_server_events.rb +28 -28
- data/lib/ey-core/requests/get_server_usages.rb +24 -24
- data/lib/ey-core/requests/get_servers.rb +25 -25
- data/lib/ey-core/requests/get_ssl_certificate.rb +23 -23
- data/lib/ey-core/requests/get_ssl_certificates.rb +28 -28
- data/lib/ey-core/requests/get_storage.rb +21 -21
- data/lib/ey-core/requests/get_storage_user.rb +21 -21
- data/lib/ey-core/requests/get_storage_users.rb +28 -28
- data/lib/ey-core/requests/get_storages.rb +28 -28
- data/lib/ey-core/requests/get_support_trial.rb +51 -51
- data/lib/ey-core/requests/get_task.rb +21 -21
- data/lib/ey-core/requests/get_tasks.rb +28 -28
- data/lib/ey-core/requests/get_token.rb +21 -21
- data/lib/ey-core/requests/get_token_by_login.rb +30 -30
- data/lib/ey-core/requests/get_tokens.rb +32 -32
- data/lib/ey-core/requests/get_untracked_server.rb +18 -18
- data/lib/ey-core/requests/get_untracked_servers.rb +24 -24
- data/lib/ey-core/requests/get_user.rb +21 -21
- data/lib/ey-core/requests/get_users.rb +42 -42
- data/lib/ey-core/requests/get_volume.rb +21 -21
- data/lib/ey-core/requests/get_volumes.rb +28 -28
- data/lib/ey-core/requests/reboot_server.rb +39 -39
- data/lib/ey-core/requests/reconcile_server.rb +39 -39
- data/lib/ey-core/requests/request_callback.rb +26 -26
- data/lib/ey-core/requests/reset_password.rb +31 -31
- data/lib/ey-core/requests/reset_server_state.rb +32 -32
- data/lib/ey-core/requests/restart_environment_app_servers.rb +38 -38
- data/lib/ey-core/requests/retrieve_docker_registry_credentials.rb +24 -24
- data/lib/ey-core/requests/run_cluster_application_action.rb +28 -28
- data/lib/ey-core/requests/run_environment_application_action.rb +29 -29
- data/lib/ey-core/requests/signup.rb +56 -56
- data/lib/ey-core/requests/start_server.rb +39 -39
- data/lib/ey-core/requests/stop_server.rb +39 -39
- data/lib/ey-core/requests/timeout_deployment.rb +27 -27
- data/lib/ey-core/requests/unassign_environment.rb +31 -31
- data/lib/ey-core/requests/update_addon.rb +28 -28
- data/lib/ey-core/requests/update_address.rb +29 -29
- data/lib/ey-core/requests/update_alert.rb +32 -32
- data/lib/ey-core/requests/update_application_archive.rb +23 -23
- data/lib/ey-core/requests/update_auto_scaling_alarm.rb +45 -45
- data/lib/ey-core/requests/update_auto_scaling_group.rb +45 -45
- data/lib/ey-core/requests/update_auto_scaling_policy.rb +46 -46
- data/lib/ey-core/requests/update_billing.rb +26 -26
- data/lib/ey-core/requests/update_blueprint.rb +29 -29
- data/lib/ey-core/requests/update_connector.rb +32 -32
- data/lib/ey-core/requests/update_environment.rb +17 -17
- data/lib/ey-core/requests/update_environment_variable.rb +25 -25
- data/lib/ey-core/requests/update_membership.rb +29 -29
- data/lib/ey-core/requests/update_provider_location.rb +29 -29
- data/lib/ey-core/requests/update_server.rb +29 -29
- data/lib/ey-core/requests/update_ssl_certificate.rb +25 -25
- data/lib/ey-core/requests/update_untracked_server.rb +24 -24
- data/lib/ey-core/requests/upload_file.rb +44 -44
- data/lib/ey-core/requests/upload_recipes_for_environment.rb +28 -28
- data/lib/ey-core/response.rb +59 -59
- data/lib/ey-core/response_cache.rb +29 -29
- data/lib/ey-core/subscribable.rb +60 -60
- data/lib/ey-core/test_helpers/account_helpers.rb +73 -73
- data/lib/ey-core/test_helpers/alert_helpers.rb +16 -16
- data/lib/ey-core/test_helpers/auto_scaling_helpers.rb +35 -35
- data/lib/ey-core/test_helpers/client_helpers.rb +40 -40
- data/lib/ey-core/test_helpers/cucumber.rb +3 -3
- data/lib/ey-core/test_helpers/resource_helpers.rb +196 -196
- data/lib/ey-core/test_helpers/rspec.rb +5 -5
- data/lib/ey-core/test_helpers.rb +17 -17
- data/lib/ey-core/token_authentication.rb +13 -13
- data/lib/ey-core/version.rb +5 -5
- data/lib/ey-core.rb +59 -59
- data/spec/account_spec.rb +65 -65
- data/spec/account_trial_spec.rb +17 -17
- data/spec/accounts_referrals_spec.rb +20 -20
- data/spec/accounts_spec.rb +113 -113
- data/spec/addons_and_vars_spec.rb +62 -62
- data/spec/addresses_spec.rb +57 -57
- data/spec/alerts_spec.rb +155 -155
- data/spec/application_archives_spec.rb +39 -39
- data/spec/applications_spec.rb +65 -65
- data/spec/auto_scaling_alarms_spec.rb +40 -40
- data/spec/auto_scaling_groups_spec.rb +28 -28
- data/spec/auto_scaling_policies_spec.rb +94 -94
- data/spec/billing_spec.rb +31 -31
- data/spec/blueprints_spec.rb +47 -47
- data/spec/client_spec.rb +16 -16
- data/spec/collection_spec.rb +43 -43
- data/spec/costs_spec.rb +22 -22
- data/spec/database_plan_usage_spec.rb +39 -39
- data/spec/database_server_snapshots_spec.rb +41 -41
- data/spec/database_server_usage_spec.rb +49 -49
- data/spec/database_servers_spec.rb +61 -61
- data/spec/database_services_spec.rb +76 -76
- data/spec/deployments_spec.rb +24 -24
- data/spec/docker_registry_credentials_spec.rb +16 -16
- data/spec/environment_plan_usage_spec.rb +38 -38
- data/spec/environments_spec.rb +212 -212
- data/spec/ey-core/cli/accounts_spec.rb +20 -20
- data/spec/ey-core/cli/helpers/server_sieve_spec.rb +226 -226
- data/spec/ey-core/cli/recipes/apply_spec.rb +34 -34
- data/spec/ey-core/cli/recipes/download_spec.rb +93 -93
- data/spec/ey-core/cli/recipes/upload_spec.rb +80 -80
- data/spec/features_spec.rb +79 -79
- data/spec/firewalls_spec.rb +84 -84
- data/spec/gems_spec.rb +11 -11
- data/spec/keypair_deployments_spec.rb +33 -33
- data/spec/keypairs_spec.rb +51 -51
- data/spec/legacy_alerts_spec.rb +44 -44
- data/spec/load_balancers_spec.rb +31 -31
- data/spec/logical_databases_spec.rb +38 -38
- data/spec/logs_spec.rb +44 -44
- data/spec/memberships_spec.rb +73 -73
- data/spec/messages_spec.rb +27 -27
- data/spec/metadata_spec.rb +11 -11
- data/spec/plan_usage_spec.rb +65 -65
- data/spec/provider_locations_spec.rb +85 -85
- data/spec/providers_spec.rb +105 -105
- data/spec/requests/upload_file_spec.rb +25 -25
- data/spec/requests_spec.rb +23 -23
- data/spec/reset_password_spec.rb +22 -22
- data/spec/server_events_spec.rb +31 -31
- data/spec/server_usage_spec.rb +70 -70
- data/spec/servers_spec.rb +202 -202
- data/spec/services_spec.rb +9 -9
- data/spec/signups_spec.rb +45 -45
- data/spec/spec_helper.rb +27 -27
- data/spec/ssl_certificates_spec.rb +94 -94
- data/spec/storages_spec.rb +57 -57
- data/spec/support/cli_helpers.rb +47 -47
- data/spec/support/core.rb +21 -21
- data/spec/support/coverage.rb +43 -43
- data/spec/support/fake_kernel.rb +21 -21
- data/spec/support/helpers.rb +1 -1
- data/spec/support/timecop.rb +8 -8
- data/spec/support_trial_spec.rb +33 -33
- data/spec/tokens_spec.rb +59 -59
- data/spec/untracked_servers_spec.rb +59 -59
- data/spec/users_spec.rb +108 -108
- metadata +4 -3
|
@@ -1,225 +1,225 @@
|
|
|
1
|
-
require 'colorize'
|
|
2
|
-
require 'ey-core/cli/errors'
|
|
3
|
-
|
|
4
|
-
module Ey
|
|
5
|
-
module Core
|
|
6
|
-
module Cli
|
|
7
|
-
module Helpers
|
|
8
|
-
module Core
|
|
9
|
-
module ClassMethods
|
|
10
|
-
def core_file
|
|
11
|
-
@core_file ||= File.expand_path("~/.ey-core")
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def eyrc
|
|
15
|
-
@eyrc ||= File.expand_path("~/.eyrc")
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def core_url
|
|
20
|
-
env_url = ENV["CORE_URL"] || ENV["CLOUD_URL"]
|
|
21
|
-
(env_url && File.join(env_url, '/')) || "https://api.engineyard.com/"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def longest_length_by_name(collection)
|
|
25
|
-
collection.map(&:name).group_by(&:size).max.last.length
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def core_yaml
|
|
29
|
-
@core_yaml ||= YAML.load_file(self.class.core_file) || {}
|
|
30
|
-
rescue Errno::ENOENT => e
|
|
31
|
-
puts "Creating #{self.class.core_file}".yellow
|
|
32
|
-
FileUtils.touch(self.class.core_file)
|
|
33
|
-
retry
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def operator(options)
|
|
37
|
-
if options[:account]
|
|
38
|
-
core_account
|
|
39
|
-
elsif ENV["STAFF"]
|
|
40
|
-
core_client
|
|
41
|
-
else
|
|
42
|
-
core_client.users.current
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def core_operator_and_environment_for(options={})
|
|
47
|
-
unless options[:environment]
|
|
48
|
-
raise "--environment is required (for a list of environments, try `ey-core environments`)"
|
|
49
|
-
end
|
|
50
|
-
operator = operator(options)
|
|
51
|
-
environment = nil
|
|
52
|
-
if options[:environment].to_i.to_s == options[:environment]
|
|
53
|
-
environment = operator.environments.get(options[:environment])
|
|
54
|
-
end
|
|
55
|
-
unless environment
|
|
56
|
-
candidate_envs = operator.environments.all(name: options[:environment])
|
|
57
|
-
if candidate_envs.size > 1
|
|
58
|
-
raise "Multiple matching environments found named '#{options[:environment]}', please specify --account"
|
|
59
|
-
else
|
|
60
|
-
environment = candidate_envs.first
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
unless environment
|
|
64
|
-
raise "environment '#{options[:environment]}' not found (for a list of environments, try `ey-core environments`)"
|
|
65
|
-
end
|
|
66
|
-
[operator, environment]
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def core_environment_for(options={})
|
|
70
|
-
core_client.environments.get(options[:environment]) || core_client.environments.first(name: options[:environment])
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def core_server_for(options={})
|
|
74
|
-
operator = options.fetch(:operator, core_client)
|
|
75
|
-
operator.servers.get(options[:server]) || operator.servers.first(provisioned_id: options[:server])
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def core_application_for(environment, options={})
|
|
79
|
-
candidate_apps = nil
|
|
80
|
-
unless options[:app]
|
|
81
|
-
candidate_apps = environment.applications.map(&:name)
|
|
82
|
-
if candidate_apps.size == 1
|
|
83
|
-
options[:app] = candidate_apps.first
|
|
84
|
-
else
|
|
85
|
-
raise "--app is required (Candidate apps on environment #{environment.name}: #{candidate_apps.join(', ')})"
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
app = begin
|
|
90
|
-
Integer(options[:app])
|
|
91
|
-
rescue
|
|
92
|
-
options[:app]
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
if app.is_a?(Integer)
|
|
96
|
-
environment.applications.get(app)
|
|
97
|
-
else
|
|
98
|
-
applications = environment.applications.all(name: app)
|
|
99
|
-
if applications.count == 1
|
|
100
|
-
applications.first
|
|
101
|
-
else
|
|
102
|
-
error_msg = [
|
|
103
|
-
"Found multiple applications that matched that search.",
|
|
104
|
-
"Please be more specific by specifying the account, environment, and application name.",
|
|
105
|
-
"Matching applications: #{applications.map(&:name)}.",
|
|
106
|
-
]
|
|
107
|
-
if candidate_apps
|
|
108
|
-
error_msg << "applications on this environment: #{candidate_apps}"
|
|
109
|
-
end
|
|
110
|
-
raise Ey::Core::Cli::AmbiguousSearch.new(error_msg.join(" "))
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def unauthenticated_core_client
|
|
116
|
-
@unauthenticated_core_client ||= Ey::Core::Client.new(token: nil, url: core_url)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def core_client
|
|
120
|
-
@core_client ||= begin
|
|
121
|
-
opts = {url: core_url, config_file: self.class.core_file}
|
|
122
|
-
opts.merge!(token: ENV["CORE_TOKEN"]) if ENV["CORE_TOKEN"]
|
|
123
|
-
if ENV["DEBUG"]
|
|
124
|
-
opts[:logger] = ::Logger.new(STDOUT)
|
|
125
|
-
end
|
|
126
|
-
Ey::Core::Client.new(opts)
|
|
127
|
-
end
|
|
128
|
-
rescue RuntimeError => e
|
|
129
|
-
if legacy_token = e.message.match(/missing token/i) && eyrc_yaml["api_token"]
|
|
130
|
-
puts "Found legacy .eyrc token. Migrating to core file".green
|
|
131
|
-
write_core_yaml(legacy_token)
|
|
132
|
-
retry
|
|
133
|
-
elsif e.message.match(/missing token/i)
|
|
134
|
-
abort "Missing credentials: Run 'ey-core login' to retrieve your Engine Yard Cloud API token.".yellow
|
|
135
|
-
else
|
|
136
|
-
raise e
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def core_account
|
|
141
|
-
@_core_account ||= begin
|
|
142
|
-
if options[:account]
|
|
143
|
-
found = core_client.accounts.get(options[:account]) ||
|
|
144
|
-
core_client.users.current.accounts.first(name: options[:account])
|
|
145
|
-
if ENV["STAFF"]
|
|
146
|
-
found ||= core_client.accounts.first(name: options[:account])
|
|
147
|
-
end
|
|
148
|
-
unless found
|
|
149
|
-
account_not_found_error_message = "Couldn't find account '#{options[:account]}'"
|
|
150
|
-
if core_client.users.current.staff && !ENV["STAFF"]
|
|
151
|
-
account_not_found_error_message += " (set environment variable STAFF=1 to search all accounts)"
|
|
152
|
-
end
|
|
153
|
-
raise account_not_found_error_message
|
|
154
|
-
end
|
|
155
|
-
found
|
|
156
|
-
else
|
|
157
|
-
if core_accounts.size == 1
|
|
158
|
-
core_accounts.first
|
|
159
|
-
else
|
|
160
|
-
raise "Please specify --account (options: #{core_accounts.map(&:name).join(', ')})"
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def core_accounts
|
|
167
|
-
@_core_accounts ||= begin
|
|
168
|
-
if ENV["STAFF"]
|
|
169
|
-
core_client.accounts
|
|
170
|
-
else
|
|
171
|
-
core_client.users.current.accounts
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# Fetches a list of environments by given name or ID.
|
|
177
|
-
#
|
|
178
|
-
# @param environment_name_or_id [String] name or ID of environment.
|
|
179
|
-
#
|
|
180
|
-
# @return [Array<Ey::Core::Client::Environment>] list of environments.
|
|
181
|
-
def core_environments(environment_name_or_id)
|
|
182
|
-
core_client.environments.all(name: environment_name_or_id).tap do |result|
|
|
183
|
-
result << core_client.environments.get(environment_name_or_id) if result.empty?
|
|
184
|
-
end.to_a.compact
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
# Fetches a list of applications by given name or ID.
|
|
188
|
-
#
|
|
189
|
-
# @param application_name_or_id [String] name or ID of application.
|
|
190
|
-
#
|
|
191
|
-
# @return [Array<Ey::Core::Client::Environment>] list of environments.
|
|
192
|
-
def core_applications(application_name_or_id)
|
|
193
|
-
core_client.applications.all(name: application_name_or_id).tap do |result|
|
|
194
|
-
result << core_client.applications.get(application_name_or_id) if result.empty?
|
|
195
|
-
end.to_a.compact
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
# Fetches a list of environment variables available for current user.
|
|
199
|
-
#
|
|
200
|
-
# @return [Array<Ey::Core::Client::EnvironmentVariable>] list of environment variables.
|
|
201
|
-
def core_environment_variables
|
|
202
|
-
core_client.environment_variables
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
def write_core_yaml(token=nil)
|
|
206
|
-
core_yaml[core_url] = token if token
|
|
207
|
-
File.open(self.class.core_file, "w") {|file|
|
|
208
|
-
file.puts core_yaml.to_yaml
|
|
209
|
-
}
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
def eyrc_yaml
|
|
213
|
-
@eyrc_yaml ||= YAML.load_file(self.class.eyrc) || {}
|
|
214
|
-
rescue Errno::ENOENT # we don't really care if this doesn't exist
|
|
215
|
-
{}
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
def self.included(base)
|
|
219
|
-
base.extend(ClassMethods)
|
|
220
|
-
end
|
|
221
|
-
end
|
|
222
|
-
end
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
|
-
end
|
|
1
|
+
require 'colorize'
|
|
2
|
+
require 'ey-core/cli/errors'
|
|
3
|
+
|
|
4
|
+
module Ey
|
|
5
|
+
module Core
|
|
6
|
+
module Cli
|
|
7
|
+
module Helpers
|
|
8
|
+
module Core
|
|
9
|
+
module ClassMethods
|
|
10
|
+
def core_file
|
|
11
|
+
@core_file ||= File.expand_path("~/.ey-core")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def eyrc
|
|
15
|
+
@eyrc ||= File.expand_path("~/.eyrc")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def core_url
|
|
20
|
+
env_url = ENV["CORE_URL"] || ENV["CLOUD_URL"]
|
|
21
|
+
(env_url && File.join(env_url, '/')) || "https://api.engineyard.com/"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def longest_length_by_name(collection)
|
|
25
|
+
collection.map(&:name).group_by(&:size).max.last.length
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def core_yaml
|
|
29
|
+
@core_yaml ||= YAML.load_file(self.class.core_file) || {}
|
|
30
|
+
rescue Errno::ENOENT => e
|
|
31
|
+
puts "Creating #{self.class.core_file}".yellow
|
|
32
|
+
FileUtils.touch(self.class.core_file)
|
|
33
|
+
retry
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def operator(options)
|
|
37
|
+
if options[:account]
|
|
38
|
+
core_account
|
|
39
|
+
elsif ENV["STAFF"]
|
|
40
|
+
core_client
|
|
41
|
+
else
|
|
42
|
+
core_client.users.current
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def core_operator_and_environment_for(options={})
|
|
47
|
+
unless options[:environment]
|
|
48
|
+
raise "--environment is required (for a list of environments, try `ey-core environments`)"
|
|
49
|
+
end
|
|
50
|
+
operator = operator(options)
|
|
51
|
+
environment = nil
|
|
52
|
+
if options[:environment].to_i.to_s == options[:environment]
|
|
53
|
+
environment = operator.environments.get(options[:environment])
|
|
54
|
+
end
|
|
55
|
+
unless environment
|
|
56
|
+
candidate_envs = operator.environments.all(name: options[:environment])
|
|
57
|
+
if candidate_envs.size > 1
|
|
58
|
+
raise "Multiple matching environments found named '#{options[:environment]}', please specify --account"
|
|
59
|
+
else
|
|
60
|
+
environment = candidate_envs.first
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
unless environment
|
|
64
|
+
raise "environment '#{options[:environment]}' not found (for a list of environments, try `ey-core environments`)"
|
|
65
|
+
end
|
|
66
|
+
[operator, environment]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def core_environment_for(options={})
|
|
70
|
+
core_client.environments.get(options[:environment]) || core_client.environments.first(name: options[:environment])
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def core_server_for(options={})
|
|
74
|
+
operator = options.fetch(:operator, core_client)
|
|
75
|
+
operator.servers.get(options[:server]) || operator.servers.first(provisioned_id: options[:server])
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def core_application_for(environment, options={})
|
|
79
|
+
candidate_apps = nil
|
|
80
|
+
unless options[:app]
|
|
81
|
+
candidate_apps = environment.applications.map(&:name)
|
|
82
|
+
if candidate_apps.size == 1
|
|
83
|
+
options[:app] = candidate_apps.first
|
|
84
|
+
else
|
|
85
|
+
raise "--app is required (Candidate apps on environment #{environment.name}: #{candidate_apps.join(', ')})"
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
app = begin
|
|
90
|
+
Integer(options[:app])
|
|
91
|
+
rescue
|
|
92
|
+
options[:app]
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
if app.is_a?(Integer)
|
|
96
|
+
environment.applications.get(app)
|
|
97
|
+
else
|
|
98
|
+
applications = environment.applications.all(name: app)
|
|
99
|
+
if applications.count == 1
|
|
100
|
+
applications.first
|
|
101
|
+
else
|
|
102
|
+
error_msg = [
|
|
103
|
+
"Found multiple applications that matched that search.",
|
|
104
|
+
"Please be more specific by specifying the account, environment, and application name.",
|
|
105
|
+
"Matching applications: #{applications.map(&:name)}.",
|
|
106
|
+
]
|
|
107
|
+
if candidate_apps
|
|
108
|
+
error_msg << "applications on this environment: #{candidate_apps}"
|
|
109
|
+
end
|
|
110
|
+
raise Ey::Core::Cli::AmbiguousSearch.new(error_msg.join(" "))
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def unauthenticated_core_client
|
|
116
|
+
@unauthenticated_core_client ||= Ey::Core::Client.new(token: nil, url: core_url)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def core_client
|
|
120
|
+
@core_client ||= begin
|
|
121
|
+
opts = {url: core_url, config_file: self.class.core_file}
|
|
122
|
+
opts.merge!(token: ENV["CORE_TOKEN"]) if ENV["CORE_TOKEN"]
|
|
123
|
+
if ENV["DEBUG"]
|
|
124
|
+
opts[:logger] = ::Logger.new(STDOUT)
|
|
125
|
+
end
|
|
126
|
+
Ey::Core::Client.new(opts)
|
|
127
|
+
end
|
|
128
|
+
rescue RuntimeError => e
|
|
129
|
+
if legacy_token = e.message.match(/missing token/i) && eyrc_yaml["api_token"]
|
|
130
|
+
puts "Found legacy .eyrc token. Migrating to core file".green
|
|
131
|
+
write_core_yaml(legacy_token)
|
|
132
|
+
retry
|
|
133
|
+
elsif e.message.match(/missing token/i)
|
|
134
|
+
abort "Missing credentials: Run 'ey-core login' to retrieve your Engine Yard Cloud API token.".yellow
|
|
135
|
+
else
|
|
136
|
+
raise e
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def core_account
|
|
141
|
+
@_core_account ||= begin
|
|
142
|
+
if options[:account]
|
|
143
|
+
found = core_client.accounts.get(options[:account]) ||
|
|
144
|
+
core_client.users.current.accounts.first(name: options[:account])
|
|
145
|
+
if ENV["STAFF"]
|
|
146
|
+
found ||= core_client.accounts.first(name: options[:account])
|
|
147
|
+
end
|
|
148
|
+
unless found
|
|
149
|
+
account_not_found_error_message = "Couldn't find account '#{options[:account]}'"
|
|
150
|
+
if core_client.users.current.staff && !ENV["STAFF"]
|
|
151
|
+
account_not_found_error_message += " (set environment variable STAFF=1 to search all accounts)"
|
|
152
|
+
end
|
|
153
|
+
raise account_not_found_error_message
|
|
154
|
+
end
|
|
155
|
+
found
|
|
156
|
+
else
|
|
157
|
+
if core_accounts.size == 1
|
|
158
|
+
core_accounts.first
|
|
159
|
+
else
|
|
160
|
+
raise "Please specify --account (options: #{core_accounts.map(&:name).join(', ')})"
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def core_accounts
|
|
167
|
+
@_core_accounts ||= begin
|
|
168
|
+
if ENV["STAFF"]
|
|
169
|
+
core_client.accounts
|
|
170
|
+
else
|
|
171
|
+
core_client.users.current.accounts
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Fetches a list of environments by given name or ID.
|
|
177
|
+
#
|
|
178
|
+
# @param environment_name_or_id [String] name or ID of environment.
|
|
179
|
+
#
|
|
180
|
+
# @return [Array<Ey::Core::Client::Environment>] list of environments.
|
|
181
|
+
def core_environments(environment_name_or_id)
|
|
182
|
+
core_client.environments.all(name: environment_name_or_id).tap do |result|
|
|
183
|
+
result << core_client.environments.get(environment_name_or_id) if result.empty?
|
|
184
|
+
end.to_a.compact
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Fetches a list of applications by given name or ID.
|
|
188
|
+
#
|
|
189
|
+
# @param application_name_or_id [String] name or ID of application.
|
|
190
|
+
#
|
|
191
|
+
# @return [Array<Ey::Core::Client::Environment>] list of environments.
|
|
192
|
+
def core_applications(application_name_or_id)
|
|
193
|
+
core_client.applications.all(name: application_name_or_id).tap do |result|
|
|
194
|
+
result << core_client.applications.get(application_name_or_id) if result.empty?
|
|
195
|
+
end.to_a.compact
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Fetches a list of environment variables available for current user.
|
|
199
|
+
#
|
|
200
|
+
# @return [Array<Ey::Core::Client::EnvironmentVariable>] list of environment variables.
|
|
201
|
+
def core_environment_variables
|
|
202
|
+
core_client.environment_variables
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def write_core_yaml(token=nil)
|
|
206
|
+
core_yaml[core_url] = token if token
|
|
207
|
+
File.open(self.class.core_file, "w") {|file|
|
|
208
|
+
file.puts core_yaml.to_yaml
|
|
209
|
+
}
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def eyrc_yaml
|
|
213
|
+
@eyrc_yaml ||= YAML.load_file(self.class.eyrc) || {}
|
|
214
|
+
rescue Errno::ENOENT # we don't really care if this doesn't exist
|
|
215
|
+
{}
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def self.included(base)
|
|
219
|
+
base.extend(ClassMethods)
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
end
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
require 'colorize'
|
|
2
|
-
|
|
3
|
-
module Ey
|
|
4
|
-
module Core
|
|
5
|
-
module Cli
|
|
6
|
-
module Helpers
|
|
7
|
-
module Deprecated
|
|
8
|
-
# Class-level helpers pulled into an including class
|
|
9
|
-
module ClassMethods
|
|
10
|
-
|
|
11
|
-
# A helper for deprecating a Belafonte-based command
|
|
12
|
-
#
|
|
13
|
-
# @param deprecated_title [String] the title of the command
|
|
14
|
-
#
|
|
15
|
-
# @return [NilClass] this method is not expected to return a value
|
|
16
|
-
def deprecate(deprecated_title)
|
|
17
|
-
title deprecated_title
|
|
18
|
-
summary 'This command has been deprecated'
|
|
19
|
-
description <<-DESCRIPTION
|
|
20
|
-
The #{meta[:title]} command has been deprecated. We apologize for any inconvenience.
|
|
21
|
-
DESCRIPTION
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Module magic
|
|
26
|
-
# @api private
|
|
27
|
-
def self.included(base)
|
|
28
|
-
base.extend(ClassMethods)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Terminate the deprecated command with a message
|
|
32
|
-
def handle
|
|
33
|
-
abort "This command is deprecated".red
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
1
|
+
require 'colorize'
|
|
2
|
+
|
|
3
|
+
module Ey
|
|
4
|
+
module Core
|
|
5
|
+
module Cli
|
|
6
|
+
module Helpers
|
|
7
|
+
module Deprecated
|
|
8
|
+
# Class-level helpers pulled into an including class
|
|
9
|
+
module ClassMethods
|
|
10
|
+
|
|
11
|
+
# A helper for deprecating a Belafonte-based command
|
|
12
|
+
#
|
|
13
|
+
# @param deprecated_title [String] the title of the command
|
|
14
|
+
#
|
|
15
|
+
# @return [NilClass] this method is not expected to return a value
|
|
16
|
+
def deprecate(deprecated_title)
|
|
17
|
+
title deprecated_title
|
|
18
|
+
summary 'This command has been deprecated'
|
|
19
|
+
description <<-DESCRIPTION
|
|
20
|
+
The #{meta[:title]} command has been deprecated. We apologize for any inconvenience.
|
|
21
|
+
DESCRIPTION
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Module magic
|
|
26
|
+
# @api private
|
|
27
|
+
def self.included(base)
|
|
28
|
+
base.extend(ClassMethods)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Terminate the deprecated command with a message
|
|
32
|
+
def handle
|
|
33
|
+
abort "This command is deprecated".red
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
module Ey
|
|
2
|
-
module Core
|
|
3
|
-
module Cli
|
|
4
|
-
module Helpers
|
|
5
|
-
module LogStreaming
|
|
6
|
-
|
|
7
|
-
def stream_deploy_log(request)
|
|
8
|
-
if request.finished_at
|
|
9
|
-
return finished_request(request)
|
|
10
|
-
end
|
|
11
|
-
unless request.read_channel
|
|
12
|
-
puts "Unable to stream log (streaming not enabled for this deploy)".yellow
|
|
13
|
-
return
|
|
14
|
-
end
|
|
15
|
-
request.subscribe { |m| print m["message"] if m.is_a?(Hash) }
|
|
16
|
-
puts "" # fix console output from stream
|
|
17
|
-
finished_request(request)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def finished_request(request)
|
|
21
|
-
if request.successful
|
|
22
|
-
if request.resource.successful
|
|
23
|
-
puts "Deploy successful!".green
|
|
24
|
-
else
|
|
25
|
-
puts "Deploy failed!".red
|
|
26
|
-
end
|
|
27
|
-
else
|
|
28
|
-
abort <<-EOF
|
|
29
|
-
Deploy failed!
|
|
30
|
-
Request output:
|
|
31
|
-
#{request.message}
|
|
32
|
-
EOF
|
|
33
|
-
.red
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
1
|
+
module Ey
|
|
2
|
+
module Core
|
|
3
|
+
module Cli
|
|
4
|
+
module Helpers
|
|
5
|
+
module LogStreaming
|
|
6
|
+
|
|
7
|
+
def stream_deploy_log(request)
|
|
8
|
+
if request.finished_at
|
|
9
|
+
return finished_request(request)
|
|
10
|
+
end
|
|
11
|
+
unless request.read_channel
|
|
12
|
+
puts "Unable to stream log (streaming not enabled for this deploy)".yellow
|
|
13
|
+
return
|
|
14
|
+
end
|
|
15
|
+
request.subscribe { |m| print m["message"] if m.is_a?(Hash) }
|
|
16
|
+
puts "" # fix console output from stream
|
|
17
|
+
finished_request(request)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def finished_request(request)
|
|
21
|
+
if request.successful
|
|
22
|
+
if request.resource.successful
|
|
23
|
+
puts "Deploy successful!".green
|
|
24
|
+
else
|
|
25
|
+
puts "Deploy failed!".red
|
|
26
|
+
end
|
|
27
|
+
else
|
|
28
|
+
abort <<-EOF
|
|
29
|
+
Deploy failed!
|
|
30
|
+
Request output:
|
|
31
|
+
#{request.message}
|
|
32
|
+
EOF
|
|
33
|
+
.red
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|