cap-rightscale 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cap-rightscale}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
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"]
@@ -44,7 +44,7 @@ module Capistrano
44
44
  logger.info("SETTING ROLE: #{role}")
45
45
 
46
46
  # Set rightscale's parameters
47
- _array = params[:array_id]
47
+ _array_id = params[:array_id]
48
48
 
49
49
  params.delete(:array_id) # remove rightscale's parameters
50
50
 
@@ -56,10 +56,10 @@ module Capistrano
56
56
  else
57
57
  # Request RightScale API
58
58
  start = Time.now
59
- connect
60
- array = ServerArray.show(_array)
59
+ array = get_array(_array_id)
61
60
  logger.info("querying rightscale for server_array #{array.nickname}...")
62
- deployment_name = Deployment.show(array.deployment_href.match(/[0-9]+$/).to_s).nickname
61
+ dept = get_deployment(array.deployment_href.match(/[0-9]+$/).to_s, :server_settings => 'true')
62
+ deployment_name = dept.nickname
63
63
  logger.info("Deployment #{deployment_name}:")
64
64
 
65
65
  host_list = ServerArray.instances(array.id).select {|i| i[:state] == "operational"}.map do |instance|
@@ -100,7 +100,7 @@ puts "Time: #{Time.now - start}"
100
100
  logger.info("SETTING ROLE: #{role}")
101
101
 
102
102
  # Set rightscale's parameters
103
- _dept = params[:deployment]
103
+ _dept_id = params[:deployment]
104
104
  _name_prefix = params[:name_prefix]
105
105
 
106
106
  params.delete(:deployment)
@@ -114,8 +114,7 @@ puts "Time: #{Time.now - start}"
114
114
  else
115
115
  # Request RightScale API
116
116
  start = Time.now
117
- connect
118
- dept = Deployment.show(_dept, :server_settings => 'true')
117
+ dept = get_deployment(_dept_id, :server_settings => 'true')
119
118
  logger.info("querying rightscale for servers #{_name_prefix} in deployment #{dept.nickname}...")
120
119
  srvs = dept.servers.select {|s| s[:state] == "operational"}
121
120
  srvs = srvs.select {|s| /#{_name_prefix}/ =~ s[:nickname]} if _name_prefix
@@ -159,7 +158,7 @@ puts "Time: #{Time.now - start}"
159
158
  logger.info("SETTING ROLE: #{role}")
160
159
 
161
160
  # Set rightscale's parameters
162
- _dept = params[:deployment]
161
+ _dept_id = params[:deployment]
163
162
  _tags = params[:tags]
164
163
 
165
164
  params.delete(:deployment)
@@ -173,15 +172,14 @@ puts "Time: #{Time.now - start}"
173
172
  else
174
173
  # Request RightScale API
175
174
  start = Time.now
176
- connect
177
- dept = Deployment.show(_dept, :server_settings => 'true')
175
+ dept = get_deployment(_dept_id, :server_settings => 'true')
178
176
  logger.info("querying rightscale for servers matching tags #{_tags} in deployment #{dept.nickname}...")
179
177
  srvs = dept.servers.select {|s| s[:state] == "operational"}
180
178
 
181
179
  ts_params = {:resource_type => "ec2_instance", :tags => [_tags]}
182
180
  ts = Tag.search(ts_params).
183
181
  select {|s| s.state == "operational"}.
184
- select {|s| s.deployment_href.match(/[0-9]+$/).to_s == _dept.to_s}
182
+ select {|s| s.deployment_href.match(/[0-9]+$/).to_s == _dept_id.to_s}
185
183
 
186
184
  # diff servers in deployment and servers matching tags in deployment
187
185
  srvs_ids = srvs.map {|s| s[:href].match(/[0-9]+$/).to_s}
@@ -213,6 +211,27 @@ puts "Time: #{Time.now - start}"
213
211
  end
214
212
 
215
213
  private
214
+ def get_array(id)
215
+ array = self.instance_variable_get("@array_#{id}")
216
+
217
+ unless array
218
+ connect
219
+ array = self.instance_variable_set("@array_#{id}", ServerArray.show(id))
220
+ end
221
+ array
222
+ end
223
+
224
+ def get_deployment(id, params)
225
+ dept = self.instance_variable_get("@deployment_#{id}")
226
+
227
+ unless dept
228
+ connect
229
+ self.instance_variable_set("@deployment_#{id}", Deployment.show(id, params))
230
+ dept = self.instance_variable_get("@deployment_#{id}")
231
+ end
232
+ dept
233
+ end
234
+
216
235
  def connect
217
236
  @auth ||= open(get_rs_confpath) {|f| YAML.load(f)}
218
237
  @conn ||= RightResource::Connection.new do |c|
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: 27
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Satoshi Ohki