fog-core 1.24.0 → 1.25.0

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 (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"