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.
@@ -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