occi-core 4.2.1 → 4.2.2

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.
@@ -20,11 +20,11 @@ module Occi
20
20
 
21
21
  self.model = model if model
22
22
 
23
- @kinds.merge collection.kinds.to_a.collect { |kind| Occi::Core::Kind.new(kind.scheme, kind.term, kind.title, kind.attributes, kind.related, kind.actions) }
24
- @mixins.merge collection.mixins.to_a.collect { |mixin| Occi::Core::Mixin.new(mixin.scheme, mixin.term, mixin.title, mixin.attributes, mixin.related, mixin.actions) }
23
+ @kinds.merge collection.kinds.to_a.collect { |kind| Occi::Core::Kind.new(kind.scheme, kind.term, kind.title, kind.attributes, kind.related, kind.actions, kind.location) }
24
+ @mixins.merge collection.mixins.to_a.collect { |mixin| Occi::Core::Mixin.new(mixin.scheme, mixin.term, mixin.title, mixin.attributes, mixin.depends, mixin.actions, mixin.location, mixin.applies) }
25
25
  @actions.merge collection.actions.to_a.collect { |action| Occi::Core::Action.new(action.scheme, action.term, action.title, action.attributes) }
26
- @resources.merge collection.resources.to_a.collect { |resource| Occi::Core::Resource.new(resource.kind, resource.mixins, resource.attributes, resource.links) }
27
- @links.merge collection.links.to_a.collect { |link| Occi::Core::Link.new(link.kind, link.mixins, link.attributes) }
26
+ @resources.merge collection.resources.to_a.collect { |resource| Occi::Core::Resource.new(resource.kind, resource.mixins, resource.attributes, resource.actions, resource.links, resource.location) }
27
+ @links.merge collection.links.to_a.collect { |link| Occi::Core::Link.new(link.kind, link.mixins, link.attributes, link.actions, link.rel, link.target, link.source, link.location) }
28
28
  @action = Occi::Core::ActionInstance.new(collection.action) if collection.action
29
29
  end
30
30
 
@@ -101,9 +101,10 @@ module Occi
101
101
  attributes = Occi::Core::Attributes.new
102
102
  hash.each_pair do |key, value|
103
103
  if Occi::Core::Properties.contains_props?(value)
104
+ value = value.to_hash if value.kind_of?(Hashie::Mash)
104
105
  attributes[key] = Occi::Core::Properties.new(value)
105
106
  else
106
- attributes[key] = self.parse_properties(attributes[key])
107
+ attributes[key] = self.parse_properties(value)
107
108
  end
108
109
  end
109
110
 
@@ -14,9 +14,8 @@ module Occi
14
14
  def initialize(scheme='http://schemas.ogf.org/occi/core#',
15
15
  term='category',
16
16
  title=nil,
17
- attributes=Occi::Core::Attributes.new)
18
- raise ArgumentError, 'scheme and term cannot be nil' unless scheme && term
19
- raise ArgumentError, 'scheme and term cannot be empty' if scheme.empty? || term.empty?
17
+ attributes=nil)
18
+ raise ArgumentError, 'Scheme and term cannot be empty' if scheme.blank? || term.blank?
20
19
  attributes ||= Occi::Core::Attributes.new
21
20
 
22
21
  scheme << '#' unless scheme.end_with? '#'
@@ -23,7 +23,7 @@ module Occi
23
23
  @depends = Occi::Core::Dependencies.new depends
24
24
  @actions = Occi::Core::Actions.new actions
25
25
  @entities = Occi::Core::Entities.new
26
- location.blank? ? @location = "/mixins/#{term}/" : @location = location
26
+ @location = location.blank? ? "/mixin/#{term}/" : location
27
27
  @applies = Occi::Core::Kinds.new applies
28
28
  end
29
29
 
@@ -32,7 +32,7 @@ module Occi
32
32
  # @param kind [Occi::Core::Mixin, String] Mixin or Type Identifier of a Mixin where relation should be checked.
33
33
  # @return [true,false]
