ey-core 3.4.4 → 3.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/CHANGELOG.md +27 -5
- data/Gemfile +1 -2
- data/README.md +65 -8
- data/ey-core.gemspec +6 -5
- data/features/docker_registry_credentials.feature +21 -0
- data/features/environment_variables.feature +54 -0
- data/features/step_definitions/accounts_steps.rb +14 -0
- data/features/step_definitions/applications_steps.rb +7 -14
- data/features/step_definitions/docker_registry_credentials_steps.rb +3 -0
- data/features/step_definitions/environment_variables_steps.rb +51 -0
- data/features/step_definitions/environments_steps.rb +15 -0
- data/features/support/environment_variable_helpers.rb +20 -0
- data/features/support/mock_api.rb +0 -1
- data/features/support/resource_helpers.rb +12 -0
- data/lib/ey-core/cli/deploy.rb +12 -9
- data/lib/ey-core/cli/docker_registry_login.rb +29 -0
- data/lib/ey-core/cli/environment_variables.rb +71 -0
- data/lib/ey-core/cli/helpers/chef.rb +1 -1
- data/lib/ey-core/cli/helpers/core.rb +32 -3
- data/lib/ey-core/cli/helpers/server_sieve.rb +7 -0
- data/lib/ey-core/cli/main.rb +5 -4
- data/lib/ey-core/cli/servers.rb +35 -17
- data/lib/ey-core/cli/ssh.rb +6 -0
- data/lib/ey-core/client/mock.rb +4 -0
- data/lib/ey-core/client.rb +27 -0
- data/lib/ey-core/collections/auto_scaling_alarms.rb +8 -0
- data/lib/ey-core/collections/auto_scaling_policies.rb +33 -0
- data/lib/ey-core/collections/container_clusters.rb +9 -0
- data/lib/ey-core/collections/container_service_deployments.rb +17 -0
- data/lib/ey-core/collections/environment_variables.rb +8 -0
- data/lib/ey-core/models/account.rb +10 -0
- data/lib/ey-core/models/address.rb +2 -0
- data/lib/ey-core/models/application.rb +1 -0
- data/lib/ey-core/models/auto_scaling_alarm.rb +54 -0
- data/lib/ey-core/models/auto_scaling_group.rb +26 -0
- data/lib/ey-core/models/base_auto_scaling_policy.rb +61 -0
- data/lib/ey-core/models/container_service_deployment.rb +17 -0
- data/lib/ey-core/models/deployment.rb +1 -0
- data/lib/ey-core/models/environment.rb +53 -47
- data/lib/ey-core/models/environment_variable.rb +29 -0
- data/lib/ey-core/models/request.rb +4 -0
- data/lib/ey-core/models/simple_auto_scaling_policy.rb +24 -0
- data/lib/ey-core/models/step_auto_scaling_policy.rb +24 -0
- data/lib/ey-core/models/target_auto_scaling_policy.rb +24 -0
- data/lib/ey-core/requests/create_account.rb +5 -0
- data/lib/ey-core/requests/create_address.rb +1 -0
- data/lib/ey-core/requests/create_application.rb +8 -7
- data/lib/ey-core/requests/create_auto_scaling_alarm.rb +69 -0
- data/lib/ey-core/requests/create_auto_scaling_policy.rb +68 -0
- data/lib/ey-core/requests/create_environment.rb +2 -1
- data/lib/ey-core/requests/create_environment_variable.rb +39 -0
- data/lib/ey-core/requests/create_user.rb +8 -6
- data/lib/ey-core/requests/deploy_environment_application.rb +1 -0
- data/lib/ey-core/requests/destroy_auto_scaling_alarm.rb +49 -0
- data/lib/ey-core/requests/destroy_auto_scaling_policy.rb +49 -0
- data/lib/ey-core/requests/discover_container_service_deployments.rb +71 -0
- data/lib/ey-core/requests/get_applications.rb +1 -1
- data/lib/ey-core/requests/get_auto_scaling_alarm.rb +27 -0
- data/lib/ey-core/requests/get_auto_scaling_alarms.rb +34 -0
- data/lib/ey-core/requests/get_auto_scaling_policies.rb +46 -0
- data/lib/ey-core/requests/get_auto_scaling_policy.rb +27 -0
- data/lib/ey-core/requests/get_deployments.rb +1 -1
- data/lib/ey-core/requests/get_environment_variable.rb +19 -0
- data/lib/ey-core/requests/get_environment_variables.rb +29 -0
- data/lib/ey-core/requests/get_environments.rb +1 -1
- data/lib/ey-core/requests/get_ssl_certificate.rb +1 -1
- data/lib/ey-core/requests/retrieve_docker_registry_credentials.rb +24 -0
- data/lib/ey-core/requests/update_auto_scaling_alarm.rb +45 -0
- data/lib/ey-core/requests/update_auto_scaling_policy.rb +46 -0
- data/lib/ey-core/requests/update_environment_variable.rb +25 -0
- data/lib/ey-core/test_helpers/auto_scaling_helpers.rb +35 -0
- data/lib/ey-core/test_helpers.rb +2 -0
- data/lib/ey-core/version.rb +1 -1
- data/spec/addresses_spec.rb +2 -1
- data/spec/auto_scaling_alarms_spec.rb +40 -0
- data/spec/auto_scaling_policies_spec.rb +94 -0
- data/spec/docker_registry_credentials_spec.rb +16 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/support/core.rb +0 -2
- metadata +78 -18
@@ -45,7 +45,7 @@ module Ey
|
|
45
45
|
|
46
46
|
def core_operator_and_environment_for(options={})
|
47
47
|
unless options[:environment]
|
48
|
-
raise "--environment is required (for a list of environments, try `ey environments`)"
|
48
|
+
raise "--environment is required (for a list of environments, try `ey-core environments`)"
|
49
49
|
end
|
50
50
|
operator = operator(options)
|
51
51
|
environment = nil
|
@@ -61,7 +61,7 @@ module Ey
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
unless environment
|
64
|
-
raise "environment '#{options[:environment]}' not found (for a list of environments, try `ey environments`)"
|
64
|
+
raise "environment '#{options[:environment]}' not found (for a list of environments, try `ey-core environments`)"
|
65
65
|
end
|
66
66
|
[operator, environment]
|
67
67
|
end
|
@@ -131,7 +131,7 @@ module Ey
|
|
131
131
|
write_core_yaml(legacy_token)
|
132
132
|
retry
|
133
133
|
elsif e.message.match(/missing token/i)
|
134
|
-
abort "Missing credentials: Run 'ey login' to retrieve your Engine Yard Cloud API token.".yellow
|
134
|
+
abort "Missing credentials: Run 'ey-core login' to retrieve your Engine Yard Cloud API token.".yellow
|
135
135
|
else
|
136
136
|
raise e
|
137
137
|
end
|
@@ -173,6 +173,35 @@ module Ey
|
|
173
173
|
end
|
174
174
|
end
|
175
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
|
+
|
176
205
|
def write_core_yaml(token=nil)
|
177
206
|
core_yaml[core_url] = token if token
|
178
207
|
File.open(self.class.core_file, "w") {|file|
|
@@ -6,6 +6,7 @@ module Ey
|
|
6
6
|
ROLES = [
|
7
7
|
:app_servers,
|
8
8
|
:db_servers,
|
9
|
+
:app_master,
|
9
10
|
:db_master,
|
10
11
|
:utilities
|
11
12
|
]
|
@@ -56,6 +57,12 @@ module Ey
|
|
56
57
|
def db_servers
|
57
58
|
db_master + servers_api.all(role: 'db_slave').to_a
|
58
59
|
end
|
60
|
+
|
61
|
+
def app_master
|
62
|
+
['app_master', 'solo'].
|
63
|
+
map {|role| servers_api.all(role:role).to_a}.
|
64
|
+
flatten
|
65
|
+
end
|
59
66
|
|
60
67
|
def db_master
|
61
68
|
['db_master', 'solo'].
|
data/lib/ey-core/cli/main.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#require 'ostruct'
|
3
3
|
#require 'ey-core'
|
4
4
|
require 'ey-core/cli'
|
5
|
-
require '
|
5
|
+
require 'amazing_print'
|
6
6
|
require 'belafonte'
|
7
7
|
require 'rubygems/package'
|
8
8
|
require 'escape'
|
@@ -13,7 +13,9 @@ require 'ey-core/cli/applications'
|
|
13
13
|
require 'ey-core/cli/console'
|
14
14
|
require 'ey-core/cli/current_user'
|
15
15
|
require 'ey-core/cli/deploy'
|
16
|
+
require 'ey-core/cli/docker_registry_login'
|
16
17
|
require 'ey-core/cli/environments'
|
18
|
+
require 'ey-core/cli/environment_variables'
|
17
19
|
require 'ey-core/cli/help'
|
18
20
|
require 'ey-core/cli/init'
|
19
21
|
require 'ey-core/cli/login'
|
@@ -29,9 +31,6 @@ require 'ey-core/cli/version'
|
|
29
31
|
require 'ey-core/cli/web'
|
30
32
|
require 'ey-core/cli/whoami'
|
31
33
|
|
32
|
-
Cistern.formatter = Cistern::Formatter::AwesomePrint
|
33
|
-
|
34
|
-
|
35
34
|
module Ey
|
36
35
|
module Core
|
37
36
|
module Cli
|
@@ -44,7 +43,9 @@ module Ey
|
|
44
43
|
mount Console
|
45
44
|
mount CurrentUser
|
46
45
|
mount Deploy
|
46
|
+
mount DockerRegistryLogin
|
47
47
|
mount Environments
|
48
|
+
mount EnvironmentVariables
|
48
49
|
mount Help
|
49
50
|
mount Init
|
50
51
|
mount Login
|
data/lib/ey-core/cli/servers.rb
CHANGED
@@ -4,36 +4,54 @@ module Ey
|
|
4
4
|
module Core
|
5
5
|
module Cli
|
6
6
|
class Servers < Subcommand
|
7
|
-
title
|
8
|
-
summary
|
7
|
+
title 'servers'
|
8
|
+
summary 'List servers you have access to'
|
9
9
|
|
10
10
|
option :account,
|
11
11
|
short: 'c',
|
12
12
|
long: 'account',
|
13
13
|
description: 'Filter by account name or id',
|
14
|
-
argument: '
|
14
|
+
argument: 'account'
|
15
15
|
|
16
16
|
option :environment,
|
17
|
-
short:
|
18
|
-
long:
|
19
|
-
description:
|
20
|
-
argument:
|
17
|
+
short: 'e',
|
18
|
+
long: 'environment',
|
19
|
+
description: 'Filter by environment.',
|
20
|
+
argument: 'environment'
|
21
|
+
|
22
|
+
option :role,
|
23
|
+
short: 'r',
|
24
|
+
long: 'role',
|
25
|
+
description: 'Filter by server role.',
|
26
|
+
argument: 'role'
|
21
27
|
|
22
28
|
def handle
|
23
|
-
puts TablePrint::Printer.
|
24
|
-
|
25
|
-
|
29
|
+
puts TablePrint::Printer.new(
|
30
|
+
servers,
|
31
|
+
[
|
32
|
+
{ id: { width: 10 } },
|
33
|
+
:role,
|
34
|
+
:provisioned_id,
|
35
|
+
{ public_hostname: { width: 50 } },
|
36
|
+
:name,
|
37
|
+
]
|
38
|
+
).table_print
|
26
39
|
end
|
27
40
|
|
28
41
|
private
|
29
42
|
def servers
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
43
|
+
filter_opts = {}
|
44
|
+
|
45
|
+
operator =
|
46
|
+
if option(:environment)
|
47
|
+
core_account.environments.first(name: option(:environment))
|
48
|
+
else
|
49
|
+
filter_opts[:account] = core_account.id if option(:account)
|
50
|
+
core_client
|
51
|
+
end
|
52
|
+
|
53
|
+
filter_opts[:role] = option(:role).split(',') if option(:role)
|
54
|
+
operator ? operator.servers.all(filter_opts) : nil
|
37
55
|
end
|
38
56
|
end
|
39
57
|
end
|
data/lib/ey-core/cli/ssh.rb
CHANGED
@@ -54,6 +54,10 @@ module Ey
|
|
54
54
|
long: "app_servers",
|
55
55
|
description: "Run command on all application servers"
|
56
56
|
|
57
|
+
switch :app_master,
|
58
|
+
long: "app_master",
|
59
|
+
description: "Run command on app master"
|
60
|
+
|
57
61
|
switch :db_servers,
|
58
62
|
long: "db_servers",
|
59
63
|
description: "Run command on all database servers"
|
@@ -97,6 +101,7 @@ module Ey
|
|
97
101
|
environment.servers,
|
98
102
|
all: switch_active?(:all),
|
99
103
|
app_servers: switch_active?(:app_servers),
|
104
|
+
app_master: switch_active?(:app_master),
|
100
105
|
db_servers: switch_active?(:db_servers),
|
101
106
|
db_master: switch_active?(:db_master),
|
102
107
|
utilities: option(:utilities)
|
@@ -113,6 +118,7 @@ module Ey
|
|
113
118
|
environment.servers,
|
114
119
|
all: switch_active?(:all),
|
115
120
|
app_servers: switch_active?(:app_servers),
|
121
|
+
app_master: switch_active?(:app_master),
|
116
122
|
db_servers: switch_active?(:db_servers),
|
117
123
|
db_master: switch_active?(:db_master),
|
118
124
|
utilities: option(:utilities)
|
data/lib/ey-core/client/mock.rb
CHANGED
@@ -116,7 +116,9 @@ class Ey::Core::Client::Mock
|
|
116
116
|
:application_archives => {},
|
117
117
|
:application_deployments => {},
|
118
118
|
:applications => {},
|
119
|
+
:auto_scaling_alarms => {},
|
119
120
|
:auto_scaling_groups => {},
|
121
|
+
:auto_scaling_policies => {},
|
120
122
|
:backup_files => {},
|
121
123
|
:backups => {},
|
122
124
|
:billing => {},
|
@@ -125,6 +127,7 @@ class Ey::Core::Client::Mock
|
|
125
127
|
:components => components,
|
126
128
|
:contact_assignments => [],
|
127
129
|
:contacts => {},
|
130
|
+
:container_service_deployments => {},
|
128
131
|
:costs => [],
|
129
132
|
:database_plan_usages => Hash.new { |h1,k1| h1[k1] = {} },
|
130
133
|
:database_server_firewalls => [],
|
@@ -137,6 +140,7 @@ class Ey::Core::Client::Mock
|
|
137
140
|
:deployments => {},
|
138
141
|
:environment_plan_usages => Hash.new { |h1,k1| h1[k1] = {} },
|
139
142
|
:environments => {},
|
143
|
+
:environment_variables => {},
|
140
144
|
:features => {},
|
141
145
|
:firewall_rules => {},
|
142
146
|
:firewalls => {},
|
data/lib/ey-core/client.rb
CHANGED
@@ -14,11 +14,14 @@ class Ey::Core::Client < Cistern::Service
|
|
14
14
|
collection :application_archives
|
15
15
|
collection :application_deployments
|
16
16
|
collection :applications
|
17
|
+
collection :auto_scaling_alarms
|
17
18
|
collection :auto_scaling_groups
|
19
|
+
collection :auto_scaling_policies
|
18
20
|
collection :backup_files
|
19
21
|
collection :blueprints
|
20
22
|
collection :components
|
21
23
|
collection :contacts
|
24
|
+
collection :container_service_deployments
|
22
25
|
collection :costs
|
23
26
|
collection :database_plan_usages
|
24
27
|
collection :database_server_revisions
|
@@ -29,6 +32,7 @@ class Ey::Core::Client < Cistern::Service
|
|
29
32
|
collection :deployments
|
30
33
|
collection :environment_plan_usages
|
31
34
|
collection :environments
|
35
|
+
collection :environment_variables
|
32
36
|
collection :features
|
33
37
|
collection :firewall_rules
|
34
38
|
collection :firewalls
|
@@ -71,12 +75,15 @@ class Ey::Core::Client < Cistern::Service
|
|
71
75
|
model :application
|
72
76
|
model :application_archive
|
73
77
|
model :application_deployment
|
78
|
+
model :auto_scaling_alarm
|
74
79
|
model :auto_scaling_group
|
75
80
|
model :backup_file
|
81
|
+
model :base_auto_scaling_policy
|
76
82
|
model :billing
|
77
83
|
model :blueprint
|
78
84
|
model :component
|
79
85
|
model :contact
|
86
|
+
model :container_service_deployment
|
80
87
|
model :cost
|
81
88
|
model :database_plan_usage
|
82
89
|
model :database_server
|
@@ -87,6 +94,7 @@ class Ey::Core::Client < Cistern::Service
|
|
87
94
|
model :deployment
|
88
95
|
model :environment
|
89
96
|
model :environment_plan_usage
|
97
|
+
model :environment_variable
|
90
98
|
model :feature
|
91
99
|
model :firewall
|
92
100
|
model :firewall_rule
|
@@ -109,10 +117,13 @@ class Ey::Core::Client < Cistern::Service
|
|
109
117
|
model :server_event
|
110
118
|
model :server_usage
|
111
119
|
model :service
|
120
|
+
model :simple_auto_scaling_policy
|
112
121
|
model :ssl_certificate
|
122
|
+
model :step_auto_scaling_policy
|
113
123
|
model :storage
|
114
124
|
model :storage_user
|
115
125
|
model :support_trial
|
126
|
+
model :target_auto_scaling_policy
|
116
127
|
model :task
|
117
128
|
model :token
|
118
129
|
model :untracked_address
|
@@ -136,12 +147,14 @@ class Ey::Core::Client < Cistern::Service
|
|
136
147
|
request :create_alert
|
137
148
|
request :create_application
|
138
149
|
request :create_application_archive
|
150
|
+
request :create_auto_scaling_alarm
|
139
151
|
request :create_auto_scaling_group
|
140
152
|
request :create_backup_file
|
141
153
|
request :create_database_server
|
142
154
|
request :create_database_service
|
143
155
|
request :create_database_service_snapshot
|
144
156
|
request :create_environment
|
157
|
+
request :create_environment_variable
|
145
158
|
request :create_firewall
|
146
159
|
request :create_firewall_rule
|
147
160
|
request :create_keypair
|
@@ -154,6 +167,7 @@ class Ey::Core::Client < Cistern::Service
|
|
154
167
|
request :create_password_reset
|
155
168
|
request :create_provider
|
156
169
|
request :create_server
|
170
|
+
request :create_auto_scaling_policy
|
157
171
|
request :create_ssl_certificate
|
158
172
|
request :create_storage
|
159
173
|
request :create_storage_user
|
@@ -165,6 +179,7 @@ class Ey::Core::Client < Cistern::Service
|
|
165
179
|
request :deploy_environment_application
|
166
180
|
request :deprovision_environment
|
167
181
|
request :destroy_addon
|
182
|
+
request :destroy_auto_scaling_alarm
|
168
183
|
request :destroy_auto_scaling_group
|
169
184
|
request :destroy_blueprint
|
170
185
|
request :destroy_database_server
|
@@ -177,12 +192,14 @@ class Ey::Core::Client < Cistern::Service
|
|
177
192
|
request :destroy_logical_database
|
178
193
|
request :destroy_provider
|
179
194
|
request :destroy_server
|
195
|
+
request :destroy_auto_scaling_policy
|
180
196
|
request :destroy_ssl_certificate
|
181
197
|
request :destroy_storage
|
182
198
|
request :destroy_storage_user
|
183
199
|
request :destroy_user
|
184
200
|
request :detach_address
|
185
201
|
request :disable_feature
|
202
|
+
request :discover_container_service_deployments
|
186
203
|
request :discover_database_server
|
187
204
|
request :discover_database_server_snapshots
|
188
205
|
request :discover_provider_location
|
@@ -208,6 +225,8 @@ class Ey::Core::Client < Cistern::Service
|
|
208
225
|
request :get_application_deployment
|
209
226
|
request :get_application_deployments
|
210
227
|
request :get_applications
|
228
|
+
request :get_auto_scaling_alarm
|
229
|
+
request :get_auto_scaling_alarms
|
211
230
|
request :get_auto_scaling_group
|
212
231
|
request :get_auto_scaling_groups
|
213
232
|
request :get_backup_file
|
@@ -236,6 +255,8 @@ class Ey::Core::Client < Cistern::Service
|
|
236
255
|
request :get_environment_database_services
|
237
256
|
request :get_environment_logical_databases
|
238
257
|
request :get_environment_plan_usages
|
258
|
+
request :get_environment_variable
|
259
|
+
request :get_environment_variables
|
239
260
|
request :get_environments
|
240
261
|
request :get_feature
|
241
262
|
request :get_features
|
@@ -278,6 +299,8 @@ class Ey::Core::Client < Cistern::Service
|
|
278
299
|
request :get_server_events
|
279
300
|
request :get_server_usages
|
280
301
|
request :get_servers
|
302
|
+
request :get_auto_scaling_policy
|
303
|
+
request :get_auto_scaling_policies
|
281
304
|
request :get_ssl_certificate
|
282
305
|
request :get_ssl_certificates
|
283
306
|
request :get_storage
|
@@ -301,6 +324,7 @@ class Ey::Core::Client < Cistern::Service
|
|
301
324
|
request :reset_password
|
302
325
|
request :reset_server_state
|
303
326
|
request :restart_environment_app_servers
|
327
|
+
request :retrieve_docker_registry_credentials
|
304
328
|
request :run_cluster_application_action
|
305
329
|
request :run_environment_application_action
|
306
330
|
request :signup
|
@@ -312,10 +336,13 @@ class Ey::Core::Client < Cistern::Service
|
|
312
336
|
request :update_address
|
313
337
|
request :update_alert
|
314
338
|
request :update_application_archive
|
339
|
+
request :update_auto_scaling_alarm
|
315
340
|
request :update_auto_scaling_group
|
341
|
+
request :update_auto_scaling_policy
|
316
342
|
request :update_billing
|
317
343
|
request :update_blueprint
|
318
344
|
request :update_environment
|
345
|
+
request :update_environment_variable
|
319
346
|
request :update_membership
|
320
347
|
request :update_provider_location
|
321
348
|
request :update_server
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class Ey::Core::Client::AutoScalingAlarms < Ey::Core::Collection
|
2
|
+
model Ey::Core::Client::AutoScalingAlarm
|
3
|
+
|
4
|
+
self.model_root = "auto_scaling_alarm"
|
5
|
+
self.model_request = :get_auto_scaling_alarm
|
6
|
+
self.collection_root = "auto_scaling_alarms"
|
7
|
+
self.collection_request = :get_auto_scaling_alarms
|
8
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class Ey::Core::Client::AutoScalingPolicies < Ey::Core::Collection
|
2
|
+
model Ey::Core::Client::BaseAutoScalingPolicy
|
3
|
+
|
4
|
+
MODELS_TO_TYPE = {
|
5
|
+
"simple" => Ey::Core::Client::SimpleAutoScalingPolicy,
|
6
|
+
"step" => Ey::Core::Client::StepAutoScalingPolicy,
|
7
|
+
"target" => Ey::Core::Client::TargetAutoScalingPolicy
|
8
|
+
}.freeze
|
9
|
+
|
10
|
+
self.model_root = "auto_scaling_policy"
|
11
|
+
self.model_request = :get_auto_scaling_policy
|
12
|
+
self.collection_root = "auto_scaling_policies"
|
13
|
+
self.collection_request = :get_auto_scaling_policies
|
14
|
+
|
15
|
+
def new(attributes = {})
|
16
|
+
unless attributes.is_a?(::Hash)
|
17
|
+
raise(ArgumentError.new("Initialization parameters must be an attributes hash, got #{attributes.class} #{attributes.inspect}"))
|
18
|
+
end
|
19
|
+
|
20
|
+
params = Cistern::Hash.stringify_keys(attributes)
|
21
|
+
type = params["type"] ||= "simple"
|
22
|
+
model = MODELS_TO_TYPE[type]
|
23
|
+
unless model
|
24
|
+
raise(ArgumentError.new("Unrecognized policy type #{type}. Allowed types are: #{MODELS_TO_TYPE.keys.join(', ')}"))
|
25
|
+
end
|
26
|
+
model.new(
|
27
|
+
{
|
28
|
+
:collection => self,
|
29
|
+
:connection => connection,
|
30
|
+
}.merge(params)
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class Ey::Core::Client::ContainerClusters < Ey::Core::Collection
|
2
|
+
|
3
|
+
model Ey::Core::Client::ContainerCluster
|
4
|
+
|
5
|
+
self.model_root = "container_cluster"
|
6
|
+
self.model_request = :get_container_cluster
|
7
|
+
self.collection_root = "container_clusters"
|
8
|
+
self.collection_request = :get_container_clusters
|
9
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Ey::Core::Client::ContainerServiceDeployments < Ey::Core::Collection
|
2
|
+
|
3
|
+
model Ey::Core::Client::ContainerServiceDeployment
|
4
|
+
|
5
|
+
self.model_root = "container_service_deployment"
|
6
|
+
self.model_request = :get_container_service_deployment
|
7
|
+
self.collection_root = "container_service_deployments"
|
8
|
+
self.collection_request = :get_container_service_deployments
|
9
|
+
|
10
|
+
def discover(task_definition_arn)
|
11
|
+
params = {
|
12
|
+
"task_definition_arn" => task_definition_arn
|
13
|
+
}
|
14
|
+
|
15
|
+
connection.requests.new(connection.discover_container_service_deployments(params).body["request"])
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class Ey::Core::Client::EnvironmentVariables < Ey::Core::Collection
|
2
|
+
model Ey::Core::Client::EnvironmentVariable
|
3
|
+
|
4
|
+
self.model_root = "environment_variable"
|
5
|
+
self.model_request = :get_environment_variable
|
6
|
+
self.collection_root = "environment_variables"
|
7
|
+
self.collection_request = :get_environment_variables
|
8
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'hashie'
|
2
|
+
|
1
3
|
class Ey::Core::Client::Account < Ey::Core::Model
|
2
4
|
extend Ey::Core::Associations
|
3
5
|
|
@@ -67,4 +69,12 @@ class Ey::Core::Client::Account < Ey::Core::Model
|
|
67
69
|
else raise NotImplementedError # update
|
68
70
|
end
|
69
71
|
end
|
72
|
+
|
73
|
+
# Get authorization data for an Amazon ECR registry.
|
74
|
+
# @param [String] location_id Aws region
|
75
|
+
# @return [Hashie::Mash]
|
76
|
+
def retrieve_docker_registry_credentials(location_id)
|
77
|
+
result = self.connection.retrieve_docker_registry_credentials(self.id, location_id).body
|
78
|
+
::Hashie::Mash.new(result['docker_registry_credentials'])
|
79
|
+
end
|
70
80
|
end
|
@@ -7,6 +7,7 @@ class Ey::Core::Client::Address < Ey::Core::Model
|
|
7
7
|
attribute :ip_address
|
8
8
|
attribute :provisioned_id
|
9
9
|
attribute :location
|
10
|
+
attribute :scope
|
10
11
|
attribute :disappeared_at, type: :time
|
11
12
|
|
12
13
|
has_one :provider
|
@@ -37,6 +38,7 @@ class Ey::Core::Client::Address < Ey::Core::Model
|
|
37
38
|
"provider" => self.provider_id,
|
38
39
|
"address" => {
|
39
40
|
"location" => self.location,
|
41
|
+
"scope" => self.scope,
|
40
42
|
},
|
41
43
|
}
|
42
44
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class Ey::Core::Client::AutoScalingAlarm < Ey::Core::Model
|
2
|
+
extend Ey::Core::Associations
|
3
|
+
|
4
|
+
identity :id
|
5
|
+
|
6
|
+
attribute :deleted_at, type: :time
|
7
|
+
attribute :created_at, type: :time
|
8
|
+
attribute :updated_at, type: :time
|
9
|
+
attribute :auto_scaling_policy_id, aliases: "auto_scaling_policy", squash: ["id"]
|
10
|
+
attribute :name
|
11
|
+
attribute :aggregation_type
|
12
|
+
attribute :metric_type
|
13
|
+
attribute :operand
|
14
|
+
attribute :trigger_value, type: :float
|
15
|
+
attribute :number_of_periods, type: :integer
|
16
|
+
attribute :period_length, type: :integer
|
17
|
+
attribute :provisioned_id
|
18
|
+
|
19
|
+
has_one :auto_scaling_policy
|
20
|
+
|
21
|
+
def save!
|
22
|
+
requires :auto_scaling_policy_id, :trigger_value, :period_length
|
23
|
+
params = {
|
24
|
+
"auto_scaling_alarm" => {
|
25
|
+
"name" => name,
|
26
|
+
"trigger_value" => trigger_value,
|
27
|
+
"aggregation_type" => aggregation_type,
|
28
|
+
"metric_type" => metric_type,
|
29
|
+
"operand" => operand,
|
30
|
+
"period_length" => period_length,
|
31
|
+
"number_of_periods" => number_of_periods
|
32
|
+
},
|
33
|
+
"auto_scaling_policy_id" => auto_scaling_policy_id
|
34
|
+
}
|
35
|
+
|
36
|
+
if new_record?
|
37
|
+
requires :name
|
38
|
+
request_attributes = connection.create_auto_scaling_alarm(params).body["request"]
|
39
|
+
connection.requests.new(request_attributes)
|
40
|
+
else
|
41
|
+
requires :identity
|
42
|
+
params.merge!("id" => identity)
|
43
|
+
connection.requests.new(connection.update_auto_scaling_alarm(params).body["request"])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def destroy!
|
48
|
+
requires :identity
|
49
|
+
|
50
|
+
connection.requests.new(
|
51
|
+
connection.destroy_auto_scaling_alarm("id" => identity).body["request"]
|
52
|
+
)
|
53
|
+
end
|
54
|
+
end
|
@@ -10,6 +10,8 @@ class Ey::Core::Client::AutoScalingGroup < Ey::Core::Model
|
|
10
10
|
attribute :minimum_size
|
11
11
|
attribute :maximum_size
|
12
12
|
attribute :desired_capacity
|
13
|
+
attribute :default_cooldown
|
14
|
+
attribute :grace_period
|
13
15
|
|
14
16
|
has_one :environment
|
15
17
|
|
@@ -46,4 +48,28 @@ class Ey::Core::Client::AutoScalingGroup < Ey::Core::Model
|
|
46
48
|
connection.requests.new(connection.update_auto_scaling_group(params).body["request"])
|
47
49
|
end
|
48
50
|
end
|
51
|
+
|
52
|
+
def simple_auto_scaling_policies
|
53
|
+
auto_scaling_policies("simple")
|
54
|
+
end
|
55
|
+
|
56
|
+
def step_auto_scaling_policies
|
57
|
+
auto_scaling_policies("step")
|
58
|
+
end
|
59
|
+
|
60
|
+
def target_auto_scaling_policies
|
61
|
+
auto_scaling_policies("target")
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def auto_scaling_policies(types = nil)
|
67
|
+
requires :identity
|
68
|
+
data = connection.get_auto_scaling_policies(
|
69
|
+
"auto_scaling_group" => identity,
|
70
|
+
"types" => [*types]
|
71
|
+
).body["auto_scaling_policies"]
|
72
|
+
|
73
|
+
connection.auto_scaling_policies.load(data)
|
74
|
+
end
|
49
75
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
class Ey::Core::Client::BaseAutoScalingPolicy < Ey::Core::Model
|
2
|
+
extend Ey::Core::Associations
|
3
|
+
|
4
|
+
identity :id, type: :integer
|
5
|
+
|
6
|
+
attribute :provisioned_id
|
7
|
+
attribute :provisioner_id
|
8
|
+
attribute :type
|
9
|
+
attribute :name
|
10
|
+
attribute :configuration
|
11
|
+
attribute :auto_scaling_group_id
|
12
|
+
|
13
|
+
has_one :auto_scaling_group
|
14
|
+
|
15
|
+
def save!
|
16
|
+
requires :auto_scaling_group_id, :type
|
17
|
+
params = {
|
18
|
+
"url" => self.collection.url,
|
19
|
+
"auto_scaling_policy" => {
|
20
|
+
"name" => self.name
|
21
|
+
}.merge(policy_params),
|
22
|
+
"auto_scaling_group_id" => self.auto_scaling_group_id
|
23
|
+
}
|
24
|
+
|
25
|
+
if new_record?
|
26
|
+
policy_requires
|
27
|
+
requires :name
|
28
|
+
connection.requests.new(connection.create_auto_scaling_policy(params).body["request"])
|
29
|
+
else
|
30
|
+
requires :identity
|
31
|
+
params.merge("id" => identity)
|
32
|
+
connection.requests.new(connection.update_auto_scaling_policy(params).body["request"])
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def destroy!
|
37
|
+
connection.requests.new(
|
38
|
+
self.connection.destroy_auto_scaling_policy("id" => self.id).body["request"]
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def alarm
|
43
|
+
requires :identity
|
44
|
+
|
45
|
+
data = self.connection.get_auto_scaling_alarms(
|
46
|
+
"auto_scaling_policy_id" => identity
|
47
|
+
).body["auto_scaling_alarms"]
|
48
|
+
|
49
|
+
self.connection.auto_scaling_alarms.load(data).first
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def policy_params
|
55
|
+
raise NotImplementedError
|
56
|
+
end
|
57
|
+
|
58
|
+
def policy_requires
|
59
|
+
raise NotImplementedError
|
60
|
+
end
|
61
|
+
end
|