omf_ec 6.0.0.pre.3 → 6.0.0.pre.4

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.
Files changed (91) hide show
  1. data/Rakefile +1 -0
  2. data/bin/omf_ec +264 -0
  3. data/example/engine_oedl.rb +52 -0
  4. data/example/engine_test.rb +90 -0
  5. data/example/test_exp/test00.rb +12 -0
  6. data/example/test_exp/test01.rb +22 -0
  7. data/example/test_exp/test02.rb +30 -0
  8. data/{exp_repo/test/exp → example/test_exp}/test03.rb +2 -42
  9. data/{exp_repo/test/exp → example/test_exp}/test04.rb +2 -2
  10. data/{exp_repo/test/exp → example/test_exp}/test05.rb +4 -4
  11. data/{exp_repo/test/exp → example/test_exp}/test06.rb +6 -6
  12. data/example/test_exp/test07.rb +65 -0
  13. data/lib/omf_ec/app_definition.rb +57 -0
  14. data/lib/omf_ec/backward/app_definition.rb +35 -0
  15. data/lib/omf_ec/backward/core_ext/array.rb +19 -0
  16. data/lib/omf_ec/backward/default_events.rb +71 -0
  17. data/lib/omf_ec/backward/dsl.rb +83 -0
  18. data/lib/omf_ec/backward/exp/testbed.rb +47 -0
  19. data/lib/omf_ec/backward/group.rb +72 -0
  20. data/lib/omf_ec/context/app_context.rb +54 -0
  21. data/lib/omf_ec/context/def_app_context.rb +6 -0
  22. data/lib/omf_ec/context/group_context.rb +88 -0
  23. data/lib/omf_ec/context/net_context.rb +46 -0
  24. data/lib/omf_ec/context.rb +10 -0
  25. data/lib/omf_ec/dsl.rb +159 -0
  26. data/lib/omf_ec/experiment.rb +71 -0
  27. data/lib/omf_ec/group.rb +158 -0
  28. data/lib/omf_ec/version.rb +1 -1
  29. data/lib/omf_ec.rb +34 -1
  30. data/omf_ec.gemspec +2 -3
  31. data/test/omf_ec/context_spec.rb +19 -0
  32. data/test/omf_ec/group_spec.rb +14 -0
  33. data/test/test_helper.rb +19 -0
  34. metadata +44 -89
  35. data/bin/omf +0 -147
  36. data/bin/omf_pre +0 -76
  37. data/bin/omf_test +0 -161
  38. data/example/net_devices.rb +0 -75
  39. data/exp_repo/system/exp/eventlib.rb +0 -96
  40. data/exp_repo/system/exp/imageNode.rb +0 -283
  41. data/exp_repo/system/exp/reset.rb +0 -21
  42. data/exp_repo/system/exp/saveNode.rb +0 -99
  43. data/exp_repo/system/exp/stat.rb +0 -49
  44. data/exp_repo/system/exp/stdlib.rb +0 -122
  45. data/exp_repo/system/exp/tell.rb +0 -53
  46. data/exp_repo/system/exp/testlib.rb +0 -12
  47. data/exp_repo/system/exp/winlib.rb +0 -154
  48. data/exp_repo/system/topo/active.rb +0 -9
  49. data/exp_repo/system/topo/all.rb +0 -10
  50. data/exp_repo/system/topo/circle.rb +0 -23
  51. data/exp_repo/test/app/aodvd.rb +0 -73
  52. data/exp_repo/test/app/appDef1.rb +0 -102
  53. data/exp_repo/test/app/athstats.rb +0 -76
  54. data/exp_repo/test/app/echo.rb +0 -36
  55. data/exp_repo/test/app/gennyReceiverAppDef.rb +0 -100
  56. data/exp_repo/test/app/gennySenderAppDef.rb +0 -106
  57. data/exp_repo/test/app/itgdec.rb +0 -79
  58. data/exp_repo/test/app/itgr.rb +0 -77
  59. data/exp_repo/test/app/itgs.rb +0 -105
  60. data/exp_repo/test/app/nop.rb +0 -36
  61. data/exp_repo/test/app/otg2.rb +0 -68
  62. data/exp_repo/test/app/otg2_mp.rb +0 -56
  63. data/exp_repo/test/app/otr2.rb +0 -56
  64. data/exp_repo/test/app/otr2_mp.rb +0 -51
  65. data/exp_repo/test/app/trace_oml2.rb +0 -62
  66. data/exp_repo/test/app/wlanconfig_oml2.rb +0 -42
  67. data/exp_repo/test/exp/conf-room-demo.rb +0 -118
  68. data/exp_repo/test/exp/planetlab.rb +0 -82
  69. data/exp_repo/test/exp/test01.rb +0 -42
  70. data/exp_repo/test/exp/test02.rb +0 -60
  71. data/exp_repo/test/exp/tutorial/hello-world-wired.rb +0 -79
  72. data/exp_repo/test/exp/tutorial/hello-world-wireless.rb +0 -87
  73. data/exp_repo/test/exp/tutorial/using-filters.rb +0 -69
  74. data/exp_repo/test/exp/tutorial/using-groups.rb +0 -64
  75. data/exp_repo/test/exp/tutorial/using-properties.rb +0 -93
  76. data/exp_repo/test/exp/tutorial/using-prototypes.rb +0 -111
  77. data/exp_repo/test/proto/aodvrouter.rb +0 -55
  78. data/exp_repo/test/proto/driverqueryapp.rb +0 -59
  79. data/exp_repo/test/proto/forwarder.rb +0 -73
  80. data/exp_repo/test/proto/itgcbrsender.rb +0 -70
  81. data/exp_repo/test/proto/itgdecoder.rb +0 -64
  82. data/exp_repo/test/proto/itgreceiver.rb +0 -55
  83. data/exp_repo/test/proto/itgvoipsender.rb +0 -64
  84. data/exp_repo/test/proto/listener2.rb +0 -62
  85. data/exp_repo/test/proto/nop.rb +0 -47
  86. data/exp_repo/test/proto/probelink.rb +0 -48
  87. data/exp_repo/test/proto/raw_receiver.rb +0 -64
  88. data/exp_repo/test/proto/receiver2_mp.rb +0 -48
  89. data/exp_repo/test/proto/sender2_mp.rb +0 -54
  90. data/exp_repo/test/proto/udp_receiver.rb +0 -55
  91. data/exp_repo/test/proto/udp_sender.rb +0 -61
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_ec
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.pre.3
4
+ version: 6.0.0.pre.4
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-02 00:00:00.000000000 Z
12
+ date: 2012-11-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70297155976580 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: '3.2'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '3.2'
24
+ version_requirements: *70297155976580
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: omf_common
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70297155974820 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ~>
@@ -37,105 +32,63 @@ dependencies:
37
32
  version: 6.0.0.pre
