fog-core 1.30.0 → 1.31.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb77e8ccc89ecb7205337d9c92666d4f8bc6d178
4
- data.tar.gz: d4f44471fbd8b9cd657434892d7eed7ddec97ac7
3
+ metadata.gz: b3eb8ac3e692bc65def64e107150dfe6c28ab7ac
4
+ data.tar.gz: 7c1ea69cfa269891d17cdb35a477ea9d89e695c0
5
5
  SHA512:
6
- metadata.gz: 63da74409e5d99166cf7faeb919666e6431ee684df5b847a0a98ab1334cb90d96be532efaf202409415cddfcad83c0d580b74a8bc0a21b8a448003086a89aae4
7
- data.tar.gz: 0ba76e5d693e6386f4fca2e259730553b97dafbff420102d1b0bd50d0c5b4332b0aacbe11022339c6493931937f3f0fc8f1398eb79efdb059102bb492016e79c
6
+ metadata.gz: 9bc9c9b3dd033caa97876a983e0071a7367f310109e5bbadd024d9a59fd6d5422f408203a2dc4d80a0974e1e1b2cb4cc5db7e7ec7e5491d15f3d163588a0ba44
7
+ data.tar.gz: 6807600030a3dfa1cd4324d3307237f1ce7867acc982af713d19fc4d1900307d1cfc221186e5a97dd2d14a420bb55d576baa0e69edc3c6ad5fe942c630a49efe
data/changelog.md CHANGED
@@ -1,3 +1,16 @@
1
+ 1.31.0 06/17/2015
2
+ ==========================================================
3
+
4
+ use relative paths
5
+ add digital ocean examples
6
+ reinstate baremetal
7
+ add softlayer examples
8
+ add digital ocean v2 support
9
+ setup fog model equality to check identities (if available)
10
+ use Fog.interval in wait_for
11
+ reduce memory footprint
12
+ fix account handling
13
+
1
14
  1.30.0 04/02/2015
2
15
  ==========================================================
3
16
 
data/lib/fog/account.rb CHANGED
@@ -11,6 +11,13 @@ module Fog
11
11
  if provider == :stormondemand
12
12
  require "fog/account/storm_on_demand"
13
13
  Fog::Account::StormOnDemand.new(attributes)
14
+ elsif providers.include?(provider)
15
+ require "fog/#{provider}/account"
16
+ begin
17
+ Fog::Account.const_get(Fog.providers[provider])
18
+ rescue
19
+ Fog.const_get(Fog.providers[provider])::Account
20
+ end.new(attributes)
14
21
  else
15
22
  raise ArgumentError, "#{provider} has no account service"
16
23
  end
data/lib/fog/baremetal.rb CHANGED
@@ -7,13 +7,16 @@ module Fog
7
7
  def self.new(attributes)
8
8
  attributes = attributes.dup # Prevent delete from having side effects
9
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
10
-
11
10
  if providers.include?(provider)
12
11
  require "fog/#{provider}/baremetal"
13
- return Fog::Baremetal.const_get(Fog.providers[provider]).new(attributes)
12
+ begin
13
+ Fog::Baremetal.const_get(Fog.providers[provider])
14
+ rescue
15
+ Fog.const_get(Fog.providers[provider])::Baremetal
16
+ end.new(attributes)
17
+ else
18
+ raise ArgumentError, "#{provider} has no baremetal service"
14
19
  end
15
-
16
- raise ArgumentError, "#{provider} has no baremetal service"
17
20
  end
18
21
 
19
22
  def self.providers
data/lib/fog/billing.rb CHANGED
@@ -10,6 +10,13 @@ module Fog
10
10
  if provider == :stormondemand
11
11
  require "fog/billing/storm_on_demand"
12
12
  Fog::Billing::StormOnDemand.new(attributes)
13
+ elsif providers.include?(provider)
14
+ require "fog/#{provider}/billing"
15
+ begin
16
+ Fog::Account.const_get(Fog.providers[provider])
17
+ rescue
18
+ Fog.const_get(Fog.providers[provider])::Account
19
+ end.new(attributes)
13
20
  else
14
21
  raise ArgumentError, "#{provider} has no billing service"
15
22
  end
data/lib/fog/cdn.rb CHANGED
@@ -9,9 +9,14 @@ module Fog
9
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
10
10
  if providers.include?(provider)
11
11
  require "fog/#{provider}/cdn"
