fog-libvirt-csem 0.9.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.
- checksums.yaml +7 -0
- data/CONTRIBUTORS.md +24 -0
- data/Gemfile +9 -0
- data/LICENSE.md +20 -0
- data/README.md +83 -0
- data/Rakefile +127 -0
- data/fog-libvirt-csem.gemspec +49 -0
- data/lib/fog/bin/libvirt.rb +58 -0
- data/lib/fog/libvirt/compute.rb +140 -0
- data/lib/fog/libvirt/models/compute/README.md +92 -0
- data/lib/fog/libvirt/models/compute/interface.rb +25 -0
- data/lib/fog/libvirt/models/compute/interfaces.rb +20 -0
- data/lib/fog/libvirt/models/compute/network.rb +33 -0
- data/lib/fog/libvirt/models/compute/networks.rb +20 -0
- data/lib/fog/libvirt/models/compute/nic.rb +50 -0
- data/lib/fog/libvirt/models/compute/nics.rb +12 -0
- data/lib/fog/libvirt/models/compute/node.rb +29 -0
- data/lib/fog/libvirt/models/compute/nodes.rb +20 -0
- data/lib/fog/libvirt/models/compute/pool.rb +84 -0
- data/lib/fog/libvirt/models/compute/pools.rb +20 -0
- data/lib/fog/libvirt/models/compute/server.rb +514 -0
- data/lib/fog/libvirt/models/compute/servers.rb +21 -0
- data/lib/fog/libvirt/models/compute/templates/network.xml.erb +6 -0
- data/lib/fog/libvirt/models/compute/templates/pool.xml.erb +6 -0
- data/lib/fog/libvirt/models/compute/templates/server.xml.erb +155 -0
- data/lib/fog/libvirt/models/compute/templates/volume.xml.erb +30 -0
- data/lib/fog/libvirt/models/compute/util/uri.rb +138 -0
- data/lib/fog/libvirt/models/compute/util/util.rb +32 -0
- data/lib/fog/libvirt/models/compute/volume.rb +129 -0
- data/lib/fog/libvirt/models/compute/volumes.rb +20 -0
- data/lib/fog/libvirt/requests/compute/clone_volume.rb +18 -0
- data/lib/fog/libvirt/requests/compute/create_domain.rb +17 -0
- data/lib/fog/libvirt/requests/compute/create_volume.rb +16 -0
- data/lib/fog/libvirt/requests/compute/define_domain.rb +17 -0
- data/lib/fog/libvirt/requests/compute/define_pool.rb +16 -0
- data/lib/fog/libvirt/requests/compute/destroy_interface.rb +18 -0
- data/lib/fog/libvirt/requests/compute/destroy_network.rb +17 -0
- data/lib/fog/libvirt/requests/compute/dhcp_leases.rb +37 -0
- data/lib/fog/libvirt/requests/compute/get_node_info.rb +37 -0
- data/lib/fog/libvirt/requests/compute/libversion.rb +18 -0
- data/lib/fog/libvirt/requests/compute/list_domains.rb +128 -0
- data/lib/fog/libvirt/requests/compute/list_interfaces.rb +57 -0
- data/lib/fog/libvirt/requests/compute/list_networks.rb +63 -0
- data/lib/fog/libvirt/requests/compute/list_pool_volumes.rb +19 -0
- data/lib/fog/libvirt/requests/compute/list_pools.rb +71 -0
- data/lib/fog/libvirt/requests/compute/list_volumes.rb +106 -0
- data/lib/fog/libvirt/requests/compute/mock_files/domain.xml +40 -0
- data/lib/fog/libvirt/requests/compute/pool_action.rb +19 -0
- data/lib/fog/libvirt/requests/compute/update_autostart.rb +18 -0
- data/lib/fog/libvirt/requests/compute/update_display.rb +36 -0
- data/lib/fog/libvirt/requests/compute/upload_volume.rb +31 -0
- data/lib/fog/libvirt/requests/compute/vm_action.rb +19 -0
- data/lib/fog/libvirt/requests/compute/volume_action.rb +18 -0
- data/lib/fog/libvirt/version.rb +5 -0
- data/lib/fog/libvirt.rb +16 -0
- data/minitests/server/server_test.rb +64 -0
- data/minitests/server/user_data_iso_test.rb +77 -0
- data/minitests/test_helper.rb +18 -0
- data/tests/helper.rb +17 -0
- data/tests/helpers/formats_helper.rb +100 -0
- data/tests/helpers/formats_helper_tests.rb +107 -0
- data/tests/helpers/mock_helper.rb +14 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- data/tests/libvirt/compute_tests.rb +19 -0
- data/tests/libvirt/models/compute/interface_tests.rb +27 -0
- data/tests/libvirt/models/compute/interfaces_tests.rb +14 -0
- data/tests/libvirt/models/compute/network_tests.rb +31 -0
- data/tests/libvirt/models/compute/networks_tests.rb +13 -0
- data/tests/libvirt/models/compute/nic_tests.rb +31 -0
- data/tests/libvirt/models/compute/nics_tests.rb +10 -0
- data/tests/libvirt/models/compute/pool_tests.rb +27 -0
- data/tests/libvirt/models/compute/pools_tests.rb +13 -0
- data/tests/libvirt/models/compute/server_tests.rb +63 -0
- data/tests/libvirt/models/compute/servers_tests.rb +14 -0
- data/tests/libvirt/models/compute/volume_tests.rb +38 -0
- data/tests/libvirt/models/compute/volumes_tests.rb +15 -0
- data/tests/libvirt/requests/compute/create_domain_tests.rb +21 -0
- data/tests/libvirt/requests/compute/define_domain_tests.rb +11 -0
- data/tests/libvirt/requests/compute/dhcp_leases_tests.rb +15 -0
- data/tests/libvirt/requests/compute/update_autostart_tests.rb +12 -0
- data/tests/libvirt/requests/compute/update_display.rb +13 -0
- metadata +335 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
require 'fog/libvirt/models/compute/util/util'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Libvirt
|
|
6
|
+
class Compute
|
|
7
|
+
class Network < Fog::Model
|
|
8
|
+
include Fog::Libvirt::Util
|
|
9
|
+
|
|
10
|
+
identity :uuid
|
|
11
|
+
attribute :name
|
|
12
|
+
attribute :bridge_name
|
|
13
|
+
attribute :xml
|
|
14
|
+
|
|
15
|
+
def initialize(attributes = {})
|
|
16
|
+
super
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def dhcp_leases(mac, flags = 0)
|
|
20
|
+
service.dhcp_leases(uuid, mac, flags)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def save
|
|
24
|
+
raise Fog::Errors::Error.new('Creating a new network is not yet implemented. Contributions welcome!')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def shutdown
|
|
28
|
+
service.destroy_network(uuid)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/libvirt/models/compute/network'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Libvirt
|
|
6
|
+
class Compute
|
|
7
|
+
class Networks < Fog::Collection
|
|
8
|
+
model Fog::Libvirt::Compute::Network
|
|
9
|
+
|
|
10
|
+
def all(filter={})
|
|
11
|
+
load(service.list_networks(filter))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get(uuid)
|
|
15
|
+
self.all(:uuid => uuid).first
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Libvirt
|
|
5
|
+
class Compute
|
|
6
|
+
class Nic < Fog::Model
|
|
7
|
+
identity :mac
|
|
8
|
+
attribute :id
|
|
9
|
+
attribute :type
|
|
10
|
+
attribute :network
|
|
11
|
+
attribute :bridge
|
|
12
|
+
attribute :model
|
|
13
|
+
|
|
14
|
+
attr_accessor :server
|
|
15
|
+
|
|
16
|
+
TYPES = ["network", "bridge", "user"]
|
|
17
|
+
|
|
18
|
+
def new?
|
|
19
|
+
mac.nil?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def initialize attributes
|
|
23
|
+
super defaults.merge(attributes)
|
|
24
|
+
raise Fog::Errors::Error.new("#{type} is not a supported nic type") if new? && !TYPES.include?(type)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def save
|
|
28
|
+
raise Fog::Errors::Error.new('Creating a new nic is not yet implemented. Contributions welcome!')
|
|
29
|
+
#requires :server
|
|
30
|
+
#service.attach_nic(domain , self)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def destroy
|
|
34
|
+
raise Fog::Errors::Error.new('Destroying an interface is not yet implemented. Contributions welcome!')
|
|
35
|
+
#requires :server
|
|
36
|
+
##detach the nic
|
|
37
|
+
#service.detach_nic(domain, mac)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
def defaults
|
|
42
|
+
{
|
|
43
|
+
:type => "bridge",
|
|
44
|
+
:model => "virtio"
|
|
45
|
+
}
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Libvirt
|
|
5
|
+
class Compute
|
|
6
|
+
class Node < Fog::Model
|
|
7
|
+
identity :uuid
|
|
8
|
+
|
|
9
|
+
attribute :model
|
|
10
|
+
attribute :memory
|
|
11
|
+
attribute :cpus
|
|
12
|
+
attribute :mhz
|
|
13
|
+
attribute :nodes
|
|
14
|
+
attribute :sockets
|
|
15
|
+
attribute :cores
|
|
16
|
+
attribute :threads
|
|
17
|
+
attribute :type
|
|
18
|
+
attribute :version
|
|
19
|
+
attribute :uri
|
|
20
|
+
attribute :node_free_memory
|
|
21
|
+
attribute :max_vcpus
|
|
22
|
+
attribute :manufacturer
|
|
23
|
+
attribute :product
|
|
24
|
+
attribute :serial
|
|
25
|
+
attribute :hostname
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/libvirt/models/compute/node'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Libvirt
|
|
6
|
+
class Compute
|
|
7
|
+
class Nodes < Fog::Collection
|
|
8
|
+
model Fog::Libvirt::Compute::Node
|
|
9
|
+
|
|
10
|
+
def all(filter={ })
|
|
11
|
+
load(service.get_node_info)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get
|
|
15
|
+
all.first
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Libvirt
|
|
5
|
+
class Compute
|
|
6
|
+
class Pool < Fog::Model
|
|
7
|
+
attr_reader :xml
|
|
8
|
+
|
|
9
|
+
identity :uuid
|
|
10
|
+
|
|
11
|
+
attribute :persistent
|
|
12
|
+
attribute :autostart
|
|
13
|
+
attribute :active
|
|
14
|
+
attribute :name
|
|
15
|
+
attribute :allocation
|
|
16
|
+
attribute :capacity
|
|
17
|
+
attribute :num_of_volumes
|
|
18
|
+
attribute :state
|
|
19
|
+
|
|
20
|
+
def initialize(attributes={} )
|
|
21
|
+
# Can be created by passing in XML
|
|
22
|
+
@xml = attributes.delete(:xml)
|
|
23
|
+
super(attributes)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def save
|
|
27
|
+
raise Fog::Errors::Error.new('Creating a new pool requires proper xml') unless xml
|
|
28
|
+
self.uuid = (persistent ? service.define_pool(xml) : service.create_pool(xml)).uuid
|
|
29
|
+
reload
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Start the pool = make it active
|
|
33
|
+
# Performs a libvirt create (= start)
|
|
34
|
+
def start
|
|
35
|
+
service.pool_action uuid, :create
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Stop the pool = make it non-active
|
|
39
|
+
# Performs a libvirt destroy (= stop)
|
|
40
|
+
def stop
|
|
41
|
+
service.pool_action uuid, :destroy
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Shuts down the pool
|
|
45
|
+
def shutdown
|
|
46
|
+
stop
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Build this storage pool
|
|
50
|
+
def build
|
|
51
|
+
service.pool_action uuid, :build
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Destroys the storage pool
|
|
55
|
+
def destroy
|
|
56
|
+
# Shutdown pool if active
|
|
57
|
+
service.pool_action uuid, :destroy if active?
|
|
58
|
+
# If this is a persistent domain we need to undefine it
|
|
59
|
+
service.pool_action uuid, :undefine if persistent?
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Is the pool active or not?
|
|
63
|
+
def active?
|
|
64
|
+
active
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Will the pool autostart or not?
|
|
68
|
+
def auto_start?
|
|
69
|
+
autostart
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Is the pool persistent or not?
|
|
73
|
+
def persistent?
|
|
74
|
+
persistent
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Retrieves the volumes of this pool
|
|
78
|
+
def volumes
|
|
79
|
+
service.list_pool_volumes uuid
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/libvirt/models/compute/pool'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Libvirt
|
|
6
|
+
class Compute
|
|
7
|
+
class Pools < Fog::Collection
|
|
8
|
+
model Fog::Libvirt::Compute::Pool
|
|
9
|
+
|
|
10
|
+
def all(filter = {})
|
|
11
|
+
load(service.list_pools(filter))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get(uuid)
|
|
15
|
+
self.all(:uuid => uuid).first
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|