occi-core 4.2.11 → 4.2.12

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YWU2NmRkOTcxMWYxMjZmNTExZTZmY2MyZTk5NTA0OTZkYTZjYzNhNw==
5
- data.tar.gz: !binary |-
6
- MWExYTgyNzM0ZjU4NzA4MjhjNjRkNzZiZDBhZjI4N2IwNmY5ZTdkMw==
2
+ SHA1:
3
+ metadata.gz: 8ae8a9a2f1e04abc912900002e1a20ffc7d14c4a
4
+ data.tar.gz: e61f0a1b597466384b814c331792dd27e0cfd0e9
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MzE2MDM1N2NmYmNmMTZhMWY0NDg3YmM3M2NhYTM0NzU3MTJhZGYyNTQxOTk1
10
- YmVjNGEyMzkxZjM4OTI4MGFmZDg5ZjA5NTFkNGM1ODFiMjg3MmY4N2FhNTVk
11
- ZDZlNWY0NDg2YzZhMDdiNjZkNTIyN2NkODA4MjBkNTYyNGMyZTM=
12
- data.tar.gz: !binary |-
13
- ZDhmN2JjNzFmZTFjYTg2NTRiNjU1MjkwZjkyMDFkNGU5YWY5ZjkzYzQxZWEw
14
- OWZlNjAzZDRhZGYyMDk3Njk1MzcwYTgzZmQ1OTEzYmNmODJjODM0ODBjZTc0
15
- ZmEzOTUyMmJiNTk5ZTliMjQ1ZmI5YzMyNDcxNzA3ZWRmYzVhMjM=
6
+ metadata.gz: 80566d28dd52b33ce23de9cb2dff9943d2a082a04a6acf8dfecdab40b79a20aaa08b20f7b7bcd7712c4dfad34d85e2c6de82a9b8cacc3729db4069e65d50e9ec
7
+ data.tar.gz: 09dfb7c50b7ad1c603df9affc70406e4bb59a430844f965e8380430bc957af17cf0e5dcbe525d5935fc7e42b69a8edb8bc95953761670be128daf04ed044f21e
@@ -5,7 +5,7 @@ module Occi
5
5
  include Occi::Helpers::Inspect
6
6
  include Occi::Helpers::Comparators::Entity
7
7
 
8
- attr_accessor :mixins, :attributes, :actions, :id, :model, :location
8
+ attr_accessor :mixins, :attributes, :actions, :id, :model
9
9
  attr_reader :kind
10
10
 
11
11
  class_attribute :kind, :mixins, :attributes, :actions
@@ -76,7 +76,7 @@ module Occi
76
76
  @attributes['occi.core.id'] ||= UUIDTools::UUID.random_create.to_s
77
77
 
78
78
  @actions = Occi::Core::Actions.new actions
79
- @location = location
79
+ @location = location ? URI.parse(location).path : nil
80
80
  end
81
81
 
82
82
  # @param [Occi::Core::Kind,String] kind
@@ -147,13 +147,24 @@ module Occi
147
147
  # set location attribute of entity
148
148
  # @param [String] location
149
149
  def location=(location)
150
- @location = location
150
+ @location = location ? URI.parse(location).path : nil
151
151
  end
152
152
 
153
153
  # @return [String] location of the entity
154
154
  def location
155
- return @location if @location
156
- "#{kind.location}#{id.gsub('urn:uuid:', '')}" if id
155
+ return @location.clone if @location
156
+ return if id.blank? || kind.location.blank?
157
+
158
+ # guess the location from kind and ID
159
+ # check for kind locations already included in IDs
160
+ tmp_id = id.gsub('urn:uuid:', '')
161
+ @location = if tmp_id.start_with?(kind.location)
162
+ # ID by itself is enough
163
+ tmp_id
164
+ else
165
+ # concat kind location and ID, remove duplicated slashes
166
+ "#{kind.location}#{tmp_id}".gsub(/\/+/, '/')
167
+ end
157
168
  end
158
169
 
159
170
  # check attributes against their definitions and set defaults
@@ -197,11 +208,11 @@ module Occi
197
208
 