38
33
  type: :runtime
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 6.0.0.pre
35
+ version_requirements: *70297155974820
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: gli
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70297155973900 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
52
42
  - !ruby/object:Gem::Version
53
- version: 2.0.0.pre
43
+ version: 2.4.1
54
44
  type: :runtime
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 2.0.0.pre
46
+ version_requirements: *70297155973900
62
47
  description: Experiment controller of OMF, a generic framework for controlling and
63
48
  managing networking testbeds.
64
49
  email:
65
50
  - omf-user@lists.nicta.com.au
66
51
  executables:
67
- - omf_pre
52
+ - omf_ec
68
53
  extensions: []
69
54
  extra_rdoc_files: []
70
55
  files:
71
56
  - .gitignore
72
57
  - Gemfile
73
58
  - Rakefile
74
- - bin/omf
75
- - bin/omf_pre
76
- - bin/omf_test
59
+ - bin/omf_ec
77
60
  - config/ec.yml
78
- - example/net_devices.rb
79
- - exp_repo/system/exp/eventlib.rb
80
- - exp_repo/system/exp/imageNode.rb
81
- - exp_repo/system/exp/reset.rb
82
- - exp_repo/system/exp/saveNode.rb
83
- - exp_repo/system/exp/stat.rb
84
- - exp_repo/system/exp/stdlib.rb
85
- - exp_repo/system/exp/tell.rb
86
- - exp_repo/system/exp/testlib.rb
87
- - exp_repo/system/exp/winlib.rb
88
- - exp_repo/system/topo/active.rb
89
- - exp_repo/system/topo/all.rb
90
- - exp_repo/system/topo/circle.rb
91
- - exp_repo/test/app/aodvd.rb
92
- - exp_repo/test/app/appDef1.rb
93
- - exp_repo/test/app/athstats.rb
94
- - exp_repo/test/app/echo.rb
95
- - exp_repo/test/app/gennyReceiverAppDef.rb
96
- - exp_repo/test/app/gennySenderAppDef.rb
97
- - exp_repo/test/app/itgdec.rb
98
- - exp_repo/test/app/itgr.rb
99
- - exp_repo/test/app/itgs.rb
100
- - exp_repo/test/app/nop.rb
101
- - exp_repo/test/app/otg2.rb
102
- - exp_repo/test/app/otg2_mp.rb
103
- - exp_repo/test/app/otr2.rb
104
- - exp_repo/test/app/otr2_mp.rb
105
- - exp_repo/test/app/trace_oml2.rb
106
- - exp_repo/test/app/wlanconfig_oml2.rb
107
- - exp_repo/test/exp/conf-room-demo.rb
108
- - exp_repo/test/exp/planetlab.rb
109
- - exp_repo/test/exp/test01.rb
110
- - exp_repo/test/exp/test02.rb
111
- - exp_repo/test/exp/test03.rb
112
- - exp_repo/test/exp/test04.rb
113
- - exp_repo/test/exp/test05.rb
114
- - exp_repo/test/exp/test06.rb
115
- - exp_repo/test/exp/tutorial/hello-world-wired.rb
116
- - exp_repo/test/exp/tutorial/hello-world-wireless.rb
117
- - exp_repo/test/exp/tutorial/using-filters.rb
118
- - exp_repo/test/exp/tutorial/using-groups.rb
119
- - exp_repo/test/exp/tutorial/using-properties.rb
120
- - exp_repo/test/exp/tutorial/using-prototypes.rb
121
- - exp_repo/test/proto/aodvrouter.rb
122
- - exp_repo/test/proto/driverqueryapp.rb
123
- - exp_repo/test/proto/forwarder.rb
124
- - exp_repo/test/proto/itgcbrsender.rb
125
- - exp_repo/test/proto/itgdecoder.rb
126
- - exp_repo/test/proto/itgreceiver.rb
127
- - exp_repo/test/proto/itgvoipsender.rb
128
- - exp_repo/test/proto/listener2.rb
129
- - exp_repo/test/proto/nop.rb
130
- - exp_repo/test/proto/probelink.rb
131
- - exp_repo/test/proto/raw_receiver.rb
132
- - exp_repo/test/proto/receiver2_mp.rb
133
- - exp_repo/test/proto/sender2_mp.rb
134
- - exp_repo/test/proto/udp_receiver.rb
135
- - exp_repo/test/proto/udp_sender.rb
61
+ - example/engine_oedl.rb
62
+ - example/engine_test.rb
63
+ - example/test_exp/test00.rb
64
+ - example/test_exp/test01.rb
65
+ - example/test_exp/test02.rb
66
+ - example/test_exp/test03.rb
67
+ - example/test_exp/test04.rb
68
+ - example/test_exp/test05.rb
69
+ - example/test_exp/test06.rb
70
+ - example/test_exp/test07.rb
136
71
  - lib/omf_ec.rb
