fog-core 1.24.0 → 1.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +5 -13
  2. data/.rubocop.yml +20 -0
  3. data/changelog.md +17 -0
  4. data/fog-core.gemspec +2 -1
  5. data/lib/fog/account.rb +3 -5
  6. data/lib/fog/billing.rb +3 -4
  7. data/lib/fog/cdn.rb +3 -5
  8. data/lib/fog/compute.rb +17 -20
  9. data/lib/fog/compute/models/server.rb +21 -26
  10. data/lib/fog/core.rb +61 -60
  11. data/lib/fog/core/association.rb +15 -0
  12. data/lib/fog/core/associations/default.rb +21 -3
  13. data/lib/fog/core/associations/many_identities.rb +8 -2
  14. data/lib/fog/core/associations/many_models.rb +7 -2
  15. data/lib/fog/core/associations/one_identity.rb +6 -1
  16. data/lib/fog/core/associations/one_model.rb +5 -1
  17. data/lib/fog/core/attributes.rb +41 -44
  18. data/lib/fog/core/attributes/array.rb +5 -1
  19. data/lib/fog/core/attributes/boolean.rb +5 -1
  20. data/lib/fog/core/attributes/default.rb +12 -2
  21. data/lib/fog/core/attributes/float.rb +5 -1
  22. data/lib/fog/core/attributes/integer.rb +5 -1
  23. data/lib/fog/core/attributes/string.rb +5 -1
  24. data/lib/fog/core/attributes/time.rb +5 -1
  25. data/lib/fog/core/attributes/timestamp.rb +5 -1
  26. data/lib/fog/core/collection.rb +22 -27
  27. data/lib/fog/core/connection.rb +5 -6
  28. data/lib/fog/core/credentials.rb +7 -7
  29. data/lib/fog/core/current_machine.rb +10 -8
  30. data/lib/fog/core/deprecated_connection_accessors.rb +0 -1
  31. data/lib/fog/core/deprecation.rb +0 -2
  32. data/lib/fog/core/errors.rb +3 -5
  33. data/lib/fog/core/hmac.rb +4 -6
  34. data/lib/fog/core/logger.rb +10 -11
  35. data/lib/fog/core/mock.rb +19 -25
  36. data/lib/fog/core/model.rb +9 -20
  37. data/lib/fog/core/provider.rb +6 -9
  38. data/lib/fog/core/scp.rb +14 -24
  39. data/lib/fog/core/service.rb +28 -31
  40. data/lib/fog/core/ssh.rb +16 -24
  41. data/lib/fog/core/stringify_keys.rb +7 -9
  42. data/lib/fog/core/time.rb +5 -7
  43. data/lib/fog/core/utils.rb +24 -20
  44. data/lib/fog/core/uuid.rb +2 -3
  45. data/lib/fog/core/version.rb +3 -1
  46. data/lib/fog/core/wait_for.rb +2 -2
  47. data/lib/fog/core/wait_for_defaults.rb +13 -10
  48. data/lib/fog/core/whitelist_keys.rb +1 -1
  49. data/lib/fog/dns.rb +6 -8
  50. data/lib/fog/identity.rb +5 -6
  51. data/lib/fog/image.rb +3 -5
  52. data/lib/fog/metering.rb +3 -6
  53. data/lib/fog/monitoring.rb +3 -5
  54. data/lib/fog/network.rb +4 -6
  55. data/lib/fog/orchestration.rb +3 -5
  56. data/lib/fog/schema/data_validator.rb +17 -22
  57. data/lib/fog/storage.rb +22 -16
  58. data/lib/fog/support.rb +3 -6
  59. data/lib/fog/test_helpers.rb +10 -10
  60. data/lib/fog/test_helpers/collection_helper.rb +23 -43
  61. data/lib/fog/test_helpers/compute/flavors_helper.rb +4 -10
  62. data/lib/fog/test_helpers/compute/server_helper.rb +3 -9
  63. data/lib/fog/test_helpers/compute/servers_helper.rb +0 -4
  64. data/lib/fog/test_helpers/formats_helper.rb +13 -14
  65. data/lib/fog/test_helpers/helper.rb +9 -4
  66. data/lib/fog/test_helpers/mock_helper.rb +92 -94
  67. data/lib/fog/test_helpers/model_helper.rb +7 -15
  68. data/lib/fog/test_helpers/responds_to_helper.rb +1 -3
  69. data/lib/fog/test_helpers/succeeds_helper.rb +1 -3
  70. data/lib/fog/volume.rb +3 -6
  71. data/lib/fog/vpn.rb +3 -5
  72. data/lib/tasks/test_task.rb +2 -6
  73. data/spec/compute_spec.rb +11 -13
  74. data/spec/connection_spec.rb +24 -14
  75. data/spec/credentials_spec.rb +23 -23
  76. data/spec/current_machine_spec.rb +6 -6
  77. data/spec/fake_app/fake_service.rb +18 -0
  78. data/spec/fake_app/models/collection.rb +5 -0
  79. data/spec/fake_app/models/model.rb +2 -0
  80. data/spec/fake_app/requests/request.rb +11 -0
  81. data/spec/fog_attribute_spec.rb +178 -136
  82. data/spec/identity_spec.rb +11 -13
  83. data/spec/mocking_spec.rb +7 -8
  84. data/spec/service_spec.rb +21 -7
  85. data/spec/spec_helper.rb +14 -8
  86. data/spec/storage_spec.rb +25 -13
  87. data/spec/test_helpers/formats_helper_spec.rb +52 -52
  88. data/spec/test_helpers/schema_validator_spec.rb +45 -45
  89. data/spec/timeout_spec.rb +1 -2
  90. data/spec/utils_spec.rb +2 -2
  91. data/spec/uuid_spec.rb +1 -1
  92. data/spec/wait_for_spec.rb +7 -4
  93. metadata +57 -33
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MjU4ODI0MTQ2ZDlkOWNmMGI4ZDliZjY3ZDdmOGY1Yjc0MzYyMjVlOQ==
5
- data.tar.gz: !binary |-
6
- MmZiYWEzZTU5YTdiYzc4YzkyNWEyMzFkMzMzNDQ3NWQzNGM5MWRmNg==
2
+ SHA1:
3
+ metadata.gz: def08d856fbf1d998e280ccc63e9ccc45fb6bb2b
4
+ data.tar.gz: 490a97b82c3fe8378ee7b7496eaacc81945e3a1d
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YzAzM2Q4MDM0ODg3MjQ1MmEzYzJlMDQ0Yjc1YmMxNjU1ZGJjNTQ5NzNhMWQ4
10
- ZWY4OTYzZDZmZDc2NGY1OGMyYmRjOWYwOTk0ZDJjZTE2NjFiYjUwZmQ3OGNm
11
- NjNjNWNiZmIwNjQwMmY2OThkOWQ0Y2YyZDQyOTAzNTU5YTA2M2Y=
12
- data.tar.gz: !binary |-
13
- Mjc1YTY5MDQyODM5MDQwODkyOWE4ZTkyNzNjZmZiNDc4OWFkMDcyZmUyZmEy
14
- NWMxZmMwYWMyNGYxMmMyN2M5MWEwMGYwNjA5ZjdmODA2MjBkNWZlZjczZTJl
15
- OGMwN2M2MjAwOTgwNjZkMjczMGFjYjJkM2JkZTUzMTJiYjg2YzE=
6
+ metadata.gz: b8828bb2e949755b5a65205f91564adda96289b94c308fcfb90db64d2343d1d7b81afd54753eacdcbf50cb9ea6a5745c8b34bc95360d81090205866d71f0ecbc
7
+ data.tar.gz: 3c3664af4f43a084cbe344b57693161ffc9bd4da493743d055313637f562ee60bd0bb63037861da9773cfdfcce62c6e38bf48a53f86bfb176dd980e9f272a441
@@ -0,0 +1,20 @@
1
+ Metrics/LineLength:
2
+ Enabled: false
3
+
4
+ Style/EachWithObject:
5
+ Enabled: false
6
+
7
+ Style/Encoding:
8
+ EnforcedStyle: when_needed
9
+
10
+ Style/FormatString:
11
+ Enabled: false
12
+
13
+ Style/HashSyntax:
14
+ EnforcedStyle: hash_rockets
15
+
16
+ Style/SignalException:
17
+ EnforcedStyle: only_raise
18
+
19
+ Style/StringLiterals:
20
+ EnforcedStyle: double_quotes
@@ -1,3 +1,20 @@
1
+ 1.25.0 11/18/2014
2
+ ==========================================================
3
+
4
+ add alias options for associations
5
+ improve spec message
6
+ add feature to overwrite keys on hash of attributes generation
7
+ remove method_missing from model
8
+ add rubocop
9
+ fix rubocop warnings
10
+ return collections on association getters
11
+ fix require bug in service
12
+ put fog and fog-core versions in user agent
13
+ don't mutate/destroy encoding in get_body_size
14
+ fix error output in from const_get usage
15
+ separate to have distinct version from fog
16
+
17
+
1
18
  1.24.0 08/26/2014