198
209
  # @return [String] text representation
199
210
  def to_text
200
- text = "Category: #{self.kind.term};scheme=#{self.kind.scheme.inspect};class=\"kind\""
211
+ text = "Category: #{self.kind.term};scheme=#{self.kind.scheme.inspect};class=\"kind\";location=#{self.kind.location.inspect}"
201
212
  @mixins.each do |mixin|
202
213
  scheme, term = mixin.to_s.split('#')
203
214
  scheme << '#'
204
- text << "\nCategory: #{term};scheme=#{scheme.inspect};class=\"mixin\""
215
+ text << "\nCategory: #{term};scheme=#{scheme.inspect};class=\"mixin\";location=#{mixin.location.inspect}"
205
216
  end
206
217
 
207
218
  text << @attributes.to_text
@@ -214,12 +225,12 @@ module Occi
214
225
  # @return [Hash] hash containing the HTTP headers of the text/occi rendering
215
226
  def to_header
216
227
  header = Hashie::Mash.new
217
- header['Category'] = "#{self.kind.term};scheme=#{self.kind.scheme.inspect};class=\"kind\""
228
+ header['Category'] = "#{self.kind.term};scheme=#{self.kind.scheme.inspect};class=\"kind\";location=#{self.kind.location.inspect}"
218
229
 
219
230
  @mixins.each do |mixin|
220
231
  scheme, term = mixin.to_s.split('#')
221
232
  scheme << '#'
222
- header['Category'] << ",#{term};scheme=#{scheme.inspect};class=\"mixin\""
233
+ header['Category'] << ",#{term};scheme=#{scheme.inspect};class=\"mixin\";location=#{mixin.location.inspect}"
223
234
  end
224
235
 
225
236
  attributes = @attributes.to_header
@@ -2,7 +2,7 @@ module Occi
2
2
  module Core
3
3
  class Kind < Occi::Core::Category
4
4
 
5
- attr_accessor :entities, :parent, :actions, :location
5
+ attr_accessor :entities, :parent, :actions
6
6
 
7
7
  # @param scheme [String ] The categorisation scheme.
8
8
  # @param term [String] Unique identifier of the Kind instance within the categorisation scheme.
@@ -21,7 +21,7 @@ module Occi
21
21
  @parent = [parent].flatten.first
22
22
  @actions = Occi::Core::Actions.new(actions)
23
23
  @entities = Occi::Core::Entities.new
24
- location.blank? ? @location = "/#{term}/" : @location = location
24
+ @location = location.blank? ? "/#{term}/" : URI.parse(location).path
25
25
  end
26
26
 
27
27
  # @param scheme [String] The categorisation scheme.
@@ -96,8 +96,16 @@ module Occi
96
96
  self.class.get_class self.scheme, self.term, self.parent
97
97
  end
98
98
 
99
+ # set location attribute of kind
100
+ # @param [String] location
101
+ def location=(location)
102
+ location = URI.parse(location).path if location
103
+ raise "Kind locations must end with a slash!" unless location.blank? || location =~ /^\/\S+\/$/
104
+ @location = location
105
+ end
106
+
99
107
  def location
100
- @location.clone
108
+ @location ? @location.clone : nil
101
109
  end
102
110
 
103
111
  def related
@@ -2,7 +2,7 @@ module Occi
2
2
  module Core
3
3
  class Mixin < Occi::Core::Category
4
4
 
5
- attr_accessor :entities, :depends, :actions, :location, :applies
5
+ attr_accessor :entities, :depends, :actions, :applies
6
6
 
7
7
  # @param [String] scheme
8
8
  # @param [String] term
@@ -25,7 +25,7 @@ module Occi
25
25
  @depends = Occi::Core::Dependencies.new depends
26
26
  @actions = Occi::Core::Actions.new actions
27
27
  @entities = Occi::Core::Entities.new
28
- @location = location.blank? ? "/mixin/#{term}/" : location
28
+ @location = location.blank? ? "/mixin/#{term}/" : URI.parse(location).path
29
29
  @applies = Occi::Core::Kinds.new applies
30
30
  end
31
31
 