72
+ - lib/omf_ec/app_definition.rb
73
+ - lib/omf_ec/backward/app_definition.rb
74
+ - lib/omf_ec/backward/core_ext/array.rb
75
+ - lib/omf_ec/backward/default_events.rb
76
+ - lib/omf_ec/backward/dsl.rb
77
+ - lib/omf_ec/backward/exp/testbed.rb
78
+ - lib/omf_ec/backward/group.rb
79
+ - lib/omf_ec/context.rb
80
+ - lib/omf_ec/context/app_context.rb
81
+ - lib/omf_ec/context/def_app_context.rb
82
+ - lib/omf_ec/context/group_context.rb
83
+ - lib/omf_ec/context/net_context.rb
84
+ - lib/omf_ec/dsl.rb
85
+ - lib/omf_ec/experiment.rb
86
+ - lib/omf_ec/group.rb
137
87
  - lib/omf_ec/version.rb
138
88
  - omf_ec.gemspec
89
+ - test/omf_ec/context_spec.rb
90
+ - test/omf_ec/group_spec.rb
91
+ - test/test_helper.rb
139
92
  homepage: https://www.mytestbed.net
140
93
  licenses: []
141
94
  post_install_message:
@@ -156,9 +109,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
109
  version: 1.3.1
157
110
  requirements: []
