cap-elb 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/cap-elb/version.rb +1 -1
  2. data/lib/cap-elb.rb +8 -34
  3. metadata +55 -90
@@ -1,5 +1,5 @@
1
1
  module Cap
2
2
  module Elb
3
- VERSION = "0.0.8"
3
+ VERSION = "0.0.9"
4
4
  end
5
5
  end
data/lib/cap-elb.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'right_aws'
2
- require 'aws-sdk' # need for ELB instance getter
3
2
  require 'cap-elb/version'
4
3
 
5
4
  unless Capistrano::Configuration.respond_to?(:instance)
@@ -90,8 +89,6 @@ module Capistrano
90
89
 
91
90
  def loadbalancer (named_load_balancer, *args)
92
91
 
93
- aws_config_setup
94
-
95
92
  require_arglist = args[1][:require] rescue {}
96
93
  exclude_arglist = args[1][:exclude] rescue {}
97
94
  named_region = fetch(:aws_params)[:region] rescue 'us-east-1'
@@ -99,21 +96,19 @@ module Capistrano
99
96
  # list of all the instances assoc'ed with this account
100
97
  @ec2_api ||= RightAws::Ec2.new(fetch(:aws_access_key_id), fetch(:aws_secret_access_key), fetch(:aws_params, {}))
101
98
 
102
- # fetch a raw list all the load balancers, this is best done in Amaazons' aws-sdk, as it allows region specification for LBs.
103
- # strangely, RightScale gem doesnt seem to support this.
104
- # i filed a bug with RightScale: https://github.com/rightscale/right_aws/issues/95
105
- @elb_api = AWS::ELB.new
106
-
99
+ # fetch a raw list all the load balancers
100
+ @elb_api ||= RightAws::ElbInterface.new(fetch(:aws_access_key_id), fetch(:aws_secret_access_key), :region => named_region)
101
+
107
102
  # only get the named load balancer
108
- named_elb = @elb_api.load_balancers[named_load_balancer]
103
+ named_elb = @elb_api.describe_load_balancers.delete_if{ |instance| instance[:load_balancer_name] != named_load_balancer.to_s }
109
104
 
110
105
  # must exit if no load balancer on record for this account by given name in cap config file
111
106
  raise Exception, "No load balancer found named: #{named_load_balancer.to_s} for aws account with this access key: #{fetch(:aws_access_key_id)} in this region: #{named_region}" if named_elb.nil?
112
- # probe for a count of the instances, if this raises Exception, load balancer can't be found
113
- named_elb.instances.count rescue raise Exception, "No load balancer found named: #{named_load_balancer.to_s} for aws account with this access key: #{fetch(:aws_access_key_id)} in this region: #{named_region}"
114
- raise Exception, "No instances within this load balancer: #{named_load_balancer.to_s} for aws account with this access key: #{fetch(:aws_access_key_id)} in this region: #{named_region}" if named_elb.instances.count == 0
107
+ # probe for the load balancer ec2 instance set, if this raises Exception, load balancer can't be found
108
+ named_elb[0] rescue raise Exception, "No load balancer found named: #{named_load_balancer.to_s} for aws account with this access key: #{fetch(:aws_access_key_id)} in this region: #{named_region}"
109
+ raise Exception, "No instances within this load balancer: #{named_load_balancer.to_s} for aws account with this access key: #{fetch(:aws_access_key_id)} in this region: #{named_region}" if named_elb[0][:instances].count == 0
115
110
 
116
- elb_ec2_instances = named_elb.instances.map { |i| i.id } # list of instance ids
111
+ elb_ec2_instances = named_elb[0][:instances] rescue {}
117
112
 
118
113
  # get the full instance list for account, this is necessary to subsquently fish out the :dns_name for the instances that survive our reduction steps
119
114
  account_instance_list = @ec2_api.describe_instances
@@ -135,27 +130,6 @@ module Capistrano
135
130
 
136
131
  private
137
132
 
