nitos_testbed_rc 1.0.0.pre.4 → 1.0.0.pre.5

Sign up to get free protection for your applications and to get access to all the features.
data/bin/cm_proxy CHANGED
@@ -3,6 +3,10 @@ require 'rubygems'
3
3
  require 'omf_rc'
4
4
  require 'omf_common'
5
5
  require 'yaml'
6
+ require "net/https"
7
+ require "uri"
8
+ require "json"
9
+ require 'time'
6
10
 
7
11
  $stdout.sync = true
8
12
 
@@ -41,77 +45,129 @@ class CmPDP
41
45
  def authorize(msg, &block)
42
46
  debug "AUTH message received: #{msg.operation}"
43
47
  if msg.operation.to_sym == :configure
44
- wait = true
45
- result = nil
46
- OmfCommon.comm.subscribe(@config[:testbedTopic]) do |am_con|
47
- acc = _get_account_name(msg)
48
-
49
- if acc.nil?
50
- error "AUTH error: acc nill"
51
- msg.properties.state.error_msg = "Account name not found"
52
- result = msg
53
- wait = false
54
- next
55
- end
48
+ acc = _get_account_name(msg)
56
49
 
57
- node_name = msg.properties.state.node
58
- am_con.request([:nodes]) do |n_msg|
59
- nodes = n_msg.read_property("nodes")[:resources]
60
- node = nil
61
- nodes.each do |n|
62
- if n[:resource][:name].to_s == node_name.to_s
63
- node = n
64
- break
65
- end
66
- end
67
-
68
- lease = nil
69
- if node.nil?
70
- error "AUTH error: Node nill"
71
- msg.properties.state.error_msg = "Wrong node name."
72
- result = msg
73
- wait = false
74
- next
75
- else
76
- am_con.request([:leases]) do |l_msg|
77
- leases = l_msg.read_property("leases")[:resources]
78
- leases.each do |l|
79
- if Time.parse(l[:resource][:valid_from]) <= Time.now && Time.parse(l[:resource][:valid_until]) >= Time.now
80
- unless l[:resource][:components].nil?
81
- l[:resource][:components].each do |c|
82
- if c[:component][:name] == node_name.to_s && l[:resource][:account][:name] == acc
83
- lease = l
84
- break #found the correct lease
85
- end
86
- end
87
- end
88
- end
89
- end
90
-
91
- if lease.nil? #if lease is nil it means no matching lease is found
92
- error "AUTH error: Lease nill"
93
- msg.properties.state.error_msg = "Node is not leased by your account."
94
- result = msg
95
- wait = false
96
- next
97
- else
98
- debug "AUTH PASSED"
99
- msg.properties.state.node = node
100
- result = msg
101
- wait = false
102
- next
103
- end
104
- end
105
- end
106
- end
50
+ if acc.nil?
51
+ error "AUTH error: Account not found"
52
+ msg.properties.state.error_msg = "Account name not found"
53
+ return msg# next
54
+ end
55
+
56
+ node_name = msg.properties.state.node
57
+ broker = @config[:broker_url]
58
+
59
+ uri = URI.parse("#{broker}/resources/nodes?name=#{node_name}")
60
+ http = Net::HTTP.new(uri.host, uri.port)
61
+ http.use_ssl = true
62
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
63
+ request = Net::HTTP::Get.new(uri.request_uri)
64
+ response = http.request(request)
65
+ resp = JSON.parse(response.body, :symbolize_names => true)
66
+
67
+ if response.header.code != '200'
68
+ error "AUTH error: empty response"
69
+ msg.properties.state.error_msg = "#{resp[:reason]} - code: '#{resp[:exception][:code]}'"
70
+ return msg# next
107
71
  end
108
72
 
109
- #waiting for the whole process to be completed
110
- while wait
111
- sleep 1
73
+ node = resp[:resource_response]
74
+ if node.nil?
75
+ error "AUTH error: Node '#{node_name}' not found"
76
+ msg.properties.state.error_msg = "Node '#{node_name}' does not exist - code: '#{resp[:exception][:code]}'"
77
+ return msg
112
78
  end
