aws 2.1.1 → 2.1.2

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.
Files changed (2) hide show
  1. data/lib/elb/right_elb_interface.rb +101 -62
  2. metadata +2 -2
@@ -1,50 +1,52 @@
1
1
  module Aws
2
2
 
3
3
 
4
-
5
4
  class Elb < AwsBase
6
5
  include AwsBaseInterface
7
6
 
8
7
 
9
8
  #Amazon EC2 API version being used
10
- API_VERSION = "2008-12-01"
11
- DEFAULT_HOST = "elasticloadbalancing.amazonaws.com"
12
- DEFAULT_PATH = '/'
13
- DEFAULT_PROTOCOL = 'http'
14
- DEFAULT_PORT = 80
9
+ API_VERSION = "2008-12-01"
10
+ DEFAULT_HOST = "elasticloadbalancing.amazonaws.com"
11
+ DEFAULT_PATH = '/'
12
+ DEFAULT_PROTOCOL = 'http'
13
+ DEFAULT_PORT = 80
15
14
 
16
15
 
17
16
  @@bench = AwsBenchmarkingBlock.new
17
+
18
18
  def self.bench_xml
19
19
  @@bench.xml
20
20
  end
21
+
21
22
  def self.bench_ec2
22
23
  @@bench.service
23
24
  end
24
25
 
25
26
  # Current API version (sometimes we have to check it outside the GEM).
26
27
  @@api = ENV['EC2_API_VERSION'] || API_VERSION
28
+
27
29
  def self.api
28
30
  @@api
29
31
  end
30
32
 
31
33
 
32
34
  def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
33
- init({ :name => 'ELB',
34
- :default_host => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).host : DEFAULT_HOST,
35
- :default_port => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).port : DEFAULT_PORT,
36
- :default_service => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).path : DEFAULT_PATH,
35
+ init({ :name => 'ELB',
36
+ :default_host => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).host : DEFAULT_HOST,
37
+ :default_port => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).port : DEFAULT_PORT,
38
+ :default_service => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).path : DEFAULT_PATH,
37
39
  :default_protocol => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).scheme : DEFAULT_PROTOCOL },
38
- aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'],
40
+ aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'],
39
41
  aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'],
40
42
  params)
41
43
  end
42
44
 
43
45
 
44
46
  def generate_request(action, params={})
45
- service_hash = {"Action" => action,
47
+ service_hash = {"Action" => action,
46
48
  "AWSAccessKeyId" => @aws_access_key_id,
47
- "Version" => @@api }
49
+ "Version" => @@api }
48
50
  service_hash.update(params)
49
51
  service_params = signed_service_params(@aws_secret_access_key, service_hash, :get, @params[:server], @params[:service])
50
52
 
@@ -54,20 +56,20 @@ module Aws
54
56
  # resign the request because HTTP verb is included into signature
55
57
  service_params = signed_service_params(@aws_secret_access_key, service_hash, :post, @params[:server], @params[:service])
56
58
  end
57
- request = Net::HTTP::Post.new(service)
59
+ request = Net::HTTP::Post.new(service)
58
60
  request.body = service_params
59
61
  request['Content-Type'] = 'application/x-www-form-urlencoded'
60
62
  else
61
- request = Net::HTTP::Get.new("#{@params[:service]}?#{service_params}")
63
+ request = Net::HTTP::Get.new("#{@params[:service]}?#{service_params}")
62
64
  end
63
65
 
64
66
  #puts "\n\n --------------- QUERY REQUEST TO AWS -------------- \n\n"
65
67
  #puts "#{@params[:service]}?#{service_params}\n\n"
66
68
 
67
69
  # prepare output hash
