diff --git a/lib/fog.rb b/lib/fog.rb index 5d5a0b1cc..fb74f780c 100644 --- a/lib/fog.rb +++ b/lib/fog.rb @@ -1,66 +1,11 @@ -require 'rubygems' -require 'base64' -require 'cgi' -require 'excon' -require 'formatador' -require 'time' -require 'named-parameters' - -__DIR__ = File.dirname(__FILE__) - -$LOAD_PATH.unshift __DIR__ unless - $LOAD_PATH.include?(__DIR__) || - $LOAD_PATH.include?(File.expand_path(__DIR__)) - -require 'fog/core' +require File.join(File.dirname(__FILE__), 'fog', 'core') module Fog - @mocking = false - unless const_defined?(:VERSION) VERSION = '0.3.31' end - module Mock - @delay = 1 - def self.delay - @delay - end - - def self.delay=(new_delay) - raise ArgumentError, "delay must be non-negative" unless new_delay >= 0 - @delay = new_delay - end - - def self.not_implemented - raise Fog::Errors::MockNotImplemented.new("Contributions welcome!") - end - - end - - def self.mock! - @mocking = true - end - - def self.mocking? - !!@mocking - end - - def self.wait_for(timeout=600, interval=1, &block) - duration = 0 - start = Time.now - until yield || duration > timeout - sleep(interval) - duration = Time.now - start - end - if duration > timeout - false - else - { :duration => duration } - end - end - end require 'fog/aws' @@ -75,4 +20,4 @@ require 'fog/rackspace' require 'fog/slicehost' require 'fog/terremark' require 'fog/vcloud' -require 'fog/zerigo' +require 'fog/zerigo' \ No newline at end of file diff --git a/lib/fog/aws.rb b/lib/fog/aws.rb index 770b61d88..c0a6d22a4 100644 --- a/lib/fog/aws.rb +++ b/lib/fog/aws.rb @@ -1,4 +1,4 @@ -require 'nokogiri' +require File.join(File.dirname(__FILE__), 'core') require 'fog/core/parser' module Fog diff --git a/lib/fog/bluebox.rb b/lib/fog/bluebox.rb index 4cddb5040..19d6c49dc 100644 --- a/lib/fog/bluebox.rb +++ b/lib/fog/bluebox.rb @@ -1,3 +1,5 @@ +require File.join(File.dirname(__FILE__), 'core') + module Fog module Bluebox diff --git a/lib/fog/brightbox.rb b/lib/fog/brightbox.rb index ae5c945dd..90eb63c4b 100644 --- a/lib/fog/brightbox.rb +++ b/lib/fog/brightbox.rb @@ -1,3 +1,5 @@ +require File.join(File.dirname(__FILE__), 'core') + module Fog module Brightbox extend Fog::Provider diff --git a/lib/fog/core.rb b/lib/fog/core.rb index 4192d98a8..3dc9c40a0 100644 --- a/lib/fog/core.rb +++ b/lib/fog/core.rb @@ -1,3 +1,20 @@ +__LIB_DIR__ = File.join(File.dirname(__FILE__), '..') + +$LOAD_PATH.unshift __LIB_DIR__ unless + $LOAD_PATH.include?(__LIB_DIR__) || + $LOAD_PATH.include?(File.expand_path(__LIB_DIR__)) + +# external core dependencies +require 'rubygems' +require 'base64' +require 'cgi' +require 'excon' +require 'formatador' +require 'nokogiri' +require 'time' +require 'named-parameters' + +# internal core dependencies require 'fog/core/attributes' require 'fog/core/collection' require 'fog/core/compute' @@ -7,8 +24,10 @@ require 'fog/core/deprecation' require 'fog/core/errors' require 'fog/core/hmac' require 'fog/core/model' +require 'fog/core/mock' # require 'fog/core/parser' require 'fog/core/provider' require 'fog/core/service' require 'fog/core/ssh' require 'fog/core/storage' +require 'fog/core/wait_for' diff --git a/lib/fog/core/mock.rb b/lib/fog/core/mock.rb new file mode 100644 index 000000000..2f4234170 --- /dev/null +++ b/lib/fog/core/mock.rb @@ -0,0 +1,34 @@ +module Fog + + @mocking = false + + def self.mock! + @mocking = true + end + + def self.mock? + @mocking + end + + def self.mocking? + @mocking + end + + module Mock + @delay = 1 + def self.delay + @delay + end + + def self.delay=(new_delay) + raise ArgumentError, "delay must be non-negative" unless new_delay >= 0 + @delay = new_delay + end + + def self.not_implemented + raise Fog::Errors::MockNotImplemented.new("Contributions welcome!") + end + + end + +end \ No newline at end of file diff --git a/lib/fog/core/wait_for.rb b/lib/fog/core/wait_for.rb new file mode 100644 index 000000000..3a9133b32 --- /dev/null +++ b/lib/fog/core/wait_for.rb @@ -0,0 +1,17 @@ +module Fog + + def self.wait_for(timeout=600, interval=1, &block) + duration = 0 + start = Time.now + until yield || duration > timeout + sleep(interval) + duration = Time.now - start + end + if duration > timeout + false + else + { :duration => duration } + end + end + +end \ No newline at end of file diff --git a/lib/fog/go_grid.rb b/lib/fog/go_grid.rb index 1515bface..7a1e63fc9 100644 --- a/lib/fog/go_grid.rb +++ b/lib/fog/go_grid.rb @@ -1,3 +1,5 @@ +require File.join(File.dirname(__FILE__), 'core') + module Fog module GoGrid diff --git a/lib/fog/google.rb b/lib/fog/google.rb index 588d8145f..8425f95ca 100644 --- a/lib/fog/google.rb +++ b/lib/fog/google.rb @@ -1,4 +1,4 @@ -require 'nokogiri' +require File.join(File.dirname(__FILE__), 'core') require 'fog/core/parser' module Fog diff --git a/lib/fog/linode.rb b/lib/fog/linode.rb index 48eda5890..8a788999a 100644 --- a/lib/fog/linode.rb +++ b/lib/fog/linode.rb @@ -1,3 +1,5 @@ +require File.join(File.dirname(__FILE__), 'core') + module Fog module Linode diff --git a/lib/fog/local.rb b/lib/fog/local.rb index ffe4eb74e..f85105a75 100644 --- a/lib/fog/local.rb +++ b/lib/fog/local.rb @@ -1,3 +1,5 @@ +require File.join(File.dirname(__FILE__), 'core') + module Fog module Local diff --git a/lib/fog/new_servers.rb b/lib/fog/new_servers.rb index 96feb966c..925861d30 100644 --- a/lib/fog/new_servers.rb +++ b/lib/fog/new_servers.rb @@ -1,4 +1,4 @@ -require 'nokogiri' +require File.join(File.dirname(__FILE__), 'core') require 'fog/core/parser' module Fog diff --git a/lib/fog/rackspace.rb b/lib/fog/rackspace.rb index 691595b20..e19285af3 100644 --- a/lib/fog/rackspace.rb +++ b/lib/fog/rackspace.rb @@ -1,3 +1,5 @@ +require File.join(File.dirname(__FILE__), 'core') + module Fog module Rackspace diff --git a/lib/fog/slicehost.rb b/lib/fog/slicehost.rb index 12451fd3f..22ff0b81d 100644 --- a/lib/fog/slicehost.rb +++ b/lib/fog/slicehost.rb @@ -1,4 +1,4 @@ -require 'nokogiri' +require File.join(File.dirname(__FILE__), 'core') require 'fog/core/parser' module Fog diff --git a/lib/fog/terremark.rb b/lib/fog/terremark.rb index 000e74c6f..379d9328f 100644 --- a/lib/fog/terremark.rb +++ b/lib/fog/terremark.rb @@ -1,4 +1,4 @@ -require 'nokogiri' +require File.join(File.dirname(__FILE__), 'core') require 'fog/core/parser' require 'fog/terremark/shared' diff --git a/lib/fog/vcloud.rb b/lib/fog/vcloud.rb index 6f6617a36..4cf36a95a 100644 --- a/lib/fog/vcloud.rb +++ b/lib/fog/vcloud.rb @@ -1,4 +1,4 @@ -require 'nokogiri' +require File.join(File.dirname(__FILE__), 'core') require 'fog/core/parser' require 'builder' diff --git a/lib/fog/zerigo.rb b/lib/fog/zerigo.rb index 9c87942fd..ec0f0b3b4 100644 --- a/lib/fog/zerigo.rb +++ b/lib/fog/zerigo.rb @@ -1,4 +1,4 @@ -require 'nokogiri' +require File.join(File.dirname(__FILE__), 'core') require 'fog/core/parser' module Fog