You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2012/05/22 22:19:37 UTC

[34/50] [abbrv] git commit: Core: Removed API_ROOT_URL and API_VERSION constants with proper configuration

Core: Removed API_ROOT_URL and API_VERSION constants with proper configuration


Project: http://git-wip-us.apache.org/repos/asf/deltacloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltacloud/commit/0b18b3f5
Tree: http://git-wip-us.apache.org/repos/asf/deltacloud/tree/0b18b3f5
Diff: http://git-wip-us.apache.org/repos/asf/deltacloud/diff/0b18b3f5

Branch: refs/heads/master
Commit: 0b18b3f5593645199bb760b3b49b2766e187806a
Parents: fdc3e05
Author: Michal Fojtik <mf...@redhat.com>
Authored: Tue May 15 23:18:47 2012 +0200
Committer: Michal fojtik <mf...@redhat.com>
Committed: Tue May 22 22:17:36 2012 +0200

----------------------------------------------------------------------
 server/lib/cimi/collections/cloud_entry_point.rb   |    2 +-
 server/lib/cimi/helpers.rb                         |    6 +-
 server/lib/cimi/server.rb                          |    2 +-
 server/lib/deltacloud/helpers.rb                   |    4 +-
 server/lib/deltacloud/helpers/deltacloud_helper.rb |    2 +-
 server/lib/deltacloud/helpers/url_helper.rb        |    4 +-
 server/lib/deltacloud_rack.rb                      |   68 +++++++++++++++
 server/tests/drivers/mock/api_test.rb              |   48 +++++-----
 server/tests/drivers/mock/buckets_test.rb          |    2 +-
 server/tests/drivers/mock/common.rb                |   24 ++----
 server/tests/drivers/mock/drivers_test.rb          |    2 +-
 .../tests/drivers/mock/hardware_profiles_test.rb   |    2 +-
 server/tests/drivers/mock/images_test.rb           |    2 +-
 server/tests/drivers/mock/instances_test.rb        |    2 +-
 server/tests/drivers/mock/keys_test.rb             |    2 +-
 server/tests/drivers/mock/realms_test.rb           |    2 +-
 .../tests/drivers/mock/storage_snapshots_test.rb   |    2 +-
 server/tests/drivers/mock/storage_volumes_test.rb  |    2 +-
 18 files changed, 118 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/lib/cimi/collections/cloud_entry_point.rb
----------------------------------------------------------------------
diff --git a/server/lib/cimi/collections/cloud_entry_point.rb b/server/lib/cimi/collections/cloud_entry_point.rb
index 79454f3..8232e61 100644
--- a/server/lib/cimi/collections/cloud_entry_point.rb
+++ b/server/lib/cimi/collections/cloud_entry_point.rb
@@ -23,7 +23,7 @@ module CIMI::Collections
       operation :index do
         description "list all resources of the cloud"
         control do
-          redirect API_ROOT_URL
+          redirect Deltacloud[:root_url]
         end
       end
     end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/lib/cimi/helpers.rb
----------------------------------------------------------------------
diff --git a/server/lib/cimi/helpers.rb b/server/lib/cimi/helpers.rb
index 4535c39..b0fc9e3 100644
--- a/server/lib/cimi/helpers.rb
+++ b/server/lib/cimi/helpers.rb
@@ -54,8 +54,8 @@ module CIMI::Collections
     enable :show_errors
     disable :show_exceptions
 
-    set :root_url, API_ROOT_URL
-    set :version, API_VERSION
+    set :root_url, Deltacloud[:root_url]
+    set :version, Deltacloud[:version]
     set :root, File.join(File.dirname(__FILE__), '..', '..')
     set :views, root + '/views/cimi'
     set :public_folder, root + '/public'
@@ -74,7 +74,7 @@ module CIMI::Collections
     end
 
     after do
-      headers 'X-CIMI-Specification-Version' => API_VERSION
+      headers 'X-CIMI-Specification-Version' => Deltacloud[:version]
     end
 
     def self.new_route_for(route, &block)

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/lib/cimi/server.rb
----------------------------------------------------------------------
diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb
index a1c7ef9..c34dba9 100644
--- a/server/lib/cimi/server.rb
+++ b/server/lib/cimi/server.rb
@@ -45,7 +45,7 @@ module CIMI
     include CIMI::Collections
     include CIMI::Model
 
-    get API_ROOT_URL do
+    get Deltacloud[:root_url] do
       if params[:force_auth]
         return [401, 'Authentication failed'] unless driver.valid_credentials?(credentials)
       end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/lib/deltacloud/helpers.rb
