omf_rc 6.0.2.pre.2 → 6.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/bin/omf_rc +19 -11
  2. data/config/config.yml +0 -5
  3. data/config/config_with_authentication.yml.example +1 -1
  4. data/lib/omf_rc/deferred_process.rb +5 -0
  5. data/lib/omf_rc/omf_error.rb +5 -0
  6. data/lib/omf_rc/resource_factory.rb +17 -5
  7. data/lib/omf_rc/resource_proxy/abstract_resource.rb +186 -85
  8. data/lib/omf_rc/resource_proxy/application.rb +77 -53
  9. data/lib/omf_rc/resource_proxy/net.rb +29 -2
  10. data/lib/omf_rc/resource_proxy/node.rb +53 -2
  11. data/lib/omf_rc/resource_proxy/virtual_machine.rb +5 -0
  12. data/lib/omf_rc/resource_proxy/virtual_machine_factory.rb +5 -0
  13. data/lib/omf_rc/resource_proxy/wlan.rb +41 -2
  14. data/lib/omf_rc/resource_proxy_dsl.rb +68 -8
  15. data/lib/omf_rc/util/common_tools.rb +5 -0
  16. data/lib/omf_rc/util/hostapd.rb +13 -0
  17. data/lib/omf_rc/util/ip.rb +39 -0
  18. data/lib/omf_rc/util/iw.rb +115 -39
  19. data/lib/omf_rc/util/libvirt.rb +5 -0
  20. data/lib/omf_rc/util/mod.rb +20 -1
  21. data/lib/omf_rc/util/openflow_tools.rb +5 -0
  22. data/lib/omf_rc/util/package.rb +5 -0
  23. data/lib/omf_rc/util/platform_tools.rb +5 -0
  24. data/lib/omf_rc/util/sysfs.rb +23 -3
  25. data/lib/omf_rc/util/vmbuilder.rb +5 -0
  26. data/lib/omf_rc/util/wpa.rb +12 -0
  27. data/lib/omf_rc/version.rb +6 -1
  28. data/lib/omf_rc.rb +5 -0
  29. data/omf_rc.gemspec +2 -1
  30. data/test/omf_rc/deferred_process_spec.rb +5 -0
  31. data/test/omf_rc/message_process_error_spec.rb +5 -0
  32. data/test/omf_rc/resource_factory_spec.rb +8 -6
  33. data/test/omf_rc/resource_proxy/abstract_resource_spec.rb +151 -89
  34. data/test/omf_rc/resource_proxy/application_spec.rb +10 -11
  35. data/test/omf_rc/resource_proxy/node_spec.rb +6 -1
  36. data/test/omf_rc/resource_proxy_dsl_spec.rb +31 -6
  37. data/test/omf_rc/util/common_tools_spec.rb +6 -1
  38. data/test/omf_rc/util/ip_spec.rb +9 -3
  39. data/test/omf_rc/util/iw_spec.rb +16 -6
  40. data/test/omf_rc/util/mod_spec.rb +8 -3
  41. data/test/test_helper.rb +6 -0
  42. metadata +26 -13
  43. data/lib/omf_rc/resource_proxy/mock.rb +0 -16
  44. data/lib/omf_rc/util/mock.rb +0 -22
  45. data/test/omf_rc/resource_proxy/mock_spec.rb +0 -20
  46. data/test/omf_rc/util/mock_spec.rb +0 -31
data/bin/omf_rc CHANGED
@@ -17,7 +17,8 @@ gem_version = Gem::Specification.find_by_name('omf_rc').version.to_s
17
17
 
18
18
  begin
19
19
  oml_enabled = OML4R::init(ARGV, appName: executable_name) do |opts|
20
- opts.banner = "usage: #{executable_name} [options]"
20
+ opts.banner = "OMF Resource Controller version '#{gem_version}'\n"
21
+ opts.banner += "Usage: #{executable_name} [options]"
21
22
 