34
34
  def related_to?(mixin)
35
- self.depends.any? { |dependency| dependency.to_s == mixin.to_s } or self.to_s == mixin.to_s
35
+ self.to_s == mixin.to_s || self.related.include?(mixin.to_s)
36
36
  end
37
37
 
38
38
  def location
@@ -40,16 +40,16 @@ module Occi
40
40
  end
41
41
 
42
42
  def related
43
- self.depends + self.applies
43
+ self.depends.to_a.concat(self.applies.to_a).uniq
44
44
  end
45
45
 
46
46
  # @param [Hash] options
47
47
  # @return [Hashie::Mash] json representation
48
48
  def as_json(options={})
49
49
  mixin = Hashie::Mash.new
50
- mixin.dependencies = self.depends.join(' ').split(' ') if self.depends.any?
51
- mixin.applies = self.applies.join(' ').split(' ') if self.applies.any?
52
- mixin.related = self.related.join(' ').split(' ') if self.related.any?
50
+ mixin.depends = self.depends.to_a.collect { |m| m.type_identifier } if self.depends.any?
51
+ mixin.applies = self.applies.to_a.collect { |m| m.type_identifier } if self.applies.any?
52
+ mixin.related = self.related.to_a.collect { |m| m.type_identifier } if self.related.any?
53
53
  mixin.actions = self.actions if self.actions.any?
54
54
  mixin.location = self.location if self.location
55
55
  mixin.merge! super
@@ -12,7 +12,7 @@ module Occi
12
12
  alias_method :mutable?, :mutable
13
13
 
14
14
  # Types supported in properties, and their mapping to Ruby Classes
15
- SUPPORTED_TYPES = Hash.new
15
+ SUPPORTED_TYPES = {}
16
16
  SUPPORTED_TYPES["string"] = [ String ]
17
17
  SUPPORTED_TYPES["number"] = [ Numeric ]
18
18
  SUPPORTED_TYPES["boolean"] = [ TrueClass, FalseClass ]
@@ -23,13 +23,10 @@ module Occi
23
23
  raise ArgumentError, 'Source_hash must not be a Hashie::Mash instance!' if source_hash.kind_of?(Hashie::Mash)
24
24
  source_hash = Occi::Core::Properties.normalize_props(source_hash)
25
25
 
26
- self.type = source_hash[:type] ||= 'string'
27
- raise Occi::Errors::AttributePropertyTypeError,
28
- "Type \"#{self.type}\" unsupported in properties. " \
29
- "Supported types are: #{Properties.supported_type_names}." unless SUPPORTED_TYPES.key?(self.type)
30
- self.required = source_hash[:required] = source_hash[:required].nil? ? false : source_hash[:required]
31
- self.mutable = source_hash[:mutable] = source_hash[:mutable].nil? ? false : source_hash[:mutable]
32
- self.pattern = source_hash[:pattern] ||= '.*'
26
+ self.type = source_hash[:type] || 'string'
27
+ self.required = source_hash[:required].nil? ? false : source_hash[:required]
28
+ self.mutable = source_hash[:mutable].nil? ? false : source_hash[:mutable]
29
+ self.pattern = source_hash[:pattern] || '.*'
33
30
  self.description = source_hash[:description]
34
31
  self.default = source_hash[:default]
35
32
  end
@@ -44,16 +41,13 @@ module Occi
44
41
 
45
42
  # @param value [Object] Object whose class will be checked against definition
46
43
  def check_value_for_type(value, key_name = nil)
47
- raise Occi::Errors::AttributePropertyTypeError,
48
- "Property type #{@type} for #{key_name.inspect} is not one of the allowed " \
49
- "types: #{Properties.supported_type_names}" unless SUPPORTED_TYPES.key?(@type)
50
44
  raise Occi::Errors::AttributeTypeError,
51
45
  "Attribute value #{value} for #{key_name.inspect} is class #{value.class.name}. " \