----------------------------------------------------------------------
diff --git a/server/lib/deltacloud/helpers.rb b/server/lib/deltacloud/helpers.rb
index 8e265fc..b4f859f 100644
--- a/server/lib/deltacloud/helpers.rb
+++ b/server/lib/deltacloud/helpers.rb
@@ -45,8 +45,8 @@ module Deltacloud::Collections
     enable :method_override
     disable :show_exceptions
 
-    set :root_url, API_ROOT_URL
-    set :version, API_VERSION
+    set :root_url, Deltacloud[:root_url]
+    set :version, Deltacloud[:version]
     set :root, File.join(File.dirname(__FILE__), '..', '..')
     set :views, root + '/views'
     set :public_folder, root + '/public'

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/lib/deltacloud/helpers/deltacloud_helper.rb
----------------------------------------------------------------------
diff --git a/server/lib/deltacloud/helpers/deltacloud_helper.rb b/server/lib/deltacloud/helpers/deltacloud_helper.rb
index 2fc2a59..ed3e57d 100644
--- a/server/lib/deltacloud/helpers/deltacloud_helper.rb
+++ b/server/lib/deltacloud/helpers/deltacloud_helper.rb
@@ -20,7 +20,7 @@ module Deltacloud::Helpers
 
     def self.included(klass)
       klass.class_eval do
-        set :root_url, API_ROOT_URL
+        set :root_url, Deltacloud[:root_url]
         include Sinatra::Rabbit
         Sinatra::Rabbit.set :root_path, root_url+'/'
       end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/lib/deltacloud/helpers/url_helper.rb
----------------------------------------------------------------------
diff --git a/server/lib/deltacloud/helpers/url_helper.rb b/server/lib/deltacloud/helpers/url_helper.rb
index b35c714..fd4d9bc 100644
--- a/server/lib/deltacloud/helpers/url_helper.rb
+++ b/server/lib/deltacloud/helpers/url_helper.rb
@@ -79,7 +79,7 @@ module Sinatra
     def url_for url_fragment, mode=:path_only
       case mode
       when :path_only
-        base = request.script_name.empty? ? API_ROOT_URL : request.script_name
+        base = request.script_name.empty? ? Deltacloud[:root_url] : request.script_name
       when :full
         scheme = request.scheme
         port = request.port
@@ -96,7 +96,7 @@ module Sinatra
         else
           port = ":#{port}"
         end
-        base = "#{scheme}://#{request_host}#{port}#{request.script_name.empty? ? API_ROOT_URL : request.script_name}"
+        base = "#{scheme}://#{request_host}#{port}#{request.script_name.empty? ? Deltacloud[:root_url] : request.script_name}"
       else
         raise TypeError, "Unknown url_for mode #{mode}"
       end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/lib/deltacloud_rack.rb
----------------------------------------------------------------------
diff --git a/server/lib/deltacloud_rack.rb b/server/lib/deltacloud_rack.rb
new file mode 100644
index 0000000..873ef29
--- /dev/null
+++ b/server/lib/deltacloud_rack.rb
@@ -0,0 +1,68 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+module Deltacloud
+
+  def self.config(conf=nil)
+    @config ||= conf
+  end
+
+  def self.configure(&block)
+    config(Server.new(&block))
+    self
+  end
+
+  def self.[](item)
+    config.send(item)
+  end
+
+  def self.require_frontend!
+    ENV['API_FRONTEND'] ||= 'deltacloud'
+    require File.join(File.dirname(__FILE__), ENV['API_FRONTEND'], 'server.rb')
+    config.klass eval(self[:klass])
+  end
+
+  class Server
+
+    attr_reader :root_url
+    attr_reader :version
+    attr_reader :klass
+
+    def initialize(opts={}, &block)
+      @root_url = opts[:root_url]
+      @version = opts[:version]
+      @klass = opts[:klass]
+      instance_eval(&block)
+    end
+
+    def root_url(url=nil)
+      return @root_url if url.nil?
+      raise '[Core] The server URL must start with /' unless url =~ /^\//
+      @root_url = url
+    end
+
+    def version(version=nil)
+      return @version if version.nil?
+      @version = version
+    end
+
+    def klass(k=nil)
+      return @klass if k.nil?
+      @klass = k
+    end
+
+  end
+
+end

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/api_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/api_test.rb b/server/tests/drivers/mock/api_test.rb
index 3308365..cafe0be 100644
--- a/server/tests/drivers/mock/api_test.rb
+++ b/server/tests/drivers/mock/api_test.rb
@@ -2,37 +2,37 @@ describe 'Deltacloud API' do
   include Deltacloud::Test
 
   it 'return HTTP_OK when accessing API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     last_response.status.must_equal 200
   end
 
   it 'advertise the current driver in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     xml_response.root[:driver].must_equal ENV['API_DRIVER']
   end
 
   it 'advertise the current API version in API entrypoint' do