22
23
  opts.on("-c CONFIGFILE", "Configuration File") do |file|
23
24
  options[:configfile] = file
@@ -35,9 +36,19 @@ begin
35
36
  options[:environment] = environment
36
37
  end
37
38
 
38
- opts.on("-i UID", "UID of the resource, also becomes the pubsub topic of the resource, default to hostname") do |uid|
39
+ opts.on("-i UID", "UID (and pubsub topic) of the resource, defaults to hostname") do |uid|
39
40
  options[:uid] = uid
40
41
  end
42
+
43
+ opts.on("-v", "--version", "Show version") do
44
+ puts "OMF Resource Controller version '#{gem_version}'"
45
+ exit
46
+ end
47
+
48
+ opts.on("-h", "--help", "Show this message") do
49
+ puts opts
50
+ exit
51
+ end
41
52
  end
42
53
  rescue OML4R::MissingArgumentException => e
43
54
  puts "Warning: #{e.message} to instrument this RC, so it will run without instrumentation. (see --oml-help)"
@@ -94,35 +105,32 @@ if options[:factories]
94
105
  end
95
106
 
96
107
  if options[:auth]
97
- if File.exist?(options[:auth][:root_cert])
98
- root = OmfCommon::Auth::Certificate.create_from_x509(File.read(options[:auth][:root_cert]))
99
- end
100
-
101
108
  if File.exist?(options[:auth][:entity_cert]) && File.exist?(options[:auth][:entity_key])
102
109
  entity = OmfCommon::Auth::Certificate.create_from_x509(File.read(options[:auth][:entity_cert]),
103
110
  File.read(options[:auth][:entity_key]))
104
111
  end
105
112
  end
106
113
 
107
- common_options[:communication][:auth] = { certs: [ root.to_pem_compact ] } if root
114
+ common_options[:communication][:auth] = {} if entity
108
115
 
109
116
  OmfCommon.init(options[:environment].to_sym, common_options) do |el|
110
117
  info "Starting OMF Resource Controller version '#{gem_version}'"
111
118
 
112
119
  OmfCommon.comm.on_connected do |comm|
120
+ info "Connected using #{comm.conn_info}"
113
121
 
114
- OmfCommon::Auth::CertificateStore.instance.register(root) if root
122
+ if options[:auth] && options[:auth][:root_cert_dir]
123
+ OmfCommon::Auth::CertificateStore.instance.register_default_certs(options[:auth][:root_cert_dir])
124
+ end
115
125
  OmfCommon::Auth::CertificateStore.instance.register(entity) if entity
116
126
 
117
- info "Connected using #{comm.conn_info}"
118
-
119
127
  options[:resources].each do |res_opts|
120
128
  rtype = res_opts.delete(:type)
121
129
  res_opts[:certificate] = entity if entity
122
130
  begin
123
131
  OmfRc::ResourceFactory.create(rtype, res_opts)
124
132
  rescue => e
125
- error e.message
133
+ error "#{e.message}\n#{e.backtrace.join("\n")}"
126
134
  end
127
135
  end
128
136
 
data/config/config.yml CHANGED
@@ -6,8 +6,3 @@
6
6
  :uri: xmpp://<%= "#{Socket.gethostname}-#{Process.pid}" %>:<%= "#{Socket.gethostname}-#{Process.pid}" %>@localhost
7
7
  :environment: production
8
8
  :debug: false
9
-
10
- :auth:
11
- :root_cert: /home/jack/omf_keys/root.pem
12
- :entity_cert: /home/jack/omf_keys/rc.pem
13
- :entity_key: /home/jack/omf_keys/rc_key.pem
@@ -8,6 +8,6 @@
8
8
  :debug: false
9
9
 
10
10
  :auth:
11
- :root_cert: /path_to_root_cert
11
+ :root_cert_dir: /path_to_folder_contains_root_certs
12
12
  :entity_cert: /path_to_cert_used_by_this_rc