138
- # AWS SDK setup
139
- def aws_config_setup()
140
-
141
- # derive AWS canonical endpoints from given region
142
- # set :ec2_endpoint , 'ec2.us-west-1.amazonaws.com'
143
- # set :elb_endpoint ,'us-west-1.elasticloadbalancing.amazonaws.com'
144
-
145
- named_region = fetch(:aws_params)[:region] rescue 'us-east-1'
146
-
147
- ec2_endpoint = "ec2.#{named_region}.amazonaws.com"
148
- elb_endpoint = "#{named_region}.elasticloadbalancing.amazonaws.com"
149
-
150
- # aws configuration, required separately
151
- AWS.config({
152
- :access_key_id => fetch(:aws_access_key_id),
153
- :secret_access_key => fetch(:aws_secret_access_key),
154
- :ec2_endpoint => ec2_endpoint,
155
- :elb_endpoint => elb_endpoint,
156
- })
157
- end
158
-
159
133
  def any_args_within_instance(instance, exclude_arglist)
160
134
  exargs = exclude_arglist.clone # must copy since delete transcends scope; if we don't copy, subsequent 'map'ped enum arglists would be side-effected
161
135
  tag_exclude_state = nil # default assumption
metadata CHANGED
@@ -1,95 +1,69 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cap-elb
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.9
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 8
10
- version: 0.0.8
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Dan Miley
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-11-28 00:00:00 -08:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: right_aws
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2153101920 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - "="
28
- - !ruby/object:Gem::Version
29
- hash: 11
30
- segments:
31
- - 2
32
- - 1
33
- - 0
18
+ requirements:
19
+ - - =
20
+ - !ruby/object:Gem::Version
34
21
  version: 2.1.0
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: aws-sdk
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2153101920
25
+ - !ruby/object:Gem::Dependency
26
+ name: aws-sdk
27
+ requirement: &2153101220 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
45
- hash: 27
46
- segments:
47
- - 1
48
- - 2
49
- - 2
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
50
32
  version: 1.2.2
51
33
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: rspec
55
34
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2153101220
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &2153100660 !ruby/object:Gem::Requirement
57
39
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 0
64
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
65
44
  type: :development
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: rake
69
45
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2153100660
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &2153099800 !ruby/object:Gem::Requirement
71
50
  none: false
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- hash: 49
76
- segments:
77
- - 0
78
- - 8
79
- - 7
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
80
54
  version: 0.8.7
81
55
  type: :development
82
- version_requirements: *id004
83
- description: Capistrano can perform tasks on the EC2 instances managed by named Amazon ELB instances. Various filters are qvailable to allow EC2 instance top level metadata and tags to determine whether the task should be applied on the given instance.
84
- email:
56
+ prerelease: false
57
+ version_requirements: *2153099800
58
+ description: Capistrano can perform tasks on the EC2 instances managed by named Amazon
59
+ ELB instances. Various filters are qvailable to allow EC2 instance top level metadata
60
+ and tags to determine whether the task should be applied on the given instance.
61
+ email:
85
62
  - dan.miley@gmail.com
86
63
  executables: []
87
-
88
64
  extensions: []
89
-
90
65
  extra_rdoc_files: []
91
-
92
- files:
66
+ files:
93
67
  - .gitignore
94
68
  - Gemfile
95
69
  - MIT-LICENSE
@@ -101,40 +75,31 @@ files:
101
75
  - test/.gemtest
102
76
  - test/elb_test.rb
103
77
  - test/health/test_elb.rb
104
- has_rdoc: true
105
78
  homepage: http://github.com/danmiley/cap-elb
106
79
  licenses: []
107
-
108
80
  post_install_message:
109
81
  rdoc_options: []
110
-
111
- require_paths:
82
+ require_paths:
112
83
  - lib
113
- required_ruby_version: !ruby/object:Gem::Requirement
84
+ required_ruby_version: !ruby/object:Gem::Requirement
114
85
  none: false
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- hash: 3
119
- segments:
120
- - 0
121
- version: "0"
122
- required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
91
  none: false
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 3
128
- segments:
129
- - 0
130
- version: "0"
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
131
96
  requirements: []
132
-
133
97
  rubyforge_project: cap-elb
134
- rubygems_version: 1.6.0
98
+ rubygems_version: 1.8.11
135
99
  signing_key:
136
100
  specification_version: 3
137
- summary: Capistrano can perform tasks on EC2 intstance managed by individual Amazon ELB instances.
138
- test_files:
101
+ summary: Capistrano can perform tasks on EC2 intstance managed by individual Amazon
102
+ ELB instances.
103
+ test_files:
139
104
  - test/elb_test.rb
140
105
  - test/health/test_elb.rb