rubineti 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 "minitest/spec"
3
+ require "rubineti"
4
4
 
5
- Dir[File.join "./lib", "**", "*.rb"].each { |f| require f }
5
+ require "minitest/spec"
6
+ require "vcr"
7
+ require "webmock"
6
8
 
7
9
  class MiniTest::Unit::TestCase
8
- Connection = Rubineti::Compute.new(
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]+_[a-z_]+ not implemented.$}
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 => :new_episodes }
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
- - 3
7
+ - 4
8
8
  - 0
9
- version: 1.3.0
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: 2010-12-12 00:00:00 -08:00
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
- - 1
29
- - 1
28
+ - 2
29
+ - 3
30
30
  - 0
31
- version: 1.1.0
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
- - 1
57
- - 5
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
- - 1
72
- - 3
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
- - 1
87
- - 6
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: 2.0.0
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
- - 7
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/compute.rb
143
- - lib/rubineti/compute/cluster.rb
144
- - lib/rubineti/compute/instances.rb
145
- - lib/rubineti/compute/jobs.rb
146
- - lib/rubineti/compute/node.rb
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/compute/test_cluster.rb
167
- - test/lib/rubineti/compute/test_instances.rb
168
- - test/lib/rubineti/compute/test_jobs.rb
169
- - test/lib/rubineti/compute/test_node.rb
170
- - test/support.rb
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/compute/test_cluster.rb
205
- - test/lib/rubineti/compute/test_instances.rb
206
- - test/lib/rubineti/compute/test_jobs.rb
207
- - test/lib/rubineti/compute/test_node.rb
208
- - test/support.rb
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
@@ -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