52
46
  "It does not match attribute property type #{@type}" unless SUPPORTED_TYPES[@type].any? { |klasse| value.kind_of?(klasse) }
53
47
  end
54
48
 
55
49
  def to_hash
56
- as_json.to_hash
50
+ as_json
57
51
  end
58
52
 
59
53
  def to_json(*a)
@@ -61,13 +55,14 @@ module Occi
61
55
  end
62
56
 
63
57
  def as_json(options={})
64
- hash = Hashie::Mash.new
65
- hash.default = self.default if self.default
66
- hash.type = self.type if self.type
67
- hash.required = self.required unless self.required.nil?
68
- hash.mutable = self.mutable unless self.mutable.nil?
69
- hash.pattern = self.pattern if self.pattern
70
- hash.description = self.description if self.description
58
+ hash = {}
59
+
60
+ hash["default"] = self.default if self.default
61
+ hash["type"] = self.type if self.type
62
+ hash["required"] = self.required unless self.required.nil?
63
+ hash["mutable"] = self.mutable unless self.mutable.nil?
64
+ hash["pattern"] = self.pattern if self.pattern
65
+ hash["description"] = self.description if self.description
71
66
 
72
67
  hash
73
68
  end
@@ -46,9 +46,9 @@ module Occi
46
46
  self.kind = Occi::Core::Kind.new scheme='http://schemas.ogf.org/occi/infrastructure#',
47
47
  term='compute',
48
48
  title = 'compute resource',
49
- attributes=self.attributes,
49
+ attributes=Occi::Core::Attributes.new(self.attributes),
50
50
  parent=Occi::Core::Resource.kind,
51
- actions = self.actions,
51
+ actions = Occi::Core::Actions.new(self.actions),
52
52
  location = '/compute/'
53
53
 
54
54
  require 'occi/infrastructure/resource_tpl'
@@ -25,9 +25,9 @@ module Occi
25
25
  self.kind = Occi::Core::Kind.new scheme='http://schemas.ogf.org/occi/infrastructure#',
26
26
  term='network',
27
27
  title = 'network resource',
28
- attributes=self.attributes,
28
+ attributes=Occi::Core::Attributes.new(self.attributes),
29
29
  parent=Occi::Core::Resource.kind,
30
- actions = self.actions,
30
+ actions = Occi::Core::Actions.new(self.actions),
31
31
  location = '/network/'
32
32
 
33
33
  require 'occi/infrastructure/network/ipnetwork'
@@ -16,13 +16,13 @@ module Occi
16
16
  self.mixin = Occi::Core::Mixin.new scheme='http://schemas.ogf.org/occi/infrastructure/network#',
17
17
  term='ipnetwork',
18
18
  title='IP network mixin',
19
- attributes=self.attributes,
19
+ attributes=Occi::Core::Attributes.new(self.attributes),
20
20
  dependencies=Occi::Core::Dependencies.new,
21
21
  actions=Occi::Core::Actions.new,
22
- location='/mixins/ipnetwork/',
22
+ location='/mixin/ipnetwork/',
23
23
  applies=Occi::Core::Kinds.new << Occi::Infrastructure::Network.kind
24
24
 
25
25
  end
26
26
  end
27
27
  end
28
- end
28
+ end
@@ -22,10 +22,10 @@ module Occi
22
22
  self.kind = Occi::Core::Kind.new scheme='http://schemas.ogf.org/occi/infrastructure#',
23
23
  term='networkinterface',
24
24
  title = 'networkinterface link',
25
- attributes = self.attributes,
25
+ attributes = Occi::Core::Attributes.new(self.attributes),
26
26
  parent = Occi::Core::Link.kind,
27
- actions = self.actions,
28
- location = '/networkinterface/'
27
+ actions = Occi::Core::Actions.new(self.actions),
28
+ location = '/link/networkinterface/'
29
29
 
30
30
  require 'occi/infrastructure/networkinterface/ipnetworkinterface'
31
31
  self.mixins = Occi::Core::Mixins.new << Occi::Infrastructure::Networkinterface::Ipnetworkinterface.mixin
