rubineti 1.3.0 → 1.4.0
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/.rvmrc +1 -1
- data/Gemfile +6 -6
- data/Gemfile.lock +17 -13
- data/README.md +15 -9
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/ganeti.rb +1 -1
- data/lib/rubineti.rb +1 -1
- data/lib/rubineti/client.rb +44 -0
- data/lib/rubineti/{compute/cluster.rb → cluster.rb} +21 -17
- data/lib/rubineti/{compute/instances.rb → instance.rb} +56 -52
- data/lib/rubineti/{compute/jobs.rb → job.rb} +13 -9
- data/lib/rubineti/{compute/node.rb → node.rb} +37 -34
- data/rubineti.gemspec +35 -35
- data/test/lib/rubineti/cluster_test.rb +69 -0
- data/test/lib/rubineti/instance_test.rb +199 -0
- data/test/lib/rubineti/job_test.rb +39 -0
- data/test/lib/rubineti/node_test.rb +75 -0
- data/test/{support.rb → test_helper.rb} +7 -7
- metadata +34 -44
- data/lib/rubineti/compute.rb +0 -33
- data/test/lib/rubineti/compute/test_cluster.rb +0 -71
- data/test/lib/rubineti/compute/test_instances.rb +0 -202
- data/test/lib/rubineti/compute/test_jobs.rb +0 -41
- data/test/lib/rubineti/compute/test_node.rb +0 -77
@@ -0,0 +1,39 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe Rubineti::Job do
|
4
|
+
describe "#all" do
|
5
|
+
it "returns an Array" do
|
6
|
+
VCR.use_cassette "jobs" do
|
7
|
+
CONNECTION.job.all.body.size.must_equal 1
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#job_list" do
|
13
|
+
it "returns a Hash" do
|
14
|
+
job_id = cassette_for("jobs").first["id"]
|
15
|
+
|
16
|
+
VCR.use_cassette "job_list" do
|
17
|
+
response = CONNECTION.job.list job_id
|
18
|
+
|
19
|
+
response.body.must_be_kind_of Hash
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#job_delete" do
|
25
|
+
it "is not implemented" do
|
26
|
+
out, err = capture_io { CONNECTION.job.delete :invalid_job_id }
|
27
|
+
|
28
|
+
err.must_match Not_Implemented_Matcher
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#job_wait" do
|
33
|
+
it "is not implemented" do
|
34
|
+
out, err = capture_io { CONNECTION.job.wait :invalid_job_id }
|
35
|
+
|
36
|
+
err.must_match Not_Implemented_Matcher
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe Rubineti::Node do
|
4
|
+
describe "#evacuate" do
|
5
|
+
it "is not implemented" do
|
6
|
+
out, err = capture_io { CONNECTION.node.evacuate :invalid_node_name }
|
7
|
+
|
8
|
+
err.must_match Not_Implemented_Matcher
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#list" do
|
13
|
+
it "returns a Hash" do
|
14
|
+
node_name = cassette_for("nodes").first["id"]
|
15
|
+
|
16
|
+
VCR.use_cassette "node_list" do
|
17
|
+
response = CONNECTION.node.list node_name
|
18
|
+
|
19
|
+
response.body.must_be_kind_of Hash
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#migrate" do
|
25
|
+
it "is not implemented" do
|
26
|
+
out, err = capture_io { CONNECTION.node.migrate :invalid_node_name }
|
27
|
+
|
28
|
+
err.must_match Not_Implemented_Matcher
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#role_create" do
|
33
|
+
it "is not implemented" do
|
34
|
+
out, err = capture_io { CONNECTION.node.role_create :invalid_node_name }
|
35
|
+
|
36
|
+
err.must_match Not_Implemented_Matcher
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#role_list" do
|
41
|
+
it "returns a role" do
|
42
|
+
node_name = cassette_for("nodes").first["id"]
|
43
|
+
|
44
|
+
VCR.use_cassette "node_role_list" do
|
45
|
+
response = CONNECTION.node.role_list node_name
|
46
|
+
|
47
|
+
response.body.must_equal "master"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#all" do
|
53
|
+
it "returns an Array of Hashes" do
|
54
|
+
VCR.use_cassette "nodes" do
|
55
|
+
CONNECTION.node.all.body.size.must_equal 2
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "#storage_list" do
|
61
|
+
it "is not implemented" do
|
62
|
+
out, err = capture_io { CONNECTION.node.storage_list :invalid_node_name }
|
63
|
+
|
64
|
+
err.must_match Not_Implemented_Matcher
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#storage_modify" do
|
69
|
+
it "is not implemented" do
|
70
|
+
out, err = capture_io { CONNECTION.node.storage_modify :invalid_node_name }
|
71
|
+
|
72
|
+
err.must_match Not_Implemented_Matcher
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -1,17 +1,19 @@
|
|
1
1
|
Bundler.setup :default, :test
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "rubineti"
|
4
4
|
|
5
|
-
|
5
|
+
require "minitest/spec"
|
6
|
+
require "vcr"
|
7
|
+
require "webmock"
|
6
8
|
|
7
9
|
class MiniTest::Unit::TestCase
|
8
|
-
|
10
|
+
CONNECTION = Rubineti::Client.new(
|
9
11
|
:host => "ganeti.primary",
|
10
12
|
:user => "fake",
|
11
13
|
:password => "credentials"
|
12
14
|
)
|
13
15
|
Job_Matcher = %r{^\d{4}$}
|
14
|
-
Not_Implemented_Matcher = %r{^WARNING: [A-Z][a-z]+#[a-z]
|
16
|
+
Not_Implemented_Matcher = %r{^WARNING: [A-Z][a-z]+#[a-z].* not implemented.$}
|
15
17
|
|
16
18
|
require "yajl"
|
17
19
|
def cassette_for cassette
|
@@ -21,13 +23,11 @@ class MiniTest::Unit::TestCase
|
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
|
-
require "vcr"
|
25
|
-
require "webmock"
|
26
26
|
WebMock.disable_net_connect! :allow => "ganeti.primary"
|
27
27
|
VCR.config do |c|
|
28
28
|
c.stub_with :webmock
|
29
29
|
c.cassette_library_dir = "test/fixtures/cassettes"
|
30
|
-
c.default_cassette_options = { :record => :
|
30
|
+
c.default_cassette_options = { :record => :none }
|
31
31
|
end
|
32
32
|
|
33
33
|
MiniTest::Unit.autorun
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
-
|
7
|
+
- 4
|
8
8
|
- 0
|
9
|
-
version: 1.
|
9
|
+
version: 1.4.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- retr0h
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-01-30 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -25,10 +25,10 @@ dependencies:
|
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
segments:
|
28
|
-
-
|
29
|
-
-
|
28
|
+
- 2
|
29
|
+
- 3
|
30
30
|
- 0
|
31
|
-
version:
|
31
|
+
version: 2.3.0
|
32
32
|
type: :runtime
|
33
33
|
prerelease: false
|
34
34
|
version_requirements: *id001
|
@@ -50,13 +50,11 @@ dependencies:
|
|
50
50
|
requirement: &id003 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
segments:
|
56
|
-
-
|
57
|
-
|
58
|
-
- 1
|
59
|
-
version: 1.5.1
|
56
|
+
- 0
|
57
|
+
version: "0"
|
60
58
|
type: :development
|
61
59
|
prerelease: false
|
62
60
|
version_requirements: *id003
|
@@ -65,13 +63,11 @@ dependencies:
|
|
65
63
|
requirement: &id004 !ruby/object:Gem::Requirement
|
66
64
|
none: false
|
67
65
|
requirements:
|
68
|
-
- -
|
66
|
+
- - ">="
|
69
67
|
- !ruby/object:Gem::Version
|
70
68
|
segments:
|
71
|
-
-
|
72
|
-
|
73
|
-
- 3
|
74
|
-
version: 1.3.3
|
69
|
+
- 0
|
70
|
+
version: "0"
|
75
71
|
type: :development
|
76
72
|
prerelease: false
|
77
73
|
version_requirements: *id004
|
@@ -80,13 +76,11 @@ dependencies:
|
|
80
76
|
requirement: &id005 !ruby/object:Gem::Requirement
|
81
77
|
none: false
|
82
78
|
requirements:
|
83
|
-
- -
|
79
|
+
- - ">="
|
84
80
|
- !ruby/object:Gem::Version
|
85
81
|
segments:
|
86
|
-
-
|
87
|
-
|
88
|
-
- 1
|
89
|
-
version: 1.6.1
|
82
|
+
- 0
|
83
|
+
version: "0"
|
90
84
|
type: :development
|
91
85
|
prerelease: false
|
92
86
|
version_requirements: *id005
|
@@ -95,13 +89,11 @@ dependencies:
|
|
95
89
|
requirement: &id006 !ruby/object:Gem::Requirement
|
96
90
|
none: false
|
97
91
|
requirements:
|
98
|
-
- -
|
92
|
+
- - ">="
|
99
93
|
- !ruby/object:Gem::Version
|
100
94
|
segments:
|
101
|
-
- 2
|
102
|
-
- 0
|
103
95
|
- 0
|
104
|
-
version:
|
96
|
+
version: "0"
|
105
97
|
type: :development
|
106
98
|
prerelease: false
|
107
99
|
version_requirements: *id006
|
@@ -110,13 +102,11 @@ dependencies:
|
|
110
102
|
requirement: &id007 !ruby/object:Gem::Requirement
|
111
103
|
none: false
|
112
104
|
requirements:
|
113
|
-
- -
|
105
|
+
- - ">="
|
114
106
|
- !ruby/object:Gem::Version
|
115
107
|
segments:
|
116
108
|
- 0
|
117
|
-
|
118
|
-
- 8
|
119
|
-
version: 0.7.8
|
109
|
+
version: "0"
|
120
110
|
type: :development
|
121
111
|
prerelease: false
|
122
112
|
version_requirements: *id007
|
@@ -139,11 +129,11 @@ files:
|
|
139
129
|
- VERSION
|
140
130
|
- lib/ganeti.rb
|
141
131
|
- lib/rubineti.rb
|
142
|
-
- lib/rubineti/
|
143
|
-
- lib/rubineti/
|
144
|
-
- lib/rubineti/
|
145
|
-
- lib/rubineti/
|
146
|
-
- lib/rubineti/
|
132
|
+
- lib/rubineti/client.rb
|
133
|
+
- lib/rubineti/cluster.rb
|
134
|
+
- lib/rubineti/instance.rb
|
135
|
+
- lib/rubineti/job.rb
|
136
|
+
- lib/rubineti/node.rb
|
147
137
|
- rubineti.gemspec
|
148
138
|
- test/fixtures/cassettes/cluster_info.yml
|
149
139
|
- test/fixtures/cassettes/cluster_oses.yml
|
@@ -163,11 +153,11 @@ files:
|
|
163
153
|
- test/fixtures/cassettes/node_list.yml
|
164
154
|
- test/fixtures/cassettes/node_role_list.yml
|
165
155
|
- test/fixtures/cassettes/nodes.yml
|
166
|
-
- test/lib/rubineti/
|
167
|
-
- test/lib/rubineti/
|
168
|
-
- test/lib/rubineti/
|
169
|
-
- test/lib/rubineti/
|
170
|
-
- test/
|
156
|
+
- test/lib/rubineti/cluster_test.rb
|
157
|
+
- test/lib/rubineti/instance_test.rb
|
158
|
+
- test/lib/rubineti/job_test.rb
|
159
|
+
- test/lib/rubineti/node_test.rb
|
160
|
+
- test/test_helper.rb
|
171
161
|
has_rdoc: true
|
172
162
|
homepage: http://github.com/retr0h/rubineti
|
173
163
|
licenses: []
|
@@ -201,8 +191,8 @@ signing_key:
|
|
201
191
|
specification_version: 3
|
202
192
|
summary: Ruby bindings to Ganeti's v2 Remote API.
|
203
193
|
test_files:
|
204
|
-
- test/lib/rubineti/
|
205
|
-
- test/lib/rubineti/
|
206
|
-
- test/lib/rubineti/
|
207
|
-
- test/lib/rubineti/
|
208
|
-
- test/
|
194
|
+
- test/lib/rubineti/cluster_test.rb
|
195
|
+
- test/lib/rubineti/instance_test.rb
|
196
|
+
- test/lib/rubineti/job_test.rb
|
197
|
+
- test/lib/rubineti/node_test.rb
|
198
|
+
- test/test_helper.rb
|
data/lib/rubineti/compute.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require "hugs"
|
2
|
-
|
3
|
-
module Rubineti
|
4
|
-
class Compute
|
5
|
-
##
|
6
|
-
# Include endpoints.
|
7
|
-
# TODO: meta; discover the endpoints?
|
8
|
-
|
9
|
-
%w(jobs instances cluster node).each do |m|
|
10
|
-
require "rubineti/compute/#{m}"
|
11
|
-
include eval "Rubineti::#{m.capitalize}"
|
12
|
-
end
|
13
|
-
|
14
|
-
##
|
15
|
-
# Required:
|
16
|
-
# +user+: A String containing the username for use in HTTP Basic auth.
|
17
|
-
# +password+: A String containing the password for use in HTTP Basic auth.
|
18
|
-
# +host+: A String with the host to connect.
|
19
|
-
|
20
|
-
def initialize options
|
21
|
-
@connection = Hugs.new(
|
22
|
-
:user => options[:user],
|
23
|
-
:password => options[:password],
|
24
|
-
:host => options[:host],
|
25
|
-
:port => options[:port] || 5080,
|
26
|
-
)
|
27
|
-
end
|
28
|
-
|
29
|
-
def request
|
30
|
-
@connection
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require "support"
|
2
|
-
|
3
|
-
describe Rubineti::Compute do
|
4
|
-
describe Rubineti::Cluster do
|
5
|
-
describe "#cluster_features" do
|
6
|
-
it "is not implemented" do
|
7
|
-
out, err = capture_io { Connection.cluster_features }
|
8
|
-
|
9
|
-
err.must_match Not_Implemented_Matcher
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "#cluster_info" do
|
14
|
-
it "returns a Hash" do
|
15
|
-
VCR.use_cassette "cluster_info" do
|
16
|
-
response = Connection.cluster_info
|
17
|
-
|
18
|
-
response.must_be_kind_of Hash
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "#cluster_redistribute_config" do
|
24
|
-
it "returns a job_id" do
|
25
|
-
VCR.use_cassette "cluster_redistribute_config" do
|
26
|
-
Connection.cluster_redistribute_config.must_match Job_Matcher
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "#cluser_tags_create" do
|
32
|
-
it "is not implemented" do
|
33
|
-
out, err = capture_io { Connection.cluster_tags_create }
|
34
|
-
|
35
|
-
err.must_match Not_Implemented_Matcher
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#cluser_tags_delete" do
|
40
|
-
it "is not implemented" do
|
41
|
-
out, err = capture_io { Connection.cluster_tags_create }
|
42
|
-
|
43
|
-
err.must_match Not_Implemented_Matcher
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "#cluser_tags_list" do
|
48
|
-
it "is not implemented" do
|
49
|
-
out, err = capture_io { Connection.cluster_tags_list }
|
50
|
-
|
51
|
-
err.must_match Not_Implemented_Matcher
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe "#cluser_version" do
|
56
|
-
it "returns a version string" do
|
57
|
-
VCR.use_cassette "cluster_version" do
|
58
|
-
Connection.cluster_version.must_equal 2
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
describe "#cluser_os_list" do
|
64
|
-
it "returns an Array" do
|
65
|
-
VCR.use_cassette "cluster_oses" do
|
66
|
-
Connection.cluster_os_list.size.must_equal 1
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,202 +0,0 @@
|
|
1
|
-
require "support"
|
2
|
-
|
3
|
-
describe Rubineti::Compute do
|
4
|
-
describe Rubineti::Instances do
|
5
|
-
|
6
|
-
describe "#instance_activate_disks" do
|
7
|
-
it "is not implemented" do
|
8
|
-
out, err = capture_io { Connection.instance_activate_disks(:invalid_instance_name) }
|
9
|
-
|
10
|
-
err.must_match Not_Implemented_Matcher
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "#instance_create" do
|
15
|
-
it "returns a job_id" do
|
16
|
-
params = {
|
17
|
-
:__version__ => Ganeti::Version,
|
18
|
-
:name => "compute1",
|
19
|
-
:pnode => "node1",
|
20
|
-
:snode => "node2",
|
21
|
-
:disk_template => "drbd8",
|
22
|
-
:disks => [4096],
|
23
|
-
:beparams => { :vcpus => 1, :memory => 512 },
|
24
|
-
:os => "debootstrap+default"
|
25
|
-
}
|
26
|
-
|
27
|
-
VCR.use_cassette "instance_create" do
|
28
|
-
response = Connection.instance_create :body => params, :query => "dry-run=1"
|
29
|
-
|
30
|
-
response.must_match Job_Matcher
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe "#instance_deactivate_disks" do
|
36
|
-
it "is not implemented" do
|
37
|
-
out, err = capture_io { Connection.instance_deactivate_disks :invalid_instance_name }
|
38
|
-
|
39
|
-
err.must_match Not_Implemented_Matcher
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "#instance_delete" do
|
44
|
-
it "returns a job_id" do
|
45
|
-
VCR.use_cassette "instance_delete" do
|
46
|
-
response = Connection.instance_delete :invalid_instance_name, :query => "dry-run=1"
|
47
|
-
|
48
|
-
response.must_match Job_Matcher
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "#instance_export" do
|
54
|
-
it "is not implemented" do
|
55
|
-
out, err = capture_io { Connection.instance_export :invalid_instance_name }
|
56
|
-
|
57
|
-
err.must_match Not_Implemented_Matcher
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe "#instance_info" do
|
62
|
-
it "returns a job_id" do
|
63
|
-
instance_name = cassette_for("instances").first["name"]
|
64
|
-
|
65
|
-
VCR.use_cassette "instance_info" do
|
66
|
-
response = Connection.instance_info instance_name
|
67
|
-
|
68
|
-
response.must_match Job_Matcher
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe "#instance_list" do
|
74
|
-
it "returns a Hash" do
|
75
|
-
instance_name = cassette_for("instances").first["name"]
|
76
|
-
|
77
|
-
VCR.use_cassette "instance_list" do
|
78
|
-
response = Connection.instance_list instance_name
|
79
|
-
|
80
|
-
response.must_be_kind_of Hash
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe "#instance_migrate" do
|
86
|
-
it "is not implemented" do
|
87
|
-
out, err = capture_io { Connection.instance_migrate :invalid_instance_name }
|
88
|
-
|
89
|
-
err.must_match Not_Implemented_Matcher
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe "#instance_modify" do
|
94
|
-
it "is not implemented" do
|
95
|
-
out, err = capture_io { Connection.instance_modify :invalid_instance_name }
|
96
|
-
|
97
|
-
err.must_match Not_Implemented_Matcher
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
describe "#instance_prepare_export" do
|
102
|
-
it "is not implemented" do
|
103
|
-
out, err = capture_io { Connection.instance_prepare_export :invalid_instance_name }
|
104
|
-
|
105
|
-
err.must_match Not_Implemented_Matcher
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
describe "#instance_reboot" do
|
110
|
-
it "returns a job_id" do
|
111
|
-
VCR.use_cassette "instance_reboot" do
|
112
|
-
response = Connection.instance_reboot :invalid_instance_name, :query => "dry-run=1"
|
113
|
-
|
114
|
-
response.must_match Job_Matcher
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
describe "#instance_reinstall" do
|
120
|
-
it "returns a job_id" do
|
121
|
-
instance_name = cassette_for("instances").first["name"]
|
122
|
-
params = {
|
123
|
-
:os => "debootstrap+default"
|
124
|
-
}
|
125
|
-
|
126
|
-
VCR.use_cassette "instance_reinstall" do
|
127
|
-
response = Connection.instance_reinstall instance_name, :body => params
|
128
|
-
|
129
|
-
response.must_match Job_Matcher
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
describe "#instance_rename" do
|
135
|
-
it "is not implemented" do
|
136
|
-
lambda { Connection.instance_rename :invalid_instance_name }.must_output(nil, nil).must_equal true
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
describe "#instance_replace_disks" do
|
141
|
-
it "is not implemented" do
|
142
|
-
out, err = capture_io { Connection.instance_replace_disks :invalid_instance_name }
|
143
|
-
|
144
|
-
err.must_match Not_Implemented_Matcher
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe "#instance_shutdown" do
|
149
|
-
it "returns a job_id" do
|
150
|
-
VCR.use_cassette "instance_shutdown" do
|
151
|
-
response = Connection.instance_shutdown :invalid_instance_name, :query => "dry-run=1"
|
152
|
-
|
153
|
-
response.must_match Job_Matcher
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
describe "#instances_list" do
|
159
|
-
it "returns an Array of Hashes" do
|
160
|
-
VCR.use_cassette "instances" do
|
161
|
-
response = Connection.instances_list :query => "bulk=1"
|
162
|
-
|
163
|
-
response.size.must_equal 1
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
describe "#instance_startup" do
|
169
|
-
it "returns a job_id" do
|
170
|
-
VCR.use_cassette "instance_startup" do
|
171
|
-
response = Connection.instance_startup :invalid_instance_name, :query => "dry-run=1"
|
172
|
-
|
173
|
-
response.must_match Job_Matcher
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
describe "#instance_tag_create" do
|
179
|
-
it "is not implemented" do
|
180
|
-
out, err = capture_io { Connection.instance_tag_create :invalid_instance_name }
|
181
|
-
|
182
|
-
err.must_match Not_Implemented_Matcher
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
describe "#instance_tag_delete" do
|
187
|
-
it "is not implemented" do
|
188
|
-
out, err = capture_io { Connection.instance_tag_delete :invalid_instance_name }
|
189
|
-
|
190
|
-
err.must_match Not_Implemented_Matcher
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
describe "#instance_tag_list" do
|
195
|
-
it "is not implemented" do
|
196
|
-
out, err = capture_io { Connection.instance_tag_list :invalid_instance_name }
|
197
|
-
|
198
|
-
err.must_match Not_Implemented_Matcher
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
202
|
-
end
|