omf_rc 6.0.8.pre.2 → 6.0.8.pre.3

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZWRjNDNiYzBkM2RiMTMzMGEzZjZlZGMyM2JmYmVlYWE3MmQ1YWZkNQ==
5
- data.tar.gz: !binary |-
6
- NWJiMTRmYzA1ODVhYzMwZGEyNzUxZmQwMDc4YzA5ZTkwY2I5MmEwMg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ODI4YWUzNzdlZjFmM2VlNDc0MjU5ZjcxMWMzZGM5ZTBhNGU1OGU1MzRhZjVl
10
- NDU3ZGRjZjM5MzQ1NjQzN2RiY2E3NjU0NzRmZGNjZjVkYjQ3ZTA3Y2FjMTdm
11
- YTY0MjdjZjQ0ZTQzOGU2OTk1YzMzYTdjYTdhY2NjN2JmMWRmOGM=
12
- data.tar.gz: !binary |-
13
- YzdiYjNjMmUyMzdkYmQwMDIwODM3YmNjMDRiOTc0MTU1MWE2YzhjZDU3Nzgy
14
- MGM2MDM2Mjk1YmQxYWZjMDQ0NGExMDlmZjRiYjU0MDVjMzI1OGFkOWM5NWJk
15
- MzU5MTJkODU1NTQ1NGIwMGI5ZjBkY2EwNWU3MmUwNTk1MTE3ZmM=
2
+ SHA1:
3
+ metadata.gz: 5a92080ab8ac073244c065f60d87806a27fc685b
4
+ data.tar.gz: a8948f02267a30d879352a6dc03181137764d92e
5
+ SHA512:
6
+ metadata.gz: 8f1dd69b9f12dfb89a45456da944ef20825f8e35eb2647fe368243fc9454d54149ee8aaa7d60ceb1ab59d8b371c78d3583a0535350cfd16c5980df87d08c6286
7
+ data.tar.gz: 458b124483db9d371d4850064058e2c95bbfbe42cd6c146ad36bec6e9808968cea0f072682d1b1327b35ee28a2fabe2b7e5ebfeb547b22060353195093404193
data/bin/omf_rc CHANGED
@@ -1,5 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ # Copyright (c) 2012 National ICT Australia Limited (NICTA).
4
+ # This software may be used and distributed solely under the terms of the MIT license (License).
5
+ # You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
6
+ # By downloading or using this software you accept the terms and the liability disclaimer in the License.
7
+
8
+ puts "OMF Resource Controller - Copyright (c) 2012-13 National ICT Australia Limited (NICTA)"
3
9
  abort "Please use Ruby 1.9.3 or higher" if RUBY_VERSION < "1.9.3"
4
10
 
5
11
  # The following is to work around a bug in activesupport triggered by
@@ -2,12 +2,17 @@
2
2
  # default topic name is this machine's hostname
3
3
  # default xmpp user name/password is "hostname-pid"
4
4
  # this is to ensure that every RC has its own topic and XMPP account
5
- :uid: <%= Socket.gethostname %>
6
- :uri: xmpp://<%= "#{Socket.gethostname}-#{Process.pid}" %>:<%= "#{Socket.gethostname}-#{Process.pid}" %>@localhost
7
- :environment: production
8
- :debug: false
5
+ uid: <%= Socket.gethostname %>
6
+ uri: xmpp://<%= "#{Socket.gethostname}-#{Process.pid}" %>:<%= "#{Socket.gethostname}-#{Process.pid}" %>@localhost
7
+ environment: production
8
+ debug: false
9
+
10
+ credentials:
11
+ root_cert_dir: /path_to_folder_contains_root_certs
12
+ entity_cert: /path_to_cert_used_by_this_rc
13
+ entity_key: /path_to_private_key_used_by_this_rc
14
+
15
+ communication:
16
+ auth:
17
+ authenticate: true
9
18
 
10
- :auth:
11
- :root_cert_dir: /path_to_folder_contains_root_certs
12
- :entity_cert: /path_to_cert_used_by_this_rc
13
- :entity_key: /path_to_private_key_used_by_this_rc
@@ -106,6 +106,7 @@ class OmfRc::ResourceProxy::AbstractResource
106
106
  @uid = (@opts.delete(:uid) || SecureRandom.uuid).to_s
107
107
  @hrn = @opts.delete(:hrn)
108
108
  @hrn = @hrn.to_s if @hrn
109
+ @node_index = nil
109
110
 
110
111
  @children = []
111
112
  @membership = []
@@ -118,7 +119,8 @@ class OmfRc::ResourceProxy::AbstractResource
118
119
 
119
120
  if t.error?
120
121
  warn "Could not create topic '#{uid}', will shutdown, trying to clean up old topics. Please start it again once it has been shutdown."
121
- OmfCommon.comm.disconnect()
122
+ OmfCommon.comm.disconnect
123
+ OmfCommon.eventloop.stop
122
124
  else
123
125
  begin
124
126
  # Setup authentication related properties
@@ -341,18 +343,34 @@ class OmfRc::ResourceProxy::AbstractResource
341
343
 