2
19
  ==========================================================
3
20
 
@@ -5,7 +5,7 @@ require 'fog/core/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "fog-core"
8
- spec.version = Fog::VERSION
8
+ spec.version = Fog::Core::VERSION
9
9
  spec.authors = ["Evan Light", "Wesley Beary"]
10
10
  spec.email = ["evan@tripledogdare.net", "geemus@gmail.com"]
11
11
  spec.summary = %q{Shared classes and tests for fog providers and services.}
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency('minitest-stub-const')
33
33
  spec.add_development_dependency('pry')
34
34
  spec.add_development_dependency('coveralls')
35
+ spec.add_development_dependency('rubocop') if RUBY_VERSION.to_s >= '1.9.3'
35
36
  end
@@ -1,8 +1,7 @@
1
1
  module Fog
2
2
  module Account
3
-
4
3
  def self.[](provider)
5
- self.new(:provider => provider)
4
+ new(:provider => provider)
6
5
  end
7
6
 
8
7
  def self.new(attributes)
@@ -10,16 +9,15 @@ module Fog
10
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
11
10
 
12
11
  if provider == :stormondemand
13
- require 'fog/storm_on_demand/account'
12
+ require "fog/storm_on_demand/account"
14
13
  Fog::Account::StormOnDemand.new(attributes)