@@ -99,4 +99,4 @@ module Occi
99
99
 
100
100
  end
101
101
  end
102
- end
102
+ end
@@ -16,13 +16,13 @@ module Occi
16
16
  self.mixin = Occi::Core::Mixin.new scheme='http://schemas.ogf.org/occi/infrastructure/networkinterface#',
17
17
  term='ipnetworkinterface',
18
18
  title='IP network interface mixin',
19
- attributes=self.attributes,
19
+ attributes=Occi::Core::Attributes.new(self.attributes),
20
20
  dependencies=Occi::Core::Dependencies.new,
21
21
  actions=Occi::Core::Actions.new,
22
- location='/mixins/ipnetworkinterface/',
22
+ location='/mixin/ipnetworkinterface/',
23
23
  applies=Occi::Core::Kinds.new << Occi::Infrastructure::Network.kind
24
24
 
25
25
  end
26
26
  end
27
27
  end
28
- end
28
+ end
@@ -9,11 +9,11 @@ module Occi
9
9
  self.mixin = Occi::Core::Mixin.new scheme='http://schemas.ogf.org/occi/infrastructure#',
10
10
  term='os_tpl',
11
11
  title='operating system template',
12
- attributes=self.attributes,
12
+ attributes=Occi::Core::Attributes.new(self.attributes),
13
13
  related=Occi::Core::Categories.new << Occi::Infrastructure::Compute.kind,
14
14
  actions=Occi::Core::Actions.new,
15
- location='/mixins/os_tpl/'
15
+ location='/mixin/os_tpl/'
16
16
  end
17
17
 
18
18
  end
19
- end
19
+ end
@@ -9,11 +9,11 @@ module Occi
9
9
  self.mixin = Occi::Core::Mixin.new scheme='http://schemas.ogf.org/occi/infrastructure#',
10
10
  term='resource_tpl',
11
11
  title='resource template',
12
- attributes=self.attributes,
12
+ attributes=Occi::Core::Attributes.new(self.attributes),
13
13
  related=Occi::Core::Categories.new << Occi::Infrastructure::Compute.kind,
14
14
  actions=Occi::Core::Actions.new,
15
- location='/mixins/resource_tpl/'
15
+ location='/mixin/resource_tpl/'
16
16
  end
17
17
 
18
18
  end
19
- end
19
+ end
@@ -36,9 +36,9 @@ module Occi
36
36
  self.kind = Occi::Core::Kind.new scheme='http://schemas.ogf.org/occi/infrastructure#',
37
37
  term='storage',
38
38
  title = 'storage resource',
39
- attributes = self.attributes,
39
+ attributes = Occi::Core::Attributes.new(self.attributes),
40
40
  parent=Occi::Core::Resource.kind,
41
- actions = self.actions,
41
+ actions = Occi::Core::Actions.new(self.actions),
42
42
  location = '/storage/'
43
43
 
44
44
  def size
@@ -21,10 +21,10 @@ module Occi
21
21
  self.kind = Occi::Core::Kind.new scheme='http://schemas.ogf.org/occi/infrastructure#',
22
22
  term='storagelink',
23
23
  title = 'storage link',
24
- attributes = self.attributes,
24
+ attributes = Occi::Core::Attributes.new(self.attributes),
25
25
  parent=Occi::Core::Link.kind,
26
- actions = self.actions,
27
- location = '/storagelink/'
26
+ actions = Occi::Core::Actions.new(self.actions),
27
+ location = '/link/storagelink/'
28
28
 
29
29
 
30
30
  def deviceid
@@ -53,4 +53,4 @@ module Occi
53
53
 
54
54
  end
55
55
  end
56
- end
56
+ end
data/lib/occi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Occi
2
- VERSION = "4.2.1" unless defined?(::Occi::VERSION)
2
+ VERSION = "4.2.2" unless defined?(::Occi::VERSION)
3
3
  end
@@ -720,7 +720,7 @@ module Occi
720
720
 
