omf_rc 6.1.0 → 6.1.1.pre
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 +7 -0
- data/config/config_node.yml.example +24 -0
- data/config/instageni.yaml +23 -0
- data/lib/omf_rc/resource_proxy/abstract_resource.rb +37 -1
- data/lib/omf_rc/resource_proxy/application.rb +4 -0
- data/lib/omf_rc/resource_proxy/node.rb +0 -9
- data/lib/omf_rc/runner.rb +21 -9
- data/omf_rc.gemspec +1 -0
- data/test/omf_rc/resource_proxy/abstract_resource_spec.rb +2 -2
- metadata +48 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b123d9324378ac7fa321bdc357c2ab03a91b46a6
|
4
|
+
data.tar.gz: 2601efc56f186f3c27d54bc6a8f22bf43d63cea8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5ac15dbd1a156fe9b10cf57311991a51255bfbe4e754684e2c932cd9936f1aa6672b5998417f87db10fbb863724931778d084efac127ffff77f5327a8ddcf32d
|
7
|
+
data.tar.gz: 3a8d626b64282e4b42f87257cfda1469b724b9f5f4871dad3cb42011782b8e67fcf343f528cdcb223181805385f1e69fa9f0dc46612ce39cff9be7c800fc057b
|
@@ -0,0 +1,24 @@
|
|
1
|
+
---
|
2
|
+
uri: xmpp://<%= "#{Socket.gethostname}-#{Process.pid}" %>:<%= "#{Socket.gethostname}-#{Process.pid}" %>@localhost
|
3
|
+
environment: development
|
4
|
+
debug: false
|
5
|
+
|
6
|
+
resources:
|
7
|
+
- type: node
|
8
|
+
uid: <%= Socket.gethostname %>
|
9
|
+
|
10
|
+
add_default_factories: false # Not loading default type factories
|
11
|
+
|
12
|
+
factories: # Additional resources which can be created by this RC
|
13
|
+
load: [
|
14
|
+
'omf_rc/resource_proxy/node',
|
15
|
+
'omf_rc/resource_proxy/net',
|
16
|
+
'omf_rc/resource_proxy/wlan',
|
17
|
+
'omf_rc/resource_proxy/application'
|
18
|
+
]
|
19
|
+
defaults:
|
20
|
+
application:
|
21
|
+
env:
|
22
|
+
PATH: "<%= ENV["rvm_bin_path"] %>:/opt/local/bin"
|
23
|
+
GEM_HOME: "<%= ENV["GEM_HOME"] %>"
|
24
|
+
GEM_PATH: "<%= ENV["_ORIGINAL_GEM_PATH"] %>"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
---
|
2
|
+
uri: <%= File.read("/var/omf/communication_url").strip %>
|
3
|
+
environment: production
|
4
|
+
debug: false
|
5
|
+
|
6
|
+
resources:
|
7
|
+
- type: node
|
8
|
+
uid: <%= File.read("/var/omf/node_uri").strip %>
|
9
|
+
|
10
|
+
add_default_factories: false # Not loading default type factories
|
11
|
+
|
12
|
+
factories: # Additional resources which can be created by this RC
|
13
|
+
load: [
|
14
|
+
'omf_rc/resource_proxy/node',
|
15
|
+
'omf_rc/resource_proxy/net',
|
16
|
+
'omf_rc/resource_proxy/application'
|
17
|
+
]
|
18
|
+
defaults:
|
19
|
+
application:
|
20
|
+
env:
|
21
|
+
PATH: "<%= ENV["rvm_bin_path"] %>:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
22
|
+
GEM_HOME: "<%= ENV["GEM_HOME"] %>"
|
23
|
+
GEM_PATH: "<%= ENV["_ORIGINAL_GEM_PATH"] || ENV["GEM_PATH"] %>"
|
@@ -79,6 +79,17 @@ class OmfRc::ResourceProxy::AbstractResource
|
|
79
79
|
create_children_resources: true
|
80
80
|
}
|
81
81
|
|
82
|
+
@@defaults = {}
|
83
|
+
|
84
|
+
# Set defaults for a particular resource class. Can be retrieved with 'defaults'
|
85
|
+
# in the instance.
|
86
|
+
#
|
87
|
+
# @param [Hash] defaults resource class defaults. Interpretation is up to proxy implementation.
|
88
|
+
#
|
89
|
+
def self.set_defaults(resource_type, defaults)
|
90
|
+
@@defaults[resource_type.to_sym] = defaults
|
91
|
+
end
|
92
|
+
|
82
93
|
attr_accessor :uid, :hrn, :type, :property, :certificate
|
83
94
|
attr_reader :opts, :children, :membership, :creation_opts, :membership_topics, :topics
|
84
95
|
|
@@ -106,6 +117,7 @@ class OmfRc::ResourceProxy::AbstractResource
|
|
106
117
|
@uid = (@opts.delete(:uid) || SecureRandom.uuid).to_s
|
107
118
|
@hrn = @opts.delete(:hrn)
|
108
119
|
@hrn = @hrn.to_s if @hrn
|
120
|
+
@node_index = nil
|
109
121
|
|
110
122
|
@children = []
|
111
123
|
@membership = []
|
@@ -171,6 +183,16 @@ class OmfRc::ResourceProxy::AbstractResource
|
|
171
183
|
end
|
172
184
|
end
|
173
185
|
|
186
|
+
# Set defaults for a particular resource class. Can be retrieved with 'defaults'
|
187
|
+
# in the instance.
|
188
|
+
#
|
189
|
+
# @param [Hash] defaults resource class defaults. Interpretation is up to proxy implementation.
|
190
|
+
#
|
191
|
+
def defaults(key = nil)
|
192
|
+
d = @@defaults[@type] || {}
|
193
|
+
key ? d[key] : d
|
194
|
+
end
|
195
|
+
|
174
196
|
# Return resource' pubsub topic it has subscribed.
|
175
197
|
def resource_topic
|
176
198
|
if @topics.empty?
|
@@ -328,6 +350,11 @@ class OmfRc::ResourceProxy::AbstractResource
|
|
328
350
|
@membership
|
329
351
|
end
|
330
352
|
|
353
|
+
# Query resource's index number
|
354
|
+
def request_res_index(*args)
|
355
|
+
@res_index
|
356
|
+
end
|
357
|
+
|
331
358
|
# Request child resources
|
332
359
|
#
|
333
360
|
# @return [Hashie::Mash] child resource mash with uid and hrn
|
@@ -398,6 +425,15 @@ class OmfRc::ResourceProxy::AbstractResource
|
|
398
425
|
@membership
|
399
426
|
end
|
400
427
|
|
428
|
+
# Set the resource index, overwriting any previous index
|
429
|
+
# The index is a unique integer for each resource in an experiment
|
430
|
+
# It's used e.g. to give each node an IP address such as x.x.x.res_index
|
431
|
+
#
|
432
|
+
# @param [String|Array] args name of group topic/topics
|
433
|
+
def configure_res_index(index)
|
434
|
+
@res_index = index
|
435
|
+
end
|
436
|
+
|
401
437
|
# @!endgroup
|
402
438
|
|
403
439
|
# Parse omf message and execute as instructed by the message
|
@@ -496,7 +532,7 @@ class OmfRc::ResourceProxy::AbstractResource
|
|
496
532
|
# Getting property status, for preparing inform msg
|
497
533
|
add_prop_status_to_response(new_obj, msg_props.keys, response)
|
498
534
|
|
499
|
-
|
535
|
+
if (cred = new_obj.certificate)
|
500
536
|
response[:cert] = cred.to_pem_compact
|
501
537
|
end
|
502
538
|
# self here is the parent
|
@@ -473,6 +473,10 @@ module OmfRc::ResourceProxy::Application
|
|
473
473
|
# @!macro work
|
474
474
|
work('build_command_line') do |res|
|
475
475
|
cmd_line = "env -i " # Start with a 'clean' environment
|
476
|
+
if env = res.defaults(:env)
|
477
|
+
env = env.map {|k,v| "#{k.to_s.upcase}=#{v}"}.join(' ')
|
478
|
+
cmd_line += "#{env} "
|
479
|
+
end
|
476
480
|
res.property.environments.each do |e,v|
|
477
481
|
val = v.kind_of?(String) ? "'#{v}'" : v
|
478
482
|
cmd_line += "#{e.to_s.upcase}=#{val} "
|
data/lib/omf_rc/runner.rb
CHANGED
@@ -34,7 +34,7 @@ module OmfRc
|
|
34
34
|
@def_opts = Mash.new(
|
35
35
|
environment: 'production',
|
36
36
|
resources: [ { type: :node, uid: @node_id }],
|
37
|
-
factories:
|
37
|
+
factories: {},
|
38
38
|
communication: { url: "xmpp://#{@node_id}-#{Process.pid}:#{@node_id}-#{Process.pid}@localhost" },
|
39
39
|
add_default_factories: true,
|
40
40
|
)
|
@@ -73,14 +73,26 @@ module OmfRc
|
|
73
73
|
if @opts[:add_default_factories] != false
|
74
74
|
OmfRc::ResourceFactory.load_default_resource_proxies
|
75
75
|
end
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
76
|
+
if f = @opts[:factories]
|
77
|
+
if (loads = f[:load])
|
78
|
+
loads.each do |m|
|
79
|
+
begin
|
80
|
+
info "Try to load proxy module '#{m}'"
|
81
|
+
require(m)
|
82
|
+
rescue LoadError => e
|
83
|
+
error e.message
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
if (inits = f[:defaults])
|
88
|
+
pl = OmfRc::ResourceFactory.proxy_list
|
89
|
+
inits.each do |m, v|
|
90
|
+
unless p = pl[m]
|
91
|
+
error "Can't find proxy '#{m}' to set defaults for"
|
92
|
+
end
|
93
|
+
info "Setting proxy defaults for '#{m}'"
|
94
|
+
debug "Setting proxy defaults for '#{m}' to '#{v}'"
|
95
|
+
OmfRc::ResourceProxy::AbstractResource.set_defaults(m, v)
|
84
96
|
end
|
85
97
|
end
|
86
98
|
end
|
data/omf_rc.gemspec
CHANGED
@@ -65,9 +65,9 @@ describe AbstractResource do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
it "must returned all the properties can be requested & configured" do
|
68
|
-
@parent.request_available_properties.configure.must_equal [:p0, :membership]
|
68
|
+
@parent.request_available_properties.configure.must_equal [:p0, :membership, :res_index]
|
69
69
|
@parent.request_available_properties.request.must_equal(
|
70
|
-
[:p0, :test_exception, :supported_children_type, :uid, :type, :hrn, :name, :membership, :child_resources]
|
70
|
+
[:p0, :test_exception, :supported_children_type, :uid, :type, :hrn, :name, :membership, :res_index, :child_resources]
|
71
71
|
)
|
72
72
|
end
|
73
73
|
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omf_rc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.1.
|
5
|
-
prerelease:
|
4
|
+
version: 6.1.1.pre
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- NICTA
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-03-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: minitest
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: em-minitest-spec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,55 +41,48 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: pry
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: simplecov
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: omf_common
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - '='
|
84
74
|
- !ruby/object:Gem::Version
|
85
|
-
version: 6.1.
|
75
|
+
version: 6.1.1.pre
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - '='
|
92
81
|
- !ruby/object:Gem::Version
|
93
|
-
version: 6.1.
|
82
|
+
version: 6.1.1.pre
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: cocaine
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -110,17 +97,15 @@ dependencies:
|
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: mocha
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
description: Resource controller of OMF, a generic framework for controlling and managing
|
@@ -141,8 +126,10 @@ files:
|
|
141
126
|
- bin/omf_rc
|
142
127
|
- bin/plc_trigger_omf_rc
|
143
128
|
- config/config.yml
|
129
|
+
- config/config_node.yml.example
|
144
130
|
- config/config_with_authentication.yml.example
|
145
131
|
- config/config_with_extensions.yml.example
|
132
|
+
- config/instageni.yaml
|
146
133
|
- init/angstrom
|
147
134
|
- init/debian
|
148
135
|
- init/fedora
|
@@ -207,26 +194,54 @@ files:
|
|
207
194
|
homepage: http://omf.mytestbed.net
|
208
195
|
licenses:
|
209
196
|
- MIT
|
197
|
+
metadata: {}
|
210
198
|
post_install_message:
|
211
199
|
rdoc_options: []
|
212
200
|
require_paths:
|
213
201
|
- lib
|
214
202
|
required_ruby_version: !ruby/object:Gem::Requirement
|
215
|
-
none: false
|
216
203
|
requirements:
|
217
|
-
- -
|
204
|
+
- - '>='
|
218
205
|
- !ruby/object:Gem::Version
|
219
206
|
version: 1.9.3
|
220
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
221
|
-
none: false
|
222
208
|
requirements:
|
223
|
-
- -
|
209
|
+
- - '>'
|
224
210
|
- !ruby/object:Gem::Version
|
225
|
-
version:
|
211
|
+
version: 1.3.1
|
226
212
|
requirements: []
|
227
213
|
rubyforge_project: omf_rc
|
228
|
-
rubygems_version: 1.
|
214
|
+
rubygems_version: 2.1.11
|
229
215
|
signing_key:
|
230
|
-
specification_version:
|
216
|
+
specification_version: 4
|
231
217
|
summary: OMF resource controller
|
232
|
-
test_files:
|
218
|
+
test_files:
|
219
|
+
- test/fixture/ip/addr_show
|
220
|
+
- test/fixture/iw/help
|
221
|
+
- test/fixture/iw/info
|
222
|
+
- test/fixture/iw/link
|
223
|
+
- test/fixture/lsmod
|
224
|
+
- test/fixture/omf_rc.simple.yml
|
225
|
+
- test/fixture/omf_rc.yml
|
226
|
+
- test/fixture/oml.hash
|
227
|
+
- test/fixture/oml.spec
|
228
|
+
- test/fixture/oml.xml
|
229
|
+
- test/fixture/sys/class/ieee80211/phy0/device/uevent
|
230
|
+
- test/fixture/sys/class/ieee80211/phy0/uevent
|
231
|
+
- test/fixture/sys/class/net/eth0/device/uevent
|
232
|
+
- test/fixture/sys/class/net/eth0/uevent
|
233
|
+
- test/fixture/sys/class/net/wlan0/device/uevent
|
234
|
+
- test/fixture/sys/class/net/wlan0/uevent
|
235
|
+
- test/omf_rc/deferred_process_spec.rb
|
236
|
+
- test/omf_rc/message_process_error_spec.rb
|
237
|
+
- test/omf_rc/resource_factory_spec.rb
|
238
|
+
- test/omf_rc/resource_proxy/abstract_resource_spec.rb
|
239
|
+
- test/omf_rc/resource_proxy/application_spec.rb
|
240
|
+
- test/omf_rc/resource_proxy/node_spec.rb
|
241
|
+
- test/omf_rc/resource_proxy_dsl_spec.rb
|
242
|
+
- test/omf_rc/runner_spec.rb
|
243
|
+
- test/omf_rc/util/common_tools_spec.rb
|
244
|
+
- test/omf_rc/util/ip_spec.rb
|
245
|
+
- test/omf_rc/util/iw_spec.rb
|
246
|
+
- test/omf_rc/util/mod_spec.rb
|
247
|
+
- test/test_helper.rb
|