appoxy-aws 1.11.29 → 1.11.30
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.
- data/lib/elb/right_elb_interface.rb +189 -0
- data/lib/right_aws.rb +2 -1
- metadata +8 -6
@@ -0,0 +1,189 @@
|
|
1
|
+
module RightAws
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
class Elb < RightAwsBase
|
6
|
+
include RightAwsBaseInterface
|
7
|
+
|
8
|
+
|
9
|
+
#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
|
15
|
+
|
16
|
+
|
17
|
+
@@bench = AwsBenchmarkingBlock.new
|
18
|
+
def self.bench_xml
|
19
|
+
@@bench.xml
|
20
|
+
end
|
21
|
+
def self.bench_ec2
|
22
|
+
@@bench.service
|
23
|
+
end
|
24
|
+
|
25
|
+
# Current API version (sometimes we have to check it outside the GEM).
|
26
|
+
@@api = ENV['EC2_API_VERSION'] || API_VERSION
|
27
|
+
def self.api
|
28
|
+
@@api
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
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,
|
37
|
+
:default_protocol => ENV['ELB_URL'] ? URI.parse(ENV['ELB_URL']).scheme : DEFAULT_PROTOCOL },
|
38
|
+
aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'],
|
39
|
+
aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'],
|
40
|
+
params)
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def generate_request(action, params={})
|
45
|
+
service_hash = {"Action" => action,
|
46
|
+
"AWSAccessKeyId" => @aws_access_key_id,
|
47
|
+
"Version" => @@api }
|
48
|
+
service_hash.update(params)
|
49
|
+
service_params = signed_service_params(@aws_secret_access_key, service_hash, :get, @params[:server], @params[:service])
|
50
|
+
|
51
|
+
# use POST method if the length of the query string is too large
|
52
|
+
if service_params.size > 2000
|
53
|
+
if signature_version == '2'
|
54
|
+
# resign the request because HTTP verb is included into signature
|
55
|
+
service_params = signed_service_params(@aws_secret_access_key, service_hash, :post, @params[:server], @params[:service])
|
56
|
+
end
|
57
|
+
request = Net::HTTP::Post.new(service)
|
58
|
+
request.body = service_params
|
59
|
+
request['Content-Type'] = 'application/x-www-form-urlencoded'
|
60
|
+
else
|
61
|
+
request = Net::HTTP::Get.new("#{@params[:service]}?#{service_params}")
|
62
|
+
end
|
63
|
+
|
64
|
+
#puts "\n\n --------------- QUERY REQUEST TO AWS -------------- \n\n"
|
65
|
+
#puts "#{@params[:service]}?#{service_params}\n\n"
|
66
|
+
|
67
|
+
# prepare output hash
|
68
|
+
{ :request => request,
|
69
|
+
:server => @params[:server],
|
70
|
+
:port => @params[:port],
|
71
|
+
:protocol => @params[:protocol] }
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
# Sends request to Amazon and parses the response
|
76
|
+
# Raises AwsError if any banana happened
|
77
|
+
def request_info(request, parser)
|
78
|
+
thread = @params[:multi_thread] ? Thread.current : Thread.main
|
79
|
+
thread[:elb_connection] ||= Rightscale::HttpConnection.new(:exception => RightAws::AwsError, :logger => @logger)
|
80
|
+
request_info_impl(thread[:elb_connection], @@bench, request, parser)
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
#-----------------------------------------------------------------
|
85
|
+
# REQUESTS
|
86
|
+
#-----------------------------------------------------------------
|
87
|
+
|
88
|
+
|
89
|
+
def register_instance_with_elb(instance_id, lparams={})
|
90
|
+
params = {}
|
91
|
+
|
92
|
+
params['LoadBalancerName'] = lparams[:load_balancer_name]
|
93
|
+
params['Instances.member.1.InstanceId'] = instance_id
|
94
|
+
|
95
|
+
@logger.info("Registering Instance #{instance_id} with Load Balancer '#{params['LoadBalancerName']}'")
|
96
|
+
|
97
|
+
link = generate_request("RegisterInstancesWithLoadBalancer", params)
|
98
|
+
resp = request_info(link, QElbRegisterInstanceParser.new(:logger => @logger))
|
99
|
+
|
100
|
+
rescue Exception
|
101
|
+
on_exception
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
def describe_load_balancers
|
110
|
+
@logger.info("Describing Load Balancers")
|
111
|
+
|
112
|
+
params = {}
|
113
|
+
|
114
|
+
link = generate_request("DescribeLoadBalancers", params)
|
115
|
+
|
116
|
+
resp = request_info(link, QElbDescribeLoadBalancersParser.new(:logger => @logger))
|
117
|
+
|
118
|
+
rescue Exception
|
119
|
+
on_exception
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
#-----------------------------------------------------------------
|
126
|
+
# PARSERS: Instances
|
127
|
+
#-----------------------------------------------------------------
|
128
|
+
|
129
|
+
class QElbDescribeLoadBalancersParser < RightAWSParser
|
130
|
+
|
131
|
+
def reset
|
132
|
+
@result = []
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
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
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
class QElbRegisterInstanceParser < RightAWSParser
|
157
|
+
|
158
|
+
def reset
|
159
|
+
@result = []
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
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
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
end
|
data/lib/right_aws.rb
CHANGED
@@ -45,13 +45,14 @@ require 'sqs/right_sqs_interface'
|
|
45
45
|
require 'sqs/right_sqs'
|
46
46
|
require 'sdb/right_sdb_interface'
|
47
47
|
require 'acf/right_acf_interface'
|
48
|
+
require 'elb/right_elb_interface'
|
48
49
|
|
49
50
|
|
50
51
|
module RightAws #:nodoc:
|
51
52
|
module VERSION #:nodoc:
|
52
53
|
MAJOR = 1
|
53
54
|
MINOR = 11
|
54
|
-
TINY =
|
55
|
+
TINY = 30
|
55
56
|
|
56
57
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
57
58
|
end
|
metadata
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appoxy-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.11.
|
4
|
+
version: 1.11.30
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
8
|
+
- Chad Arimura
|
8
9
|
- RightScale
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
13
|
|
13
|
-
date: 2009-08-
|
14
|
+
date: 2009-08-10 00:00:00 -07:00
|
14
15
|
default_executable:
|
15
16
|
dependencies: []
|
16
17
|
|
17
|
-
description: AWS Library for
|
18
|
+
description: AWS Ruby Library for interfacing with Amazon Web Services.
|
18
19
|
email: travis@appoxy.com
|
19
20
|
executables: []
|
20
21
|
|
@@ -28,6 +29,7 @@ files:
|
|
28
29
|
- lib/awsbase/right_awsbase.rb
|
29
30
|
- lib/awsbase/support.rb
|
30
31
|
- lib/ec2/right_ec2.rb
|
32
|
+
- lib/elb/right_elb_interface.rb
|
31
33
|
- lib/right_aws.rb
|
32
34
|
- lib/s3/right_s3.rb
|
33
35
|
- lib/s3/right_s3_interface.rb
|
@@ -36,7 +38,7 @@ files:
|
|
36
38
|
- lib/sqs/right_sqs.rb
|
37
39
|
- lib/sqs/right_sqs_interface.rb
|
38
40
|
- README.markdown
|
39
|
-
has_rdoc:
|
41
|
+
has_rdoc: false
|
40
42
|
homepage: http://github.com/appoxy/aws/
|
41
43
|
licenses:
|
42
44
|
post_install_message:
|
@@ -61,8 +63,8 @@ requirements: []
|
|
61
63
|
rubyforge_project:
|
62
64
|
rubygems_version: 1.3.5
|
63
65
|
signing_key:
|
64
|
-
specification_version:
|
65
|
-
summary: AWS Library for
|
66
|
+
specification_version: 3
|
67
|
+
summary: AWS Ruby Library for interfacing with Amazon Web Services.
|
66
68
|
test_files:
|
67
69
|
- test/acf/test_helper.rb
|
68
70
|
- test/acf/test_right_acf.rb
|