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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 11cad9d8c8a76cd274949f25dbd65e48393c6bff
4
+ data.tar.gz: b32f09212229683d08fa9f5a2c389075929bfae8
5
+ SHA512:
6
+ metadata.gz: 64da36d3b4b963cfb9f83abf8d34b046b4dd0587299cfdcaf1114e7e243b6f5da718d212b2e5f38c3d5dd7ba4448c98f47b8e3441669ffe850b6ffa3c2a0401b
7
+ data.tar.gz: 59788d65ec94d6b97393037d9909f11b589dd95f83d1710c84f4d7d4ca01c12c58be125f6ebeb6a3997d19a82200922b77b8dd2833a9995aafade429c9f23b16
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ fog-xenserver
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.2
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,18 @@
1
+ ## Getting Involved
2
+
3
+ New contributors are always welcome, when it doubt please ask questions. We strive to be an open and welcoming community. Please be nice to one another.
4
+
5
+ ### Coding
6
+
7
+ * Pick a task:
8
+ * Offer feedback on open [pull requests](https://github.com/zertico/fog-xenserver/pulls).
9
+ * Review open [issues](https://github.com/zertico/fog-xenserver/issues) for things to help on.
10
+ * [Create an issue](https://github.com/zertico/fog-xenserver/issues/new) to start a discussion on additions or features.
11
+ * Fork the project, add your changes and tests to cover them in a topic branch.
12
+ * Commit your changes and rebase against `zertico/fog-xenserver` to ensure everything is up to date.
13
+ * [Submit a pull request](https://github.com/zertico/fog-xenserver/compare/)
14
+
15
+ ### Non-Coding
16
+
17
+ * Offer feedback on open [issues](https://github.com/zertico/fog-xenserver/issues).
18
+ * Organize or volunteer at events.
data/CONTRIBUTORS.md ADDED
@@ -0,0 +1 @@
1
+ * Paulo Henrique Lopes Ribeiro <plribeiro@zertico.com>
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fog-xenserver.gemspec
4
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014-2014 [CONTRIBUTORS.md](https://github.com/zertico/fog-xenserver/blob/master/CONTRIBUTORS.md)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Fog::Xenserver
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'fog-xenserver'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install fog-xenserver
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( https://github.com/[my-github-username]/fog-xenserver/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fog/xenserver/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'fog-xenserver'
8
+ spec.version = Fog::Xenserver::VERSION
9
+ spec.authors = %q(Paulo Henrique Lopes Ribeiro)
10
+ spec.email = %q(plribeiro3000@gmail.com)
11
+ spec.description = %q{Module for the 'fog' gem to support XENSERVER.}
12
+ spec.summary = %q{This library can be used as a module for `fog` or as standalone provider
13
+ to use the XENSERVER in applications.}
14
+ spec.homepage = 'https://github.com/zertico/fog-xenserver'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = %w(lib)
21
+
22
+ spec.add_dependency 'fog'
23
+ spec.add_dependency 'fog-core'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec'
26
+ end
data/lib/fog.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Fog
2
+ autoload :Compute, 'lib/fog/compute'
3
+ end
@@ -0,0 +1,7 @@
1
+ require "fog/xenserver/version"
2
+
3
+ module Fog
4
+ module Compute
5
+ autoload :XenServer, 'fog/xenserver/compute'
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ require "#{File.join(File.dirname(__FILE__), 'compute')}"
@@ -0,0 +1,176 @@
1
+ require 'fog/xenserver/core'
2
+
3
+ module Fog
4
+ module Compute
5
+ class XenServer < Fog::Service
6
+
7
+ require 'fog/xenserver/utilities'
8
+ require 'fog/xenserver/parser'
9
+
10
+ requires :xenserver_username
11
+ requires :xenserver_password
12
+ requires :xenserver_url
13
+ recognizes :xenserver_defaults
14
+ recognizes :xenserver_timeout
15
+
16
+ model_path 'fog/xenserver/models/compute'
17
+ model :blob
18
+ collection :blobs
19
+ model :bond
20
+ collection :bonds
21
+ model :crash_dump
22
+ collection :crash_dumps
23
+ model :dr_task
24
+ collection :dr_tasks
25
+ model :gpu_group
26
+ collection :gpu_groups
27
+ model :host_crash_dump
28
+ collection :host_crash_dumps
29
+ model :host_patch
30
+ collection :host_patchs
31
+ model :pci
32
+ collection :pcis
33
+ model :pgpu
34
+ collection :pgpus
35
+ model :pif_metrics
36
+ collection :pifs_metrics
37
+ model :pool_patch
38
+ collection :pool_patchs
39
+ model :role
40
+ collection :roles
41
+ model :server
42
+ collection :servers
43
+ model :server_appliance
44
+ collection :server_appliances
45
+ model :storage_manager
46
+ collection :storage_managers
47
+ model :tunnel
48
+ collection :tunnels
49
+ model :vmpp
50
+ collection :vmpps
51
+ model :vtpm
52
+ collection :vtpms
53
+ model :host
54
+ collection :hosts
55
+ collection :vifs
56
+ model :vif
57
+ collection :storage_repositories
58
+ model :storage_repository
59
+ collection :pools
60
+ model :pool
61
+ collection :vbds
62
+ model :vbd
63
+ collection :vdis
64
+ model :vdi
65
+ collection :networks
66
+ model :network
67
+ collection :pifs
68
+ model :pif
69
+ collection :pbds
70
+ model :pbd
71
+ model :guest_metrics
72
+ model :vbd_metrics
73
+ model :host_metrics
74
+ model :host_cpu
75
+ model :vlan
76
+ collection :vlans
77
+ model :console
78
+ collection :consoles
79
+
80
+ request_path 'fog/xenserver/requests/compute'
81
+ request :create_server
82
+ request :create_vif
83
+ request :create_vdi
84
+ request :create_vbd
85
+ request :destroy_vif
86
+ request :clone_server
87
+ request :destroy_server
88
+ request :unplug_vbd
89
+ request :eject_vbd
90
+ request :insert_vbd
91
+ request :destroy_vdi
92
+ request :shutdown_server
93
+ request :start_vm
94
+ request :start_server
95
+ request :get_record
96
+ request :get_records
97
+ request :set_affinity
98
+ request :set_attribute
99
+ request :reboot_server
100
+ request :provision_server
101
+ request :scan_sr
102
+ request :unplug_pbd
103
+ request :destroy_sr
104
+ request :create_sr
105
+ request :reboot_host
106
+ request :disable_host
107
+ request :enable_host
108
+ request :shutdown_host
109
+ request :create_network
110
+ request :destroy_network
111
+ request :create_vlan
112
+ request :destroy_vlan
113
+ request :snapshot_server
114
+ request :snapshot_revert
115
+
116
+ class Real
117
+
118
+ def initialize(options={})
119
+ @host = options[:xenserver_url]
120
+ @username = options[:xenserver_username]
121
+ @password = options[:xenserver_password]
122
+ @defaults = options[:xenserver_defaults] || {}
123
+ @timeout = options[:xenserver_timeout] || 30
124
+ @connection = Fog::XenServer::Connection.new(@host, @timeout)
125
+ @connection.authenticate(@username, @password)
126
+ end
127
+
128
+ def reload
129
+ @connection.authenticate(@username, @password)
130
+ end
131
+
132
+ def default_template=(name)
133
+ @defaults[:template] = name
134
+ end
135
+
136
+ def default_template
137
+ return nil if @defaults[:template].nil?
138
+ (servers.custom_templates + servers.builtin_templates).find do |s|
139
+ (s.name == @defaults[:template]) or (s.uuid == @defaults[:template])
140
+ end
141
+ end
142
+
143
+ def default_network
144
+ networks.find { |n| n.name == (@defaults[:network] || "Pool-wide network associated with eth0") }
145
+ end
146
+
147
+ end
148
+
149
+ class Mock
150
+
151
+ def self.data
152
+ @data ||= Hash.new do |hash, key|
153
+ hash[key] = {}
154
+ end
155
+ end
156
+
157
+ def self.reset_data(keys=data.keys)
158
+ for key in [*keys]
159
+ data.delete(key)
160
+ end
161
+ end
162
+
163
+ def initialize(options={})
164
+ @host = options[:xenserver_pool_master]
165
+ @username = options[:xenserver_username]
166
+ @password = options[:xenserver_password]
167
+ @connection = Fog::XML::Connection.new(@host)
168
+ @connection.authenticate(@username, @password)
169
+ end
170
+
171
+ end
172
+ end
173
+ end
174
+ end
175
+
176
+
@@ -0,0 +1,84 @@
1
+ require 'fog/core'
2
+ require 'fog/xml'
3
+
4
+ module Fog
5
+ module XenServer
6
+
7
+ class InvalidLogin < Fog::Errors::Error; end
8
+ class NotFound < Fog::Errors::Error; end
9
+ class RequestFailed < Fog::Errors::Error; end
10
+
11
+ extend Fog::Provider
12
+
13
+ service(:compute, 'Compute')
14
+
15
+ class Connection
16
+ require 'xmlrpc/client'
17
+
18
+ def initialize(host, timeout)
19
+ @factory = XMLRPC::Client.new(host, '/')
20
+ @factory.set_parser(NokogiriStreamParser.new)
21
+ @factory.timeout = timeout
22
+ end
23
+
24
+ def authenticate( username, password )
25
+ response = @factory.call('session.login_with_password', username.to_s, password.to_s)
26
+ raise Fog::XenServer::InvalidLogin.new unless response["Status"] =~ /Success/
27
+ @credentials = response["Value"]
28
+ end
29
+
30
+ def request(options, *params)
31
+ begin
32
+ parser = options.delete(:parser)
33
+ method = options.delete(:method)
34
+
35
+ if params.empty?
36
+ response = @factory.call(method, @credentials)
37
+ else
38
+ if params.length.eql?(1) and params.first.is_a?(Hash)
39
+ response = @factory.call(method, @credentials, params.first)
40
+ elsif params.length.eql?(2) and params.last.is_a?(Array)
41
+ response = @factory.call(method, @credentials, params.first, params.last)
42
+ else
43
+ response = eval("@factory.call('#{method}', '#{@credentials}', #{params.map {|p| p.is_a?(String) ? "'#{p}'" : p}.join(',')})")
44
+ end
45
+ end
46
+ raise RequestFailed.new("#{method}: " + response["ErrorDescription"].to_s) unless response["Status"].eql? "Success"
47
+ if parser
48
+ parser.parse( response["Value"] )
49
+ response = parser.response
50
+ end
51
+
52
+ response
53
+ end
54
+ end
55
+ end
56
+
57
+ class NokogiriStreamParser < XMLRPC::XMLParser::AbstractStreamParser
58
+
59
+ def initialize
60
+ require 'nokogiri/xml/sax/document'
61
+ require 'nokogiri/xml/sax/parser'
62
+
63
+ @parser_class = Class.new(Nokogiri::XML::SAX::Document) do
64
+
65
+ include XMLRPC::XMLParser::StreamParserMixin
66
+
67
+ alias_method :start_element, :startElement
68
+ alias_method :end_element, :endElement
69
+ alias_method :characters, :character
70
+ alias_method :cdata_block, :character
71
+
72
+ def parse(str)
73
+ Nokogiri::XML::SAX::Parser.new(self).parse(str)
74
+ end
75
+
76
+ end
77
+ end
78
+
79
+ end
80
+
81
+ end
82
+ end
83
+
84
+
@@ -0,0 +1,11 @@
1
+ # fog/xenserver compute examples
2
+
3
+ fog/xenserver examples contributed by BVox World S.L.U.
4
+ Original examples from https://github.com/bvox/fog-xenserver-examples
5
+
6
+ Maintainer: Sergio Rubio <rubiojr@bvox.net>
7
+
8
+ A general introduction to Fog is available at:
9
+
10
+ http://fog.io
11
+