occi-core 5.0.0.beta.14 → 5.0.0.beta.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -8
- data/.rubocop_todo.yml +4 -0
- data/examples/rendering/instance.txt +2 -2
- data/examples/rendering/model.json +3 -3
- data/examples/rendering/model.txt +2 -2
- data/lib/occi/core/entity.rb +2 -2
- data/lib/occi/core/errors/instance_lookup_error.rb +11 -0
- data/lib/occi/core/helpers/mixin_selector.rb +40 -0
- data/lib/occi/core/parsers/json/entity.rb +2 -2
- data/lib/occi/core/parsers/text/entity.rb +2 -2
- data/lib/occi/core/version.rb +1 -1
- data/lib/occi/infrastructure/warehouse/kinds/networkinterface.yml +1 -1
- data/lib/occi/infrastructure/warehouse/kinds/storagelink.yml +1 -1
- data/lib/occi/infrastructure_ext/warehouse/kinds/securitygrouplink.yml +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56685f3371c8b94f29e3f4d87d12fda0a916250b
|
4
|
+
data.tar.gz: 8c41a4eeeda72c459f6041995728ca4690d1901a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b90567b813f12511e7b6b3199a8b05c78ba42f9c9603c0f0bcdf668ac2156ebe1d6ec746577181d034f8e4dde88f8188253368fd4a9af646c8e4135f10dbade
|
7
|
+
data.tar.gz: 94f29c71c5866fc05497a1fc2bfd903414be0694f90d4ee362c6a28357748a3a34d63113cf13ceaf0fce44e6a6cf77bac4c93967362172a0125578292bccee0d
|
data/.rubocop.yml
CHANGED
@@ -1,12 +1,5 @@
|
|
1
|
-
# This configuration was generated by
|
2
|
-
# `rubocop --auto-gen-config`
|
3
|
-
# on 2016-05-23 13:39:50 +0200 using RuboCop version 0.40.0.
|
4
|
-
# The point is for the user to remove these configuration records
|
5
|
-
# one by one as the offenses are removed from the code base.
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
8
|
-
|
9
1
|
require: rubocop-rspec
|
2
|
+
inherit_from: .rubocop_todo.yml
|
10
3
|
|
11
4
|
Metrics/ModuleLength:
|
12
5
|
Exclude:
|
data/.rubocop_todo.yml
ADDED
@@ -8,5 +8,5 @@ X-OCCI-Attribute: occi.compute.state="active"
|
|
8
8
|
Link: </compute/89878?action=stop>;rel="http://schemas.ogf.org/occi/infrastructure/compute/action#stop"
|
9
9
|
Link: </compute/89878?action=restart>;rel="http://schemas.ogf.org/occi/infrastructure/compute/action#restart"
|
10
10
|
Link: </compute/89878?action=suspend>;rel="http://schemas.ogf.org/occi/infrastructure/compute/action#suspend"
|
11
|
-
Link: </storage/5401>;rel="http://schemas.ogf.org/occi/infrastructure#storage";self="/
|
12
|
-
Link: </network/24>;rel="http://schemas.ogf.org/occi/infrastructure#network";self="/
|
11
|
+
Link: </storage/5401>;rel="http://schemas.ogf.org/occi/infrastructure#storage";self="/storagelink/compute_89878_disk_0";category="http://schemas.ogf.org/occi/infrastructure#storagelink";occi.core.id="compute_89878_disk_0";occi.core.title="38d42ca1-f4e9-5b5c-98de-37eb2d26301a";occi.core.target="/storage/5401";occi.core.source="/compute/89878";occi.storagelink.deviceid="/dev/vda";occi.storagelink.state="active"
|
12
|
+
Link: </network/24>;rel="http://schemas.ogf.org/occi/infrastructure#network";self="/networkinterface/compute_89878_nic_0";category="http://schemas.ogf.org/occi/infrastructure#networkinterface http://schemas.ogf.org/occi/infrastructure/networkinterface#ipnetworkinterface";occi.core.id="compute_89878_nic_0";occi.core.title="public";occi.core.target="/network/24";occi.core.source="/compute/89878";occi.networkinterface.interface="eth0";occi.networkinterface.mac="02:00:93:e4:f2:a3";occi.networkinterface.state="active";occi.networkinterface.address="172.16.0.1"
|
@@ -420,7 +420,7 @@
|
|
420
420
|
"type": "string"
|
421
421
|
}
|
422
422
|
},
|
423
|
-
"location": "/
|
423
|
+
"location": "/networkinterface/",
|
424
424
|
"parent": "http://schemas.ogf.org/occi/core#link",
|
425
425
|
"scheme": "http://schemas.ogf.org/occi/infrastructure#",
|
426
426
|
"term": "networkinterface",
|
@@ -531,7 +531,7 @@
|
|
531
531
|
"type": "string"
|
532
532
|
}
|
533
533
|
},
|
534
|
-
"location": "/
|
534
|
+
"location": "/storagelink/",
|
535
535
|
"parent": "http://schemas.ogf.org/occi/core#link",
|
536
536
|
"scheme": "http://schemas.ogf.org/occi/infrastructure#",
|
537
537
|
"term": "storagelink",
|
@@ -693,7 +693,7 @@
|
|
693
693
|
"type": "string"
|
694
694
|
}
|
695
695
|
},
|
696
|
-
"location": "/
|
696
|
+
"location": "/securitygrouplink/",
|
697
697
|
"parent": "http://schemas.ogf.org/occi/core#link",
|
698
698
|
"scheme": "http://schemas.ogf.org/occi/infrastructure#",
|
699
699
|
"term": "securitygrouplink",
|
@@ -4,8 +4,8 @@ Category: link;scheme="http://schemas.ogf.org/occi/core#";class="kind";title="li
|
|
4
4
|
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 required} 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"
|
5
5
|
Category: storage;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="storage resource";rel="http://schemas.ogf.org/occi/core#resource";location="/storage/";attributes="occi.core.id{immutable required} occi.core.title occi.core.summary occi.storage.size occi.storage.state";actions="http://schemas.ogf.org/occi/infrastructure/storage/action#online http://schemas.ogf.org/occi/infrastructure/storage/action#offline http://schemas.ogf.org/occi/infrastructure/storage/action#backup http://schemas.ogf.org/occi/infrastructure/storage/action#snapshot http://schemas.ogf.org/occi/infrastructure/storage/action#resize"
|
6
6
|
Category: network;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="network resource";rel="http://schemas.ogf.org/occi/core#resource";location="/network/";attributes="occi.core.id{immutable required} occi.core.title occi.core.summary occi.network.vlan occi.network.label occi.network.state{immutable}";actions="http://schemas.ogf.org/occi/infrastructure/network/action#up http://schemas.ogf.org/occi/infrastructure/network/action#down"
|
7
|
-
Category: networkinterface;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="networkinterface link";rel="http://schemas.ogf.org/occi/core#link";location="/
|
8
|
-
Category: storagelink;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="storage link";rel="http://schemas.ogf.org/occi/core#link";location="/
|
7
|
+
Category: networkinterface;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="networkinterface link";rel="http://schemas.ogf.org/occi/core#link";location="/networkinterface/";attributes="occi.core.id{immutable required} occi.core.title occi.core.target occi.core.source{required} occi.networkinterface.interface{immutable} occi.networkinterface.mac occi.networkinterface.state{immutable}";actions="http://schemas.ogf.org/occi/infrastructure/networkinterface/action#up http://schemas.ogf.org/occi/infrastructure/networkinterface/action#down"
|
8
|
+
Category: storagelink;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="storage link";rel="http://schemas.ogf.org/occi/core#link";location="/storagelink/";attributes="occi.core.id{immutable required} occi.core.title occi.core.target occi.core.source{required} occi.storagelink.deviceid occi.storagelink.mountpoint occi.storagelink.state{immutable}";actions="http://schemas.ogf.org/occi/infrastructure/storagelink/action#online http://schemas.ogf.org/occi/infrastructure/storagelink/action#offline"
|
9
9
|
Category: resource_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="resource template";location="/mixin/resource_tpl/"
|
10
10
|
Category: os_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="operating system template";location="/mixin/os_tpl/"
|
11
11
|
Category: ipnetwork;scheme="http://schemas.ogf.org/occi/infrastructure/network#";class="mixin";title="IP network mixin";location="/mixin/ipnetwork/";attributes="occi.network.address occi.network.gateway occi.network.allocation"
|
data/lib/occi/core/entity.rb
CHANGED
@@ -22,13 +22,13 @@ module Occi
|
|
22
22
|
include Helpers::InstanceAttributesAccessor
|
23
23
|
include Helpers::ArgumentValidator
|
24
24
|
include Helpers::InstanceAttributeResetter
|
25
|
+
include Helpers::MixinSelector
|
25
26
|
|
26
27
|
attr_accessor :kind, :actions, :attributes, :mixins
|
27
28
|
attr_writer :location
|
28
29
|
|
29
30
|
ERRORS = [
|
30
|
-
Occi::Core::Errors::AttributeValidationError,
|
31
|
-
Occi::Core::Errors::AttributeDefinitionError,
|
31
|
+
Occi::Core::Errors::AttributeValidationError, Occi::Core::Errors::AttributeDefinitionError,
|
32
32
|
Occi::Core::Errors::InstanceValidationError
|
33
33
|
].freeze
|
34
34
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Occi
|
2
|
+
module Core
|
3
|
+
module Helpers
|
4
|
+
# Introduces mixin-based helpers to every receiver
|
5
|
+
# class. Provides methods to access mixin sub-sets
|
6
|
+
# defined by dependencies.
|
7
|
+
#
|
8
|
+
# @author Boris Parak <parak@cesnet.cz>
|
9
|
+
module MixinSelector
|
10
|
+
# Selects a set of mixins defined by a common dependence. This dependence
|
11
|
+
# must be provided as `filter` and be an instance of `Occi::Core::Mixin` or
|
12
|
+
# its subclass.
|
13
|
+
#
|
14
|
+
# @param filter [Occi::Core::Mixin] mixin to filter by
|
15
|
+
# @return [Set] found mixins
|
16
|
+
def select_mixins(filter)
|
17
|
+
Set.new(mixins.select { |m| m.depends?(filter) })
|
18
|
+
end
|
19
|
+
|
20
|
+
# Selects at most one mixin defined by the given dependence. This dependence
|
21
|
+
# must be provided as `filter` and be an instance of `Occi::Core::Mixin` or
|
22
|
+
# its subclass.
|
23
|
+
#
|
24
|
+
# @param filter [Occi::Core::Mixin] mixin to filter by
|
25
|
+
# @return [Occi::Core::Mixin] found mixin
|
26
|
+
# @return [NilClass] if such mixin is not found
|
27
|
+
def select_mixin(filter)
|
28
|
+
mixins.detect { |m| m.depends?(filter) }
|
29
|
+
end
|
30
|
+
|
31
|
+
# Selects exactly one mixin or raises an error.
|
32
|
+
# @see `select_mixin`
|
33
|
+
def select_mixin!(filter)
|
34
|
+
select_mixin(filter) \
|
35
|
+
|| raise(Occi::Core::Errors::InstanceLookupError, "Mixin dependent on #{filter} not found")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -25,8 +25,8 @@ module Occi
|
|
25
25
|
TYPECASTER_HASH = {
|
26
26
|
IPAddr => ->(val) { IPAddr.new val },
|
27
27
|
URI => ->(val) { URI.parse val },
|
28
|
-
Float => ->(val) { val
|
29
|
-
Integer => ->(val) { val
|
28
|
+
Float => ->(val) { Float(val) rescue raise(Occi::Core::Errors::ParsingError, "Wrong value #{val}") },
|
29
|
+
Integer => ->(val) { Integer(val) rescue raise(Occi::Core::Errors::ParsingError, "Wrong value #{val}") }
|
30
30
|
}.freeze
|
31
31
|
|
32
32
|
attr_reader :model
|
@@ -24,7 +24,7 @@ module Occi
|
|
24
24
|
# Typecasting lambdas
|
25
25
|
DEFAULT_LAMBDA = ->(val) { raise "#{self} -> Cannot typecast #{val.inspect} to an unknown type" }
|
26
26
|
|
27
|
-
FLOAT_LAMBDA = ->(val) { val
|
27
|
+
FLOAT_LAMBDA = ->(val) { Float(val) rescue raise(Occi::Core::Errors::ParsingError, "Wrong value #{val}") }
|
28
28
|
JSON_LAMBDA = ->(val) { JSON.parse(val.gsub('\"', '"')) }
|
29
29
|
|
30
30
|
TYPECASTER_HASH = {
|
@@ -33,7 +33,7 @@ module Occi
|
|
33
33
|
String => ->(val) { val },
|
34
34
|
Float => FLOAT_LAMBDA,
|
35
35
|
Numeric => FLOAT_LAMBDA,
|
36
|
-
Integer => ->(val) { val
|
36
|
+
Integer => ->(val) { Integer(val) rescue raise(Occi::Core::Errors::ParsingError, "Wrong value #{val}") },
|
37
37
|
Boolean => ->(val) { val.casecmp('true') || val.casecmp('yes') },
|
38
38
|
Array => JSON_LAMBDA,
|
39
39
|
Hash => JSON_LAMBDA
|
data/lib/occi/core/version.rb
CHANGED
@@ -3,7 +3,7 @@ module Occi
|
|
3
3
|
MAJOR_VERSION = 5 # Major update constant
|
4
4
|
MINOR_VERSION = 0 # Minor update constant
|
5
5
|
PATCH_VERSION = 0 # Patch/Fix version constant
|
6
|
-
STAGE_VERSION = 'beta.
|
6
|
+
STAGE_VERSION = 'beta.15'.freeze # use `nil` for production releases
|
7
7
|
|
8
8
|
unless defined?(::Occi::Core::VERSION)
|
9
9
|
VERSION = [
|
@@ -3,7 +3,7 @@ term: networkinterface
|
|
3
3
|
schema: http://schemas.ogf.org/occi/infrastructure#
|
4
4
|
title: OCCI Infrastructure NetworkInterface
|
5
5
|
parent: http://schemas.ogf.org/occi/core#link
|
6
|
-
location: /
|
6
|
+
location: /networkinterface/
|
7
7
|
attributes:
|
8
8
|
- occi.networkinterface.interface
|
9
9
|
- occi.networkinterface.mac
|
@@ -3,7 +3,7 @@ term: storagelink
|
|
3
3
|
schema: http://schemas.ogf.org/occi/infrastructure#
|
4
4
|
title: OCCI Infrastructure StorageLink
|
5
5
|
parent: http://schemas.ogf.org/occi/core#link
|
6
|
-
location: /
|
6
|
+
location: /storagelink/
|
7
7
|
attributes:
|
8
8
|
- occi.storagelink.deviceid
|
9
9
|
- occi.storagelink.mountpoint
|
@@ -3,7 +3,7 @@ term: securitygrouplink
|
|
3
3
|
schema: http://schemas.ogf.org/occi/infrastructure#
|
4
4
|
title: OCCI Infrastructure Security Group link
|
5
5
|
parent: http://schemas.ogf.org/occi/core#link
|
6
|
-
location: /
|
6
|
+
location: /securitygrouplink/
|
7
7
|
attributes:
|
8
8
|
- occi.securitygrouplink.state
|
9
9
|
- occi.securitygrouplink.state.message
|
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: 5.0.0.beta.
|
4
|
+
version: 5.0.0.beta.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boris Parak
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-08-
|
13
|
+
date: 2017-08-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json
|
@@ -306,6 +306,7 @@ files:
|
|
306
306
|
- ".gitignore"
|
307
307
|
- ".rspec"
|
308
308
|
- ".rubocop.yml"
|
309
|
+
- ".rubocop_todo.yml"
|
309
310
|
- ".travis.yml"
|
310
311
|
- AUTHORS
|
311
312
|
- CHANGELOG.md
|
@@ -352,6 +353,7 @@ files:
|
|
352
353
|
- lib/occi/core/errors/attribute_validation_error.rb
|
353
354
|
- lib/occi/core/errors/category_validation_error.rb
|
354
355
|
- lib/occi/core/errors/collection_lookup_error.rb
|
356
|
+
- lib/occi/core/errors/instance_lookup_error.rb
|
355
357
|
- lib/occi/core/errors/instance_validation_error.rb
|
356
358
|
- lib/occi/core/errors/location_validation_error.rb
|
357
359
|
- lib/occi/core/errors/mandatory_argument_error.rb
|
@@ -371,6 +373,7 @@ files:
|
|
371
373
|
- lib/occi/core/helpers/instance_attribute_resetter.rb
|
372
374
|
- lib/occi/core/helpers/instance_attributes_accessor.rb
|
373
375
|
- lib/occi/core/helpers/locatable.rb
|
376
|
+
- lib/occi/core/helpers/mixin_selector.rb
|
374
377
|
- lib/occi/core/helpers/parser_dereferencer.rb
|
375
378
|
- lib/occi/core/helpers/raw_json_parser.rb
|
376
379
|
- lib/occi/core/helpers/renderable.rb
|