15
14
  else
16
- raise ArgumentError.new("#{provider} has no account service")
15
+ raise ArgumentError, "#{provider} has no account service"
17
16
  end
18
17
  end
19
18
 
20
19
  def self.providers
21
20
  Fog.services[:account]
22
21
  end
23
-
24
22
  end
25
23
  end
@@ -1,18 +1,17 @@
1
1
  module Fog
2
2
  module Billing
3
-
4
3
  def self.[](provider)
5
- self.new(:provider => provider)
4
+ new(:provider => provider)
6
5
  end
7
6
 
8
7
  def self.new(attributes)
9
8
  attributes = attributes.dup
10
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
11
10
  if provider == :stormondemand
12
- require 'fog/storm_on_demand/billing'
11
+ require "fog/storm_on_demand/billing"
13
12
  Fog::Billing::StormOnDemand.new(attributes)
14
13
  else
15
- raise ArgumentError.new("#{provider} has no billing service")
14
+ raise ArgumentError, "#{provider} has no billing service"
16
15
  end
17
16
  end
18
17
 
@@ -1,23 +1,21 @@
1
1
  module Fog
2
2
  module CDN
3
-
4
3
  def self.[](provider)
5
- self.new(:provider => provider)
4
+ new(:provider => provider)
6
5
  end
7
6
 
8
7
  def self.new(attributes)
9
8
  attributes = attributes.dup # prevent delete from having side effects
10
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
11
- if self.providers.include?(provider)
10
+ if providers.include?(provider)
12
11
  require "fog/#{provider}/cdn"
13
12
  return Fog::CDN.const_get(Fog.providers[provider]).new(attributes)
14
13
  end
15
- raise ArgumentError.new("#{provider} is not a recognized cdn provider")
14
+ raise ArgumentError, "#{provider} is not a recognized cdn provider"
16
15
  end
17
16
 
18
17
  def self.providers
19
18
  Fog.services[:cdn]
20
19
  end
21
-
22
20
  end
23
21
  end
@@ -1,67 +1,65 @@
1
1
  module Fog
2
2
  module Compute
3
-
4
3
  def self.[](provider)
5
- self.new(:provider => provider)
4
+ new(:provider => provider)
6
5
  end
7
6
 
8
7
  def self.new(attributes)
9
8
  attributes = attributes.dup # prevent delete from having side effects
10
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
11
10
 
12
-
13
11
  case provider
14
12
  when :gogrid
15
- require 'fog/go_grid/compute'
13
+ require "fog/go_grid/compute"
16
14
  Fog::Compute::GoGrid.new(attributes)
17
15
  when :hp