13
13
  :entity_key: /path_to_private_key_used_by_this_rc
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2012 National ICT Australia Limited (NICTA).
2
+ # This software may be used and distributed solely under the terms of the MIT license (License).
3
+ # You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
4
+ # By downloading or using this software you accept the terms and the liability disclaimer in the License.
5
+
1
6
  # To be used for handling long running processes
2
7
  #
3
8
  class OmfRc::DeferredProcess
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2012 National ICT Australia Limited (NICTA).
2
+ # This software may be used and distributed solely under the terms of the MIT license (License).
3
+ # You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
4
+ # By downloading or using this software you accept the terms and the liability disclaimer in the License.
5
+
1
6
  # Error during message processing, include message related information cid and replyto, for publishing errors to pubsub server
2
7
  #
3
8
  class OmfRc::MessageProcessError < StandardError
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2012 National ICT Australia Limited (NICTA).
2
+ # This software may be used and distributed solely under the terms of the MIT license (License).
3
+ # You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
4
+ # By downloading or using this software you accept the terms and the liability disclaimer in the License.
5
+
1
6
  require 'securerandom'
2
7
  require 'hashie'
3
8
  require 'omf_rc/resource_proxy_dsl'
@@ -6,6 +11,8 @@ require 'omf_rc/resource_proxy/abstract_resource'
6
11
  # Factory class for managing available proxies and creating new resource proxy instances
7
12
  #
8
13
  class OmfRc::ResourceFactory
14
+ include OmfRc::ResourceProxyDSL
15
+
9
16
  # List of registered resource proxies
10
17
  @@proxy_list = Hashie::Mash.new
11
18
 
@@ -19,17 +26,20 @@ class OmfRc::ResourceFactory
19
26
  unless @@proxy_list.include?(type)
20
27
  raise ArgumentError, "Resource type not found: #{type.to_s}" unless @@proxy_list.include?(type)
21
28
  end
29
+ # Get relevant module identified by type
30
+ emodule = @@proxy_list[type].proxy_module || "OmfRc::ResourceProxy::#{type.camelize}".constantize
22
31
  # Create a new instance of abstract resource
23
32
  resource = OmfRc::ResourceProxy::AbstractResource.new(type, opts, creation_opts, &creation_callback)
24
- # Then extend this instance with relevant module identified by type
25
- emodule = @@proxy_list[type].proxy_module || "OmfRc::ResourceProxy::#{type.camelize}".constantize
33
+ # Extend newly created resource with proxy module
26
34
  resource.extend(emodule)
35
+
27
36
  # Initiate property hash
28
37
  resource.methods.each do |m|
29
- resource.__send__(m) if m =~ /def_property_(.+)/
38
+ resource.__send__(m) if m =~ /default_property_(.+)/
30
39
  end
31
40
  # Execute resource before_ready hook if any
32
- resource.before_ready if resource.respond_to? :before_ready
41
+ call_hook(:before_ready, resource)
42
+
33
43
  resource
34
44
  end
35
45
 
@@ -50,13 +60,15 @@ class OmfRc::ResourceFactory
50
60
  end
51
61
 
52
62
  # Require files from default resource proxy library folder
53
- #
54
63
  def load_default_resource_proxies
55
64
  Dir["#{File.dirname(__FILE__)}/resource_proxy/*.rb"].each do |file|
56
65
  require "omf_rc/resource_proxy/#{File.basename(file).gsub(/\.rb/, '')}"
57
66
  end
58
67
  end
59
68
 
69
+ # Require files from a folder contains resource proxy definition files
70
+ #
71
+ # @param [String] folder contains resource proxy definition files
60
72
  def load_additional_resource_proxies(folder)
61
73
  Dir["#{folder}/*.rb"].each do |file|
62
74
  require "#{folder}/#{File.basename(file).gsub(/\.rb/, '')}"