113
79
 
114
- return result if result
80
+ node = node[:resources].first
81
+ lease = nil
82
+ node[:leases].each do |l|
83
+ l = l[:lease]
84
+ next if l[:account][:name] != acc
85
+ if Time.parse(l[:valid_from]) <= Time.now && Time.parse(l[:valid_until]) >= Time.now
86
+ lease = l
87
+ break
88
+ end
89
+ end
90
+
91
+ if lease.nil?
92
+ error "AUTH error: node not available"
93
+ msg.properties.state.error_msg = "Node '#{node_name}' is not leased by your account."
94
+ return msg
95
+ else
96
+ debug "AUTH PASSED"
97
+ msg.properties.state.node = node
98
+ return msg
99
+ end
100
+ # wait = true
101
+ # result = nil
102
+ # OmfCommon.comm.subscribe(@config[:testbedTopic]) do |am_con|
103
+ # acc = _get_account_name(msg)
104
+
105
+ # if acc.nil?
106
+ # error "AUTH error: acc nill"
107
+ # msg.properties.state.error_msg = "Account name not found"
108
+ # result = msg
109
+ # wait = false
110
+ # next
111
+ # end
112
+
113
+ # node_name = msg.properties.state.node
114
+ # am_con.request([:nodes]) do |n_msg|
115
+ # nodes = n_msg.read_property("nodes")[:resources]
116
+ # node = nil
117
+ # nodes.each do |n|
118
+ # if n[:resource][:name].to_s == node_name.to_s
119
+ # node = n
120
+ # break
121
+ # end
122
+ # end
123
+
124
+ # lease = nil
125
+ # if node.nil?
126
+ # error "AUTH error: Node nill"
127
+ # msg.properties.state.error_msg = "Wrong node name."
128
+ # result = msg
129
+ # wait = false
130
+ # next
131
+ # else
132
+ # am_con.request([:leases]) do |l_msg|
133
+ # leases = l_msg.read_property("leases")[:resources]
134
+ # leases.each do |l|
135
+ # if Time.parse(l[:resource][:valid_from]) <= Time.now && Time.parse(l[:resource][:valid_until]) >= Time.now
136
+ # unless l[:resource][:components].nil?
137
+ # l[:resource][:components].each do |c|
138
+ # if c[:component][:name] == node_name.to_s && l[:resource][:account][:name] == acc
139
+ # lease = l
140
+ # break #found the correct lease
141
+ # end
142
+ # end
143
+ # end
144
+ # end
145
+ # end
146
+
147
+ # if lease.nil? #if lease is nil it means no matching lease is found
148
+ # error "AUTH error: Lease nill"
149
+ # msg.properties.state.error_msg = "Node is not leased by your account."
150
+ # result = msg
151
+ # wait = false
152
+ # next
153
+ # else
154
+ # debug "AUTH PASSED"
155
+ # msg.properties.state.node = node
156
+ # result = msg
157
+ # wait = false
158
+ # next
159
+ # end
160
+ # end
161
+ # end
162
+ # end
163
+ # end
164
+
165
+ # #waiting for the whole process to be completed
166
+ # while wait
167
+ # sleep 1
168
+ # end
169
+
170
+ # return result if result
115
171
  else
116
172
  debug "AUTH PASSED"
117
173
  return msg
data/bin/frisbee_proxy CHANGED
@@ -3,6 +3,10 @@
3
3
  require 'omf_rc'
4
4
  require 'omf_common'
5
5
  require 'yaml'
6
+ require "net/https"
7
+ require "uri"
8
+ require "json"
9
+ require 'time'
6
10
 
7
11
  $stdout.sync = true
8
12
  @config = YAML.load_file('/etc/nitos_testbed_rc/frisbee_proxy_conf.yaml')