@@ -37,8 +37,16 @@ module Occi
37
37
  self.to_s == mixin.to_s || self.related.any? { |m| m.type_identifier == mixin.to_s }
38
38
  end
39
39
 
40
+ # set location attribute of kind
41
+ # @param [String] location
42
+ def location=(location)
43
+ location = URI.parse(location).path if location
44
+ raise "Mixin locations must end with a slash!" unless location.blank? || location =~ /^\/\S+\/$/
45
+ @location = location
46
+ end
47
+
40
48
  def location
41
- @location.clone
49
+ @location ? @location.clone : nil
42
50
  end
43
51
 
44
52
  def related
data/lib/occi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Occi
2
- VERSION = "4.2.11" unless defined?(::Occi::VERSION)
2
+ VERSION = "4.2.12" unless defined?(::Occi::VERSION)
3
3
  end
@@ -833,7 +833,7 @@ module Occi
833
833
  collection.resources << Occi::Core::Resource.new
834
834
  collection.links << Occi::Core::Link.new
835
835
 
836
- expected = "Category: compute;scheme=\"http://schemas.ogf.org/occi/infrastructure#\";class=\"kind\";title=\"compute resource\";rel=\"http://schemas.ogf.org/occi/core#resource\";location=\"/compute/\";attributes=\"occi.core.id{immutable} occi.core.title occi.core.summary occi.compute.architecture occi.compute.cores occi.compute.hostname occi.compute.memory occi.compute.speed occi.compute.state{immutable}\";actions=\"http://schemas.ogf.org/occi/infrastructure/compute/action#start http://schemas.ogf.org/occi/infrastructure/compute/action#stop http://schemas.ogf.org/occi/infrastructure/compute/action#restart http://schemas.ogf.org/occi/infrastructure/compute/action#suspend\"\nCategory: my_mixin;scheme=\"http://example.com/occi/tags#\";class=\"mixin\";location=\"/mixin/my_mixin/\"\nCategory: start;scheme=\"http://schemas.ogf.org/occi/infrastructure/compute/action#\";class=\"action\"\nCategory: resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\"\nX-OCCI-Attribute: occi.core.id=\"#{collection.resources.first.id}\"Link: <>;rel=\"http://schemas.ogf.org/occi/core#link\";self=\"/link/#{collection.links.first.id}\";category=\"http://schemas.ogf.org/occi/core#link\";occi.core.id=\"#{collection.links.first.id}\"Category: action_instance;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"action\""
836
+ expected = "Category: compute;scheme=\"http://schemas.ogf.org/occi/infrastructure#\";class=\"kind\";title=\"compute resource\";rel=\"http://schemas.ogf.org/occi/core#resource\";location=\"/compute/\";attributes=\"occi.core.id{immutable} occi.core.title occi.core.summary occi.compute.architecture occi.compute.cores occi.compute.hostname occi.compute.memory occi.compute.speed occi.compute.state{immutable}\";actions=\"http://schemas.ogf.org/occi/infrastructure/compute/action#start http://schemas.ogf.org/occi/infrastructure/compute/action#stop http://schemas.ogf.org/occi/infrastructure/compute/action#restart http://schemas.ogf.org/occi/infrastructure/compute/action#suspend\"\nCategory: my_mixin;scheme=\"http://example.com/occi/tags#\";class=\"mixin\";location=\"/mixin/my_mixin/\"\nCategory: start;scheme=\"http://schemas.ogf.org/occi/infrastructure/compute/action#\";class=\"action\"\nCategory: resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\";location=\"/resource/\"\nX-OCCI-Attribute: occi.core.id=\"#{collection.resources.first.id}\"Link: <>;rel=\"http://schemas.ogf.org/occi/core#link\";self=\"/link/#{collection.links.first.id}\";category=\"http://schemas.ogf.org/occi/core#link\";occi.core.id=\"#{collection.links.first.id}\"Category: action_instance;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"action\""
837
837
  expect(collection.to_text).to eql(expected)
838
838
  end
839
839
 
@@ -871,13 +871,13 @@ module Occi
871
871
 
872
872
  it 'renders text correctly, resources only' do
