nephophobia 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +4 -0
- data/lib/nephophobia/client.rb +5 -6
- data/lib/nephophobia/compute.rb +24 -0
- data/lib/nephophobia/version.rb +1 -1
- data/nephophobia.gemspec +2 -2
- data/test/cassettes/compute_vnc_url.yml +82 -0
- data/test/lib/hashify_test.rb +10 -12
- data/test/lib/nephophobia/compute_test.rb +30 -1
- data/test/test_helper.rb +1 -0
- metadata +7 -4
data/LICENSE
ADDED
data/lib/nephophobia/client.rb
CHANGED
@@ -12,13 +12,12 @@ module Nephophobia
|
|
12
12
|
@port = options[:port] || 8773
|
13
13
|
|
14
14
|
@connection = Hugs::Client.new(
|
15
|
-
:host
|
16
|
-
:scheme
|
17
|
-
:port
|
18
|
-
:type
|
15
|
+
:host => options[:host],
|
16
|
+
:scheme => options[:scheme] || "http",
|
17
|
+
:port => @port,
|
18
|
+
:type => options[:type] || :xml,
|
19
|
+
:raise_errors => true
|
19
20
|
)
|
20
|
-
@connection.raise_4xx = true
|
21
|
-
@connection.raise_5xx = true
|
22
21
|
|
23
22
|
@aws = AWS.new(
|
24
23
|
:host => options[:host],
|
data/lib/nephophobia/compute.rb
CHANGED
@@ -27,6 +27,14 @@ module Nephophobia
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
class VncData
|
31
|
+
attr_reader :url
|
32
|
+
|
33
|
+
def initialize attributes
|
34
|
+
@url = attributes['url']
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
30
38
|
class Compute
|
31
39
|
def initialize client
|
32
40
|
@client = client
|
@@ -147,5 +155,21 @@ module Nephophobia
|
|
147
155
|
|
148
156
|
ResponseData.new response.body
|
149
157
|
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# Returns the VNC browser URL. Used by the Portal.
|
161
|
+
# __Must__ have an +admin+ role to use.
|
162
|
+
#
|
163
|
+
# +instance_id+: A String representing the ID of the instance.
|
164
|
+
|
165
|
+
def vnc_url instance_id
|
166
|
+
params = {
|
167
|
+
"InstanceId" => instance_id
|
168
|
+
}
|
169
|
+
|
170
|
+
response = @client.action "GetVncConsole", params
|
171
|
+
|
172
|
+
VncData.new response.body['GetVncConsoleResponse']
|
173
|
+
end
|
150
174
|
end
|
151
175
|
end
|
data/lib/nephophobia/version.rb
CHANGED
data/nephophobia.gemspec
CHANGED
@@ -19,10 +19,10 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_dependency "hugs", "~> 2.
|
22
|
+
s.add_dependency "hugs", "~> 2.6.0"
|
23
23
|
|
24
24
|
s.add_development_dependency "fakeweb", "~> 1.3.0"
|
25
|
-
s.add_development_dependency "minitest", "~> 2.0
|
25
|
+
s.add_development_dependency "minitest", "~> 2.1.0"
|
26
26
|
s.add_development_dependency "nokogiri", "~> 1.4.4"
|
27
27
|
s.add_development_dependency "rake", "~> 0.8.7"
|
28
28
|
s.add_development_dependency "vcr", "1.5.0"
|
@@ -0,0 +1,82 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://10.3.170.35:8773/services/Cloud?AWSAccessKeyId=2ea76797-229c-4e52-a21b-f30513cb91a6%3Asandbox&Action=RunInstances&ImageId=ami-00000002&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&Version=2010-11-15&Signature=tPz8K7mYsXFNuGeGmQCf3JFCOWsQ5iGKP%2B4CU1PUoOI%3D
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- application/xml
|
10
|
+
connection:
|
11
|
+
- keep-alive
|
12
|
+
keep-alive:
|
13
|
+
- 30
|
14
|
+
response: !ruby/struct:VCR::Response
|
15
|
+
status: !ruby/struct:VCR::ResponseStatus
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
content-length:
|
22
|
+
- "838"
|
23
|
+
date:
|
24
|
+
- Tue, 17 May 2011 22:54:02 GMT
|
25
|
+
connection:
|
26
|
+
- keep-alive
|
27
|
+
body: <?xml version="1.0" ?><RunInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>UQI84EDZKAJCI9OD6P7-</requestId><ownerId>sandbox</ownerId><groupSet><item><groupId>default</groupId></item></groupSet><reservationId>r-g3dtl3nz</reservationId><instancesSet><item><displayDescription/><displayName>Server 44</displayName><keyName>None (sandbox, None)</keyName><instanceId>i-0000002c</instanceId><instanceState><code>0</code><name>scheduling</name></instanceState><publicDnsName/><imageId>ami-00000002</imageId><productCodesSet/><privateDnsName/><dnsName/><launchTime>2011-05-17T22:54:02Z</launchTime><amiLaunchIndex>0</amiLaunchIndex><placement><availabilityZone>unknown zone</availabilityZone></placement><ipAddress/><instanceType>m1.small</instanceType><privateIpAddress/></item></instancesSet></RunInstancesResponse>
|
28
|
+
http_version: "1.1"
|
29
|
+
- !ruby/struct:VCR::HTTPInteraction
|
30
|
+
request: !ruby/struct:VCR::Request
|
31
|
+
method: :get
|
32
|
+
uri: http://10.3.170.35:8773/services/Cloud?AWSAccessKeyId=2ea76797-229c-4e52-a21b-f30513cb91a6%3Asandbox&Action=GetVncConsole&InstanceId=i-0000002c&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&Version=2010-11-15&Signature=CTnwl8XghsgR%2BvLufr6apb%2F7CxBRHWXMDzbVqARIvM0%3D
|
33
|
+
body:
|
34
|
+
headers:
|
35
|
+
accept:
|
36
|
+
- application/xml
|
37
|
+
connection:
|
38
|
+
- keep-alive
|
39
|
+
keep-alive:
|
40
|
+
- 30
|
41
|
+
response: !ruby/struct:VCR::Response
|
42
|
+
status: !ruby/struct:VCR::ResponseStatus
|
43
|
+
code: 200
|
44
|
+
message: OK
|
45
|
+
headers:
|
46
|
+
content-type:
|
47
|
+
- text/xml
|
48
|
+
content-length:
|
49
|
+
- "292"
|
50
|
+
date:
|
51
|
+
- Tue, 17 May 2011 22:55:08 GMT
|
52
|
+
connection:
|
53
|
+
- keep-alive
|
54
|
+
body: <?xml version="1.0" ?><GetVncConsoleResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>MQGGGBRZT52RW30-Q0HC</requestId><url>http://10.3.170.35:6080/vnc_auto.html?token=43d60f5f-b4d6-406a-a4ec-c6ff8e8a741e&host=hostignore&port=portignore</url></GetVncConsoleResponse>
|
55
|
+
http_version: "1.1"
|
56
|
+
- !ruby/struct:VCR::HTTPInteraction
|
57
|
+
request: !ruby/struct:VCR::Request
|
58
|
+
method: :get
|
59
|
+
uri: http://10.3.170.35:8773/services/Cloud?AWSAccessKeyId=2ea76797-229c-4e52-a21b-f30513cb91a6%3Asandbox&Action=TerminateInstances&InstanceId.1=i-0000002c&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&Version=2010-11-15&Signature=jM8GDD%2B9KoSnyC2CgqXhvp2FXKlZriKt6ZVEU1w38Fk%3D
|
60
|
+
body:
|
61
|
+
headers:
|
62
|
+
accept:
|
63
|
+
- application/xml
|
64
|
+
connection:
|
65
|
+
- keep-alive
|
66
|
+
keep-alive:
|
67
|
+
- 30
|
68
|
+
response: !ruby/struct:VCR::Response
|
69
|
+
status: !ruby/struct:VCR::ResponseStatus
|
70
|
+
code: 200
|
71
|
+
message: OK
|
72
|
+
headers:
|
73
|
+
content-type:
|
74
|
+
- text/xml
|
75
|
+
content-length:
|
76
|
+
- "192"
|
77
|
+
date:
|
78
|
+
- Tue, 17 May 2011 22:55:19 GMT
|
79
|
+
connection:
|
80
|
+
- keep-alive
|
81
|
+
body: <?xml version="1.0" ?><TerminateInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>3JEB2L90CZG-HQ6-KDG5</requestId><return>true</return></TerminateInstancesResponse>
|
82
|
+
http_version: "1.1"
|
data/test/lib/hashify_test.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
require "test_helper"
|
2
2
|
|
3
|
-
describe Hashify do
|
4
|
-
|
3
|
+
#describe Hashify do
|
4
|
+
# describe "::convert" do
|
5
|
+
# it "creates a hash from a Nokogiri::XML::Document" do
|
6
|
+
# xml = cassette_for "compute_all", 1
|
7
|
+
# hash = Hashify.convert xml.root
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
assert_equal "Server 42", hash['DescribeInstancesResponse']['reservationSet']['item'].first['instancesSet']['item'].first['displayName']
|
12
|
-
assert_equal "Server 46", hash['DescribeInstancesResponse']['reservationSet']['item'].first['instancesSet']['item'].last['displayName']
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
9
|
+
# assert_equal "Server 42", hash['DescribeInstancesResponse']['reservationSet']['item'].first['instancesSet']['item'].first['displayName']
|
10
|
+
# assert_equal "Server 46", hash['DescribeInstancesResponse']['reservationSet']['item'].first['instancesSet']['item'].last['displayName']
|
11
|
+
# end
|
12
|
+
# end
|
13
|
+
#end
|
@@ -32,7 +32,7 @@ describe Nephophobia::Compute do
|
|
32
32
|
@response.size.must_be :>=, 1
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
describe "#all with filter" do
|
37
37
|
before do
|
38
38
|
VCR.use_cassette "compute_all_with_filter" do
|
@@ -157,4 +157,33 @@ describe Nephophobia::Compute do
|
|
157
157
|
@response.return.must_equal true
|
158
158
|
end
|
159
159
|
end
|
160
|
+
describe "#vnc_url" do
|
161
|
+
before do
|
162
|
+
VCR.use_cassette "compute_vnc_url" do
|
163
|
+
##
|
164
|
+
# Pointing to the nova trunk version.
|
165
|
+
|
166
|
+
@compute = ::Client.with(:admin,
|
167
|
+
:access_key => "2ea76797-229c-4e52-a21b-f30513cb91a6",
|
168
|
+
:secret_key => "3d16b391-820f-4f5c-893b-0f65d5f35312",
|
169
|
+
:host => "10.3.170.35",
|
170
|
+
:project => "sandbox"
|
171
|
+
).compute
|
172
|
+
|
173
|
+
@instance_id = @compute.create(@image_id).instance_id
|
174
|
+
|
175
|
+
@response = @compute.vnc_url @instance_id
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
after do
|
180
|
+
VCR.use_cassette "compute_vnc_url" do
|
181
|
+
@compute.destroy @instance_id
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
it "has a vnc url for the given 'instance_id'" do
|
186
|
+
@response.url.must_match %r{/vnc_auto.html\?token=[a-z0-9-]+}
|
187
|
+
end
|
188
|
+
end
|
160
189
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: nephophobia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John Dewey
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-05-17 00:00:00 -07:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
requirements:
|
23
23
|
- - ~>
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 2.
|
25
|
+
version: 2.6.0
|
26
26
|
type: :runtime
|
27
27
|
version_requirements: *id001
|
28
28
|
- !ruby/object:Gem::Dependency
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.0
|
47
|
+
version: 2.1.0
|
48
48
|
type: :development
|
49
49
|
version_requirements: *id003
|
50
50
|
- !ruby/object:Gem::Dependency
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- .gitignore
|
95
95
|
- .rvmrc
|
96
96
|
- Gemfile
|
97
|
+
- LICENSE
|
97
98
|
- README.md
|
98
99
|
- Rakefile
|
99
100
|
- lib/aws.rb
|
@@ -115,6 +116,7 @@ files:
|
|
115
116
|
- test/cassettes/compute_destroy.yml
|
116
117
|
- test/cassettes/compute_find.yml
|
117
118
|
- test/cassettes/compute_reboot.yml
|
119
|
+
- test/cassettes/compute_vnc_url.yml
|
118
120
|
- test/cassettes/credential_all.yml
|
119
121
|
- test/cassettes/credential_all_without_keys.yml
|
120
122
|
- test/cassettes/credential_create.yml
|
@@ -194,6 +196,7 @@ test_files:
|
|
194
196
|
- test/cassettes/compute_destroy.yml
|
195
197
|
- test/cassettes/compute_find.yml
|
196
198
|
- test/cassettes/compute_reboot.yml
|
199
|
+
- test/cassettes/compute_vnc_url.yml
|
197
200
|
- test/cassettes/credential_all.yml
|
198
201
|
- test/cassettes/credential_all_without_keys.yml
|
199
202
|
- test/cassettes/credential_create.yml
|