@@ -45,75 +49,127 @@ class FrisbeePDP
45
49
  debug "AUTH message received: #{msg.operation}"
46
50
  if msg.operation.to_sym == :create
47
51
  if msg.rtype.to_sym == :frisbee || msg.rtype.to_sym == :imagezip_client
48
- wait = true
49
- result = nil
50
- OmfCommon.comm.subscribe(@config[:testbedTopic]) do |am_con|
51
- acc = _get_account_name(msg)
52
-
53
- if acc.nil?
54
- error "AUTH error: acc nill"
55
- msg.propertie.error_msg = "Account name not found"
56
- result = msg
57
- wait = false
58
- next
59
- end
52
+ acc = _get_account_name(msg)
60
53
 
61
- node_name = msg.properties.node_topic
62
- am_con.request([:nodes]) do |n_msg|
63
- nodes = n_msg.read_property("nodes")[:resources]
64
- node = nil
65
- nodes.each do |n|
66
- if n[:resource][:name].to_s == node_name.to_s
67
- node = n
68
- break
69
- end
70
- end
71
-
72
- lease = nil
73
- if node.nil?
74
- error "AUTH error: Node nill"
75
- msg.properties.error_msg = "Wrong node name."
76
- result = msg
77
- wait = false
78
- next
79
- else
80
- am_con.request([:leases]) do |l_msg|
81
- leases = l_msg.read_property("leases")[:resources]
82
- leases.each do |l|
83
- if Time.parse(l[:resource][:valid_from]) <= Time.now && Time.parse(l[:resource][:valid_until]) >= Time.now
84
- l[:resource][:components].each do |c|
85
- if c[:component][:name] == node_name.to_s && l[:resource][:account][:name] == acc
86
- lease = l
87
- break #found the correct lease
88
- end
89
- end
90
- end
91
- end
92
-
93
- if lease.nil? #if lease is nil it means no matching lease is found
94
- error "AUTH error: Lease nill"
95
- msg.properties.error_msg = "Node is not leased by your account."
96
- result = msg
97
- wait = false
98
- next
99
- else
100
- debug "AUTH PASSED"
101
- msg.properties.node = node
102
- result = msg
103
- wait = false
104
- next
105
- end
106
- end
107
- end
108
- end
54
+ if acc.nil?
55
+ error "AUTH error: Account not found"
56
+ msg.properties.state.error_msg = "Account name not found"
57
+ return msg# next
58
+ end
59
+
60
+ node_name = msg.properties.node_topic
61
+ broker = @config[:broker_url]
62
+
63
+ uri = URI.parse("#{broker}/resources/nodes?name=#{node_name}")
64
+ http = Net::HTTP.new(uri.host, uri.port)
65
+ http.use_ssl = true
66
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
67
+ request = Net::HTTP::Get.new(uri.request_uri)
68
+ response = http.request(request)
69
+ resp = JSON.parse(response.body, :symbolize_names => true)
70
+
71
+ if response.header.code != '200'
72
+ error "AUTH error: empty response"
73
+ msg.properties.state.error_msg = "#{resp[:reason]} - code: '#{resp[:exception][:code]}'"
74
+ return msg# next
109
75
  end
110
76
 
111
- #waiting for the whole process to be completed
112
- while wait
113
- sleep 1
77
+ node = resp[:resource_response]
78
+ if node.nil?
79
+ error "AUTH error: Node not found"
80
+ msg.properties.state.error_msg = "#{resp[:reason]} - code: '#{resp[:exception][:code]}'"
81
+ return msg
114
82
  end
115
83
 