18
16
  version = attributes.delete(:version)
19
17
  version = version.to_s.downcase.to_sym unless version.nil?
20
18
  if version == :v2
21
- require 'fog/hp/compute_v2'
22
- Fog::Compute::HPV2.new(attributes)
19
+ require "fog/hp/compute_v2"
20
+ Fog::Compute::HPV2.new(attributes)
23
21
  else
24
22
  Fog::Logger.deprecation "HP Cloud Compute V1 service will be soon deprecated. Please use `:version => v2` attribute to use HP Cloud Compute V2 service."
25
- require 'fog/hp/compute'
23
+ require "fog/hp/compute"
26
24
  Fog::Compute::HP.new(attributes)
27
25
  end
28
26
  when :new_servers
29
- require 'fog/bare_metal_cloud/compute'
27
+ require "fog/bare_metal_cloud/compute"
30
28
  Fog::Logger.deprecation "`new_servers` is deprecated. Please use `bare_metal_cloud` instead."
31
29
  Fog::Compute::BareMetalCloud.new(attributes)
32
30
  when :baremetalcloud
33
- require 'fog/bare_metal_cloud/compute'
31
+ require "fog/bare_metal_cloud/compute"
34
32
  Fog::Compute::BareMetalCloud.new(attributes)
35
33
  when :rackspace
36
- version = attributes.delete(:version)
34
+ version = attributes.delete(:version)
37
35
  version = version.to_s.downcase.to_sym unless version.nil?
38
36
  if version == :v1
39
37
  Fog::Logger.deprecation "First Gen Cloud Servers are deprecated. Please use `:version => :v2` attribute to use Next Gen Cloud Servers."
40
- require 'fog/rackspace/compute'
38
+ require "fog/rackspace/compute"
41
39
  Fog::Compute::Rackspace.new(attributes)
42
40
  else
43
- require 'fog/rackspace/compute_v2'
41
+ require "fog/rackspace/compute_v2"
44
42
  Fog::Compute::RackspaceV2.new(attributes)
45
43
  end
46
44
  when :stormondemand
47
- require 'fog/storm_on_demand/compute'
45
+ require "fog/storm_on_demand/compute"
48
46
  Fog::Compute::StormOnDemand.new(attributes)
49
47
  when :vcloud
50
- require 'fog/vcloud/compute'
48
+ require "fog/vcloud/compute"
51
49
  Fog::Vcloud::Compute.new(attributes)
52
50
  when :vclouddirector
53
- require 'fog/vcloud_director/compute'
51
+ require "fog/vcloud_director/compute"
54
52
  Fog::Compute::VcloudDirector.new(attributes)
55
53
  else
56
- if self.providers.include?(provider)
54
+ if providers.include?(provider)
57
55
  require "fog/#{provider}/compute"
58
56
  begin
59
57
  Fog::Compute.const_get(Fog.providers[provider])
60
58
  rescue
61
- Fog::const_get(Fog.providers[provider])::Compute
59
+ Fog.const_get(Fog.providers[provider])::Compute
62
60
  end.new(attributes)
63
61
  else
64
- raise ArgumentError.new("#{provider} is not a recognized compute provider")
62
+ raise ArgumentError, "#{provider} is not a recognized compute provider"
65
63
  end
66
64
  end
67
65
  end
@@ -72,7 +70,7 @@ module Fog
72
70
 
73
71
  def self.servers
74
72
  servers = []
75
- for provider in self.providers
73
+ providers.each do |provider|
76
74
  begin
77
75
  servers.concat(self[provider].servers)
78
76
  rescue # ignore any missing credentials/etc
@@ -80,6 +78,5 @@ module Fog
80
78
  end
81
79
  servers
82
80
  end
83
-
84
81
  end
85
82
  end
@@ -1,13 +1,23 @@
1
- require 'fog/core/model'
1
+ require "fog/core/model"
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class Server < Fog::Model
6
-
7
6
  attr_writer :username, :private_key, :private_key_path, :public_key, :public_key_path, :ssh_port, :ssh_options