158
111
  rubyforge_project: omf_ec
159
- rubygems_version: 1.8.24
112
+ rubygems_version: 1.8.17
160
113
  signing_key:
161
114
  specification_version: 3
162
115
  summary: OMF experiment controller
163
- test_files: []
164
- has_rdoc:
116
+ test_files:
117
+ - test/omf_ec/context_spec.rb
118
+ - test/omf_ec/group_spec.rb
119
+ - test/test_helper.rb
data/bin/omf DELETED
@@ -1,147 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- require 'gli'
4
- require 'omf_ec'
5
-
6
- include GLI::App
7
-
8
- program_desc "Run a command on the testbed(s)"
9
-
10
- version OmfEc::VERSION
11
-
12
- desc "Debug (this script only, not passed to omf exec)"
13
- switch [:d, :debug]
14
-
15
- desc "Execute an experiment script"
16
- arg_name 'Describe arguments to exec here'
17
- command :exec do |c|
18
- c.desc 'Describe a switch to exec'
19
- c.switch :s
20
-
21
- c.desc 'Describe a flag to exec'
22
- c.default_value 'default'
23
- c.flag :f
24
- c.action do |global_options,options,args|
25
-
26
- # Your command logic here
27
-
28
- # If you have any errors, just raise them
29
- # raise "that command made no sense"
30
- end
31
- end
32
-
33
- desc "Load a disk image on a given set of nodes"
34
- command :load do |c|
35
- c.desc 'Describe a flag to exec'
36
- c.default_value 'default'
37
- c.flag :f
38
-
39
- c.desc "Aggregate Name"
40
- c.arg_name "AGGREGATE"
41
- c.flag [:c, :config]
42
-
43
- c.desc "A valid topology file or description. If a file 'TOPOLOGY' doesn't exist, interpret it as a comma-separated list of nodes)"
44
- c.default_value "system:topo:all"
45
- c.arg_name "TOPOLOGY"
46
- c.flag [:t, :topology]
47
-
48
- c.desc "Disk image to load"
49
- c.default_value "baseline.ndz"
50
- c.arg_name "IMAGE"
51
- c.flag [:i, :image]
52
-
53
- c.desc "A duration (in sec.) after which imageNodes should stop waiting for nodes that have not finished their image installation"
54
- c.default_value "800"
55
- c.arg_name "SECONDS"
56
- c.flag [:o, :timeout]
57
-
58
- c.desc "Path where the resulting Topologies should be saved"
59
- c.default_value "/tmp"
60
- c.arg_name "PATH"
61
- c.flag [:outpath]
62
-
63
- c.desc "Prefix to use for naming the resulting Topologies"
64
- c.default_value "your experiment ID"
65
- c.arg_name "PREFIX"
66
- c.flag [:outprefix]
67
-
68
- c.action do |global_options,options,args|
69
- end
70
- end
71
-
72
- desc "Save a disk image from a given node into a file"
73
- command :save do |c|
74
- c.desc "Aggregate Name"
75
- c.arg_name "AGGREGATE"
76
- c.flag [:c, :config]
77
-
78
- c.desc "Save image node"
79
- c.arg_name "NODE"
80
- c.flag [:n, :node]
81
-
82
- c.action do |global_options,options,args|
83
- end
84
- end
85
-
86
- desc "Switch a given set of nodes ON/OFF or reboot them"
87
- long_desc <<-DESC
88
- Specify a CMC action:
89
-
90
- on - turn node(s) ON
91
-
92
- offs - turn node(s) OFF (soft)
93
-
94
- offh - turn node(s) OFF (hard)
95
-
96
- reboot - treboots node(s) (soft)
97
-
98
- reset - tresets node(s) (hard)
99
- DESC
100
- command :tell do |c|
101
- c.desc "A valid topology file or description. If a file 'TOPOLOGY' doesn't exist, interpret it as a comma-separated list of nodes)"
102
- c.default_value "system:topo:all"
103
- c.arg_name "TOPOLOGY"
104
- c.flag [:t, :topology]
105
-
106
- c.desc "Aggregate Name"
107
- c.arg_name "AGGREGATE"
108
- c.flag [:c, :config]
109
-
110
- c.desc "CMC action"
111
- c.arg_name "ACTION"
112
- c.flag [:a, :action], :must_match => %w(on offs offh reboot reset)
113
-
114
- c.action do |global_options,options,args|
115
- end
116
- end
117
-
118
- desc "Returns the status of a given set of nodes"
119
- command :stat do |c|
120
- c.desc "Print a summary of the node status for the testbed"
121
- c.switch [:s, :summary]
122
-
123
- c.desc "A valid topology file or description. If a file 'TOPOLOGY' doesn't exist, interpret it as a comma-separated list of nodes)"
124
- c.default_value "system:topo:all"
125
- c.arg_name "TOPOLOGY"
126
- c.flag [:t, :topology]
127
-
128
- c.desc "Aggregate Name"
129
- c.arg_name "AGGREGATE"
130
- c.flag [:c, :config]
131
-
132
- c.action do |global_options,options,args|
133
- end
134
- end
135
-
136
- pre do |global,command,options,args|
137
- true
138
- end
139
-
140
- post do |global,command,options,args|
141
- end
142
-
143
- on_error do |exception|
144
- true
145
- end
146
-
147
- exit run(ARGV)
data/bin/omf_pre DELETED
@@ -1,76 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- require 'gli'
4
- require 'omf_ec'
5
- require 'omf_common'
6
- $stdout.sync = true
7
-
8
- include GLI::App
9
- include OmfCommon
10
-
11
- program_desc "Run a command on the testbed(s)"
12
-
13
- version OmfEc::VERSION
14
- desc "Debug mode (printing debug logging messages)"
15
- switch [:d, :debug]
16
-
17
- desc "Execute an experiment script"
18
- arg_name 'path_to_script_file'
19
- command :exec do |c|
20
- c.desc "XMPP user name"
21
- c.arg_name "USER"
22
- c.flag [:u, :user]
23
-
24
- c.desc "XMPP user password"
25
- c.arg_name "PASSWORD"
26
- c.flag [:p, :password]
27
-
28
- c.desc "XMPP server domain"
29
- c.arg_name "DOMAIN"
30
- c.flag [:s, :server]
31
-
32
- c.desc "Check script version (you need to define OMF_VERSIONS in your script"
33
- c.switch [:c, :check]
34
-
35
- c.action do |global_options,options,args|
36
- if global_options[:debug]
37
- Logging.logger.root.level = :debug
38
- Blather.logger = logger
39
- end
40
- unless options[:user] && options[:password] && options[:server]
41
- help_now! "Incomplete options"
42
- end
43
- @opts = options
44
- @comm = Comm.new(:xmpp)
45
-
46
- # Check version
47
- if options[:check]
48
- File.open(args[0], 'r') do |f|
49
- f.read.chomp.match(/OMF_VERSIONS\W*=\W*(.*)/)
50
- versions = $1
51
- unless versions && versions.split(',').include?(PROTOCOL_VERSION)
52
- raise StandardError, "Could not find compatibile protocol version number in your script"
53
- end
54
- end
55
- end
56
-
57
- begin
58
- load args[0], true
59
- rescue => e
60
- logger.fatal e.message
61
- logger.fatal e.backtrace.join("\n")
62
- end
63
-
64
- EM.run do
65
- @comm.connect(@opts[:user], @opts[:password], @opts[:server])
66
- trap(:INT) { @comm.disconnect }
67
- trap(:TERM) { @comm.disconnect }
68
- end
69
- end
70
- end
71
-
72
- on_error do |exception|
73
- true
74
- end
75
-
76
- exit run(ARGV)
data/bin/omf_test DELETED
@@ -1,161 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "optparse"
4
- require 'omf_common'
5
- $stdout.sync = true
6
-
7
- options = {
8
- dsl: 'xmpp',
9
- pubsub_host: 'pubsub',
10
- }
11
-
12
- executable_name = File.basename($PROGRAM_NAME)
13
-
14
- option_parser = OptionParser.new do |opts|
15
- opts.banner = "usage: #{executable_name} [options]"
16
-
17
- opts.on("-u USER", "Username") do |user|
18
- options[:user] = user
19
- end
20
-
21
- opts.on("-p PASSWORD", "Password") do |password|
22
- options[:password] = password
23
- end
24
-
25
- opts.on("-s SERVER", "XMPP server") do |server|
26
- options[:server] = server
27
- end
28
-
29
- opts.on("-n NODE", "PubSub node to subscribe") do |node|
30
- options[:uid] = node
31
- end
32
-
33
- opts.on("-d", "--debug", "Debug mode") do
34
- options[:debug] = true
35
- end
36
- end
37
-
38
- begin
39
- option_parser.parse!
40
- rescue => e
41
- puts e.message
42
- puts ""
43
- puts option_parser.help
44
- exit(1)
45
- end
46
-
47
- unless options[:server] && options[:user] && options[:server]
48
- puts option_parser.help
49
- exit(1)
50
- end
51
-
52
- Logging.logger.root.level = :debug if options[:debug]
53
- Blather.logger = logger
54
-
55
- comm = OmfCommon::Comm.new(options[:dsl])
56
- host = nil
57
-
58
- # Create a resource of type mock
59
- create_msg = OmfCommon::Message.create { |v| v.property('type', 'mock') }
60
-
61
- create_wifi_msg = OmfCommon::Message.create do |v|
62
- v.property('hrn', 'wlan0')
63
- v.property('type', 'wifi')
64
- end
65
-
66
- # A request message to be sent to mock
67
- request_mock_property = OmfCommon::Message.request do |v|
68
- v.property('available_properties')
69
- v.property('kernel_version')
70
- v.property('resource_proxy_list')
71
- v.property('resource_utility_list')
72
- v.property('bob')
73
- end
74
-
75
- request_wifi_property = OmfCommon::Message.request do |v|
76
- v.property('link')
77
- v.property('available_properties')
78
- end
79
-
80
- # A request message to be sent to node
81
- request_node_property = OmfCommon::Message.request do |v|
82
- v.property('available_properties')
83
- v.property('proxies')
84
- end
85
-
86
- # A configure message to be sent to mock
87
- configure_mock_property = OmfCommon::Message.configure do |v|
88
- v.property('hrn', 'human_readable_name')
89
- end
90
-
91
- # Simple release message
92
- release_message = OmfCommon::Message.release
93
-
94
- # For simplicity, use comm instance directly
95
- comm.when_ready do
96
- logger.info "CONNECTED: #{comm.jid.inspect}"
97
- host = "#{options[:pubsub_host]}.#{comm.jid.domain}"
98
-
99
- # We assume the node where RC runs started already
100
- comm.subscribe(options[:uid], host) do |e|
101
- if e.error?
102
- comm.disconnect(host)
103
- else
104
- # Publish the create message to RC's pubsub topic
105
- comm.publish(options[:uid], request_node_property, host)
106
- comm.publish(options[:uid], create_wifi_msg, host)
107
- end
108
- end
109
- end
110
-
111
- # Fired when messages published to the nodes I subscribed to
112
- comm.node_event do |e|
113
- e.items.each do |item|
114
- begin
115
- # Parse the message (pubsub item payload)
116
- message = OmfCommon::Message.parse(item.payload)
117
- context_id = message.read_content("context_id")
118
-
119
- # We are only interested in inform messages for the moment
120
- if message.operation == :inform
121
- inform_type = message.read_content("inform_type")
122
-
123
- case inform_type
124
- when 'CREATED'
125
- resource_id = message.read_content("resource_id")
126
- logger.info "Resource #{resource_id} created"
127
-
128
- comm.subscribe(resource_id, host) do |m|
129
- EM.add_periodic_timer(2) do
130
- comm.publish(resource_id, request_wifi_property, host)
131
- #comm.publish(resource_id, request_mock_property, host)
132
- #comm.publish(resource_id, configure_mock_property, host)
133
- end
134
- end
135
-
136
- when 'STATUS'
137
- message.read_element("//property").each do |p|
138
- logger.info "#{p.attr('key')} => #{p.content.strip}"
139
- end
140
- when 'RELEASED'
141
- logger.info "Resource #{message.read_content("resource_id")} released"
142
- when 'FAILED'
143
- logger.error message.read_content("error_message")
144
- end
145
- end
146
- rescue => e
147
- logger.error "#{e.message}\n#{e.backtrace.join("\n")}"
148
- end
149
- end
150
- end
151
-
152
- trap(:INT) { comm.disconnect(host) }
153
- trap(:TERM) { comm.disconnect(host) }
154
-
155
- EM.run do
156
- comm.connect(options[:user], options[:password], options[:server])
157
-
158
- EM.add_timer(5) do
159
- comm.publish(options[:uid], release_message, host)
160
- end
161
- end
@@ -1,75 +0,0 @@
1
- # @comm is default communicator defined in script runner
2
- #
3
- @node = @comm.get_topic(`hostname`.chomp)
4
-
5
- @node.on_message lambda {|m| m.operation == :inform && m.read_content('inform_type') == 'FAILED' } do |message|
6
- logger.error message
7
- end
8
-
9
- device_request = @comm.request_message([:devices])
10
-
11
- device_request.on_inform_status do |message|
12
- @devices = message.read_property('devices').items
13
-
14
- logger.info <<-LOG
15
- DEVICES ->
16
- #{@devices.map { |item| "Name: #{item.name}, Driver: #{item.driver}, Proxy: #{item.proxy}"}.join("\n") }
17
- LOG
18
-
19
- first_wlan = @devices.find { |v| v.proxy == 'wlan' }
20
- first_eth = @devices.find { |v| v.proxy == 'net' }
21
-
22
- wlan_create = @comm.create_message([type: first_wlan.proxy, hrn: first_wlan.name])
23
- eth_create = @comm.create_message([type: first_eth.proxy, hrn: first_eth.name])
24
-
25
- wlan_create.on_inform_created do |message|
26
- @wlan = @comm.get_topic(message.resource_id)
27
-
28
- @wlan.subscribe do
29
- wlan_p = @comm.request_message([:link, :ip_addr])
30
-
31
- wlan_p.on_inform_status do |message|
32
- freq = message.read_property(:link).freq
33
- ip_addr = message.read_property(:ip_addr)
34
- logger.info "WLAN : #{freq}, #{ip_addr}"
35
- end
36
-
37
- wlan_p.publish @wlan.id
38
- end
39
- end
40
-
41
- eth_create.on_inform_created do |message|
42
- @eth = @comm.get_topic(message.resource_id)
43
- @eth.on_message lambda {|m| m.operation == :inform && m.read_content('inform_type') == 'FAILED' } do |message|
44
- logger.error message.read_content(:reason)
45
- end
46
-
47
- @eth.subscribe do
48
- eth_ip = @comm.request_message([:ip_addr])
49
-
50
- eth_ip.on_inform_status do |m|
51
- logger.info "ETH #{m.read_property(:ip_addr)}"
52
- end
53
-
54
- eth_ip_conf = @comm.configure_message([{ip_addr: '192.168.7.1'}])
55
-
56
- eth_ip.on_inform_status do |m|
57
- logger.info "ETH #{m.read_property(:ip_addr)}"
58
- end
59
-
60
- eth_ip.publish @eth.id
61
- eth_ip_conf.publish @eth.id
62
- end
63
- end
64
-
65
- wlan_create.publish @node.id
66
- eth_create.publish @node.id
67
- end
68
-
69
- @comm.when_ready do
70
- logger.info "CONNECTED: #{@comm.jid.inspect}"
71
-
72
- @node.subscribe do
73
- device_request.publish @node.id
74
- end
75
- end