nitos_testbed_rc 1.0.0.pre.10 → 1.0.0.pre.11

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.
data/README.md CHANGED
@@ -21,7 +21,7 @@ Prerequirements
21
21
 
22
22
  Install frisbee, which is required by the frisbee proxy
23
23
 
24
- % apt-get install frisbee
24
+ $ apt-get install frisbee
25
25
 
26
26
  If that fails add this line 'deb http://pkg.mytestbed.net/ubuntu precise/ ' to your /etc/apt/sources.list and then 'apt-get update'.
27
27
 
@@ -30,46 +30,48 @@ Installation
30
30
 
31
31
  First you need to install the gem
32
32
 
33
- % gem install nitos_testbed_rc --pre
33
+ $ gem install nitos_testbed_rc --pre
34
34
 
35
35
  Then you need to run the install_ntrc script to generate the configuration files [tutorial](http://mytestbed.net/doc/omf/file.set_up_communication_server.html).
36
36
 
37
- % install_ntrc
37
+ $ install_ntrc
38
38
 
39
39
  Create certificates
40
40
  -------------------
41
41
 
42
42
  Use omf_cert.rb script to generate the following certificates and place them on directories '/root/.omf' and /root/.omf.
43
43
 
44
- % mkdir /root/.omf
45
- % mkdir /root/.omf/trusted_roots
46
- % cd /root/.omf
44
+ $ mkdir /root/.omf
45
+ $ mkdir /root/.omf/trusted_roots
46
+ $ cd /root/.omf
47
47
 
48
48
  Create a root certificate (change DOMAIN).
49
49
 
50
50
  Important!!! If you already have a root certificate (probably created while installing omf_sfa) DO NOT create this certificate again and use the old one instead.
51
51
 
52
- % omf_cert.rb --email root@DOMAIN -o /root/.omf/trusted_roots/root.pem --duration 5000000 create_root
52
+ $ omf_cert.rb --email root@DOMAIN -o /root/.omf/trusted_roots/root.pem --duration 5000000 create_root
53
53
 
54
54
  Create a certificate for user_proxy of NTRC (change DOMAIN, XMPP_DOMAIN and if you wish the output file names).
55
55
 
56
- % omf_cert.rb -o user_factory.pem --email user_factory@DOMAIN --resource-type user_factory --resource-id xmpp://user_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
56
+ $ omf_cert.rb -o user_factory.pem --email user_factory@DOMAIN --resource-type user_factory --resource-id xmpp://user_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
57
57
 
58
58
  Create a certificate for cm_proxy of NTRC (change DOMAIN, XMPP_DOMAIN and if you wish the output file names).
59
59
 
60
- % omf_cert.rb -o cm_factory.pem --email cm_factory@DOMAIN --resource-type cm_factory --resource-id xmpp://cm_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
60
+ $ omf_cert.rb -o cm_factory.pem --email cm_factory@DOMAIN --resource-type cm_factory --resource-id xmpp://cm_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
61
61
 
62
62
  Create a certificate for frisbee_proxy of NTRC (change DOMAIN, XMPP_DOMAIN and if you wish the output file names).
63
63
 
64
- % omf_cert.rb -o frisbee_factory.pem --email frisbee_factory@DOMAIN --resource-type frisbee_factory --resource-id xmpp://frisbee_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
64
+ $ omf_cert.rb -o frisbee_factory.pem --email frisbee_factory@DOMAIN --resource-type frisbee_factory --resource-id xmpp://frisbee_factory@XMPP_DOMAIN --root /root/.omf/trusted_roots/root.pem --duration 50000000 create_resource
65
65
 
66
66
 
67
+ Finally, omf6 script will be used by every user in the server, so we need to create a certificate for each user and place it in folder '~/.omf'.
67
68
 
68
- Create a certificate for the omf6 script, this certificate is inside the directory '~/.omf', every user of the testbed should have his own certificate in order to use omf6 script (change DOMAIN, USERNAME and if you wish the output file names).
69
+ Important (just for the root user)!!! If you already have a certificate for the root user in folder /root/.omf (probably created while installing omf_sfa) DO NOT create this certificate again and use the old one instead.
69
70
 
70
- Important!!! If you already have a user_cert.pem certificate in folder /root/.omf (probably created while installing omf_sfa) DO NOT create this certificate again and use the old one instead.
71
+ Use this commands to generate a certificate for a user (change DOMAIN, USERNAME and if you wish the output file names)
71
72
 
72
- % omf_cert.rb -o user_cert.pem --email USERNAME@DOMAIN --user USERNAME --root ~/.omf/trusted_roots/root.pem --duration 50000000 --geni_uri URI:urn:publicid:IDN+DOMAIN+user+USERNAME create_user
73
+ $ omf_cert.rb -o user_cert.pem --email USERNAME@DOMAIN --user USERNAME --root /root/.omf/trusted_roots/root.pem --duration 50000000 --geni_uri URI:urn:publicid:IDN+DOMAIN+user+USERNAME create_user
74
+ $ cp user_cert.pem /home/USERNAME/.omf
73
75
 
74
76
  Configuration files
75
77
  -------------------
@@ -159,16 +161,21 @@ Change configuration file '/etc/nitos_testbed_rc/frisbee_proxy_conf.yaml', which
159
161
 
160
162
  Important!!! DO NOT modify the file /etc/nitos_testbed_rc/omf_script_conf.yaml. It is a skeleton used by the user_proxy to generate the configuration file for every user it creates.
161
163
 
162
- Finaly, create/modify for each user the configuration file '~/.omf/etc/omf_script_conf.yaml', which is related to omf6 script of NTRC, every user of the testbed should have his own configuration file in order to use omf6 script. For example:
164
+ Finaly, create/modify for each user the configuration file '/home/USERNAME/.omf/etc/omf_script_conf.yaml', which is related to omf6 script of NTRC, every user of the testbed should have his own configuration file in order to use omf6 script.
165
+
166
+ $ mkdir /home/USERNAME/.omf/etc
167
+ $ cp /etc/nitos_testbed_rc/omf_script_conf.yaml /home/USERNAME/.omf/etc
168
+
169
+ For example:
163
170
 
164
171
  :xmpp:
165
- :script_user: script_user
172
+ :script_user: USERNAME
166
173
  :password: pw
167
174
  :server: DOMAIN
168
175
  :auth:
169
- :root_cert_dir: ~/.omf/trusted_roots
176
+ :root_cert_dir: /etc/nitos_testbed_rc/.omf/trusted_roots
170
177
  :entity_cert: ~/.omf/user_cert.pem
171
- :entity_key: ~/.omf/user_cert.pkey
178
+ :entity_key: ~/.ssh/id_rsa
172
179
  #operation mode for OmfCommon.init (development, production, etc)
173
180
  :operationMode: development
174
181
  #omf script configuration
@@ -181,9 +188,9 @@ Run proxies
181
188
 
182
189
  To start/stop/restart the upstart service of nitos_testbed_rc use:
183
190
 
184
- % start ntrc
185
- % stop ntrc
186
- % restart ntrc
191
+ $ start ntrc
192
+ $ stop ntrc
193
+ $ restart ntrc
187
194
 
188
195
  Starting ntrc as an upstart will generate the following log files:
189
196
 
@@ -195,17 +202,17 @@ Starting ntrc as an upstart will generate the following log files:
195
202
 
196
203
  Alternatively (mostly for debugging reasons) you can execute all proxies with one command:
197
204
 
198
- % run_proxies
205
+ $ run_proxies
199
206
 
200
207
  Or you run proxies seperatly
201
208
 
202
- % user_proxy
203
- % cm_proxy
204
- % frisbee_proxy
209
+ $ user_proxy
210
+ $ cm_proxy
211
+ $ frisbee_proxy
205
212
 
206
213
  Run omf6 commands
207
214
  -----------------
208
215
 
209
216
  Now you can use omf6 script to execute omf6 related commands
210
217
 
211
- % omf6 --help
218
+ $ omf6 --help
data/bin/cm_proxy CHANGED
@@ -65,8 +65,13 @@ class CmPDP
65
65
  resp = JSON.parse(response.body, :symbolize_names => true)
66
66
 
67
67
  if response.header.code != '200'
68
- error "AUTH error: empty response"
69
- msg.properties.state.error_msg = "#{resp[:reason]} - code: '#{resp[:exception][:code]}'"
68
+ if resp[:exception][:reason] == "No resources matching the request."
69
+ error "AUTH error: Node #{node_name} does not exist."
70
+ msg.properties.state.error_msg = "Node '#{node_name}' does not exist."
71
+ else
72
+ error "AUTH error: empty response"
73
+ msg.properties.state.error_msg = "#{resp[:exception][:reason]} - code: '#{resp[:exception][:code]}'"
74
+ end
70
75
  return msg# next
71
76
  end
72
77
 
@@ -77,13 +82,21 @@ class CmPDP
77
82
  return msg
78
83
  end
79
84
 
85
+ node = node[:resources].first
86
+
87
+ if @config[:testbedDomain] != "ALL" && node[:domain] != @config[:testbedDomain]
88
+ debug "This node does not belong to the domain '#{@config[:testbedDomain]}'"
89
+ msg.properties.state.ignore_msg = true
90
+ return msg
91
+ end
92
+
80
93
  if acc == 'root'
81
- debug "AUTH PASSED"
82
- msg.properties.state.node = node[:resources].first
94
+ debug "AUTH PASSED (root account)"
95
+ msg.properties.state.node = node
83
96
  return msg
84
97
  end
85
98
 
86
- node = node[:resources].first
99
+
87
100
  lease = nil
88
101
  unless node[:leases].nil?
89
102
  node[:leases].each do |l|
data/bin/frisbee_proxy CHANGED
@@ -69,8 +69,13 @@ class FrisbeePDP
69
69
  resp = JSON.parse(response.body, :symbolize_names => true)
70
70
 
71
71
  if response.header.code != '200'
72
- error "AUTH error: empty response"
73
- msg.properties.state.error_msg = "#{resp[:reason]} - code: '#{resp[:exception][:code]}'"
72
+ if resp[:exception] == "No resources matching the request."
73
+ error "AUTH error: Node '#{node_name}' does not exist."
74
+ msg.properties.state.error_msg = "Node #{node_name} does not exist."
75
+ else
76
+ error "AUTH error: empty response"
77
+ msg.properties.state.error_msg = "#{resp[:reason]} - code: '#{resp[:exception][:code]}'"
78
+ end
74
79
  return msg# next
75
80
  end
76
81
 
@@ -82,8 +87,15 @@ class FrisbeePDP
82
87
  end
83
88
 
84
89
  node = node[:resources].first
90
+
91
+ if @config[:testbedDomain] != "ALL" && node[:domain] != @config[:testbedDomain]
92
+ debug "This node does not belong to the domain '#{@config[:testbedDomain]}'"
93
+ msg.properties.state.ignore_msg = true
94
+ return msg
95
+ end
96
+
85
97
  if acc == 'root'
86
- debug "AUTH PASSED"
98
+ debug "AUTH PASSED (root account)"
87
99
  msg.properties.node = node
88
100
  return msg
89
101
  end
data/bin/omf6 CHANGED
@@ -787,7 +787,7 @@ def shut_down(comm)
787
787
  comm.disconnect
788
788
  end
789
789
 
790
- OmfCommon.init(@config[:operationMode], communication: { url: "xmpp://#{@xmpp[:script_user]}:#{@xmpp[:password]}@#{@xmpp[:server]}", auth: {} }) do
790
+ OmfCommon.init(@config[:operationMode], {communication: { url: "xmpp://#{@xmpp[:script_user]}:#{@xmpp[:password]}@#{@xmpp[:server]}", auth: {}}, logging: {}}) do
791
791
  OmfCommon.comm.on_connected do |comm|
792
792
  OmfCommon::Auth::CertificateStore.instance.register_default_certs(trusted_roots)
793
793
  entity.resource_id = OmfCommon.comm.local_topic.address
@@ -15,11 +15,14 @@
15
15
  #time (in seconds) before timeout error occurs
16
16
  :timeout: 80
17
17
 
18
- #time (in seconds) before timeout error occurs
18
+ #the pxe configuration file in /tftpboot/pxelinux.cfg
19
19
  :pxeSymLinkConfFile: omf-5.4
20
20
 
21
21
  #operation mode for OmfCommon.init (development, production, etc)
22
22
  :operationMode: development
23
23
 
24
24
  #testbed xmpp topic
25
- :testbedTopic: am_controller
25
+ :testbedTopic: am_controller
26
+
27
+ #testbed domain (resources with other domains will be ignored unless if this has the value 'ALL')
28
+ :testbedDomain: omf:testserver
@@ -18,6 +18,9 @@
18
18
  #testbed xmpp topic
19
19
  :testbedTopic: am_controller
20
20
 
21
+ #testbed domain (resources with other domains will be ignored unless if this has the value 'ALL')
22
+ :testbedDomain: omf:testserver
23
+
21
24
  #frisbee and imagezip configuration
22
25
  :frisbee:
23
26
  # Directory images are stored
@@ -5,9 +5,9 @@
5
5
  :auth:
6
6
  :root_cert_dir: ~/.omf/trusted_roots
7
7
  :entity_cert: ~/.omf/user_cert.pem
8
- :entity_key: ~/.omf/user_cert.pkey
8
+ :entity_key: ~/.ssh/id_rsa
9
9
  #operation mode for OmfCommon.init (development, production, etc)
10
- :operationMode: development
10
+ :operationMode: production
11
11
  #omf script configuration
12
12
  :omf_script:
13
13
  #default last action on load and save commands (reset or shutdown)
@@ -28,6 +28,10 @@ module OmfRc::ResourceProxy::CMFactory
28
28
  }, :ALL)
