fog-xenserver 0.0.1.alpha
Sign up to get free protection for your applications and to get access to all the features.
- 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,33 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/xenserver/models/compute/vbd'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class XenServer
|
7
|
+
|
8
|
+
class Vbds < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::XenServer::VBD
|
11
|
+
|
12
|
+
def initialize(attributes)
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def all(options = {})
|
17
|
+
data = service.get_records 'VBD'
|
18
|
+
load(data)
|
19
|
+
end
|
20
|
+
|
21
|
+
def get( vbd_ref )
|
22
|
+
if vbd_ref && vbd = service.get_record( vbd_ref, 'VBD' )
|
23
|
+
new(vbd)
|
24
|
+
end
|
25
|
+
rescue Fog::XenServer::NotFound
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class XenServer
|
6
|
+
|
7
|
+
class VDI < Fog::Model
|
8
|
+
# API Reference here:
|
9
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=VDI
|
10
|
+
|
11
|
+
identity :reference
|
12
|
+
|
13
|
+
attribute :uuid
|
14
|
+
attribute :is_a_snapshot
|
15
|
+
attribute :name, :aliases => :name_label
|
16
|
+
attribute :description, :aliases => :name_description
|
17
|
+
attribute :__parent, :aliases => :parent
|
18
|
+
attribute :virtual_size
|
19
|
+
attribute :__vbds, :aliases => :VBDs
|
20
|
+
attribute :__sr, :aliases => :SR
|
21
|
+
attribute :sharable
|
22
|
+
attribute :read_only
|
23
|
+
attribute :current_operations
|
24
|
+
attribute :allowed_operations
|
25
|
+
attribute :__crash_dumps, :aliases => :crash_dumps
|
26
|
+
attribute :type
|
27
|
+
attribute :other_config
|
28
|
+
attribute :tags
|
29
|
+
attribute :storage_lock
|
30
|
+
attribute :physical_utilisation
|
31
|
+
attribute :missing
|
32
|
+
attribute :location
|
33
|
+
attribute :managed
|
34
|
+
attribute :metadata_latest
|
35
|
+
attribute :metadata_of_pool
|
36
|
+
attribute :allow_caching
|
37
|
+
attribute :on_boot
|
38
|
+
attribute :sm_config
|
39
|
+
attribute :snapshot_time
|
40
|
+
attribute :__snapshots, :aliases => :snapshots
|
41
|
+
attribute :__snapshot_of, :aliases => :snapshot_of
|
42
|
+
attribute :xenstore_data
|
43
|
+
|
44
|
+
#
|
45
|
+
# Default VDI type is system
|
46
|
+
# Default size 8GB
|
47
|
+
# Sharable is false by default
|
48
|
+
# read_only is false by default
|
49
|
+
#
|
50
|
+
def initialize(attributes = {})
|
51
|
+
self.virtual_size ||= '8589934592' unless attributes[:virtual_size]
|
52
|
+
self.type ||= 'system' unless attributes[:type]
|
53
|
+
self.read_only ||= false unless attributes[:read_only]
|
54
|
+
self.sharable ||= false unless attributes[:sharable]
|
55
|
+
self.other_config ||= {} unless attributes[:other_config]
|
56
|
+
super
|
57
|
+
end
|
58
|
+
|
59
|
+
def set_attribute(name, *val)
|
60
|
+
data = service.set_attribute( 'VDI', reference, name, *val )
|
61
|
+
end
|
62
|
+
|
63
|
+
def snapshot_of
|
64
|
+
service.vdis.get __sr
|
65
|
+
end
|
66
|
+
|
67
|
+
def parent
|
68
|
+
service.vdis.get __parent
|
69
|
+
end
|
70
|
+
|
71
|
+
def snapshots
|
72
|
+
__snapshots.collect do |ref|
|
73
|
+
service.vdis.get ref
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def vbds
|
78
|
+
__vbds.collect do |ref|
|
79
|
+
service.vbds.get ref
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def save
|
84
|
+
requires :name, :storage_repository
|
85
|
+
ref = service.create_vdi attributes
|
86
|
+
merge_attributes service.vdis.get(ref).attributes
|
87
|
+
end
|
88
|
+
|
89
|
+
def destroy
|
90
|
+
service.destroy_vdi reference
|
91
|
+
end
|
92
|
+
|
93
|
+
def storage_repository
|
94
|
+
service.storage_repositories.get __sr
|
95
|
+
end
|
96
|
+
|
97
|
+
def sr
|
98
|
+
storage_repository
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/xenserver/models/compute/vdi'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class XenServer
|
7
|
+
|
8
|
+
class Vdis < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::XenServer::VDI
|
11
|
+
|
12
|
+
def all(options = {})
|
13
|
+
data = service.get_records 'VDI'
|
14
|
+
load(data)
|
15
|
+
end
|
16
|
+
|
17
|
+
def get( vdi_ref )
|
18
|
+
if vdi_ref && vdi = service.get_record( vdi_ref, 'VDI' )
|
19
|
+
new(vdi)
|
20
|
+
end
|
21
|
+
rescue Fog::XenServer::NotFound
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class XenServer
|
6
|
+
|
7
|
+
class VIF < Fog::Model
|
8
|
+
# API Reference here:
|
9
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=VIF
|
10
|
+
|
11
|
+
identity :reference
|
12
|
+
|
13
|
+
attribute :mac, :aliases => :MAC
|
14
|
+
attribute :uuid
|
15
|
+
attribute :allowed_operations
|
16
|
+
attribute :current_operations
|
17
|
+
attribute :currently_attached
|
18
|
+
attribute :device
|
19
|
+
attribute :ipv4_allowed
|
20
|
+
attribute :ipv6_allowed
|
21
|
+
attribute :locking_mode
|
22
|
+
attribute :mac_autogenerated, :aliases => :MAC_autogenerated
|
23
|
+
attribute :__metrics, :aliases => :metrics
|
24
|
+
attribute :other_config
|
25
|
+
attribute :qos_algorithm_params
|
26
|
+
attribute :qos_algorithm_type
|
27
|
+
attribute :qos_supported_algorithms
|
28
|
+
attribute :runtime_properties
|
29
|
+
attribute :mtu, :aliases => :MTU
|
30
|
+
attribute :__network, :aliases => :network
|
31
|
+
attribute :status_code
|
32
|
+
attribute :status_detail
|
33
|
+
attribute :__vm, :aliases => :VM
|
34
|
+
|
35
|
+
|
36
|
+
def destroy
|
37
|
+
service.destroy_vif reference
|
38
|
+
end
|
39
|
+
|
40
|
+
def network
|
41
|
+
service.networks.get __network
|
42
|
+
end
|
43
|
+
|
44
|
+
def server
|
45
|
+
service.servers.get __vm
|
46
|
+
end
|
47
|
+
|
48
|
+
def save
|
49
|
+
requires :server
|
50
|
+
raise ArgumentError.new('network is required for this operation') \
|
51
|
+
unless attributes[:__network]
|
52
|
+
ref = service.create_vif attributes[:server], attributes[:__network]
|
53
|
+
merge_attributes service.vifs.get(ref).attributes
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/xenserver/models/compute/vif'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class XenServer
|
7
|
+
|
8
|
+
class Vifs < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::XenServer::VIF
|
11
|
+
|
12
|
+
def all(options = {})
|
13
|
+
data = service.get_records 'VIF'
|
14
|
+
load(data)
|
15
|
+
end
|
16
|
+
|
17
|
+
def get( ref )
|
18
|
+
if ref && obj = service.get_record( ref, 'VIF' )
|
19
|
+
new(obj)
|
20
|
+
end
|
21
|
+
rescue Fog::XenServer::NotFound
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class XenServer
|
6
|
+
|
7
|
+
class VLAN < Fog::Model
|
8
|
+
# API Reference here:
|
9
|
+
# @see http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=VLAN
|
10
|
+
|
11
|
+
identity :reference
|
12
|
+
|
13
|
+
attribute :uuid
|
14
|
+
attribute :tag, :type => :integer
|
15
|
+
attribute :other_config
|
16
|
+
attribute :__untagged_pif, :aliases => :untagged_PIF
|
17
|
+
attribute :__tagged_pif, :aliases => :tagged_PIF
|
18
|
+
|
19
|
+
# @return [Fog::Compute::XenServer::PIF] interface on which traffic is tagged
|
20
|
+
#
|
21
|
+
# @see http://docs.vmd.citrix.com/XenServer/6.1.0/1.0/en_gb/api/?c=VLAN
|
22
|
+
#
|
23
|
+
def untagged_pif
|
24
|
+
service.pifs.get __untagged_pif
|
25
|
+
end
|
26
|
+
|
27
|
+
# @return [Fog::Compute::XenServer::PIF] interface on which traffic is untagged
|
28
|
+
#
|
29
|
+
# @see http://docs.vmd.citrix.com/XenServer/6.1.0/1.0/en_gb/api/?c=VLAN
|
30
|
+
#
|
31
|
+
def tagged_pif
|
32
|
+
service.pifs.get __tagged_pif
|
33
|
+
end
|
34
|
+
|
35
|
+
# Creates a new VLAN.
|
36
|
+
#
|
37
|
+
# service = Fog::Compute[:xenserver]
|
38
|
+
#
|
39
|
+
# # create a network 'foo-net'
|
40
|
+
# net = service.networks.create :name => 'foo-net'
|
41
|
+
#
|
42
|
+
# # get the eth0 physical interface where the
|
43
|
+
# # VLAN subinterface will be added
|
44
|
+
# pif = service.pifs.find { |p| p.device == 'eth0' and p.physical }
|
45
|
+
#
|
46
|
+
# Fog::Compute[:xenserver].vlans.create :tag => 123,
|
47
|
+
# :network => net,
|
48
|
+
# :pif => pif
|
49
|
+
def save
|
50
|
+
requires :tag
|
51
|
+
pif = attributes[:pif]
|
52
|
+
net = attributes[:network]
|
53
|
+
unless pif and net
|
54
|
+
raise Fog::Error.new 'save requires :pif and :network attributes'
|
55
|
+
end
|
56
|
+
ref = service.create_vlan attributes[:pif].reference,
|
57
|
+
tag,
|
58
|
+
attributes[:network].reference
|
59
|
+
data = service.get_record ref, 'VLAN'
|
60
|
+
merge_attributes data
|
61
|
+
true
|
62
|
+
end
|
63
|
+
|
64
|
+
# Destroys a VLAN.
|
65
|
+
#
|
66
|
+
# service = Fog::Compute[:xenserver]
|
67
|
+
#
|
68
|
+
# # Find VLAN 123 and destroy it
|
69
|
+
# (service.vlans.find { |v| v.tag == 123 }).destroy
|
70
|
+
#
|
71
|
+
def destroy
|
72
|
+
requires :reference
|
73
|
+
service.destroy_vlan reference
|
74
|
+
true
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/xenserver/models/compute/vlan'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class XenServer
|
7
|
+
|
8
|
+
class Vlans < Fog::Collection
|
9
|
+
|
10
|
+
model Fog::Compute::XenServer::VLAN
|
11
|
+
|
12
|
+
# Return the list of VLANs available
|
13
|
+
#
|
14
|
+
# @return [Array] a list of Fog::Compute::XenServer::VLAN
|
15
|
+
#
|
16
|
+
def all(options = {})
|
17
|
+
data = service.get_records 'VLAN'
|
18
|
+
load(data)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Retrieve a VLAN object by by reference.
|
22
|
+
#
|
23
|
+
# @return [Fog::Compute::XenServer::VLAN]
|
24
|
+
#
|
25
|
+
# Returns nil if not found
|
26
|
+
#
|
27
|
+
def get( ref )
|
28
|
+
if ref && obj = service.get_record( ref, 'VLAN' )
|
29
|
+
new(obj)
|
30
|
+
end
|
31
|
+
rescue Fog::XenServer::NotFound
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Compute
|
5
|
+
class XenServer
|
6
|
+
class Vmpp < Fog::Model
|
7
|
+
# API Reference here:
|
8
|
+
# http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=VMPP
|
9
|
+
|
10
|
+
identity :reference
|
11
|
+
|
12
|
+
attribute :alarm_config
|
13
|
+
attribute :archive_frequency
|
14
|
+
attribute :archive_last_run_time
|
15
|
+
attribute :archive_schedule
|
16
|
+
attribute :archive_target_config
|
17
|
+
attribute :archive_target_type
|
18
|
+
attribute :backup_frequency
|
19
|
+
attribute :backup_last_run_time
|
20
|
+
attribute :backup_retention_value
|
21
|
+
attribute :backup_schedule
|
22
|
+
attribute :backup_type
|
23
|
+
attribute :is_alarm_enabled
|
24
|
+
attribute :is_archive_running
|
25
|
+
attribute :is_backup_running
|
26
|
+
attribute :is_policy_enabled
|
27
|
+
attribute :description, :aliases => :name_description
|
28
|
+
attribute :name, :aliases => :name_label
|
29
|
+
attribute :recent_alerts
|
30
|
+
attribute :uuid
|
31
|
+
attribute :__vms, :aliases => :VMs
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/xenserver/models/compute/vmpp'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Compute
|
6
|
+
class XenServer
|
7
|
+
class Vmpps < Fog::Collection
|
8
|
+
model Fog::Compute::XenServer::Vmpp
|
9
|
+
|
10
|
+
def all(options={})
|
11
|
+
data = service.get_records 'VMPP'
|
12
|
+
load(data)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get( vmpp_ref )
|
16
|
+
if vmpp_ref && vmpp = service.get_record( vmpp_ref, 'VMPP' )
|
17
|
+
new(vmpp)
|
18
|
+
else
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|