-    get API_ROOT_URL
-    xml_response.root[:version].must_equal API_VERSION
+    get Deltacloud[:root_url]
+    xml_response.root[:version].must_equal Deltacloud[:version]
   end
 
   it 'advertise the current API version in HTTP headers' do
-    get API_ROOT_URL
-    last_response.headers['Server'].must_equal "Apache-Deltacloud/#{API_VERSION}"
+    get Deltacloud[:root_url]
+    last_response.headers['Server'].must_equal "Apache-Deltacloud/#{Deltacloud[:version]}"
   end
 
   it 'must include the ETag in HTTP headers' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     last_response.headers['ETag'].wont_be_nil
   end
 
   it 'advertise collections in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link').wont_be_empty
   end
 
   it 'include the :href and :rel attribute for each collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link').each do |collection|
       collection[:href].wont_be_nil
       collection[:rel].wont_be_nil
@@ -40,19 +40,19 @@ describe 'Deltacloud API' do
   end
 
   it 'uses the absolute URI in the :href attribute for each collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link').each do |collection|
       collection[:href].must_match /^http/
     end
   end
 
   it 'advertise features for some collections in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link/feature').wont_be_empty
   end
 
   it 'advertise the name of the feature for some collections in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link/feature').each do |f|
       f[:name].wont_be_nil
     end
@@ -60,55 +60,55 @@ describe 'Deltacloud API' do
 
   it 'must change the media type from XML to JSON using Accept headers' do
     header 'Accept', 'application/json'
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     last_response.headers['Content-Type'].must_equal 'application/json'
   end
 
   it 'must change the media type to JSON using the "?format" parameter in URL' do
-    get API_ROOT_URL, { :format => 'json' }
+    get Deltacloud[:root_url], { :format => 'json' }
     last_response.headers['Content-Type'].must_equal 'application/json'
   end
 
   it 'must change the driver when using X-Deltacloud-Driver HTTP header' do
     header 'X-Deltacloud-Driver', 'ec2'
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     xml_response.root[:driver].must_equal 'ec2'
     header 'X-Deltacloud-Driver', 'mock'
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     xml_response.root[:driver].must_equal 'mock'
   end
 
   it 'must change the features when driver is swapped using HTTP headers' do
     header 'X-Deltacloud-Driver', 'ec2'
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     # The 'user_name' feature is not supported currently for the EC2 driver
     (xml_response/'api/link/feature').map { |f| f[:name] }.wont_include 'user_name'
     header 'X-Deltacloud-Driver', 'mock'
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     # But it's supported in Mock driver
     (xml_response/'api/link/feature').map { |f| f[:name] }.must_include 'user_name'
   end
 
   it 'must re-validate the driver credentials when using "?force_auth" parameter in URL' do
-    get API_ROOT_URL, { :force_auth => '1' }
+    get Deltacloud[:root_url], { :force_auth => '1' }
     last_response.status.must_equal 401
     auth_as_mock
-    get API_ROOT_URL, { :force_auth => '1' }
+    get Deltacloud[:root_url], { :force_auth => '1' }
     last_response.status.must_equal 200
   end
 
   it 'must change the API PROVIDER using the /api;provider matrix parameter in URI' do
-    get API_ROOT_URL + ';provider=test1'
+    get Deltacloud[:root_url] + ';provider=test1'
     xml_response.root[:provider].wont_be_nil
     xml_response.root[:provider].must_equal 'test1'
-    get API_ROOT_URL + ';provider=test2'
+    get Deltacloud[:root_url] + ';provider=test2'
     xml_response.root[:provider].must_equal 'test2'
   end
 
   it 'must change the API DRIVER using the /api;driver matrix parameter in URI' do
-    get API_ROOT_URL + ';driver=ec2'
+    get Deltacloud[:root_url] + ';driver=ec2'
     xml_response.root[:driver].must_equal 'ec2'
-    get API_ROOT_URL + ';driver=mock'
+    get Deltacloud[:root_url] + ';driver=mock'
     xml_response.root[:driver].must_equal 'mock'
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/buckets_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/buckets_test.rb b/server/tests/drivers/mock/buckets_test.rb
index f98ad24..91970ff 100644
--- a/server/tests/drivers/mock/buckets_test.rb
+++ b/server/tests/drivers/mock/buckets_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API buckets' do
   include Deltacloud::Test
 
   it 'must advertise have the buckets collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=buckets]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/common.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/common.rb b/server/tests/drivers/mock/common.rb