7
+ # Sets the proc used to determine the IP Address used for ssh/scp interactions.
8
+ # @example
9
+ # service.servers.bootstrap :name => "bootstrap-server",
10
+ # :flavor_id => service.flavors.first.id,
11
+ # :image_id => service.images.find {|img| img.name =~ /Ubuntu/}.id,
12
+ # :public_key_path => "~/.ssh/fog_rsa.pub",
13
+ # :private_key_path => "~/.ssh/fog_rsa",
14
+ # :ssh_ip_address => Proc.new {|server| server.private_ip_address }
15
+ #
16
+ # @note By default scp/ssh will use the public_ip_address if this proc is not set.
17
+ attr_writer :ssh_ip_address
8
18
 
9
19
  def username
10
- @username ||= 'root'
20
+ @username ||= "root"
11
21
  end
12
22
 
13
23
  def private_key_path
@@ -35,20 +45,6 @@ module Fog
35
45
  @ssh_port ||= 22
36
46
  end
37
47
 
38
- # Sets the proc used to determine the IP Address used for ssh/scp interactions.
39
- # @example
40
- # service.servers.bootstrap :name => 'bootstrap-server',
41
- # :flavor_id => service.flavors.first.id,
42
- # :image_id => service.images.find {|img| img.name =~ /Ubuntu/}.id,
43
- # :public_key_path => '~/.ssh/fog_rsa.pub',
44
- # :private_key_path => '~/.ssh/fog_rsa',
45
- # :ssh_ip_address => Proc.new {|server| server.private_ip_address }
46
- #
47
- # @note By default scp/ssh will use the public_ip_address if this proc is not set.
48
- def ssh_ip_address=(proc)
49
- @ssh_ip_address = proc
50
- end
51
-
52
48
  # IP Address used for ssh/scp interactions with server.
53
49
  # @return [String] IP Address
54
50
  # @note By default this returns the public_ip_address
@@ -60,16 +56,16 @@ module Fog
60
56
 
61
57
  def ssh_options
62
58
  @ssh_options ||= {}
63
- ssh_options = @ssh_options.merge({:port => ssh_port})
59
+ ssh_options = @ssh_options.merge(:port => ssh_port)
64
60
  if private_key
65
61
  ssh_options[:key_data] = [private_key]
66
- ssh_options[:auth_methods] = ["publickey"]
62
+ ssh_options[:auth_methods] = %w(publickey)
67
63
  end
68
64
  ssh_options
69
65
  end
70
66
 
71
67
  def scp(local_path, remote_path, upload_options = {})
72
- require 'net/scp'
68
+ require "net/scp"
73
69
  requires :ssh_ip_address, :username
74
70
 
75
71
  Fog::SCP.new(ssh_ip_address, username, ssh_options).upload(local_path, remote_path, upload_options)
@@ -78,14 +74,14 @@ module Fog
78
74
  alias_method :scp_upload, :scp
79
75
 
80
76
  def scp_download(remote_path, local_path, download_options = {})
81
- require 'net/scp'
77
+ require "net/scp"
82
78
  requires :ssh_ip_address, :username
83
79
 
84
80
  Fog::SCP.new(ssh_ip_address, username, ssh_options).download(remote_path, local_path, download_options)
85
81
  end
86
82
 
87
- def ssh(commands, options={}, &blk)
88
- require 'net/ssh'
83
+ def ssh(commands, options = {}, &blk)
84
+ require "net/ssh"
89
85
  requires :ssh_ip_address, :username
90
86
 
91
87
  options = ssh_options.merge(options)
@@ -93,12 +89,11 @@ module Fog
93
89
  Fog::SSH.new(ssh_ip_address, username, options).run(commands, &blk)
94
90
  end
95
91
 
96
- def sshable?(options={})
97
- ready? && !ssh_ip_address.nil? && !!Timeout::timeout(8) { ssh('pwd', options) }
92
+ def sshable?(options = {})
93
+ ready? && !ssh_ip_address.nil? && !!Timeout.timeout(8) { ssh("pwd", options) }
98
94
  rescue SystemCallError, Net::SSH::AuthenticationFailed, Net::SSH::Disconnect, Timeout::Error
99
95
  false
100
96
  end
101
-
102
97
  end
103
98
  end
104
99
  end
@@ -1,67 +1,68 @@
1
1
  # external core dependencies
2
- require 'base64'
3
- require 'cgi'
4
- require 'uri'
5
- require 'excon'
6
- require 'fileutils'
7
- require 'formatador'
8
- require 'openssl'
9
- require 'time'
10
- require 'timeout'
11
- require 'ipaddr'
2
+ require "base64"
3
+ require "cgi"
4
+ require "uri"
5
+ require "excon"
6
+ require "fileutils"
7
+ require "formatador"
8
+ require "openssl"
9
+ require "time"
10
+ require "timeout"
11
+ require "ipaddr"
12
12
 