342
344
  # Make resource part of the group topic, it will overwrite existing membership array
343
345
  #
344
- # @param [String|Array] args name of group topic/topics
346
+ # @param [String|Array|Hash] args name of group topic/topics
347
+ #
348
+ # @example Explaining argument values
349
+ #
350
+ # # Join a single group
351
+ # "group_1"
352
+ #
353
+ # # Join multiple group
354
+ # ["group_1", "group_2"]
355
+ #
356
+ # # Leave a single group or multiple groups
357
+ # { leave: ["group_1", "group_2"] } or { leave: "group_1" }
345
358
  def configure_membership(*args)
346
- new_membership = [args[0]].flatten
359
+ case args[0]
360
+ when Symbol, String, Array
361
+ new_membership = [args[0]].flatten.compact
362
+ when Hash
363
+ leave_membership = [args[0][:leave]].flatten.compact
364
+ end
347
365
 
348
- new_membership.each do |new_m|
366
+ new_membership && new_membership.each do |new_m|
349
367
  unless @membership.include?(new_m)
350
368
  OmfCommon.comm.subscribe(new_m) do |t|
351
369
  if t.error?
352
370
  warn "Group #{new_m} disappeared"
353
- #EM.next_tick do
354
- # @membership.delete(m)
355
- #end
371
+ self.synchronize do
372
+ @membership.delete(m)
373
+ end
356
374
  else
357
375
  self.synchronize do
358
376
  @membership << new_m
@@ -367,9 +385,29 @@ class OmfRc::ResourceProxy::AbstractResource
367
385
  end
368
386
  end
369
387
  end
388
+
389
+ leave_membership && leave_membership.each do |leave_m|
390
+ if (leave_m_topic = @membership_topics[leave_m])
391
+ self.synchronize do
392
+ leave_m_topic.unsubscribe(leave_m)
393
+ @membership.delete(leave_m)
394
+ @membership_topics.delete_if { |k, v| k == leave_m }
395
+ end
396
+ end
397
+ end
398
+
370
399
  @membership
371
400
  end
372
401
 
402
+ # Set the node index, overwriting any previous index
403
+ # The index is a unique integer for each node in an experiment
404
+ # It's used e.g. to give each node an IP address such as x.x.x.node_index
405
+ #
406
+ # @param [String|Array] args name of group topic/topics
407
+ def configure_node_index(index)
408
+ @node_index = index
409
+ end
410
+
373
411
  # @!endgroup
374
412
 
375
413
  # Parse omf message and execute as instructed by the message
data/lib/omf_rc/runner.rb CHANGED
@@ -21,7 +21,7 @@ module OmfRc
21
21
  class Runner
22
22
  include Hashie
23
23
 
24
- attr_accessor :gopts, :copts, :def_opts
24
+ attr_accessor :gopts, :copts, :def_opts, :node_index
25
25
  attr_accessor :opts
26
26
 
27
27
  def initialize()
@@ -66,6 +66,7 @@ module OmfRc
66
66
  # TODO: Should release resources first
67
67
  info "Stopping ..."
68
68
  OmfCommon.comm.disconnect
69
+ OmfCommon.eventloop.stop
69
70
  end
70
71
 
71
72
  # Load extensions
@@ -84,7 +84,17 @@ describe AbstractResource do
84
84
 
85
85
  it "must be able to configure membership (join group)" do
86
86
  @parent.configure_membership(:test_group)
87
+ @parent.configure_membership([:test_group, 'test_group_2'])
87
88
  @parent.request_membership.must_include :test_group
89
+ @parent.request_membership.must_include 'test_group_2'
90
+ end
91
+
92
+ it "must be able to configure membership (leave group)" do
93
+ @parent.configure_membership([:test_group, 'test_group_2'])
94
+ @parent.configure_membership({ leave: [:test_group] })
95
+ @parent.request_membership.must_equal ['test_group_2']
96
+ @parent.configure_membership({ leave: [:test_group, 'test_group_2'] })
97
+ @parent.request_membership.must_equal []
88
98
  end
89
99
  end
90
100
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_rc
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.8.pre.2
4
+ version: 6.0.8.pre.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - NICTA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-25 00:00:00.000000000 Z
11
+ date: 2013-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -42,28 +42,28 @@ dependencies:
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 6.0.8.pre.2
75
+ version: 6.0.8.pre.3
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 6.0.8.pre.2
82
+ version: 6.0.8.pre.3
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: cocaine
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -98,14 +98,14 @@ dependencies:
98
98
  name: mocha
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ! '>='
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Resource controller of OMF, a generic framework for controlling and managing
@@ -199,12 +199,12 @@ require_paths:
199
199
  - lib
200
200
  required_ruby_version: !ruby/object:Gem::Requirement
201
201
  requirements:
202
- - - ! '>='
202
+ - - '>='
203
203
  - !ruby/object:Gem::Version
204
204
  version: 1.9.3
205
205
  required_rubygems_version: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - ! '>'
207
+ - - '>'
208
208
  - !ruby/object:Gem::Version
209
209
  version: 1.3.1
210
210
  requirements: []