721
721
  context '#get_by_location' do
722
722
  it 'finds category by location' do
723
- expect(collection.get_by_location("/mixins/my_mixin/")).to eql collection.mixins.first
723
+ expect(collection.get_by_location("/mixin/my_mixin/")).to eql collection.mixins.first
724
724
  end
725
725
 
726
726
  it 'fails gracefully' do
@@ -775,7 +775,7 @@ module Occi
775
775
  collection.action = Occi::Core::ActionInstance.new
776
776
  collection.resources << Occi::Core::Resource.new
777
777
  collection.links << Occi::Core::Link.new
778
- expected = "{\"action\":{\"action\":\"http://schemas.ogf.org/occi/core#action_instance\",\"attributes\":{}},\"actions\":[{\"scheme\":\"http://schemas.ogf.org/occi/infrastructure/compute/action#\",\"term\":\"start\",\"attributes\":{}}],\"kinds\":[{\"parent\":\"http://schemas.ogf.org/occi/core#resource\",\"related\":[\"http://schemas.ogf.org/occi/core#resource\"],\"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\"],\"location\":\"/compute/\",\"scheme\":\"http://schemas.ogf.org/occi/infrastructure#\",\"term\":\"compute\",\"title\":\"compute resource\",\"attributes\":{\"occi\":{\"core\":{\"id\":{\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\"},\"title\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"summary\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"}},\"compute\":{\"architecture\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"x86|x64\"},\"cores\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"hostname\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]*[a-zA-Z0-9])\\\\.)*\"},\"memory\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"speed\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"state\":{\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"inactive|active|suspended|error\"}}}}}],\"links\":[{\"kind\":\"http://schemas.ogf.org/occi/core#link\",\"attributes\":{\"occi\":{\"core\":{\"id\":\"#{collection.links.first.id}\"}}},\"id\":\"#{collection.links.first.id}\",\"rel\":\"http://schemas.ogf.org/occi/core#link\"}],\"mixins\":[{\"location\":\"/mixins/my_mixin/\",\"scheme\":\"http://example.com/occi/tags#\",\"term\":\"my_mixin\",\"attributes\":{}}],\"resources\":[{\"kind\":\"http://schemas.ogf.org/occi/core#resource\",\"attributes\":{\"occi\":{\"core\":{\"id\":\"#{collection.resources.first.id}\"}}},\"id\":\"#{collection.resources.first.id}\"}]}"
778
+ expected = "{\"action\":{\"action\":\"http://schemas.ogf.org/occi/core#action_instance\",\"attributes\":{}},\"actions\":[{\"scheme\":\"http://schemas.ogf.org/occi/infrastructure/compute/action#\",\"term\":\"start\",\"attributes\":{}}],\"kinds\":[{\"parent\":\"http://schemas.ogf.org/occi/core#resource\",\"related\":[\"http://schemas.ogf.org/occi/core#resource\"],\"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\"],\"location\":\"/compute/\",\"scheme\":\"http://schemas.ogf.org/occi/infrastructure#\",\"term\":\"compute\",\"title\":\"compute resource\",\"attributes\":{\"occi\":{\"core\":{\"id\":{\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\"},\"title\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"summary\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"}},\"compute\":{\"architecture\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"x86|x64\"},\"cores\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"hostname\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]*[a-zA-Z0-9])\\\\.)*\"},\"memory\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"speed\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"state\":{\"default\":\"inactive\",\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"inactive|active|suspended|error\"}}}}}],\"links\":[{\"kind\":\"http://schemas.ogf.org/occi/core#link\",\"attributes\":{\"occi\":{\"core\":{\"id\":\"#{collection.links.first.id}\"}}},\"id\":\"#{collection.links.first.id}\",\"rel\":\"http://schemas.ogf.org/occi/core#link\"}],\"mixins\":[{\"location\":\"/mixin/my_mixin/\",\"scheme\":\"http://example.com/occi/tags#\",\"term\":\"my_mixin\",\"attributes\":{}}],\"resources\":[{\"kind\":\"http://schemas.ogf.org/occi/core#resource\",\"attributes\":{\"occi\":{\"core\":{\"id\":\"#{collection.resources.first.id}\"}}},\"id\":\"#{collection.resources.first.id}\"}]}"
779
779
 