873
873
  collection.resources << Occi::Core::Resource.new
874
- expected = "Category: resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\"\nX-OCCI-Attribute: occi.core.id=\"#{collection.resources.first.id}\""
874
+ expected = "Category: resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\";location=\"/resource/\"\nX-OCCI-Attribute: occi.core.id=\"#{collection.resources.first.id}\""
875
875
  expect(collection.to_text).to eql(expected)
876
876
  end
877
877
 
878
878
  it 'renders text correctly, links only' do
879
879
  collection.links << Occi::Core::Link.new
880
- expected = "Category: link;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\"\nX-OCCI-Attribute: occi.core.id=\"#{collection.links.first.id}\""
880
+ expected = "Category: link;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\";location=\"/link/\"\nX-OCCI-Attribute: occi.core.id=\"#{collection.links.first.id}\""
881
881
  expect(collection.to_text).to eql(expected)
882
882
  end
883
883
 
@@ -894,7 +894,7 @@ module Occi
894
894
  collection.links << Occi::Core::Link.new
895
895
 
896
896
  expected=Hashie::Mash.new
897
- expected["Category"] = "compute;scheme=\"http://schemas.ogf.org/occi/infrastructure#\";class=\"kind\",my_mixin;scheme=\"http://example.com/occi/tags#\";class=\"mixin\",start;scheme=\"http://schemas.ogf.org/occi/infrastructure/compute/action#\";class=\"action\",resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\",action_instance;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"action\""
897
+ expected["Category"] = "compute;scheme=\"http://schemas.ogf.org/occi/infrastructure#\";class=\"kind\",my_mixin;scheme=\"http://example.com/occi/tags#\";class=\"mixin\",start;scheme=\"http://schemas.ogf.org/occi/infrastructure/compute/action#\";class=\"action\",resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\";location=\"/resource/\",action_instance;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"action\""
898
898
  expected["Link"] = "<>;rel=\"http://schemas.ogf.org/occi/core#link\";self=\"/link/#{collection.links.first.id}\";category=\"http://schemas.ogf.org/occi/core#link\";occi.core.id=\"#{collection.links.first.id}\""
899
899
  expected["X-OCCI-Attribute"] = "occi.core.id=\"#{collection.resources.first.id}\""
900
900
  expect(collection.to_header).to eql(expected)
@@ -939,7 +939,7 @@ module Occi
939
939
  it 'renders text correctly, resources only' do
940
940
  collection.resources << Occi::Core::Resource.new
941
941
  expected=Hashie::Mash.new
942
- expected["Category"] = "resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\""
942
+ expected["Category"] = "resource;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\";location=\"/resource/\""
943
943
  expected["X-OCCI-Attribute"] = "occi.core.id=\"#{collection.resources.first.id}\""
944
944
  expect(collection.to_header).to eql(expected)
945
945
  end
@@ -947,7 +947,7 @@ module Occi
947
947
  it 'renders text correctly, links only' do
948
948
  collection.links << Occi::Core::Link.new
949
949
  expected=Hashie::Mash.new
950
- expected["Category"] = "link;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\""
950
+ expected["Category"] = "link;scheme=\"http://schemas.ogf.org/occi/core#\";class=\"kind\";location=\"/link/\""
951
951
  expected["X-OCCI-Attribute"] = "occi.core.id=\"#{collection.links.first.id}\""
952
952
  expect(collection.to_header).to eql(expected)
953
953
  end
@@ -104,6 +104,26 @@ module Occi
104
104
  entity.id = UUIDTools::UUID.random_create.to_s
105
105
  expect(entity.location).to eq '/entity/' + entity.id
106
106
  end
107
+
108
+ it 'gets normalized to a relative path' do
109
+ entity.location = 'http://example.org/entity/12'
110
+ expect(entity.location).to eq '/entity/12'
111
+ end
112
+
113
+ it 'can be set to nil and default to /kind/id' do
114
+ entity.location = nil
115
+ expect(entity.location).to eq '/entity/baf1'
116
+ end
117
+
118
+ it 'will not duplicate slashes' do
119
+ entity.id = '//baf1'
120
+ expect(entity.location).to eq '/entity/baf1'
121
+ end
122
+
123
+ it 'will not duplicate kind location' do
124
+ entity.id = '/entity/baf1'
125
+ expect(entity.location).to eq '/entity/baf1'
126
+ end
107
127
  end