29
29
  next
30
30
  end
31
+ if value.ignore_msg
32
+ #just ignore this message, another resource controller should take care of this message
33
+ next
34
+ end
31
35
  nod = {}
32
36
  nod[:node_name] = value.node[:name]
33
37
  value.node[:interfaces].each do |i|
@@ -39,6 +39,10 @@ module OmfRc::ResourceProxy::Frisbee #frisbee client
39
39
  }, :ALL)
40
40
  next
41
41
  end
42
+ if client.opts.ignore_msg
43
+ #just ignore this message, another resource controller should take care of this message
44
+ next
45
+ end
42
46
  nod = {}
43
47
  nod[:node_name] = client.opts.node.name
44
48
  client.opts.node.interfaces.each do |i|
@@ -28,6 +28,14 @@ module OmfRc::ResourceProxy::Frisbeed
28
28
 
29
29
 
30
30
  hook :after_initial_configured do |server|
31
+ debug "Received message '#{server.opts.inspect}'"
32
+ if error_msg = server.opts.error_msg
33
+ next
34
+ end
35
+ if server.opts.ignore_msg
36
+ #just ignore this message, another resource controller should take care of this message
37
+ next
38
+ end
31
39
  server.property.app_id = server.hrn.nil? ? server.uid : server.hrn
