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 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
- if (cred = new_obj.certificate)
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} "
@@ -78,13 +78,4 @@ module OmfRc::ResourceProxy::Node
78
78
  end
79
79
  end
80
80
  # @!endgroup
81
-
82
- # @!macro group_prop
83
- #
84
- # @!attribute [rw] node_index
85
- # Node Index
86
- # @!macro prop
87
- property :node_index
88
- # @!endgroup
89
-
90
81
  end
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
- @opts[:factories].each do |f|
78
- if (req = f[:require])
79
- begin
80
- info "Try to load resource module '#{req}'"
81
- require(req)
82
- rescue LoadError => e
83
- error e.message
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
@@ -1,5 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
+ $:.push File.expand_path("../../omf_common/lib", __FILE__)
3
4
  require "omf_rc/version"
4
5
 
5
6
  Gem::Specification.new do |s|
@@ -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.0
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-02-19 00:00:00.000000000 Z
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.0
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.0
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: '0'
211
+ version: 1.3.1
226
212
  requirements: []
227
213
  rubyforge_project: omf_rc
228
- rubygems_version: 1.8.23
214
+ rubygems_version: 2.1.11
229
215
  signing_key:
230
- specification_version: 3
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