13
13
  # internal core dependencies
14
14
  require "fog/core/version"
15
15
 
16
- require 'fog/core/attributes'
17
- require 'fog/core/attributes/default'
18
- require 'fog/core/attributes/array'
19
- require 'fog/core/attributes/boolean'
20
- require 'fog/core/attributes/float'
21
- require 'fog/core/attributes/integer'
22
- require 'fog/core/attributes/string'
23
- require 'fog/core/attributes/time'
24
- require 'fog/core/attributes/timestamp'
25
- require 'fog/core/associations/default'
26
- require 'fog/core/associations/many_identities'
27
- require 'fog/core/associations/many_models'
28
- require 'fog/core/associations/one_model'
29
- require 'fog/core/associations/one_identity'
30
- require 'fog/core/collection'
31
- require 'fog/core/connection'
32
- require 'fog/core/credentials'
33
- require 'fog/core/current_machine'
34
- require 'fog/core/deprecation'
35
- require 'fog/core/errors'
36
- require 'fog/core/hmac'
37
- require 'fog/core/logger'
38
- require 'fog/core/model'
39
- require 'fog/core/mock'
40
- require 'fog/core/provider'
41
- require 'fog/core/service'
42
- require 'fog/core/ssh'
43
- require 'fog/core/scp'
44
- require 'fog/core/time'
45
- require 'fog/core/utils'
46
- require 'fog/core/wait_for'
47
- require 'fog/core/wait_for_defaults'
48
- require 'fog/core/uuid'
49
- require 'fog/core/stringify_keys'
50
- require 'fog/core/whitelist_keys'
16
+ require "fog/core/attributes"
17
+ require "fog/core/attributes/default"
18
+ require "fog/core/attributes/array"
19
+ require "fog/core/attributes/boolean"
20
+ require "fog/core/attributes/float"
21
+ require "fog/core/attributes/integer"
22
+ require "fog/core/attributes/string"
23
+ require "fog/core/attributes/time"
24
+ require "fog/core/attributes/timestamp"
25
+ require "fog/core/associations/default"
26
+ require "fog/core/associations/many_identities"
27
+ require "fog/core/associations/many_models"
28
+ require "fog/core/associations/one_model"
29
+ require "fog/core/associations/one_identity"
30
+ require "fog/core/collection"
31
+ require "fog/core/association"
32
+ require "fog/core/connection"
33
+ require "fog/core/credentials"
34
+ require "fog/core/current_machine"
35
+ require "fog/core/deprecation"
36
+ require "fog/core/errors"
37
+ require "fog/core/hmac"
38
+ require "fog/core/logger"
39
+ require "fog/core/model"
40
+ require "fog/core/mock"
41
+ require "fog/core/provider"
42
+ require "fog/core/service"
43
+ require "fog/core/ssh"
44
+ require "fog/core/scp"
45
+ require "fog/core/time"
46
+ require "fog/core/utils"
47
+ require "fog/core/wait_for"
48
+ require "fog/core/wait_for_defaults"
49
+ require "fog/core/uuid"
50
+ require "fog/core/stringify_keys"
51
+ require "fog/core/whitelist_keys"
51
52
 
52
53
  # service wrappers
53
- require 'fog/account'
54
- require 'fog/billing'
55
- require 'fog/cdn'
56
- require 'fog/compute'
57
- require 'fog/dns'
58
- require 'fog/identity'
59
- require 'fog/image'
60
- require 'fog/metering'
61
- require 'fog/monitoring'
62
- require 'fog/network'
63
- require 'fog/orchestration'
64
- require 'fog/storage'
65
- require 'fog/support'
66
- require 'fog/volume'
67
- require 'fog/vpn'
54
+ require "fog/account"
55
+ require "fog/billing"
56
+ require "fog/cdn"
57
+ require "fog/compute"
58
+ require "fog/dns"
59
+ require "fog/identity"
60
+ require "fog/image"
61
+ require "fog/metering"
62
+ require "fog/monitoring"
63
+ require "fog/network"
64
+ require "fog/orchestration"
65
+ require "fog/storage"
66
+ require "fog/support"
67
+ require "fog/volume"
68
+ require "fog/vpn"