116
- return result if result
84
+ node = node[:resources].first
85
+ lease = nil
86
+ node[:leases].each do |l|
87
+ l = l[:lease]
88
+ next if l[:account][:name] != acc
89
+ if Time.parse(l[:valid_from]) <= Time.now && Time.parse(l[:valid_until]) >= Time.now
90
+ lease = l
91
+ break
92
+ end
93
+ end
94
+
95
+ if lease.nil?
96
+ error "AUTH error: node not available"
97
+ msg.properties.error_msg = "Node is not leased by your account."
98
+ return msg
99
+ else
100
+ debug "AUTH PASSED"
101
+ msg.properties.node = node
102
+ return msg
103
+ end
104
+ # wait = true
105
+ # result = nil
106
+ # OmfCommon.comm.subscribe(@config[:testbedTopic]) do |am_con|
107
+ # acc = _get_account_name(msg)
108
+
109
+ # if acc.nil?
110
+ # error "AUTH error: acc nill"
111
+ # msg.propertie.error_msg = "Account name not found"
112
+ # result = msg
113
+ # wait = false
114
+ # next
115
+ # end
116
+
117
+ # node_name = msg.properties.node_topic
118
+ # am_con.request([:nodes]) do |n_msg|
119
+ # nodes = n_msg.read_property("nodes")[:resources]
120
+ # node = nil
121
+ # nodes.each do |n|
122
+ # if n[:resource][:name].to_s == node_name.to_s
123
+ # node = n
124
+ # break
125
+ # end
126
+ # end
127
+
128
+ # lease = nil
129
+ # if node.nil?
130
+ # error "AUTH error: Node nill"
131
+ # msg.properties.error_msg = "Wrong node name."
132
+ # result = msg
133
+ # wait = false
134
+ # next
135
+ # else
136
+ # am_con.request([:leases]) do |l_msg|
137
+ # leases = l_msg.read_property("leases")[:resources]
138
+ # leases.each do |l|
139
+ # if Time.parse(l[:resource][:valid_from]) <= Time.now && Time.parse(l[:resource][:valid_until]) >= Time.now
140
+ # l[:resource][:components].each do |c|
141
+ # if c[:component][:name] == node_name.to_s && l[:resource][:account][:name] == acc
142
+ # lease = l
143
+ # break #found the correct lease
144
+ # end
145
+ # end
146
+ # end
147
+ # end
148
+
149
+ # if lease.nil? #if lease is nil it means no matching lease is found
150
+ # error "AUTH error: Lease nill"
151
+ # msg.properties.error_msg = "Node is not leased by your account."
152
+ # result = msg
153
+ # wait = false
154
+ # next
155
+ # else
156
+ # debug "AUTH PASSED"
157
+ # msg.properties.node = node
158
+ # result = msg
159
+ # wait = false
160
+ # next
161
+ # end
162
+ # end
163
+ # end
164
+ # end
165
+ # end
166
+
167
+ # #waiting for the whole process to be completed
168
+ # while wait
169
+ # sleep 1
170
+ # end
171
+
172
+ # return result if result
117
173
  else
118
174
  debug "AUTH PASSED"
119
175
  return msg
data/bin/install_ntrc CHANGED
@@ -18,17 +18,19 @@ unless File.directory?(log_path)
18
18
  FileUtils.mkdir_p(log_path)
19
19
  end
20
20
 
21
+ puts "Installing configuration files."
21
22
  conf_files = []
22
23
  conf_files << "cm_proxy_conf.yaml"
23
24
  conf_files << "frisbee_proxy_conf.yaml"
24
25
  conf_files << "user_proxy_conf.yaml"
25
- # conf_files << "omf_script_conf.yaml"
26
+ conf_files << "omf_script_conf.yaml"
26
27
 
27
28
  conf_files.each do |file|
28
29
  puts "Copying configuration file '#{gem_root}/etc/#{file}' to '#{config_path}'."
29
30
  FileUtils.cp "#{gem_root}/etc/#{file}", "#{config_path}/#{file}"
30
31
  FileUtils.chmod 0644, "#{config_path}/#{file}"
31
32
  end
33
+ puts "All configuration files have been installed, browse folder '#{config_path}' to alternate them appropriatly."
32
34
 
33
35
  config_path = File.expand_path("~/.omf/etc")
34
36
  unless File.directory?(config_path)