12
- return Fog::CDN.const_get(Fog.providers[provider]).new(attributes)
12
+ begin
13
+ Fog::CDN.const_get(Fog.providers[provider])
14
+ rescue
15
+ Fog.const_get(Fog.providers[provider])::CDN
16
+ end.new(attributes)
17
+ else
18
+ raise ArgumentError, "#{provider} has no cdn service"
13
19
  end
14
- raise ArgumentError, "#{provider} is not a recognized cdn provider"
15
20
  end
16
21
 
17
22
  def self.providers
data/lib/fog/compute.rb CHANGED
@@ -41,6 +41,16 @@ module Fog
41
41
  require "fog/rackspace/compute_v2"
42
42
  Fog::Compute::RackspaceV2.new(attributes)
43
43
  end
44
+ when :digitalocean
45
+ version = attributes.delete(:version)
46
+ version = version.to_s.downcase.to_sym unless version.nil?
47
+ if version == :v2
48
+ require "fog/digitalocean/compute_v2"
49
+ Fog::Compute::DigitalOceanV2.new(attributes)
50
+ else
51
+ require "fog/digitalocean/compute"
52
+ Fog::Compute::DigitalOcean.new(attributes)
53
+ end
44
54
  when :stormondemand
45
55
  require "fog/compute/storm_on_demand"
46
56
  Fog::Compute::StormOnDemand.new(attributes)
@@ -43,6 +43,8 @@ An alternate file may be used by placing its path in the FOG_RC environment vari
43
43
  :brightbox_secret:
44
44
  :clodo_api_key:
45
45
  :clodo_username:
46
+ :digitalocean_api_key:
47
+ :digitalocean_client_id:
46
48
  :go_grid_api_key:
47
49
  :go_grid_shared_secret:
48
50
  :google_client_email:
@@ -77,6 +79,11 @@ An alternate file may be used by placing its path in the FOG_RC environment vari
77
79
  :rage4_password:
78
80
  :riakcs_access_key_id:
79
81
  :riakcs_secret_access_key:
82
+ :softlayer_username:
83
+ :softlayer_api_key:
84
+ :softlayer_default_datacenter:
85
+ :softlayer_cluster:
86
+ :softlayer_default_domain:
80
87
  :stormondemand_username:
81
88
  :stormondemand_password:
82
89
  :terremark_username:
@@ -24,6 +24,18 @@ module Fog
24
24
  Fog::Formatador.format(self)
25
25
  end
26
26
 
27
+ def ==(o)
28
+ unless o.is_a?(Fog::Model)
29
+ super
30
+ else
31
+ if (o.identity.nil? and self.identity.nil?)
32
+ o.object_id == self.object_id
33
+ else
34
+ o.class == self.class and o.identity == self.identity
35
+ end
36
+ end
37
+ end
38
+
27
39
  def reload
28
40
  requires :identity
29
41
 
@@ -52,7 +64,7 @@ module Fog
52
64
  end
53
65
  end
54
66
 
55
- def wait_for(timeout = Fog.timeout, interval = 1, &block)
67
+ def wait_for(timeout = Fog.timeout, interval = Fog.interval, &block)
56
68
  reload_has_succeeded = false
57
69
  duration = Fog.wait_for(timeout, interval) do # Note that duration = false if it times out
58
70
  if reload
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Core
3
- VERSION = "1.30.0"
3
+ VERSION = "1.31.0"
4
4
  end
5
5
  end
data/lib/fog/core.rb CHANGED
@@ -11,62 +11,62 @@ require "timeout"
11
11
  require "ipaddr"
12
12
 
13
13
  # internal core dependencies
