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 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