libvirt-ruby 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -3
- data/lib/libvirt-ruby/connect.rb +1 -10
- data/lib/libvirt-ruby/domain.rb +1 -10
- data/lib/libvirt-ruby/network.rb +1 -10
- data/lib/libvirt-ruby/storage_pool.rb +1 -10
- data/lib/libvirt-ruby/storage_vol.rb +1 -10
- data/lib/libvirt-ruby/util.rb +8 -4
- data/lib/libvirt-ruby/version.rb +1 -1
- data/spec/libvirt-ruby/connect_spec.rb +29 -13
- data/spec/libvirt-ruby/domain_spec.rb +29 -13
- data/spec/libvirt-ruby/network_spec.rb +29 -13
- data/spec/libvirt-ruby/storage_pool_spec.rb +29 -13
- data/spec/libvirt-ruby/storage_vol_spec.rb +29 -13
- metadata +10 -10
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Libvirt-Ruby
|
1
|
+
= Libvirt-Ruby {<img src="https://secure.travis-ci.org/plribeiro3000/libvirt-ruby.png" />}[http://travis-ci.org/plribeiro3000/libvirt-ruby]
|
2
2
|
|
3
3
|
Rails gem to map functions from libvirt's library to ruby.
|
4
4
|
|
@@ -15,8 +15,7 @@ This gem has as a dependencie the libvirt package. Google it and u will find how
|
|
15
15
|
You should one of the classes defined and call method dispatcher passing parameters:
|
16
16
|
first -> the method just like the one from Libvirt in C as a string except the vir and the name of the Class just like 'Close' from 'virConnectClose'
|
17
17
|
second -> the args of the function in C in the same order
|
18
|
-
|
19
|
-
Your second parameter must be an array where the last value is a symbol of what the function should return.
|
18
|
+
third -> a symbol of the retun of the function.
|
20
19
|
|
21
20
|
== Experimental
|
22
21
|
|
data/lib/libvirt-ruby/connect.rb
CHANGED
@@ -1,15 +1,6 @@
|
|
1
1
|
module Libvirt
|
2
2
|
module Ruby
|
3
|
-
|
4
|
-
extend Libvirt::Ruby::Util
|
5
|
-
extend FFI::Library
|
6
|
-
|
7
|
-
begin
|
8
|
-
ffi_lib "libvirt.so.0"
|
9
|
-
rescue LoadError
|
10
|
-
raise Libvirt::Ruby::Exceptions::MissingLib
|
11
|
-
end
|
12
|
-
|
3
|
+
class Connect < Libvirt::Ruby::Util
|
13
4
|
def self.klass
|
14
5
|
"virConnect"
|
15
6
|
end
|
data/lib/libvirt-ruby/domain.rb
CHANGED
@@ -1,15 +1,6 @@
|
|
1
1
|
module Libvirt
|
2
2
|
module Ruby
|
3
|
-
|
4
|
-
extend Libvirt::Ruby::Util
|
5
|
-
extend FFI::Library
|
6
|
-
|
7
|
-
begin
|
8
|
-
ffi_lib "libvirt.so.0"
|
9
|
-
rescue LoadError
|
10
|
-
raise Libvirt::Ruby::Exceptions::MissingLib
|
11
|
-
end
|
12
|
-
|
3
|
+
class Domain < Libvirt::Ruby::Util
|
13
4
|
def self.klass
|
14
5
|
"virDomain"
|
15
6
|
end
|
data/lib/libvirt-ruby/network.rb
CHANGED
@@ -1,15 +1,6 @@
|
|
1
1
|
module Libvirt
|
2
2
|
module Ruby
|
3
|
-
|
4
|
-
extend Libvirt::Ruby::Util
|
5
|
-
extend FFI::Library
|
6
|
-
|
7
|
-
begin
|
8
|
-
ffi_lib "libvirt.so.0"
|
9
|
-
rescue LoadError
|
10
|
-
raise Libvirt::Ruby::Exceptions::MissingLib
|
11
|
-
end
|
12
|
-
|
3
|
+
class Network < Libvirt::Ruby::Util
|
13
4
|
def self.klass
|
14
5
|
"virNetwork"
|
15
6
|
end
|
@@ -1,15 +1,6 @@
|
|
1
1
|
module Libvirt
|
2
2
|
module Ruby
|
3
|
-
|
4
|
-
extend Libvirt::Ruby::Util
|
5
|
-
extend FFI::Library
|
6
|
-
|
7
|
-
begin
|
8
|
-
ffi_lib "libvirt.so.0"
|
9
|
-
rescue LoadError
|
10
|
-
raise Libvirt::Ruby::Exceptions::MissingLib
|
11
|
-
end
|
12
|
-
|
3
|
+
class StoragePool < Libvirt::Ruby::Util
|
13
4
|
def self.klass
|
14
5
|
"virStoragePool"
|
15
6
|
end
|
@@ -1,15 +1,6 @@
|
|
1
1
|
module Libvirt
|
2
2
|
module Ruby
|
3
|
-
|
4
|
-
extend Libvirt::Ruby::Util
|
5
|
-
extend FFI::Library
|
6
|
-
|
7
|
-
begin
|
8
|
-
ffi_lib "libvirt.so.0"
|
9
|
-
rescue LoadError
|
10
|
-
raise Libvirt::Ruby::Exceptions::MissingLib
|
11
|
-
end
|
12
|
-
|
3
|
+
class StorageVol < Libvirt::Ruby::Util
|
13
4
|
def self.klass
|
14
5
|
"virStorageVol"
|
15
6
|
end
|
data/lib/libvirt-ruby/util.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
module Libvirt
|
2
2
|
module Ruby
|
3
|
-
|
4
|
-
|
3
|
+
class Util
|
4
|
+
extend FFI::Library
|
5
|
+
|
6
|
+
def self.dispatcher(method, args = [], return_type)
|
5
7
|
begin
|
6
|
-
|
8
|
+
ffi_lib "libvirt"
|
7
9
|
attach_function (self.klass + method.to_s), (self.klass + method.to_s), args, return_type
|
8
|
-
send(
|
10
|
+
send (self.klass + method.to_s), args
|
9
11
|
rescue FFI::NotFoundError
|
10
12
|
raise Libvirt::Ruby::Exceptions::InvalidFunction.new(self.klass + method.to_s)
|
13
|
+
rescue LoadError
|
14
|
+
raise Libvirt::Ruby::Exceptions::MissingLib
|
11
15
|
end
|
12
16
|
end
|
13
17
|
end
|
data/lib/libvirt-ruby/version.rb
CHANGED
@@ -4,28 +4,44 @@ describe Libvirt::Ruby::Connect do
|
|
4
4
|
let(:connect) { Libvirt::Ruby::Connect }
|
5
5
|
|
6
6
|
context "when calling method #dispatcher" do
|
7
|
-
context "with
|
7
|
+
context "with libvirt installed" do
|
8
8
|
before :each do
|
9
|
-
connect.stub(:
|
10
|
-
connect.stub(:send).with("virConnectClose", [])
|
9
|
+
connect.stub(:ffi_lib).with("libvirt")
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
context "and a valid libvirt function" do
|
13
|
+
before :each do
|
14
|
+
connect.stub(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
|
15
|
+
connect.stub(:send).with("virConnectClose", [])
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
connect.dispatcher('Close', [], :int)
|
20
|
+
end
|
16
21
|
|
17
|
-
|
18
|
-
|
22
|
+
it "should attach it as a binding for C's function" do
|
23
|
+
connect.should_receive(:attach_function).with("virConnectClose", "virConnectClose", [], :int).and_return(true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should call the new attached method" do
|
27
|
+
connect.should_receive(:send).with("virConnectClose", [])
|
28
|
+
end
|
19
29
|
end
|
20
30
|
|
21
|
-
|
22
|
-
|
31
|
+
context "and an invalid libvirt function" do
|
32
|
+
before :each do
|
33
|
+
connect.stub(:attach_function).with("virConnectAbc", "virConnectAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise an exception" do
|
37
|
+
lambda { connect.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
|
38
|
+
end
|
23
39
|
end
|
24
40
|
end
|
25
41
|
|
26
|
-
context "
|
27
|
-
it "should
|
28
|
-
lambda { connect.dispatcher('Abc', [:int
|
42
|
+
context "without libvirt installed" do
|
43
|
+
it "should raise an exception" do
|
44
|
+
lambda { connect.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
|
29
45
|
end
|
30
46
|
end
|
31
47
|
end
|
@@ -4,28 +4,44 @@ describe Libvirt::Ruby::Domain do
|
|
4
4
|
let(:domain) { Libvirt::Ruby::Domain }
|
5
5
|
|
6
6
|
context "when calling method #dispatcher" do
|
7
|
-
context "with
|
7
|
+
context "with libvirt installed" do
|
8
8
|
before :each do
|
9
|
-
domain.stub(:
|
10
|
-
domain.stub(:send).with("virDomainCreate", [])
|
9
|
+
domain.stub(:ffi_lib).with("libvirt")
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
context "and a valid libvirt function" do
|
13
|
+
before :each do
|
14
|
+
domain.stub(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int).and_return(true)
|
15
|
+
domain.stub(:send).with("virDomainCreate", [])
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
domain.dispatcher('Create', [], :int)
|
20
|
+
end
|
16
21
|
|
17
|
-
|
18
|
-
|
22
|
+
it "should attach it as a binding for C's function" do
|
23
|
+
domain.should_receive(:attach_function).with("virDomainCreate", "virDomainCreate", [], :int).and_return(true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should call the new attached method" do
|
27
|
+
domain.should_receive(:send).with("virDomainCreate", [])
|
28
|
+
end
|
19
29
|
end
|
20
30
|
|
21
|
-
|
22
|
-
|
31
|
+
context "and an invalid libvirt function" do
|
32
|
+
before :each do
|
33
|
+
domain.stub(:attach_function).with("virDomainAbc", "virDomainAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise an exception" do
|
37
|
+
lambda { domain.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
|
38
|
+
end
|
23
39
|
end
|
24
40
|
end
|
25
41
|
|
26
|
-
context "
|
27
|
-
it "should
|
28
|
-
lambda { domain.dispatcher('Abc', [:int
|
42
|
+
context "without libvirt installed" do
|
43
|
+
it "should raise an exception" do
|
44
|
+
lambda { domain.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
|
29
45
|
end
|
30
46
|
end
|
31
47
|
end
|
@@ -4,28 +4,44 @@ describe Libvirt::Ruby::Network do
|
|
4
4
|
let(:network) { Libvirt::Ruby::Network }
|
5
5
|
|
6
6
|
context "when calling method #dispatcher" do
|
7
|
-
context "with
|
7
|
+
context "with libvirt installed" do
|
8
8
|
before :each do
|
9
|
-
network.stub(:
|
10
|
-
network.stub(:send).with("virNetworkRef", [])
|
9
|
+
network.stub(:ffi_lib).with("libvirt")
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
context "and a valid libvirt function" do
|
13
|
+
before :each do
|
14
|
+
network.stub(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int).and_return(true)
|
15
|
+
network.stub(:send).with("virNetworkRef", [])
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
network.dispatcher('Ref', [], :int)
|
20
|
+
end
|
16
21
|
|
17
|
-
|
18
|
-
|
22
|
+
it "should attach it as a binding for C's function" do
|
23
|
+
network.should_receive(:attach_function).with("virNetworkRef", "virNetworkRef", [], :int).and_return(true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should call the new attached method" do
|
27
|
+
network.should_receive(:send).with("virNetworkRef", [])
|
28
|
+
end
|
19
29
|
end
|
20
30
|
|
21
|
-
|
22
|
-
|
31
|
+
context "and an invalid libvirt function" do
|
32
|
+
before :each do
|
33
|
+
network.stub(:attach_function).with("virNetworkAbc", "virNetworkAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise an exception" do
|
37
|
+
lambda { network.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
|
38
|
+
end
|
23
39
|
end
|
24
40
|
end
|
25
41
|
|
26
|
-
context "
|
27
|
-
it "should
|
28
|
-
lambda { network.dispatcher('Abc', [:int
|
42
|
+
context "without libvirt installed" do
|
43
|
+
it "should raise an exception" do
|
44
|
+
lambda { network.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
|
29
45
|
end
|
30
46
|
end
|
31
47
|
end
|
@@ -4,28 +4,44 @@ describe Libvirt::Ruby::StoragePool do
|
|
4
4
|
let(:storage_pool) { Libvirt::Ruby::StoragePool }
|
5
5
|
|
6
6
|
context "when calling method #dispatcher" do
|
7
|
-
context "with
|
7
|
+
context "with libvirt installed" do
|
8
8
|
before :each do
|
9
|
-
storage_pool.stub(:
|
10
|
-
storage_pool.stub(:send).with("virStoragePoolRefresh", [])
|
9
|
+
storage_pool.stub(:ffi_lib).with("libvirt")
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
context "and a valid libvirt function" do
|
13
|
+
before :each do
|
14
|
+
storage_pool.stub(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int).and_return(true)
|
15
|
+
storage_pool.stub(:send).with("virStoragePoolRefresh", [])
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
storage_pool.dispatcher('Refresh', [], :int)
|
20
|
+
end
|
16
21
|
|
17
|
-
|
18
|
-
|
22
|
+
it "should attach it as a binding for C's function" do
|
23
|
+
storage_pool.should_receive(:attach_function).with("virStoragePoolRefresh", "virStoragePoolRefresh", [], :int).and_return(true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should call the new attached method" do
|
27
|
+
storage_pool.should_receive(:send).with("virStoragePoolRefresh", [])
|
28
|
+
end
|
19
29
|
end
|
20
30
|
|
21
|
-
|
22
|
-
|
31
|
+
context "and an invalid libvirt function" do
|
32
|
+
before :each do
|
33
|
+
storage_pool.stub(:attach_function).with("virStoragePoolAbc", "virStoragePoolAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise an exception" do
|
37
|
+
lambda { storage_pool.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
|
38
|
+
end
|
23
39
|
end
|
24
40
|
end
|
25
41
|
|
26
|
-
context "
|
27
|
-
it "should
|
28
|
-
lambda { storage_pool.dispatcher('Abc', [:int
|
42
|
+
context "without libvirt installed" do
|
43
|
+
it "should raise an exception" do
|
44
|
+
lambda { storage_pool.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
|
29
45
|
end
|
30
46
|
end
|
31
47
|
end
|
@@ -4,28 +4,44 @@ describe Libvirt::Ruby::StorageVol do
|
|
4
4
|
let(:storage_vol) { Libvirt::Ruby::StorageVol }
|
5
5
|
|
6
6
|
context "when calling method #dispatcher" do
|
7
|
-
context "with
|
7
|
+
context "with libvirt installed" do
|
8
8
|
before :each do
|
9
|
-
storage_vol.stub(:
|
10
|
-
storage_vol.stub(:send).with("virStorageVolResize", [])
|
9
|
+
storage_vol.stub(:ffi_lib).with("libvirt")
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
context "and a valid libvirt function" do
|
13
|
+
before :each do
|
14
|
+
storage_vol.stub(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int).and_return(true)
|
15
|
+
storage_vol.stub(:send).with("virStorageVolResize", [])
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
storage_vol.dispatcher('Resize', [], :int)
|
20
|
+
end
|
16
21
|
|
17
|
-
|
18
|
-
|
22
|
+
it "should attach it as a binding for C's function" do
|
23
|
+
storage_vol.should_receive(:attach_function).with("virStorageVolResize", "virStorageVolResize", [], :int).and_return(true)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should call the new attached method" do
|
27
|
+
storage_vol.should_receive(:send).with("virStorageVolResize", [])
|
28
|
+
end
|
19
29
|
end
|
20
30
|
|
21
|
-
|
22
|
-
|
31
|
+
context "and an invalid libvirt function" do
|
32
|
+
before :each do
|
33
|
+
storage_vol.stub(:attach_function).with("virStorageVolAbc", "virStorageVolAbc", [], :int).and_raise(FFI::NotFoundError.new('Abc', 'libvirt'))
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise an exception" do
|
37
|
+
lambda { storage_vol.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::InvalidFunction)
|
38
|
+
end
|
23
39
|
end
|
24
40
|
end
|
25
41
|
|
26
|
-
context "
|
27
|
-
it "should
|
28
|
-
lambda { storage_vol.dispatcher('Abc', [:int
|
42
|
+
context "without libvirt installed" do
|
43
|
+
it "should raise an exception" do
|
44
|
+
lambda { storage_vol.dispatcher('Abc', [], :int) }.should raise_error(Libvirt::Ruby::Exceptions::MissingLib)
|
29
45
|
end
|
30
46
|
end
|
31
47
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libvirt-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
16
|
-
requirement: &
|
16
|
+
requirement: &13546920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *13546920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &13546320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *13546320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &13545340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *13545340
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: fakefs
|
49
|
-
requirement: &
|
49
|
+
requirement: &13544880 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *13544880
|
58
58
|
description: Access Libvirt's C Library through ruby classes and methods
|
59
59
|
email: plribeiro3000@gmail.com
|
60
60
|
executables: []
|