index 08650a3..2b96711 100644
--- a/server/tests/drivers/mock/common.rb
+++ b/server/tests/drivers/mock/common.rb
@@ -1,25 +1,15 @@
-unless Kernel.respond_to?(:require_relative)
-  module Kernel
-    def require_relative(path)
-      require File.join(File.dirname(caller[0]), path.to_str)
-    end
-  end
-end
+load File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'deltacloud_rack.rb')
 
-API_ROOT_URL = "/api" unless defined?(API_ROOT_URL)
-API_VERSION = "1.0.0" unless defined?(API_VERSION)
-ENV['API_DRIVER'] ||= 'mock'
-
-ENV['API_USERNAME'] ||= 'mockuser'
-ENV['API_PASSWORD'] ||= 'mockpassword'
-
-require_relative '../../../lib/deltacloud/server.rb'
+Deltacloud::configure do |server|
+  server.root_url '/api'
+  server.version '0.5.0'
+  server.klass 'Deltacloud::API'
+end.require_frontend!
 
 require 'minitest/autorun'
 require 'rack/test'
 require 'nokogiri'
 require 'json'
-
 require 'pp'
 
 module Deltacloud
@@ -43,7 +33,7 @@ module Deltacloud
     end
 
     def collection_url(collection)
-      [API_ROOT_URL, collection.to_s].join('/')
+      [Deltacloud[:root_url], collection.to_s].join('/')
     end
 
     def app

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/drivers_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/drivers_test.rb b/server/tests/drivers/mock/drivers_test.rb
index 41c2e66..9e5bc71 100644
--- a/server/tests/drivers/mock/drivers_test.rb
+++ b/server/tests/drivers/mock/drivers_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API drivers' do
   include Deltacloud::Test
 
   it 'must advertise have the drivers collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=drivers]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/hardware_profiles_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/hardware_profiles_test.rb b/server/tests/drivers/mock/hardware_profiles_test.rb
index 3dad5a8..aed2a04 100644
--- a/server/tests/drivers/mock/hardware_profiles_test.rb
+++ b/server/tests/drivers/mock/hardware_profiles_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API Hardware Profiles' do
   include Deltacloud::Test
 
   it 'must advertise have the hardware_profiles collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=hardware_profiles]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/images_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/images_test.rb b/server/tests/drivers/mock/images_test.rb
index 3faf752..909fdf1 100644
--- a/server/tests/drivers/mock/images_test.rb
+++ b/server/tests/drivers/mock/images_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API Images' do
   include Deltacloud::Test
 
   it 'must advertise have the images collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=images]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/instances_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/instances_test.rb b/server/tests/drivers/mock/instances_test.rb
index c601a6f..878589c 100644
--- a/server/tests/drivers/mock/instances_test.rb
+++ b/server/tests/drivers/mock/instances_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API instances' do
   include Deltacloud::Test
 
   it 'must advertise have the instances collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=instances]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/keys_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/keys_test.rb b/server/tests/drivers/mock/keys_test.rb
index 9267b5a..2738a50 100644
--- a/server/tests/drivers/mock/keys_test.rb
+++ b/server/tests/drivers/mock/keys_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API Keys' do
   include Deltacloud::Test
 
   it 'must advertise have the keys collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=keys]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/realms_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/realms_test.rb b/server/tests/drivers/mock/realms_test.rb
index 6bc9101..5496bc4 100644
--- a/server/tests/drivers/mock/realms_test.rb
+++ b/server/tests/drivers/mock/realms_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API Realms' do
   include Deltacloud::Test
 
   it 'must advertise have the realms collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=realms]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/storage_snapshots_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/storage_snapshots_test.rb b/server/tests/drivers/mock/storage_snapshots_test.rb
index 52ea847..70ac2ba 100644
--- a/server/tests/drivers/mock/storage_snapshots_test.rb
+++ b/server/tests/drivers/mock/storage_snapshots_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API storage_snapshots' do
   include Deltacloud::Test
 
   it 'must advertise have the storage_snapshots collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=storage_snapshots]').wont_be_empty
   end
 

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/0b18b3f5/server/tests/drivers/mock/storage_volumes_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/drivers/mock/storage_volumes_test.rb b/server/tests/drivers/mock/storage_volumes_test.rb
index cbafd5d..efceaee 100644
--- a/server/tests/drivers/mock/storage_volumes_test.rb
+++ b/server/tests/drivers/mock/storage_volumes_test.rb
@@ -2,7 +2,7 @@ describe 'Deltacloud API storage_volumes' do
   include Deltacloud::Test
 
   it 'must advertise have the storage_volumes collection in API entrypoint' do
-    get API_ROOT_URL
+    get Deltacloud[:root_url]
     (xml_response/'api/link[@rel=storage_volumes]').wont_be_empty
   end