fog-xenserver 0.0.1.alpha

Sign up to get free protection for your applications and to get access to all the features.
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