32
40
  server.property.image = server.property.image.nil? ? @fconf[:imageDir] + '/' + @fconf[:defaultImage] : server.property.image
33
41
  server.property.image = server.property.image.start_with?('/') ? server.property.image : @fconf[:imageDir] + '/' + server.property.image
@@ -38,6 +38,10 @@ module OmfRc::ResourceProxy::ImagezipClient #Imagezip client
38
38
  }, :ALL)
39
39
  next
40
40
  end
41
+ if client.opts.ignore_msg
42
+ #just ignore this message, another resource controller should take care of this message
43
+ next
44
+ end
41
45
 
42
46
  nod = {}
43
47
  nod[:node_name] = client.opts.node.name
@@ -1,4 +1,4 @@
1
- #Imagezip client
1
+ #Imagezip server
2
2
  #created by parent :frisbee_factory
3
3
  #used in save command
4
4
 
@@ -24,6 +24,14 @@ module OmfRc::ResourceProxy::ImagezipServer #Imagezip server
24
24
  property :image_name, :default => @fconf[:imageDir] + '/new_image.ndz'
25
25
 
26
26
  hook :after_initial_configured do |server|
27
+ debug "Received message '#{server.opts.inspect}'"
28
+ if error_msg = server.opts.error_msg
29
+ next
30
+ end
31
+ if server.opts.ignore_msg
32
+ #just ignore this message, another resource controller should take care of this message
33
+ next
34
+ end
27
35
  server.property.app_id = server.hrn.nil? ? server.uid : server.hrn
28
36
  server.property.image_name = server.property.image_name.nil? ? @fconf[:imageDir] + '/' + @fconf[:defaultImage] : server.property.image_name
29
37
  server.property.image_name = server.property.image_name.start_with?('/') ? server.property.image_name : @fconf[:imageDir] + '/' + server.property.image_name
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module NITOS
2
2
  module TestbedRc
3
- VERSION = "1.0.0.pre.10"
3
+ VERSION = "1.0.0.pre.11"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nitos_testbed_rc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.10
4
+ version: 1.0.0.pre.11
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-26 00:00:00.000000000 Z
12
+ date: 2014-12-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omf_common