cap-rightscale 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/cap-rightscale.gemspec +3 -1
- data/lib/cap-rightscale/configuration/rightscale.rb +59 -17
- data/lib/cap-rightscale/recipes/rightscale.rb +11 -0
- data/rsapiconfig.yml.sample +3 -0
- metadata +5 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/cap-rightscale.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cap-rightscale}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Satoshi Ohki"]
|
@@ -33,8 +33,10 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/cap-rightscale/configuration.rb",
|
34
34
|
"lib/cap-rightscale/configuration/rightscale.rb",
|
35
35
|
"lib/cap-rightscale/recipes.rb",
|
36
|
+
"lib/cap-rightscale/recipes/rightscale.rb",
|
36
37
|
"lib/cap-rightscale/recipes/rightscale/cache.rb",
|
37
38
|
"lib/cap-rightscale/utils/rs_utils.rb",
|
39
|
+
"rsapiconfig.yml.sample",
|
38
40
|
"spec/cap-rightscale_spec.rb",
|
39
41
|
"spec/spec_helper.rb"
|
40
42
|
]
|
@@ -4,7 +4,7 @@ require 'ping'
|
|
4
4
|
module Capistrano
|
5
5
|
class Configuration
|
6
6
|
module RightScale
|
7
|
-
attr_writer :validate_echo, :use_nickname, :use_public_ip
|
7
|
+
attr_writer :validate_echo, :use_nickname, :use_public_ip, :use_rs_cache
|
8
8
|
|
9
9
|
def get_rs_confpath
|
10
10
|
@rs_confpath ||= File.join(ENV['HOME'], ".rsconf", "rsapiconfig.yml")
|
@@ -55,20 +55,20 @@ start = Time.now
|
|
55
55
|
|
56
56
|
params.delete(:array_id) # remove rightscale's parameters
|
57
57
|
|
58
|
-
host_list = get_server_cache(role) # Get cache
|
58
|
+
host_list = use_rs_cache ? get_server_cache(role) : [] # Get cache
|
59
59
|
|
60
60
|
if host_list && host_list.size > 0
|
61
61
|
logger.info("restore cache of servers:\n#{host_list.pretty_inspect}")
|
62
62
|
role(role, params) { host_list } # set cache to role()
|
63
63
|
else
|
64
64
|
# Request RightScale API
|
65
|
-
array =
|
65
|
+
array = rs_array(_array_id)
|
66
66
|
logger.info("querying rightscale for server_array #{array.nickname}...")
|
67
|
-
dept =
|
67
|
+
dept = rs_deployment(array.deployment_href.match(/[0-9]+$/).to_s, :server_settings => 'true')
|
68
68
|
deployment_name = dept.nickname
|
69
69
|
logger.info("Deployment #{deployment_name}:")
|
70
70
|
|
71
|
-
host_list =
|
71
|
+
host_list = rs_array_instances(array.id).select {|i| i[:state] == "operational"}.map do |instance|
|
72
72
|
hostname = instance[:nickname].sub(/ #[0-9]+$/, "-%03d" % instance[:nickname].match(/[0-9]+$/).to_s.to_i)
|
73
73
|
hostname << ".#{_domain}" if _domain
|
74
74
|
ip = use_public_ip ? instance[:ip_address] : instance[:private_ip_address]
|
@@ -83,7 +83,7 @@ start = Time.now
|
|
83
83
|
|
84
84
|
if host_list && host_list.size > 0
|
85
85
|
role(role, params) { host_list }
|
86
|
-
dump_server_cache(role, host_list) # Dump cache
|
86
|
+
dump_server_cache(role, host_list) if use_rs_cache # Dump cache
|
87
87
|
end
|
88
88
|
end
|
89
89
|
puts "Time: #{Time.now - start}"
|
@@ -114,14 +114,14 @@ start = Time.now
|
|
114
114
|
params.delete(:deployment)
|
115
115
|
params.delete(:name_prefix) if params.has_key?(:name_prefix)
|
116
116
|
|
117
|
-
host_list = get_server_cache(role) # Get cache
|
117
|
+
host_list = use_rs_cache ? get_server_cache(role) : [] # Get cache
|
118
118
|
|
119
119
|
if host_list && host_list.size > 0
|
120
120
|
logger.info("restore cache of servers:\n#{host_list.pretty_inspect}")
|
121
121
|
role(role, params) { host_list } # set cache to role()
|
122
122
|
else
|
123
123
|
# Request RightScale API
|
124
|
-
dept =
|
124
|
+
dept = rs_deployment(_dept_id, :server_settings => 'true')
|
125
125
|
logger.info("querying rightscale for servers #{_name_prefix} in deployment #{dept.nickname}...")
|
126
126
|
srvs = dept.servers.select {|s| s[:state] == "operational"}
|
127
127
|
srvs = srvs.select {|s| /#{_name_prefix}/ =~ s[:nickname]} if _name_prefix
|
@@ -141,7 +141,7 @@ start = Time.now
|
|
141
141
|
|
142
142
|
if host_list && host_list.size > 0
|
143
143
|
role(role, params) { host_list }
|
144
|
-
dump_server_cache(role, host_list) # Dump cache
|
144
|
+
dump_server_cache(role, host_list) if use_rs_cache # Dump cache
|
145
145
|
end
|
146
146
|
end
|
147
147
|
puts "Time: #{Time.now - start}"
|
@@ -173,14 +173,14 @@ start = Time.now
|
|
173
173
|
params.delete(:deployment)
|
174
174
|
params.delete(:tags)
|
175
175
|
|
176
|
-
host_list = get_server_cache(role) # Get cache
|
176
|
+
host_list = use_rs_cache ? get_server_cache(role) : [] # Get cache
|
177
177
|
|
178
178
|
if host_list && host_list.size > 0
|
179
179
|
logger.info("restore cache of servers:\n#{host_list.pretty_inspect}")
|
180
180
|
role(role, params) { host_list } # set cache to role()
|
181
181
|
else
|
182
182
|
# Request RightScale API
|
183
|
-
dept =
|
183
|
+
dept = rs_deployment(_dept_id, :server_settings => 'true')
|
184
184
|
logger.info("querying rightscale for servers matching tags #{_tags} in deployment #{dept.nickname}...")
|
185
185
|
srvs = dept.servers.select {|s| s[:state] == "operational"}
|
186
186
|
|
@@ -211,7 +211,7 @@ start = Time.now
|
|
211
211
|
|
212
212
|
if host_list && host_list.size > 0
|
213
213
|
role(role, params) { host_list }
|
214
|
-
dump_server_cache(role, host_list) # Dump cache
|
214
|
+
dump_server_cache(role, host_list) if use_rs_cache # Dump cache
|
215
215
|
end
|
216
216
|
end
|
217
217
|
puts "Time: #{Time.now - start}"
|
@@ -225,13 +225,13 @@ puts "Time: #{Time.now - start}"
|
|
225
225
|
return true
|
226
226
|
end
|
227
227
|
|
228
|
-
def
|
228
|
+
def rs_array(id, params={})
|
229
229
|
array = self.instance_variable_get("@array_#{id}")
|
230
230
|
|
231
231
|
unless array
|
232
232
|
connect
|
233
233
|
begin
|
234
|
-
self.instance_variable_set("@array_#{id}", ServerArray.show(id))
|
234
|
+
self.instance_variable_set("@array_#{id}", ServerArray.show(id, params))
|
235
235
|
rescue => e
|
236
236
|
STDERR.puts("#{e.class}: #{e.pretty_inspect}")
|
237
237
|
warn("Backtrace:\n#{e.backtrace.pretty_inspect}")
|
@@ -249,7 +249,31 @@ puts "Time: #{Time.now - start}"
|
|
249
249
|
array
|
250
250
|
end
|
251
251
|
|
252
|
-
def
|
252
|
+
def rs_array_instances(id)
|
253
|
+
array_instances = self.instance_variable_get("@array_instances_#{id}")
|
254
|
+
|
255
|
+
unless array_instances
|
256
|
+
connect
|
257
|
+
begin
|
258
|
+
self.instance_variable_set("@array_instances_#{id}", ServerArray.instances(id))
|
259
|
+
rescue => e
|
260
|
+
STDERR.puts("#{e.class}: #{e.pretty_inspect}")
|
261
|
+
warn("Backtrace:\n#{e.backtrace.pretty_inspect}")
|
262
|
+
exit(1)
|
263
|
+
end
|
264
|
+
|
265
|
+
unless ServerArray.status_code == 200
|
266
|
+
STDERR.puts("Errors: STATUS is NOT 200 OK")
|
267
|
+
warn(ServerArray.headers)
|
268
|
+
exit(1)
|
269
|
+
end
|
270
|
+
|
271
|
+
array_instances = self.instance_variable_get("@array_instances_#{id}")
|
272
|
+
end
|
273
|
+
array_instances
|
274
|
+
end
|
275
|
+
|
276
|
+
def rs_deployment(id, params={})
|
253
277
|
dept = self.instance_variable_get("@deployment_#{id}")
|
254
278
|
|
255
279
|
unless dept
|
@@ -279,8 +303,17 @@ puts "Time: #{Time.now - start}"
|
|
279
303
|
@conn ||= RightResource::Connection.new do |c|
|
280
304
|
c.login(:username => @auth["username"], :password => @auth["password"], :account => @auth["account"])
|
281
305
|
end
|
282
|
-
rescue
|
283
|
-
|
306
|
+
rescue => e
|
307
|
+
auth_data = open(File.join(File.expand_path(File.dirname(__FILE__)), '/../../../rsapiconfig.yml.sample')) {|f| f.read}
|
308
|
+
STDERR.puts <<-"USAGE"
|
309
|
+
Cannot load RightScale Auth data!!:
|
310
|
+
Put authfile:<rsapiconfig.yml> in <HOME>/.rsconf/
|
311
|
+
OR
|
312
|
+
Set param: set_rs_confpath <authfile_path>
|
313
|
+
|
314
|
+
Authfile contents:
|
315
|
+
#{auth_data}
|
316
|
+
USAGE
|
284
317
|
exit(1)
|
285
318
|
end
|
286
319
|
RightResource::Base.connection = @conn
|
@@ -351,6 +384,15 @@ puts "Time: #{Time.now - start}"
|
|
351
384
|
@use_public_ip ||= false
|
352
385
|
end
|
353
386
|
|
387
|
+
def use_rs_cache
|
388
|
+
if @use_rs_cache.nil? && ENV['RSCACHE']
|
389
|
+
env = ENV['RSCACHE'].downcase
|
390
|
+
@use_rs_cache = false if env == "false"
|
391
|
+
end
|
392
|
+
@use_rs_cache = true if @use_rs_cache.nil?
|
393
|
+
@use_rs_cache
|
394
|
+
end
|
395
|
+
|
354
396
|
def _domain
|
355
397
|
@domain || nil
|
356
398
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cap-rightscale
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 5
|
10
|
+
version: 0.2.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Satoshi Ohki
|
@@ -151,8 +151,10 @@ files:
|
|
151
151
|
- lib/cap-rightscale/configuration.rb
|
152
152
|
- lib/cap-rightscale/configuration/rightscale.rb
|
153
153
|
- lib/cap-rightscale/recipes.rb
|
154
|
+
- lib/cap-rightscale/recipes/rightscale.rb
|
154
155
|
- lib/cap-rightscale/recipes/rightscale/cache.rb
|
155
156
|
- lib/cap-rightscale/utils/rs_utils.rb
|
157
|
+
- rsapiconfig.yml.sample
|
156
158
|
- spec/cap-rightscale_spec.rb
|
157
159
|
- spec/spec_helper.rb
|
158
160
|
has_rdoc: true
|