68
- { :request => request,
69
- :server => @params[:server],
70
- :port => @params[:port],
70
+ { :request => request,
71
+ :server => @params[:server],
72
+ :port => @params[:port],
71
73
  :protocol => @params[:protocol] }
72
74
  end
73
75
 
@@ -85,12 +87,37 @@ module Aws
85
87
  # REQUESTS
86
88
  #-----------------------------------------------------------------
87
89
 
90
+ #
91
+ # name: name of load balancer
92
+ # availability_zones: array of zones
93
+ # listeners: array of hashes containing :load_balancer_port, :instance_port, :protocol
94
+ # eg: {:load_balancer_port=>80, :instance_port=>8080, :protocol=>"HTTP"}
95
+ def create_load_balancer(name, availability_zones, listeners)
96
+ params = hash_params('AvailabilityZones.member', availability_zones)
97
+ i = 0
98
+ listeners.each do |l|
99
+ params["Listeners.member.#{i}.Protocol=#{l[:protocol]}"]
100
+ params["Listeners.member.#{i}.LoadBalancerPort=#{l[:load_balancer_port]}"]
101
+ params["Listeners.member.#{i}.Protocol=#{l[:instance_port]}"]
102
+ i += 1
103
+ end
104
+ params['LoadBalancerName'] = name
105
+
106
+ @logger.info("Creating LoadBalancer called #{params['LoadBalancerName']}")
107
+
108
+ link = generate_request("CreateLoadBalancer", params)
109
+ resp = request_info(link, QElbCreateParser.new(:logger => @logger))
110
+
111
+ rescue Exception
112
+ on_exception
113
+ end
114
+
88
115
 
89
116
  def register_instance_with_elb(instance_id, lparams={})
90
117
  params = {}
91
118
 
92
- params['LoadBalancerName'] = lparams[:load_balancer_name]
93
- params['Instances.member.1.InstanceId'] = instance_id
119
+ params['LoadBalancerName'] = lparams[:load_balancer_name]
120
+ params['Instances.member.1.InstanceId'] = instance_id
94
121
 
95
122
  @logger.info("Registering Instance #{instance_id} with Load Balancer '#{params['LoadBalancerName']}'")
96
123
 
@@ -102,10 +129,6 @@ module Aws
102
129
  end
103
130
 
104
131
 
105
-
106
-
107
-
108
-
109
132
  def describe_load_balancers
110
133
  @logger.info("Describing Load Balancers")
111
134
 
@@ -120,67 +143,83 @@ module Aws
120
143
  end
121
144
 
122
145
 
123
-
124
-
125
146
  #-----------------------------------------------------------------
126
147
  # PARSERS: Instances
127
148
  #-----------------------------------------------------------------
128
149
 
129
- class QElbDescribeLoadBalancersParser < AwsParser
150
+
151
+ class QElbCreateParser < AwsParser
130
152
 
131
153
  def reset
132
- @result = []
154
+ @result = {}
133
155
  end
134
156
 
135
157
 
136
158
  def tagend(name)
137
- #case name
138
- # when 'LoadBalancerName' then
139
- # @result[:load_balancer_name] = @text
140
- # when 'AvailabilityZones' then
141
- # @result[:availability_zones] = @text
142
- # when 'CreatedTime' then
143
- # @result[:created_time] = Time.parse(@text)
144
- # when 'DNSName' then
145
- # @result[:dns_name] = @text
146
- # when 'Instances' then
147
- # @result[:instances] = @text
148
- # when 'HealthCheck' then
149
- # @result[:health_check] = @text
150
- # when 'Listeners' then
151
- # @result[:listeners] = @text
152
- #end
159
+ case name
160
+ when 'DNSName' then
161
+ @result[:dns_name] = @text
162
+ end
153
163
  end
154
164
  end
155
165
 
156
- class QElbRegisterInstanceParser < AwsParser
166
+ class QElbDescribeLoadBalancersParser < AwsParser
157
167
 
158
168
  def reset
159
- @result = []
169
+ @result = {}
160
170
  end
161
171
 
162
172
 
163
173
  def tagend(name)
164
- #case name
165
- # when 'LoadBalancerName' then
166
- # @result[:load_balancer_name] = @text
167
- # when 'AvailabilityZones' then
168
- # @result[:availability_zones] = @text
169
- # when 'CreatedTime' then
170
- # @result[:created_time] = Time.parse(@text)
171
- # when 'DNSName' then
172
- # @result[:dns_name] = @text
173
- # when 'Instances' then
174
- # @result[:instances] = @text
175
- # when 'HealthCheck' then
176
- # @result[:health_check] = @text
177
- # when 'Listeners' then
178
- # @result[:listeners] = @text
179
- #end
174
+ case name
175
+ when 'LoadBalancerName' then
176
+ @result[:load_balancer_name] = @text
177
+ # when 'AvailabilityZones' then
178
+ # @result[:availability_zones] = @text
179
+ when 'CreatedTime' then
180
+ @result[:created_time] = Time.parse(@text)
181
+ when 'DNSName' then
182
+ @result[:dns_name] = @text
183
+ when 'Protocol' then
184
+ @result[:protocol] = @text
185
+ when 'LoadBalancerPort' then
186
+ @result[:load_balancer_port] = @text.to_i
187
+ when 'InstancePort' then
188
+ @result[:instance_port] = @text.to_i
189
+ # HEALTH CHECK STUFF
190
+ when 'Interval' then
191
+ @result[:interval] = @text.to_i
192
+ when 'Target' then
193
+ @result[:target] = @text
194
+ when 'HealthyThreshold' then
195
+ @result[:healthy_threshold] = @text.to_i
196
+ when 'Timeout' then
197
+ @result[:timeout] = @text.to_i
198
+ when 'UnhealthyThreshold' then
199
+ @result[:unhealthy_threshold] = @text.to_i
200
+ # AvailabilityZones
201
+ when 'member' then
202
+ @result[:availability_zones] = [] unless @result[:availability_zones]
203
+ @result[:availability_zones] << @text
204
+
205
+ end
180
206
  end
181
207
  end
182
208
 
209
+ class QElbRegisterInstanceParser < AwsParser
183
210
 
211
+ def reset
212
+ @result = {}
213
+ end
214
+
215
+
216
+ def tagend(name)
217
+ case name
218
+ when 'InstanceId' then
219
+ @result[:instance_id] = @text
220
+ end
221
+ end
222
+ end
184
223
 
185
224
 
186
225
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Reeder
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-11-01 00:00:00 -07:00
14
+ date: 2009-11-04 00:00:00 -08:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency