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.
Files changed (130) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/CONTRIBUTING.md +18 -0
  6. data/CONTRIBUTORS.md +1 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.md +20 -0
  9. data/README.md +29 -0
  10. data/Rakefile +2 -0
  11. data/fog-xenserver.gemspec +26 -0
  12. data/lib/fog.rb +3 -0
  13. data/lib/fog/compute.rb +7 -0
  14. data/lib/fog/xenserver.rb +1 -0
  15. data/lib/fog/xenserver/compute.rb +176 -0
  16. data/lib/fog/xenserver/core.rb +84 -0
  17. data/lib/fog/xenserver/examples/README.md +11 -0
  18. data/lib/fog/xenserver/examples/chage_default_storage_repository.md +99 -0
  19. data/lib/fog/xenserver/examples/creating_servers.md +168 -0
  20. data/lib/fog/xenserver/examples/getting_started.md +163 -0
  21. data/lib/fog/xenserver/examples/networks-and-vlans.rb +45 -0
  22. data/lib/fog/xenserver/examples/storage_repositories.md +94 -0
  23. data/lib/fog/xenserver/models/compute/blob.rb +22 -0
  24. data/lib/fog/xenserver/models/compute/blobs.rb +25 -0
  25. data/lib/fog/xenserver/models/compute/bond.rb +23 -0
  26. data/lib/fog/xenserver/models/compute/bonds.rb +25 -0
  27. data/lib/fog/xenserver/models/compute/console.rb +29 -0
  28. data/lib/fog/xenserver/models/compute/consoles.rb +25 -0
  29. data/lib/fog/xenserver/models/compute/crash_dump.rb +19 -0
  30. data/lib/fog/xenserver/models/compute/crash_dumps.rb +25 -0
  31. data/lib/fog/xenserver/models/compute/dr_task.rb +17 -0
  32. data/lib/fog/xenserver/models/compute/dr_tasks.rb +25 -0
  33. data/lib/fog/xenserver/models/compute/gpu_group.rb +22 -0
  34. data/lib/fog/xenserver/models/compute/gpu_groups.rb +25 -0
  35. data/lib/fog/xenserver/models/compute/guest_metrics.rb +29 -0
  36. data/lib/fog/xenserver/models/compute/host.rb +159 -0
  37. data/lib/fog/xenserver/models/compute/host_cpu.rb +38 -0
  38. data/lib/fog/xenserver/models/compute/host_crash_dump.rb +20 -0
  39. data/lib/fog/xenserver/models/compute/host_crash_dumps.rb +25 -0
  40. data/lib/fog/xenserver/models/compute/host_metrics.rb +29 -0
  41. data/lib/fog/xenserver/models/compute/host_patch.rb +25 -0
  42. data/lib/fog/xenserver/models/compute/host_patchs.rb +25 -0
  43. data/lib/fog/xenserver/models/compute/hosts.rb +29 -0
  44. data/lib/fog/xenserver/models/compute/network.rb +92 -0
  45. data/lib/fog/xenserver/models/compute/networks.rb +33 -0
  46. data/lib/fog/xenserver/models/compute/pbd.rb +40 -0
  47. data/lib/fog/xenserver/models/compute/pbds.rb +33 -0
  48. data/lib/fog/xenserver/models/compute/pci.rb +22 -0
  49. data/lib/fog/xenserver/models/compute/pcis.rb +25 -0
  50. data/lib/fog/xenserver/models/compute/pgpu.rb +20 -0
  51. data/lib/fog/xenserver/models/compute/pgpus.rb +25 -0
  52. data/lib/fog/xenserver/models/compute/pif.rb +57 -0
  53. data/lib/fog/xenserver/models/compute/pif_metrics.rb +28 -0
  54. data/lib/fog/xenserver/models/compute/pifs.rb +33 -0
  55. data/lib/fog/xenserver/models/compute/pifs_metrics.rb +25 -0
  56. data/lib/fog/xenserver/models/compute/pool.rb +79 -0
  57. data/lib/fog/xenserver/models/compute/pool_patch.rb +24 -0
  58. data/lib/fog/xenserver/models/compute/pool_patchs.rb +25 -0
  59. data/lib/fog/xenserver/models/compute/pools.rb +33 -0
  60. data/lib/fog/xenserver/models/compute/role.rb +19 -0
  61. data/lib/fog/xenserver/models/compute/roles.rb +25 -0
  62. data/lib/fog/xenserver/models/compute/server.rb +250 -0
  63. data/lib/fog/xenserver/models/compute/server_appliance.rb +21 -0
  64. data/lib/fog/xenserver/models/compute/server_appliances.rb +25 -0
  65. data/lib/fog/xenserver/models/compute/servers.rb +68 -0
  66. data/lib/fog/xenserver/models/compute/storage_manager.rb +28 -0
  67. data/lib/fog/xenserver/models/compute/storage_managers.rb +25 -0
  68. data/lib/fog/xenserver/models/compute/storage_repositories.rb +31 -0
  69. data/lib/fog/xenserver/models/compute/storage_repository.rb +93 -0
  70. data/lib/fog/xenserver/models/compute/tunnel.rb +20 -0
  71. data/lib/fog/xenserver/models/compute/tunnels.rb +25 -0
  72. data/lib/fog/xenserver/models/compute/vbd.rb +91 -0
  73. data/lib/fog/xenserver/models/compute/vbd_metrics.rb +27 -0
  74. data/lib/fog/xenserver/models/compute/vbds.rb +33 -0
  75. data/lib/fog/xenserver/models/compute/vdi.rb +105 -0
  76. data/lib/fog/xenserver/models/compute/vdis.rb +29 -0
  77. data/lib/fog/xenserver/models/compute/vif.rb +60 -0
  78. data/lib/fog/xenserver/models/compute/vifs.rb +29 -0
  79. data/lib/fog/xenserver/models/compute/vlan.rb +81 -0
  80. data/lib/fog/xenserver/models/compute/vlans.rb +39 -0
  81. data/lib/fog/xenserver/models/compute/vmpp.rb +35 -0
  82. data/lib/fog/xenserver/models/compute/vmpps.rb +25 -0
  83. data/lib/fog/xenserver/models/compute/vtpm.rb +18 -0
  84. data/lib/fog/xenserver/models/compute/vtpms.rb +25 -0
  85. data/lib/fog/xenserver/parser.rb +36 -0
  86. data/lib/fog/xenserver/parsers/get_hosts.rb +19 -0
  87. data/lib/fog/xenserver/parsers/get_networks.rb +19 -0
  88. data/lib/fog/xenserver/parsers/get_pools.rb +19 -0
  89. data/lib/fog/xenserver/parsers/get_records.rb +19 -0
  90. data/lib/fog/xenserver/parsers/get_storage_repositories.rb +19 -0
  91. data/lib/fog/xenserver/parsers/get_vbds.rb +19 -0
  92. data/lib/fog/xenserver/parsers/get_vifs.rb +19 -0
  93. data/lib/fog/xenserver/parsers/get_vms.rb +20 -0
  94. data/lib/fog/xenserver/requests/compute/clone_server.rb +31 -0
  95. data/lib/fog/xenserver/requests/compute/create_network.rb +42 -0
  96. data/lib/fog/xenserver/requests/compute/create_server.rb +130 -0
  97. data/lib/fog/xenserver/requests/compute/create_sr.rb +72 -0
  98. data/lib/fog/xenserver/requests/compute/create_vbd.rb +40 -0
  99. data/lib/fog/xenserver/requests/compute/create_vdi.rb +33 -0
  100. data/lib/fog/xenserver/requests/compute/create_vif.rb +57 -0
  101. data/lib/fog/xenserver/requests/compute/create_vlan.rb +35 -0
  102. data/lib/fog/xenserver/requests/compute/destroy_network.rb +33 -0
  103. data/lib/fog/xenserver/requests/compute/destroy_server.rb +22 -0
  104. data/lib/fog/xenserver/requests/compute/destroy_sr.rb +30 -0
  105. data/lib/fog/xenserver/requests/compute/destroy_vdi.rb +22 -0
  106. data/lib/fog/xenserver/requests/compute/destroy_vif.rb +22 -0
  107. data/lib/fog/xenserver/requests/compute/destroy_vlan.rb +32 -0
  108. data/lib/fog/xenserver/requests/compute/disable_host.rb +29 -0
  109. data/lib/fog/xenserver/requests/compute/eject_vbd.rb +22 -0
  110. data/lib/fog/xenserver/requests/compute/enable_host.rb +28 -0
  111. data/lib/fog/xenserver/requests/compute/get_record.rb +29 -0
  112. data/lib/fog/xenserver/requests/compute/get_records.rb +30 -0
  113. data/lib/fog/xenserver/requests/compute/insert_vbd.rb +22 -0
  114. data/lib/fog/xenserver/requests/compute/provision_server.rb +21 -0
  115. data/lib/fog/xenserver/requests/compute/reboot_host.rb +23 -0
  116. data/lib/fog/xenserver/requests/compute/reboot_server.rb +23 -0
  117. data/lib/fog/xenserver/requests/compute/scan_sr.rb +22 -0
  118. data/lib/fog/xenserver/requests/compute/set_affinity.rb +25 -0
  119. data/lib/fog/xenserver/requests/compute/set_attribute.rb +25 -0
  120. data/lib/fog/xenserver/requests/compute/shutdown_host.rb +23 -0
  121. data/lib/fog/xenserver/requests/compute/shutdown_server.rb +23 -0
  122. data/lib/fog/xenserver/requests/compute/snapshot_revert.rb +22 -0
  123. data/lib/fog/xenserver/requests/compute/snapshot_server.rb +22 -0
  124. data/lib/fog/xenserver/requests/compute/start_server.rb +23 -0
  125. data/lib/fog/xenserver/requests/compute/start_vm.rb +25 -0
  126. data/lib/fog/xenserver/requests/compute/unplug_pbd.rb +25 -0
  127. data/lib/fog/xenserver/requests/compute/unplug_vbd.rb +30 -0
  128. data/lib/fog/xenserver/utilities.rb +8 -0
  129. data/lib/fog/xenserver/version.rb +5 -0
  130. metadata +228 -0
@@ -0,0 +1,38 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class XenServer
6
+
7
+ #
8
+ # A physical CPU
9
+ #
10
+ # @see http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=host_cpu
11
+ #
12
+ class HostCpu < Fog::Model
13
+
14
+ identity :reference
15
+
16
+ attribute :uuid
17
+ attribute :family
18
+ attribute :features
19
+ attribute :flags
20
+ attribute :__host, :aliases => :host
21
+ attribute :model
22
+ attribute :model_name, :aliases => :modelname
23
+ attribute :number
24
+ attribute :other_config
25
+ attribute :speed
26
+ attribute :stepping
27
+ attribute :utilisation
28
+ attribute :vendor
29
+
30
+ def host
31
+ service.hosts.get __host
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class XenServer
6
+ class HostCrashDump < Fog::Model
7
+ # API Reference here:
8
+ # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=host_crashdump
9
+
10
+ identity :reference
11
+
12
+ attribute :__host, :aliases => :host
13
+ attribute :other_config
14
+ attribute :size
15
+ attribute :timestamp
16
+ attribute :uuid
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/xenserver/models/compute/host_crash_dump'
3
+
4
+ module Fog
5
+ module Compute
6
+ class XenServer
7
+ class HostCrashDumps < Fog::Collection
8
+ model Fog::Compute::XenServer::HostCrashDump
9
+
10
+ def all(options={})
11
+ data = service.get_records 'host_crashdump'
12
+ load(data)
13
+ end
14
+
15
+ def get( host_crashdump_ref )
16
+ if host_crashdump_ref && host_crashdump = service.get_record( host_crashdump_ref, 'host_crashdump' )
17
+ new(host_crashdump)
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 HostMetrics < Fog::Model
8
+ # API Reference here:
9
+ # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=host_metrics
10
+
11
+ identity :reference
12
+
13
+ attribute :uuid
14
+ attribute :live
15
+ attribute :memory_free
16
+ attribute :memory_total
17
+ attribute :other_config
18
+ attribute :last_updated
19
+
20
+ def initialize(attributes = {})
21
+ super
22
+ self.last_updated = attributes[:last_updated].to_time
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class XenServer
6
+ class HostPatch < Fog::Model
7
+ # API Reference here:
8
+ # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=host_patch
9
+
10
+ identity :reference
11
+
12
+ attribute :applied
13
+ attribute :__host, :aliases => :host
14
+ attribute :description, :aliases => :name_description
15
+ attribute :name, :aliases => :name_label
16
+ attribute :other_config
17
+ attribute :__pool_patch, :aliases => :pool_patch
18
+ attribute :size
19
+ attribute :timestamp_applied
20
+ attribute :uuid
21
+ attribute :version
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/xenserver/models/compute/host_patch'
3
+
4
+ module Fog
5
+ module Compute
6
+ class XenServer
7
+ class HostPatchs < Fog::Collection
8
+ model Fog::Compute::XenServer::HostPatch
9
+
10
+ def all(options={})
11
+ data = service.get_records 'host_patch'
12
+ load(data)
13
+ end
14
+
15
+ def get( host_patch_ref )
16
+ if host_patch_ref && host_patch = service.get_record( host_patch_ref, 'host_patch' )
17
+ new(host_patch)
18
+ else
19
+ nil
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/xenserver/models/compute/host'
3
+
4
+ module Fog
5
+ module Compute
6
+ class XenServer
7
+
8
+ class Hosts < Fog::Collection
9
+
10
+ model Fog::Compute::XenServer::Host
11
+
12
+ def all(options={})
13
+ data = service.get_records 'host'
14
+ load(data)
15
+ end
16
+
17
+ def get( host_ref )
18
+ if host_ref && host = service.get_record( host_ref, 'host' )
19
+ new(host)
20
+ else
21
+ nil
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,92 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class XenServer
6
+
7
+ class Network < Fog::Model
8
+ # API Reference here:
9
+ # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=network
10
+
11
+ identity :reference
12
+
13
+ attribute :uuid
14
+ attribute :__vifs, :aliases => :VIFs
15
+ attribute :tags
16
+ attribute :mtu, :aliases => :MTU
17
+ attribute :bridge
18
+ attribute :description, :aliases => :name_description
19
+ attribute :name, :aliases => :name_label
20
+ attribute :other_config
21
+ attribute :__pifs, :aliases => :PIFs
22
+ attribute :allowed_operations
23
+ attribute :current_operations
24
+ attribute :default_locking_mode
25
+ attribute :blobs
26
+
27
+ def refresh
28
+ data = service.get_record( reference, 'network' )
29
+ merge_attributes( data )
30
+ true
31
+ end
32
+
33
+ #
34
+ # Return the list of network related PIFs
35
+ #
36
+ def pifs
37
+ p = []
38
+ __pifs.each do |pif|
39
+ p << service.pifs.get(pif)
40
+ end
41
+ p
42
+ end
43
+
44
+ #
45
+ # Return the list of network related VIFs
46
+ #
47
+ def vifs
48
+ v = []
49
+ __vifs.each do |vif|
50
+ v << service.vifs.get(vif)
51
+ end
52
+ v
53
+ end
54
+
55
+ # Creates a new network
56
+ #
57
+ # service = Fog::Compute[:xenserver]
58
+ #
59
+ # # create network 'foonet'
60
+ # net = service.networks.create :name => 'foonet',
61
+ # :description => 'test network'
62
+ #
63
+ # @return [Boolean]
64
+ #
65
+ def save
66
+ requires :name
67
+ ref = service.create_network name, attributes
68
+ data = service.get_record ref, 'network'
69
+ merge_attributes data
70
+ true
71
+ end
72
+
73
+ # Destroys a network
74
+ #
75
+ # service = Fog::Compute[:xenserver]
76
+ #
77
+ # # find network 'foonet' and destroy it
78
+ # net = service.networks.find { |net| net.name == 'foonet' }
79
+ # net.destroy
80
+ #
81
+ # @return [Boolean]
82
+ #
83
+ def destroy
84
+ requires :reference
85
+ service.destroy_network reference
86
+ true
87
+ end
88
+ end
89
+
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,33 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/xenserver/models/compute/network'
3
+
4
+ module Fog
5
+ module Compute
6
+ class XenServer
7
+
8
+ class Networks < Fog::Collection
9
+
10
+ model Fog::Compute::XenServer::Network
11
+
12
+ def initialize(attributes)
13
+ super
14
+ end
15
+
16
+ def all(options = {})
17
+ data = service.get_records 'network'
18
+ load(data)
19
+ end
20
+
21
+ def get( ref )
22
+ if ref && obj = service.get_record( ref, 'network' )
23
+ new(obj)
24
+ end
25
+ rescue Fog::XenServer::NotFound
26
+ nil
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,40 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class XenServer
6
+
7
+ class PBD < Fog::Model
8
+ # API Reference here:
9
+ # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=PBD
10
+
11
+ identity :reference
12
+
13
+ attribute :uuid
14
+ attribute :__host, :aliases => :host
15
+ attribute :__sr, :aliases => :SR
16
+ attribute :currently_attached
17
+ attribute :device_config
18
+ attribute :other_config
19
+
20
+ def sr
21
+ service.storage_repositories.get __sr
22
+ end
23
+
24
+ def storage_repository
25
+ sr
26
+ end
27
+
28
+ def host
29
+ service.hosts.get __host
30
+ end
31
+
32
+ def unplug
33
+ service.unplug_pbd reference
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,33 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/xenserver/models/compute/pbd'
3
+
4
+ module Fog
5
+ module Compute
6
+ class XenServer
7
+
8
+ class Pbds < Fog::Collection
9
+
10
+ model Fog::Compute::XenServer::PBD
11
+
12
+ def initialize(attributes)
13
+ super
14
+ end
15
+
16
+ def all(options = {})
17
+ data = service.get_records 'PBD'
18
+ load(data)
19
+ end
20
+
21
+ def get( ref )
22
+ if ref && obj = service.get_record( ref, 'PBD' )
23
+ new(obj)
24
+ else
25
+ nil
26
+ end
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,22 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class XenServer
6
+ class Pci < Fog::Model
7
+ # API Reference here:
8
+ # http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/api/?c=PCI
9
+
10
+ identity :reference
11
+
12
+ attribute :__dependencies, :aliases => :dependencies
13
+ attribute :device_name
14
+ attribute :__host, :aliases => :host
15
+ attribute :other_config
16
+ attribute :pci_id
17
+ attribute :uuid
18
+ attribute :vendor_name
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/xenserver/models/compute/pci'
3
+
4
+ module Fog
5
+ module Compute
6
+ class XenServer
7
+ class Pcis < Fog::Collection
8
+ model Fog::Compute::XenServer::Pci
9
+
10
+ def all(options={})
11
+ data = service.get_records 'PCI'
12
+ load(data)
13
+ end
14
+
15
+ def get( pci_ref )
16
+ if pci_ref && pci = service.get_record( pci_ref, 'PCI' )
17
+ new(pci)
18
+ else
19
+ nil
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end