108
128
 
109
129
  context '#title' do
@@ -130,7 +150,7 @@ module Occi
130
150
 
131
151
  context '#to_text' do
132
152
  it 'renders fresh instance in text correctly' do
133
- expected = %Q|Category: entity;scheme="http://schemas.ogf.org/occi/core#";class="kind"
153
+ expected = %Q|Category: entity;scheme="http://schemas.ogf.org/occi/core#";class="kind";location="/entity/"
134
154
  X-OCCI-Attribute: occi.core.id="baf1"|
135
155
  expect(entity.to_text).to eq(expected)
136
156
  end
@@ -141,8 +161,8 @@ X-OCCI-Attribute: occi.core.id="baf1"|
141
161
  entity.location = '/TestLoc/1'
142
162
  entity.mixins << 'http://example.com/mynamespace#mymixin'
143
163
 
144
- expected = %Q|Category: entity;scheme="http://schemas.ogf.org/occi/core#";class="kind"
145
- Category: mymixin;scheme="http://example.com/mynamespace#";class="mixin"
164
+ expected = %Q|Category: entity;scheme="http://schemas.ogf.org/occi/core#";class="kind";location="/entity/"
165
+ Category: mymixin;scheme="http://example.com/mynamespace#";class="mixin";location="/mixin/mymixin/"
146
166
  X-OCCI-Attribute: occi.core.id="baf1"
147
167
  X-OCCI-Attribute: occi.core.title="TestTitle"
148
168
  Link: </TestLoc/1?action=testaction>;rel="http://schemas.ogf.org/occi/core/entity/action#testaction"|
@@ -153,7 +173,7 @@ Link: </TestLoc/1?action=testaction>;rel="http://schemas.ogf.org/occi/core/entit
153
173
  context '#to_header' do
154
174
  it 'renders fresh instance in HTTP Header correctly' do
155
175
  expected = Hashie::Mash.new
156
- expected['Category'] = 'entity;scheme="http://schemas.ogf.org/occi/core#";class="kind"'
176
+ expected['Category'] = 'entity;scheme="http://schemas.ogf.org/occi/core#";class="kind";location="/entity/"'
157
177
  expected['X-OCCI-Attribute'] = 'occi.core.id="baf1"'
158
178
 
159
179
  expect(entity.to_header).to eql(expected)
@@ -166,7 +186,7 @@ Link: </TestLoc/1?action=testaction>;rel="http://schemas.ogf.org/occi/core/entit
166
186
  entity.mixins << 'http://example.com/mynamespace#mymixin'
167
187
 
168
188
  expected = Hashie::Mash.new
169
- expected['Category'] = 'entity;scheme="http://schemas.ogf.org/occi/core#";class="kind",mymixin;scheme="http://example.com/mynamespace#";class="mixin"'
189
+ expected['Category'] = 'entity;scheme="http://schemas.ogf.org/occi/core#";class="kind";location="/entity/",mymixin;scheme="http://example.com/mynamespace#";class="mixin";location="/mixin/mymixin/"'
170
190
  expected['X-OCCI-Attribute'] = 'occi.core.id="baf1",occi.core.title="TestTitle"'
171
191
  expected['Link'] = '</TestLoc/1?action=testaction>;rel="http://schemas.ogf.org/occi/core/entity/action#testaction"'
172
192
 
@@ -86,6 +86,33 @@ module Occi
86
86
 
87
87
  end
88
88
 
