fog-xenserver 0.0.1.alpha
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/.gitignore +22 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CONTRIBUTING.md +18 -0
- data/CONTRIBUTORS.md +1 -0
- data/Gemfile +4 -0
- data/LICENSE.md +20 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/fog-xenserver.gemspec +26 -0
- data/lib/fog.rb +3 -0
- data/lib/fog/compute.rb +7 -0
- data/lib/fog/xenserver.rb +1 -0
- data/lib/fog/xenserver/compute.rb +176 -0
- data/lib/fog/xenserver/core.rb +84 -0
- data/lib/fog/xenserver/examples/README.md +11 -0
- data/lib/fog/xenserver/examples/chage_default_storage_repository.md +99 -0
- data/lib/fog/xenserver/examples/creating_servers.md +168 -0
- data/lib/fog/xenserver/examples/getting_started.md +163 -0
- data/lib/fog/xenserver/examples/networks-and-vlans.rb +45 -0
- data/lib/fog/xenserver/examples/storage_repositories.md +94 -0
- data/lib/fog/xenserver/models/compute/blob.rb +22 -0
- data/lib/fog/xenserver/models/compute/blobs.rb +25 -0
- data/lib/fog/xenserver/models/compute/bond.rb +23 -0
- data/lib/fog/xenserver/models/compute/bonds.rb +25 -0
- data/lib/fog/xenserver/models/compute/console.rb +29 -0
- data/lib/fog/xenserver/models/compute/consoles.rb +25 -0
- data/lib/fog/xenserver/models/compute/crash_dump.rb +19 -0
- data/lib/fog/xenserver/models/compute/crash_dumps.rb +25 -0
- data/lib/fog/xenserver/models/compute/dr_task.rb +17 -0
- data/lib/fog/xenserver/models/compute/dr_tasks.rb +25 -0
- data/lib/fog/xenserver/models/compute/gpu_group.rb +22 -0
- data/lib/fog/xenserver/models/compute/gpu_groups.rb +25 -0
- data/lib/fog/xenserver/models/compute/guest_metrics.rb +29 -0
- data/lib/fog/xenserver/models/compute/host.rb +159 -0
- data/lib/fog/xenserver/models/compute/host_cpu.rb +38 -0
- data/lib/fog/xenserver/models/compute/host_crash_dump.rb +20 -0
- data/lib/fog/xenserver/models/compute/host_crash_dumps.rb +25 -0
- data/lib/fog/xenserver/models/compute/host_metrics.rb +29 -0
- data/lib/fog/xenserver/models/compute/host_patch.rb +25 -0
- data/lib/fog/xenserver/models/compute/host_patchs.rb +25 -0
- data/lib/fog/xenserver/models/compute/hosts.rb +29 -0
- data/lib/fog/xenserver/models/compute/network.rb +92 -0
- data/lib/fog/xenserver/models/compute/networks.rb +33 -0
- data/lib/fog/xenserver/models/compute/pbd.rb +40 -0
- data/lib/fog/xenserver/models/compute/pbds.rb +33 -0
- data/lib/fog/xenserver/models/compute/pci.rb +22 -0
- data/lib/fog/xenserver/models/compute/pcis.rb +25 -0
- data/lib/fog/xenserver/models/compute/pgpu.rb +20 -0
- data/lib/fog/xenserver/models/compute/pgpus.rb +25 -0
- data/lib/fog/xenserver/models/compute/pif.rb +57 -0
- data/lib/fog/xenserver/models/compute/pif_metrics.rb +28 -0
- data/lib/fog/xenserver/models/compute/pifs.rb +33 -0
- data/lib/fog/xenserver/models/compute/pifs_metrics.rb +25 -0
- data/lib/fog/xenserver/models/compute/pool.rb +79 -0
- data/lib/fog/xenserver/models/compute/pool_patch.rb +24 -0
- data/lib/fog/xenserver/models/compute/pool_patchs.rb +25 -0
- data/lib/fog/xenserver/models/compute/pools.rb +33 -0
- data/lib/fog/xenserver/models/compute/role.rb +19 -0
- data/lib/fog/xenserver/models/compute/roles.rb +25 -0
- data/lib/fog/xenserver/models/compute/server.rb +250 -0
- data/lib/fog/xenserver/models/compute/server_appliance.rb +21 -0
- data/lib/fog/xenserver/models/compute/server_appliances.rb +25 -0
- data/lib/fog/xenserver/models/compute/servers.rb +68 -0
- data/lib/fog/xenserver/models/compute/storage_manager.rb +28 -0
- data/lib/fog/xenserver/models/compute/storage_managers.rb +25 -0
- data/lib/fog/xenserver/models/compute/storage_repositories.rb +31 -0
- data/lib/fog/xenserver/models/compute/storage_repository.rb +93 -0
- data/lib/fog/xenserver/models/compute/tunnel.rb +20 -0
- data/lib/fog/xenserver/models/compute/tunnels.rb +25 -0
- data/lib/fog/xenserver/models/compute/vbd.rb +91 -0
- data/lib/fog/xenserver/models/compute/vbd_metrics.rb +27 -0
- data/lib/fog/xenserver/models/compute/vbds.rb +33 -0
- data/lib/fog/xenserver/models/compute/vdi.rb +105 -0
- data/lib/fog/xenserver/models/compute/vdis.rb +29 -0
- data/lib/fog/xenserver/models/compute/vif.rb +60 -0
- data/lib/fog/xenserver/models/compute/vifs.rb +29 -0
- data/lib/fog/xenserver/models/compute/vlan.rb +81 -0
- data/lib/fog/xenserver/models/compute/vlans.rb +39 -0
- data/lib/fog/xenserver/models/compute/vmpp.rb +35 -0
- data/lib/fog/xenserver/models/compute/vmpps.rb +25 -0
- data/lib/fog/xenserver/models/compute/vtpm.rb +18 -0
- data/lib/fog/xenserver/models/compute/vtpms.rb +25 -0
- data/lib/fog/xenserver/parser.rb +36 -0
- data/lib/fog/xenserver/parsers/get_hosts.rb +19 -0
- data/lib/fog/xenserver/parsers/get_networks.rb +19 -0
- data/lib/fog/xenserver/parsers/get_pools.rb +19 -0
- data/lib/fog/xenserver/parsers/get_records.rb +19 -0
- data/lib/fog/xenserver/parsers/get_storage_repositories.rb +19 -0
- data/lib/fog/xenserver/parsers/get_vbds.rb +19 -0
- data/lib/fog/xenserver/parsers/get_vifs.rb +19 -0
- data/lib/fog/xenserver/parsers/get_vms.rb +20 -0
- data/lib/fog/xenserver/requests/compute/clone_server.rb +31 -0
- data/lib/fog/xenserver/requests/compute/create_network.rb +42 -0
- data/lib/fog/xenserver/requests/compute/create_server.rb +130 -0
- data/lib/fog/xenserver/requests/compute/create_sr.rb +72 -0
- data/lib/fog/xenserver/requests/compute/create_vbd.rb +40 -0
- data/lib/fog/xenserver/requests/compute/create_vdi.rb +33 -0
- data/lib/fog/xenserver/requests/compute/create_vif.rb +57 -0
- data/lib/fog/xenserver/requests/compute/create_vlan.rb +35 -0
- data/lib/fog/xenserver/requests/compute/destroy_network.rb +33 -0
- data/lib/fog/xenserver/requests/compute/destroy_server.rb +22 -0
- data/lib/fog/xenserver/requests/compute/destroy_sr.rb +30 -0
- data/lib/fog/xenserver/requests/compute/destroy_vdi.rb +22 -0
- data/lib/fog/xenserver/requests/compute/destroy_vif.rb +22 -0
- data/lib/fog/xenserver/requests/compute/destroy_vlan.rb +32 -0
- data/lib/fog/xenserver/requests/compute/disable_host.rb +29 -0
- data/lib/fog/xenserver/requests/compute/eject_vbd.rb +22 -0
- data/lib/fog/xenserver/requests/compute/enable_host.rb +28 -0
- data/lib/fog/xenserver/requests/compute/get_record.rb +29 -0
- data/lib/fog/xenserver/requests/compute/get_records.rb +30 -0
- data/lib/fog/xenserver/requests/compute/insert_vbd.rb +22 -0
- data/lib/fog/xenserver/requests/compute/provision_server.rb +21 -0
- data/lib/fog/xenserver/requests/compute/reboot_host.rb +23 -0
- data/lib/fog/xenserver/requests/compute/reboot_server.rb +23 -0
- data/lib/fog/xenserver/requests/compute/scan_sr.rb +22 -0
- data/lib/fog/xenserver/requests/compute/set_affinity.rb +25 -0
- data/lib/fog/xenserver/requests/compute/set_attribute.rb +25 -0
- data/lib/fog/xenserver/requests/compute/shutdown_host.rb +23 -0
- data/lib/fog/xenserver/requests/compute/shutdown_server.rb +23 -0
- data/lib/fog/xenserver/requests/compute/snapshot_revert.rb +22 -0
- data/lib/fog/xenserver/requests/compute/snapshot_server.rb +22 -0
- data/lib/fog/xenserver/requests/compute/start_server.rb +23 -0
- data/lib/fog/xenserver/requests/compute/start_vm.rb +25 -0
- data/lib/fog/xenserver/requests/compute/unplug_pbd.rb +25 -0
- data/lib/fog/xenserver/requests/compute/unplug_vbd.rb +30 -0
- data/lib/fog/xenserver/utilities.rb +8 -0
- data/lib/fog/xenserver/version.rb +5 -0
- metadata +228 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Storage Repositories
|
|
2
|
+
|
|
3
|
+
Official storage repository Citrix API documentation:
|
|
4
|
+
|
|
5
|
+
http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=SR
|
|
6
|
+
|
|
7
|
+
Create the XenServer connection first, as usual:
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
require 'fog'
|
|
11
|
+
require 'net/scp'
|
|
12
|
+
require 'pp'
|
|
13
|
+
|
|
14
|
+
xenserver = Fog::Compute.new({
|
|
15
|
+
:provider => 'XenServer',
|
|
16
|
+
:xenserver_url => 'xenserver-test',
|
|
17
|
+
:xenserver_username => 'root',
|
|
18
|
+
:xenserver_password => 'secret',
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Listing the available storage repositories:
|
|
23
|
+
|
|
24
|
+
```ruby
|
|
25
|
+
xenserver.storage_repositories
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Filter storage repositories by content type:
|
|
30
|
+
|
|
31
|
+
```ruby
|
|
32
|
+
xenserver.storage_repositories.select { |sr| sr.content_type == 'iso' }
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Filter storage repositories by allowed operations:
|
|
36
|
+
|
|
37
|
+
```ruby
|
|
38
|
+
rw_srs = xenserver.storage_repositories.select do |sr|
|
|
39
|
+
# Are we allowed to create a VDI here?
|
|
40
|
+
sr.allowed_operations.include? 'vdi_create'
|
|
41
|
+
end
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Print some attributes of the first SR found:
|
|
45
|
+
|
|
46
|
+
```ruby
|
|
47
|
+
sr = rw_srs.first
|
|
48
|
+
puts sr.name
|
|
49
|
+
puts sr.description
|
|
50
|
+
puts sr.type
|
|
51
|
+
puts sr.tags
|
|
52
|
+
# in bytes
|
|
53
|
+
puts sr.physical_size
|
|
54
|
+
puts sr.physical_utilisation
|
|
55
|
+
# sum of virtual_sizes of all VDIs in this storage repository (in bytes)
|
|
56
|
+
puts sr.virtual_allocation
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
List virtual disk images available and print some VDI's attributes:
|
|
60
|
+
|
|
61
|
+
```ruby
|
|
62
|
+
sr.vdis.each do |vdi|
|
|
63
|
+
# http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=VDI
|
|
64
|
+
puts vdi.uuid
|
|
65
|
+
puts vdi.is_a_snapshot
|
|
66
|
+
puts vdi.name
|
|
67
|
+
# in bytes
|
|
68
|
+
puts vdi.physical_utilisation
|
|
69
|
+
puts vdi.virtual_size
|
|
70
|
+
puts vdi.read_only
|
|
71
|
+
# ["update", "resize", "destroy", "clone", "copy", "snapshot"],
|
|
72
|
+
puts vdi.allowed_operations
|
|
73
|
+
end
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Create a new VDI in this storage repository:
|
|
77
|
+
|
|
78
|
+
```ruby
|
|
79
|
+
vdi = xenserver.vdis.create :name => 'super-vdi',
|
|
80
|
+
:storage_repository => sr,
|
|
81
|
+
:description => 'my super-vdi',
|
|
82
|
+
:virtual_size => '1073741824' # 1 GB
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
I have an ext3 storage repository and this creates a 1GB VHD file there:
|
|
86
|
+
|
|
87
|
+
[root@xenserver ~]# vhd-util query -v -n /var/run/sr-mount/6edd263a-2da1-7533-840c-768417b5be25/4050057d-a3a8-4c00-8f2e-cf5531232921.vhd
|
|
88
|
+
1024
|
|
89
|
+
|
|
90
|
+
Destroy the VDI:
|
|
91
|
+
|
|
92
|
+
```ruby
|
|
93
|
+
vdi.destroy
|
|
94
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
class Blob < Fog::Model
|
|
7
|
+
# API Reference here:
|
|
8
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=blob
|
|
9
|
+
|
|
10
|
+
identity :reference
|
|
11
|
+
|
|
12
|
+
attribute :last_updated
|
|
13
|
+
attribute :mime_type
|
|
14
|
+
attribute :description, :aliases => :name_description
|
|
15
|
+
attribute :name, :aliases => :name_label
|
|
16
|
+
attribute :public
|
|
17
|
+
attribute :size
|
|
18
|
+
attribute :uuid
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/xenserver/models/compute/blob'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Compute
|
|
6
|
+
class XenServer
|
|
7
|
+
class Blobs < Fog::Collection
|
|
8
|
+
model Fog::Compute::XenServer::Blob
|
|
9
|
+
|
|
10
|
+
def all(options={})
|
|
11
|
+
data = service.get_records 'blob'
|
|
12
|
+
load(data)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def get( blob_ref )
|
|
16
|
+
if blob_ref && blob = service.get_record( blob_ref, 'blob' )
|
|
17
|
+
new(blob)
|
|
18
|
+
else
|
|
19
|
+
nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
class Bond < Fog::Model
|
|
7
|
+
# API Reference here:
|
|
8
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=Bond
|
|
9
|
+
|
|
10
|
+
identity :reference
|
|
11
|
+
|
|
12
|
+
attribute :links_up
|
|
13
|
+
attribute :__master, :aliases => :master
|
|
14
|
+
attribute :mode
|
|
15
|
+
attribute :other_config
|
|
16
|
+
attribute :__primary_slave, :aliases => :primary_slave
|
|
17
|
+
attribute :properties
|
|
18
|
+
attribute :__slaves, :aliases => :slaves
|
|
19
|
+
attribute :uuid
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/xenserver/models/compute/bond'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Compute
|
|
6
|
+
class XenServer
|
|
7
|
+
class Bonds < Fog::Collection
|
|
8
|
+
model Fog::Compute::XenServer::Bond
|
|
9
|
+
|
|
10
|
+
def all(options={})
|
|
11
|
+
data = service.get_records 'Bond'
|
|
12
|
+
load(data)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def get( bond_ref )
|
|
16
|
+
if bond_ref && bond = service.get_record( bond_ref, 'Bond' )
|
|
17
|
+
new(bond)
|
|
18
|
+
else
|
|
19
|
+
nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
class Console < Fog::Model
|
|
7
|
+
# API Reference here:
|
|
8
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=console
|
|
9
|
+
|
|
10
|
+
identity :reference
|
|
11
|
+
|
|
12
|
+
attribute :location
|
|
13
|
+
attribute :other_config
|
|
14
|
+
attribute :protocol
|
|
15
|
+
attribute :uuid
|
|
16
|
+
attribute :__vm, aliases: :VM
|
|
17
|
+
|
|
18
|
+
def vm
|
|
19
|
+
begin
|
|
20
|
+
vm = service.servers.get __vm
|
|
21
|
+
rescue Fog::XenServer::RequestFailed => e
|
|
22
|
+
vm = nil
|
|
23
|
+
end
|
|
24
|
+
vm
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/xenserver/models/compute/console'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Compute
|
|
6
|
+
class XenServer
|
|
7
|
+
class Consoles < Fog::Collection
|
|
8
|
+
model Fog::Compute::XenServer::Console
|
|
9
|
+
|
|
10
|
+
def all(options={})
|
|
11
|
+
data = service.get_records 'console'
|
|
12
|
+
load(data)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def get( console_ref )
|
|
16
|
+
if console_ref && console = service.get_record( console_ref, 'console' )
|
|
17
|
+
new(console)
|
|
18
|
+
else
|
|
19
|
+
nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
class CrashDump < Fog::Model
|
|
7
|
+
# API Reference here:
|
|
8
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=crashdump
|
|
9
|
+
|
|
10
|
+
identity :reference
|
|
11
|
+
|
|
12
|
+
attribute :other_config
|
|
13
|
+
attribute :__vdi, :aliases => :VDI
|
|
14
|
+
attribute :__vm, :aliases => :VM
|
|
15
|
+
attribute :uuid
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/xenserver/models/compute/crash_dump'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Compute
|
|
6
|
+
class XenServer
|
|
7
|
+
class Bonds < Fog::Collection
|
|
8
|
+
model Fog::Compute::XenServer::CrashDump
|
|
9
|
+
|
|
10
|
+
def all(options={})
|
|
11
|
+
data = service.get_records 'crashdump'
|
|
12
|
+
load(data)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def get( crashdump_ref )
|
|
16
|
+
if crashdump_ref && crashdump = service.get_record( crashdump_ref, 'crashdump' )
|
|
17
|
+
new(crashdump)
|
|
18
|
+
else
|
|
19
|
+
nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
class DrTask < Fog::Model
|
|
7
|
+
# API Reference here:
|
|
8
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=DR_task
|
|
9
|
+
|
|
10
|
+
identity :reference
|
|
11
|
+
|
|
12
|
+
attribute :__introduced_srs, :aliases => :introduced_SRs
|
|
13
|
+
attribute :uuid
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/xenserver/models/compute/dr_task'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Compute
|
|
6
|
+
class XenServer
|
|
7
|
+
class DrTasks < Fog::Collection
|
|
8
|
+
model Fog::Compute::XenServer::DrTask
|
|
9
|
+
|
|
10
|
+
def all(options={})
|
|
11
|
+
data = service.get_records 'DR_task'
|
|
12
|
+
load(data)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def get( dr_task_ref )
|
|
16
|
+
if dr_task_ref && dr_task = service.get_record( dr_task_ref, 'DR_task' )
|
|
17
|
+
new(dr_task)
|
|
18
|
+
else
|
|
19
|
+
nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
class GpuGroup < Fog::Model
|
|
7
|
+
# API Reference here:
|
|
8
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=GPU_group
|
|
9
|
+
|
|
10
|
+
identity :reference
|
|
11
|
+
|
|
12
|
+
attribute :gpu_types, :aliases => :GPU_types
|
|
13
|
+
attribute :description, :aliases => :name_description
|
|
14
|
+
attribute :name, :aliases => :name_label
|
|
15
|
+
attribute :other_config
|
|
16
|
+
attribute :__pgpus, :aliases => :PGPUs
|
|
17
|
+
attribute :__vgpus, :aliases => :VGPUs
|
|
18
|
+
attribute :uuid
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'fog/core/collection'
|
|
2
|
+
require 'fog/xenserver/models/compute/gpu_group'
|
|
3
|
+
|
|
4
|
+
module Fog
|
|
5
|
+
module Compute
|
|
6
|
+
class XenServer
|
|
7
|
+
class GpuGroups < Fog::Collection
|
|
8
|
+
model Fog::Compute::XenServer::GpuGroup
|
|
9
|
+
|
|
10
|
+
def all(options={})
|
|
11
|
+
data = service.get_records 'GPU_group'
|
|
12
|
+
load(data)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def get( gpu_group_ref )
|
|
16
|
+
if gpu_group_ref && gpu_group = service.get_record( gpu_group_ref, 'GPU_group' )
|
|
17
|
+
new(gpu_group)
|
|
18
|
+
else
|
|
19
|
+
nil
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
|
|
7
|
+
class GuestMetrics < Fog::Model
|
|
8
|
+
# API Reference here:
|
|
9
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=VM_guest_metrics
|
|
10
|
+
|
|
11
|
+
identity :reference
|
|
12
|
+
|
|
13
|
+
attribute :uuid
|
|
14
|
+
attribute :disk
|
|
15
|
+
attribute :last_updated
|
|
16
|
+
attribute :live
|
|
17
|
+
attribute :memory
|
|
18
|
+
attribute :networks
|
|
19
|
+
attribute :os_version
|
|
20
|
+
attribute :other
|
|
21
|
+
attribute :other_config
|
|
22
|
+
attribute :pv_drivers_up_to_date, :aliases => :PV_drivers_up_to_date
|
|
23
|
+
attribute :pv_drivers_version, :aliases => :PV_drivers_version
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
require 'fog/core/model'
|
|
2
|
+
|
|
3
|
+
module Fog
|
|
4
|
+
module Compute
|
|
5
|
+
class XenServer
|
|
6
|
+
|
|
7
|
+
class Host < Fog::Model
|
|
8
|
+
# API Reference here:
|
|
9
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=host
|
|
10
|
+
|
|
11
|
+
identity :reference
|
|
12
|
+
|
|
13
|
+
attribute :name, :aliases => :name_label
|
|
14
|
+
attribute :uuid
|
|
15
|
+
attribute :address
|
|
16
|
+
attribute :allowed_operations
|
|
17
|
+
attribute :api_version_major, :aliases => :API_version_major
|
|
18
|
+
attribute :api_version_minor, :aliases => :API_version_minor
|
|
19
|
+
attribute :api_version_vendor, :aliases => :API_version_vendor
|
|
20
|
+
attribute :api_version_vendor_implementation, :aliases => :API_version_vendor_implementation
|
|
21
|
+
attribute :bios_strings
|
|
22
|
+
attribute :blobs
|
|
23
|
+
attribute :capabilities
|
|
24
|
+
attribute :chipset_info
|
|
25
|
+
attribute :cpu_configuration
|
|
26
|
+
attribute :cpu_info
|
|
27
|
+
attribute :__crash_dump_sr, :aliases => :crash_dump_sr
|
|
28
|
+
attribute :__crashdumps, :aliases => :crashdumps
|
|
29
|
+
attribute :current_operations
|
|
30
|
+
attribute :enabled
|
|
31
|
+
attribute :external_auth_configuration
|
|
32
|
+
attribute :external_auth_service_name
|
|
33
|
+
attribute :external_auth_type
|
|
34
|
+
attribute :guest_vcpus_params, :aliases => :guest_VCPUs_params
|
|
35
|
+
attribute :ha_network_peers
|
|
36
|
+
attribute :ha_statefiles
|
|
37
|
+
attribute :hostname
|
|
38
|
+
attribute :license_params
|
|
39
|
+
attribute :license_server
|
|
40
|
+
attribute :__local_cache_sr, :aliases => :local_cache_sr
|
|
41
|
+
attribute :logging
|
|
42
|
+
attribute :memory_overhead
|
|
43
|
+
attribute :__metrics, :aliases => :metrics
|
|
44
|
+
attribute :description, :aliases => :name_description
|
|
45
|
+
attribute :other_config
|
|
46
|
+
attribute :patches
|
|
47
|
+
attribute :__pbds, :aliases => :PBDs
|
|
48
|
+
attribute :__pcis, :aliases => :PCIs
|
|
49
|
+
attribute :__pgpus, :aliases => :PGPUs
|
|
50
|
+
attribute :__pifs, :aliases => :PIFs
|
|
51
|
+
attribute :power_on_config
|
|
52
|
+
attribute :power_on_mode
|
|
53
|
+
attribute :__resident_vms, :aliases => :resident_VMs
|
|
54
|
+
attribute :sched_policy
|
|
55
|
+
attribute :supported_bootloaders
|
|
56
|
+
attribute :suspend_image_sr
|
|
57
|
+
attribute :tags
|
|
58
|
+
attribute :__host_cpus, :aliases => :host_CPUs
|
|
59
|
+
attribute :edition
|
|
60
|
+
attribute :software_version
|
|
61
|
+
|
|
62
|
+
def pifs
|
|
63
|
+
__pifs.collect { |pif| service.pifs.get pif }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def pbds
|
|
67
|
+
__pbds.collect { |pbd| service.pbds.get pbd }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def resident_servers
|
|
71
|
+
__resident_vms.collect { |ref| service.servers.get ref }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def resident_vms
|
|
75
|
+
resident_servers
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def host_cpus
|
|
79
|
+
cpus = []
|
|
80
|
+
(__host_cpus || []).each do |ref|
|
|
81
|
+
cpu_ref = service.get_record(ref, 'host_cpu' )
|
|
82
|
+
cpu_ref[:service] = service
|
|
83
|
+
cpus << Fog::Compute::XenServer::HostCpu.new(cpu_ref)
|
|
84
|
+
end
|
|
85
|
+
cpus
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def metrics
|
|
89
|
+
return nil unless __metrics
|
|
90
|
+
rec = service.get_record(__metrics, 'host_metrics' )
|
|
91
|
+
Fog::Compute::XenServer::HostMetrics.new(rec)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
#
|
|
95
|
+
# Reboot the host disabling it first unless auto_disable is
|
|
96
|
+
# set to false
|
|
97
|
+
#
|
|
98
|
+
# This function can only be called if there are no currently running
|
|
99
|
+
# VMs on the host and it is disabled. If there are running VMs, it will
|
|
100
|
+
# raise an exception.
|
|
101
|
+
#
|
|
102
|
+
# @param [Boolean] auto_disable disable the host first
|
|
103
|
+
#
|
|
104
|
+
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
|
105
|
+
#
|
|
106
|
+
def reboot(auto_disable = true)
|
|
107
|
+
disable if auto_disable
|
|
108
|
+
service.reboot_host(reference)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
#
|
|
112
|
+
# Puts the host into a state in which no new VMs can be started.
|
|
113
|
+
# Currently active VMs on the host continue to execute.
|
|
114
|
+
#
|
|
115
|
+
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
|
116
|
+
#
|
|
117
|
+
def disable
|
|
118
|
+
service.disable_host(reference)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
#
|
|
122
|
+
# Puts the host into a state in which new VMs can be started.
|
|
123
|
+
#
|
|
124
|
+
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
|
125
|
+
#
|
|
126
|
+
def enable
|
|
127
|
+
service.enable_host(reference)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
#
|
|
131
|
+
# Shutdown the host disabling it first unless auto_disable is
|
|
132
|
+
# set to false.
|
|
133
|
+
#
|
|
134
|
+
# This function can only be called if there are no currently running
|
|
135
|
+
# VMs on the host and it is disabled. If there are running VMs, it will
|
|
136
|
+
# raise an exception.
|
|
137
|
+
#
|
|
138
|
+
# @param [Boolean] auto_disable disable the host first
|
|
139
|
+
#
|
|
140
|
+
# @see http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/api/?c=host
|
|
141
|
+
#
|
|
142
|
+
def shutdown(auto_disable = true)
|
|
143
|
+
disable if auto_disable
|
|
144
|
+
service.shutdown_host(reference)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def set_attribute(name, *val)
|
|
148
|
+
data = service.set_attribute( 'host', reference, name, *val )
|
|
149
|
+
# Do not reload automatically for performance reasons
|
|
150
|
+
# We can set multiple attributes at the same time and
|
|
151
|
+
# then reload manually
|
|
152
|
+
#reload
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|