14
- require "fog/core/version"
14
+ require File.expand_path('../core/version', __FILE__)
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/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"
16
+ require File.expand_path('../core/attributes', __FILE__)
17
+ require File.expand_path('../core/attributes/default', __FILE__)
18
+ require File.expand_path('../core/attributes/array', __FILE__)
19
+ require File.expand_path('../core/attributes/boolean', __FILE__)
20
+ require File.expand_path('../core/attributes/float', __FILE__)
21
+ require File.expand_path('../core/attributes/integer', __FILE__)
22
+ require File.expand_path('../core/attributes/string', __FILE__)
23
+ require File.expand_path('../core/attributes/time', __FILE__)
24
+ require File.expand_path('../core/attributes/timestamp', __FILE__)
25
+ require File.expand_path('../core/associations/default', __FILE__)
26
+ require File.expand_path('../core/associations/many_identities', __FILE__)
27
+ require File.expand_path('../core/associations/many_models', __FILE__)
28
+ require File.expand_path('../core/associations/one_model', __FILE__)
29
+ require File.expand_path('../core/associations/one_identity', __FILE__)
30
+ require File.expand_path('../core/collection', __FILE__)
31
+ require File.expand_path('../core/association', __FILE__)
32
+ require File.expand_path('../core/connection', __FILE__)
33
+ require File.expand_path('../core/credentials', __FILE__)
34
+ require File.expand_path('../core/current_machine', __FILE__)
35
+ require File.expand_path('../core/deprecation', __FILE__)
36
+ require File.expand_path('../core/errors', __FILE__)
37
+ require File.expand_path('../core/hmac', __FILE__)
38
+ require File.expand_path('../core/logger', __FILE__)
39
+ require File.expand_path('../core/model', __FILE__)
40
+ require File.expand_path('../core/mock', __FILE__)
41
+ require File.expand_path('../core/provider', __FILE__)
42
+ require File.expand_path('../core/service', __FILE__)
43
+ require File.expand_path('../core/ssh', __FILE__)
44
+ require File.expand_path('../core/scp', __FILE__)
45
+ require File.expand_path('../core/time', __FILE__)
46
+ require File.expand_path('../core/utils', __FILE__)
47
+ require File.expand_path('../core/wait_for', __FILE__)
48
+ require File.expand_path('../core/wait_for_defaults', __FILE__)
49
+ require File.expand_path('../core/uuid', __FILE__)
50
+ require File.expand_path('../core/stringify_keys', __FILE__)
51
+ require File.expand_path('../core/whitelist_keys', __FILE__)
52
+
53
+ require File.expand_path('../account', __FILE__)
54
+ require File.expand_path('../baremetal', __FILE__)
55
+ require File.expand_path('../billing', __FILE__)
56
+ require File.expand_path('../cdn', __FILE__)
57
+ require File.expand_path('../compute', __FILE__)
58
+ require File.expand_path('../dns', __FILE__)
59
+ require File.expand_path('../identity', __FILE__)
60
+ require File.expand_path('../image', __FILE__)
61
+ require File.expand_path('../metering', __FILE__)
62
+ require File.expand_path('../monitoring', __FILE__)
63
+ require File.expand_path('../network', __FILE__)
64
+ require File.expand_path('../orchestration', __FILE__)
65
+ require File.expand_path('../storage', __FILE__)
66
+ require File.expand_path('../support', __FILE__)
67
+ require File.expand_path('../volume', __FILE__)
68
+ require File.expand_path('../vpn', __FILE__)
52
69
 
53
- # service wrappers
54
- require "fog/account"
55
- require "fog/baremetal"
56
- require "fog/billing"
57
- require "fog/cdn"
58
- require "fog/compute"
59
- require "fog/dns"
60
- require "fog/identity"
61
- require "fog/image"
62
- require "fog/metering"
63
- require "fog/monitoring"
64
- require "fog/network"
65
- require "fog/orchestration"
66
- require "fog/storage"
67
- require "fog/support"
68
- require "fog/volume"
69
- require "fog/vpn"
70
70
 
71
71
  # Utility
72
- require 'fog/formatador'
72
+ require File.expand_path('../formatador', __FILE__)
data/lib/fog/image.rb CHANGED
@@ -9,9 +9,14 @@ module Fog
9
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
10
10
  if providers.include?(provider)
11
11
  require "fog/#{provider}/image"
12
- return Fog::Image.const_get(Fog.providers[provider]).new(attributes)
12
+ begin
13
+ Fog::Image.const_get(Fog.providers[provider])
14
+ rescue
15
+ Fog.const_get(Fog.providers[provider])::Image
16
+ end.new(attributes)
17
+ else
18
+ raise ArgumentError, "#{provider} has no image service"
13
19
  end
14
- raise ArgumentError, "#{provider} has no image service"
15
20
  end
16
21
 
17
22
  def self.providers
data/lib/fog/metering.rb CHANGED
@@ -9,10 +9,14 @@ module Fog
9
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
10
10
  if providers.include?(provider)
11
11
  require "fog/#{provider}/metering"
12
- return Fog::Metering.const_get(Fog.providers[provider]).new(attributes)
12
+ begin
13
+ Fog::Metering.const_get(Fog.providers[provider])
14
+ rescue
15
+ Fog.const_get(Fog.providers[provider])::Metering
16
+ end.new(attributes)
17
+ else
18
+ raise ArgumentError, "#{provider} has no metering service"
13
19
  end
14
-
15
- raise ArgumentError, "#{provider} has no identity service"
16
20
  end
17
21
 
18
22
  def self.providers
