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
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
+