780
780
  hash=Hashie::Mash.new(JSON.parse(expected))
781
781
  expect(collection.as_json).to eql(hash)
@@ -794,7 +794,7 @@ module Occi
794
794
  collection.actions << "http://schemas.ogf.org/occi/infrastructure/compute/action#start"
795
795
  collection.action = Occi::Core::ActionInstance.new
796
796
  collection.links << Occi::Core::Link.new
797
- expected = "{\"action\":{\"action\":\"http://schemas.ogf.org/occi/core#action_instance\",\"attributes\":{}},\"actions\":[{\"scheme\":\"http://schemas.ogf.org/occi/infrastructure/compute/action#\",\"term\":\"start\",\"attributes\":{}}],\"kinds\":[{\"parent\":\"http://schemas.ogf.org/occi/core#resource\",\"related\":[\"http://schemas.ogf.org/occi/core#resource\"],\"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\"],\"location\":\"/compute/\",\"scheme\":\"http://schemas.ogf.org/occi/infrastructure#\",\"term\":\"compute\",\"title\":\"compute resource\",\"attributes\":{\"occi\":{\"core\":{\"id\":{\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\"},\"title\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"summary\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"}},\"compute\":{\"architecture\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"x86|x64\"},\"cores\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"hostname\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]*[a-zA-Z0-9])\\\\.)*\"},\"memory\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"speed\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"state\":{\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"inactive|active|suspended|error\"}}}}}],\"links\":[{\"kind\":\"http://schemas.ogf.org/occi/core#link\",\"attributes\":{\"occi\":{\"core\":{\"id\":\"#{collection.links.first.id}\"}}},\"id\":\"#{collection.links.first.id}\",\"rel\":\"http://schemas.ogf.org/occi/core#link\"}],\"mixins\":[{\"location\":\"/mixins/my_mixin/\",\"scheme\":\"http://example.com/occi/tags#\",\"term\":\"my_mixin\",\"attributes\":{}}]}"
797
+ expected = "{\"action\":{\"action\":\"http://schemas.ogf.org/occi/core#action_instance\",\"attributes\":{}},\"actions\":[{\"scheme\":\"http://schemas.ogf.org/occi/infrastructure/compute/action#\",\"term\":\"start\",\"attributes\":{}}],\"kinds\":[{\"parent\":\"http://schemas.ogf.org/occi/core#resource\",\"related\":[\"http://schemas.ogf.org/occi/core#resource\"],\"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\"],\"location\":\"/compute/\",\"scheme\":\"http://schemas.ogf.org/occi/infrastructure#\",\"term\":\"compute\",\"title\":\"compute resource\",\"attributes\":{\"occi\":{\"core\":{\"id\":{\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\"},\"title\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"summary\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"}},\"compute\":{\"architecture\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"x86|x64\"},\"cores\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"hostname\":{\"type\":\"string\",\"required\":false,\"mutable\":true,\"pattern\":\"(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]*[a-zA-Z0-9])\\\\.)*\"},\"memory\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"speed\":{\"type\":\"number\",\"required\":false,\"mutable\":true,\"pattern\":\".*\"},\"state\":{\"default\":\"inactive\",\"type\":\"string\",\"required\":false,\"mutable\":false,\"pattern\":\"inactive|active|suspended|error\"}}}}}],\"links\":[{\"kind\":\"http://schemas.ogf.org/occi/core#link\",\"attributes\":{\"occi\":{\"core\":{\"id\":\"#{collection.links.first.id}\"}}},\"id\":\"#{collection.links.first.id}\",\"rel\":\"http://schemas.ogf.org/occi/core#link\"}],\"mixins\":[{\"location\":\"/mixin/my_mixin/\",\"scheme\":\"http://example.com/occi/tags#\",\"term\":\"my_mixin\",\"attributes\":{}}]}"
798
798
 