@@ -10,6 +10,13 @@ module Fog
10
10
  if provider == :stormondemand
11
11
  require "fog/monitoring/storm_on_demand"
12
12
  Fog::Monitoring::StormOnDemand.new(attributes)
13
+ elsif providers.include?(provider)
14
+ require "fog/#{provider}/monitoring"
15
+ begin
16
+ Fog::Monitoring.const_get(Fog.providers[provider])
17
+ rescue
18
+ Fog.const_get(Fog.providers[provider])::Monitoring
19
+ end.new(attributes)
13
20
  else
14
21
  raise ArgumentError, "#{provider} has no monitoring service"
15
22
  end
data/lib/fog/network.rb CHANGED
@@ -13,10 +13,14 @@ module Fog
13
13
  return Fog::Network::StormOnDemand.new(attributes)
14
14
  elsif providers.include?(provider)
15
15
  require "fog/#{provider}/network"
16
- return Fog::Network.const_get(Fog.providers[provider]).new(attributes)
16
+ begin
17
+ Fog::Network.const_get(Fog.providers[provider])
18
+ rescue
19
+ Fog.const_get(Fog.providers[provider])::Network
20
+ end.new(attributes)
21
+ else
22
+ raise ArgumentError, "#{provider} has no network service"
17
23
  end
18
-
19
- raise ArgumentError, "#{provider} has no network service"
20
24
  end
21
25
 
22
26
  def self.providers
@@ -7,13 +7,16 @@ module Fog
7
7
  def self.new(attributes)
8
8
  attributes = attributes.dup # Prevent delete from having side effects
9
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
10
-
11
10
  if providers.include?(provider)
12
11
  require "fog/#{provider}/orchestration"
13
- return Fog::Orchestration.const_get(Fog.providers[provider]).new(attributes)
12
+ begin
13
+ Fog::Orchestration.const_get(Fog.providers[provider])
14
+ rescue
15
+ Fog.const_get(Fog.providers[provider])::Orchestration
16
+ end.new(attributes)
17
+ else
18
+ raise ArgumentError, "#{provider} has no orchestration service"
14
19
  end
15
-
16
- raise ArgumentError, "#{provider} has no orchestration service"
17
20
  end
18
21
 
19
22
  def self.providers
data/lib/fog/storage.rb CHANGED
@@ -1,4 +1,9 @@
1
- require "mime/types"
1
+ begin
2
+ # Use mime/types/columnar if available, for reduced memory usage
3
+ require 'mime/types/columnar'
4
+ rescue LoadError
5
+ require 'mime/types'
6
+ end
2
7
 
3
8
  module Fog
4
9
  module Storage
data/lib/fog/support.rb CHANGED
@@ -11,6 +11,13 @@ module Fog
11
11
  if provider == :stormondemand
12
12
  require "fog/support/storm_on_demand"
13
13
  Fog::Support::StormOnDemand.new(attributes)
14
+ elsif providers.include?(provider)
15
+ require "fog/#{provider}/support"
16
+ begin
17
+ Fog::Support.const_get(Fog.providers[provider])
18
+ rescue
19
+ Fog.const_get(Fog.providers[provider])::Support
20
+ end.new(attributes)
14
21
  else
15
22
  raise ArgumentError, "#{provider} has no support service"
16
23
  end
data/lib/fog/volume.rb CHANGED
@@ -9,10 +9,14 @@ module Fog
9
9
  provider = attributes.delete(:provider).to_s.downcase.to_sym
10
10
  if providers.include?(provider)
11
11
  require "fog/#{provider}/volume"
12
- return Fog::Volume.const_get(Fog.providers[provider]).new(attributes)
12
+ begin
13
+ Fog::Volume.const_get(Fog.providers[provider])
14
+ rescue
15
+ Fog.const_get(Fog.providers[provider])::Volume
16
+ end.new(attributes)
17
+ else
18
+ raise ArgumentError, "#{provider} has no volume service"
13
19
  end
14
-
15
- raise ArgumentError, "#{provider} has no identity service"
16
20
  end
17
21
 
18
22
  def self.providers
data/lib/fog/vpn.rb CHANGED
@@ -11,6 +11,13 @@ module Fog
11
11
  if provider == :stormondemand
12
12
  require "fog/vpn/storm_on_demand"
13
13
  Fog::VPN::StormOnDemand.new(attributes)
14
+ elsif providers.include?(provider)
15
+ require "fog/#{provider}/vpn"
16
+ begin
17
+ Fog::VPN.const_get(Fog.providers[provider])
18
+ rescue
19
+ Fog.const_get(Fog.providers[provider])::VPN
20
+ end.new(attributes)
14
21
  else
