omf_rc 6.1.0 → 6.1.1.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|