799
799
  hash=Hashie::Mash.new(JSON.parse(expected))
800
800
  expect(collection.as_json).to eql(hash)
@@ -811,7 +811,7 @@ module Occi
811
811
  collection.resources << Occi::Core::Resource.new
812
812
  collection.links << Occi::Core::Link.new
813
813
 
814
- 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 occi.core.title occi.core.summary occi.compute.architecture occi.compute.cores occi.compute.hostname occi.compute.memory occi.compute.speed occi.compute.state\";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=\"/mixins/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\""
814
+ 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 occi.core.title occi.core.summary occi.compute.architecture occi.compute.cores occi.compute.hostname occi.compute.memory occi.compute.speed occi.compute.state\";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\""
815
815
  expect(collection.to_text).to eql(expected)
816
816
  end
817
817
 
@@ -828,7 +828,7 @@ module Occi
828
828
 
829
829
  it 'renders text correctly, mixins only' do
830
830
  collection.mixins << "http://example.com/occi/tags#my_mixin"
831
- expected = "Category: my_mixin;scheme=\"http://example.com/occi/tags#\";class=\"mixin\";location=\"/mixins/my_mixin/\"\n"
831
+ expected = "Category: my_mixin;scheme=\"http://example.com/occi/tags#\";class=\"mixin\";location=\"/mixin/my_mixin/\"\n"
832
832
  expect(collection.to_text).to eql(expected)
833
833
  end
834
834
 
@@ -95,6 +95,8 @@ module Occi
95
95
  context '#to_hash' do
96
96
  it 'makes a correct rendering' do
97
97
  expected = Hash.new
98
+
99
+ expected["default"] = "defaultvalue"
98
100
  expected["description"] = "Required string value"
99
101
  expected["mutable"] = true
100
102
  expected["pattern"] = "[adefltuv]+"
@@ -108,6 +110,8 @@ module Occi
108
110
  context '#as_json' do
109
111
  it 'makes a correct rendering' do
110
112
  expected = Hash.new
113
+
114
+ expected["default"] = "defaultvalue"
111
115
  expected["description"] = "Required string value"
112
116
  expected["mutable"] = true
113
117
  expected["pattern"] = "[adefltuv]+"
@@ -132,7 +136,7 @@ module Occi
132
136
 
133
137
  context '#to_json' do
134
138
  it 'makes a correct rendering' do
135
- expected = '{"type":"string","required":true,"mutable":true,"pattern":"[adefltuv]+","description":"Required string value"}'
139
+ expected = '{"default":"defaultvalue","type":"string","required":true,"mutable":true,"pattern":"[adefltuv]+","description":"Required string value"}'
136
140
  expect(properties.to_json).to eql expected
137
141
  end
138
142
  end
@@ -245,19 +245,12 @@ module Occi
245
245
  end
246
246
  end
247
247
 
248
- context 'for inexistent directory' do
248
+ context 'for nonexistent directory' do
249
249
  it 'fails gracefully' do
250
250
  model = Occi::Model.new
251
251
  expect{ model.register_files('this/directory/does/not/exist') }.to raise_exception(ArgumentError)
252
252
  end
253
253
  end
254
-
255
- context 'for invalid input' do
256
- it 'fails gracefully' do
257
- model = Occi::Model.new
258
- expect{ model.register_files('spec/occi') }.to raise_exception(ArgumentError)
259
- end
260
- end
261
254
  end
262
255
  end
263
256
  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.1
4
+ version: 4.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-12-22 00:00:00.000000000 Z
14
+ date: 2013-12-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json
@@ -276,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
276
276
  version: '0'
277
277
  segments:
278
278
  - 0
279
- hash: 499425288869008081
279
+ hash: 118686830744215401
280
280
  requirements: []
281
281
  rubyforge_project:
282
282
  rubygems_version: 1.8.25