15
22
  raise ArgumentError, "#{provider} has no vpn service"
16
23
  end
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+ require "securerandom"
3
+
4
+ class FogTestModel < Fog::Model
5
+ identity :id
6
+ end
7
+
8
+ describe Fog::Model do
9
+ describe "#==" do
10
+ it "is not equal if one is not a Fog::Model" do
11
+ a = FogTestModel.new
12
+ b = 2
13
+ refute_equal a, b
14
+ refute_equal b, a
15
+ end
16
+
17
+ it "is equal if it is the same object" do
18
+ a = b = FogTestModel.new
19
+ assert_equal a, b
20
+ end
21
+
22
+ it "is equal if it has the same non-nil identity and the same class" do
23
+ id = SecureRandom.hex
24
+ assert_equal FogTestModel.new(:id => id), FogTestModel.new(:id => id)
25
+ end
26
+
27
+ it "is not equal if both have nil identity, but are different objects" do
28
+ refute_equal FogTestModel.new, FogTestModel.new
29
+ end
30
+
31
+ it "is not equal if it has a different identity" do
32
+ refute_equal FogTestModel.new(:id => SecureRandom.hex),
33
+ FogTestModel.new(:id => SecureRandom.hex)
34
+ end
35
+ end
36
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.30.0
4
+ version: 1.31.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Light
@@ -9,202 +9,202 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-02 00:00:00.000000000 Z
12
+ date: 2015-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: excon
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0.45'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0.45'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: formatador
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0.2'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0.2'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: mime-types
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: net-scp
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: '1.1'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '1.1'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: net-ssh
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: 2.1.3
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: 2.1.3
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: coveralls
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '>='
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: minitest
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - '>='
116
+ - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - '>='
123
+ - - ">="
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: minitest-stub-const
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: pry
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - '>='
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - '>='
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: rake
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - '>='
158
+ - - ">="
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - '>='
165
+ - - ">="
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: rubocop
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - '>='
172
+ - - ">="
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  type: :development
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - '>='
179
+ - - ">="
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: thor
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - '>='
186
+ - - ">="
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0'
189
189
  type: :development
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - '>='
193
+ - - ">="
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: yard
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - '>='
200
+ - - ">="
201
201
  - !ruby/object:Gem::Version
202
202
  version: '0'
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - '>='
207
+ - - ">="
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  description: Shared classes and tests for fog providers and services.
@@ -215,9 +215,9 @@ executables: []
215
215
  extensions: []
216
216
  extra_rdoc_files: []
217
217
  files:
218
- - .gitignore
219
- - .rubocop.yml
220
- - .travis.yml
218
+ - ".gitignore"
219
+ - ".rubocop.yml"
220
+ - ".travis.yml"
221
221
  - CONTRIBUTING.md
222
222
  - CONTRIBUTORS.md
223
223
  - Gemfile
@@ -299,6 +299,7 @@ files:
299
299
  - lib/tasks/test_task.rb
300
300
  - spec/compute_spec.rb
301
301
  - spec/connection_spec.rb
302
+ - spec/core/model_spec.rb
302
303
  - spec/core/stringify_keys_spec.rb
303
304
  - spec/core/whitelist_keys_spec.rb
304
305
  - spec/credentials_spec.rb
@@ -330,23 +331,24 @@ require_paths:
330
331
  - lib
331
332
  required_ruby_version: !ruby/object:Gem::Requirement
332
333
  requirements:
333
- - - '>='
334
+ - - ">="
334
335
  - !ruby/object:Gem::Version
335
336
  version: '0'
336
337
  required_rubygems_version: !ruby/object:Gem::Requirement
337
338
  requirements:
338
- - - '>='
339
+ - - ">="
339
340
  - !ruby/object:Gem::Version
340
341
  version: '0'
341
342
  requirements: []
342
343
  rubyforge_project:
343
- rubygems_version: 2.0.3
344
+ rubygems_version: 2.2.2
344
345
  signing_key:
345
346
  specification_version: 4
346
347
  summary: Shared classes and tests for fog providers and services.
347
348
  test_files:
348
349
  - spec/compute_spec.rb
349
350
  - spec/connection_spec.rb
351
+ - spec/core/model_spec.rb
350
352
  - spec/core/stringify_keys_spec.rb
351
353
  - spec/core/whitelist_keys_spec.rb
352
354
  - spec/credentials_spec.rb