89
+ describe '#location' do
90
+ let(:kind) { Occi::Core::Kind.new }
91
+
92
+ it 'gets normalized to a relative path' do
93
+ kind.location = 'http://example.org/kind/'
94
+ expect(kind.location).to eq '/kind/'
95
+ end
96
+
97
+ it 'can be set to nil' do
98
+ kind.location = nil
99
+ expect(kind.location).to be_nil
100
+ end
101
+
102
+ it 'raises an error when location does not start and end with a slash' do
103
+ expect { kind.location = '/no_slash' }.to raise_error
104
+ expect { kind.location = 'no_slash/' }.to raise_error
105
+ end
106
+
107
+ it 'raises an error when location contains spaces' do
108
+ expect { kind.location = '/sla shes/' }.to raise_error
109
+ end
110
+
111
+ it 'can be set to an empty string' do
112
+ expect { kind.location = '' }.not_to raise_error
113
+ end
114
+ end
115
+
89
116
  describe '#related_to?' do
90
117
  let(:base){ Occi::Core::Kind.new 'http://occi.test.case/core/kind', 'base' }
91
118
  let(:related){ Occi::Core::Kind.new 'http://occi.test.case/core/kind/base', 'related', 'title', Occi::Core::Attributes.new, base }
@@ -0,0 +1,38 @@
1
+ module Occi
2
+ module Core
3
+ describe Mixin do
4
+
5
+ describe '#location' do
6
+ let(:mixin) { Occi::Core::Mixin.new }
7
+
8
+ it 'defaults to /mixin/term/' do
9
+ expect(mixin.location).to eq '/mixin/mixin/'
10
+ end
11
+
12
+ it 'gets normalized to a relative path' do
13
+ mixin.location = 'http://example.org/mixin/'
14
+ expect(mixin.location).to eq '/mixin/'
15
+ end
16
+
17
+ it 'can be set to nil' do
18
+ mixin.location = nil
19
+ expect(mixin.location).to be_nil
20
+ end
21
+
22
+ it 'raises an error when location does not start and end with a slash' do
23
+ expect { mixin.location = '/no_slash' }.to raise_error
24
+ expect { mixin.location = 'no_slash/' }.to raise_error
25
+ end
26
+
27
+ it 'raises an error when location contains spaces' do
28
+ expect { mixin.location = '/sla shes/' }.to raise_error
29
+ end
30
+
31
+ it 'can be set to an empty string' do
32
+ expect { mixin.location = '' }.not_to raise_error
33
+ end
34
+ end
35
+
36
+ end
37
+ end
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: occi-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.11
4
+ version: 4.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Feldhaus
@@ -16,42 +16,42 @@ dependencies:
16
16
  name: json
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ! '>='
19
+ - - '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ! '>='
26
+ - - '>='
27
27
  - !ruby/object:Gem::Version
28
28
  version: '0'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: hashie
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ! '>='
33
+ - - '>='
34
34
  - !ruby/object:Gem::Version
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ! '>='
40
+ - - '>='
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: uuidtools
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ! '>='
47
+ - - '>='
48
48
  - !ruby/object:Gem::Version
49
49
  version: 2.1.3
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ! '>='
54
+ - - '>='
55
55
  - !ruby/object:Gem::Version
56
56
  version: 2.1.3
57
57
  - !ruby/object:Gem::Dependency
@@ -72,14 +72,14 @@ dependencies:
72
72
  name: settingslogic
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ! '>='
75
+ - - '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ! '>='
82
+ - - '>='
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  description: OCCI is a collection of classes to simplify the implementation of the
@@ -178,6 +178,7 @@ files:
178
178
  - spec/occi/core/kind_spec.rb
179
179
  - spec/occi/core/link_spec.rb
180
180
  - spec/occi/core/links_spec.rb
181
+ - spec/occi/core/mixin_spec.rb
181
182
  - spec/occi/core/mixins_spec.rb
182
183
  - spec/occi/core/properties_spec.rb
183
184
  - spec/occi/core/resource_spec.rb
@@ -231,12 +232,12 @@ require_paths:
231
232
  - lib
232
233
  required_ruby_version: !ruby/object:Gem::Requirement
233
234
  requirements:
234
- - - ! '>='
235
+ - - '>='
235
236
  - !ruby/object:Gem::Version
236
237
  version: 1.9.3
237
238
  required_rubygems_version: !ruby/object:Gem::Requirement
238
239
  requirements:
239
- - - ! '>='
240
+ - - '>='
240
241
  - !ruby/object:Gem::Version
241
242
  version: '0'
242
243
  requirements: []