From: Michal Fojtik <[email protected]>
---
client/lib/deltacloud.rb | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/client/lib/deltacloud.rb b/client/lib/deltacloud.rb
index 9975dc4..ae3fbe6 100644
--- a/client/lib/deltacloud.rb
+++ b/client/lib/deltacloud.rb
@@ -66,6 +66,27 @@ module DeltaCloud
API.new(nil, nil, url).driver_name
end
+ def self.drivers(url)
+ api = API.new(nil, nil, url)
+ drivers = {}
+ api::request(:get, '/drivers', {}) do |response|
+ response = Nokogiri::XML(response)
+ (response/"/api/drivers/driver").each do |d|
+ drivers[d[:id].to_sym] = { :name => (d/'name').text }
+ entrypoint = {}
+ (d/'entrypoints').each do |entrypoint|
+ entrypoint = (entrypoint/'entrypoint').collect { |e| { :id =>
e[:id], :url => e.text } }
+ end
+ drivers[d[:id].to_sym].merge!({ :entrypoints => entrypoint }) unless
entrypoint.empty?
+ if (d/'credentials')
+ drivers[d[:id].to_sym].merge!({ :username =>
(d/'credentials/username').text}) if (d/'credentials/username')
+ drivers[d[:id].to_sym].merge!({ :password =>
(d/'credentials/password').text}) if (d/'credentials/password')
+ end
+ end
+ end
+ drivers
+ end
+
class API
attr_reader :api_uri, :driver_name, :api_version, :features, :entry_points
attr_reader :api_driver, :api_provider
--
1.7.4