nitos_testbed_rc 1.0.0.pre.1
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/.gitignore +3 -0
- data/README.md +16 -0
- data/bin/cm_proxy +146 -0
- data/bin/frisbee_proxy +155 -0
- data/bin/install_ntrc +26 -0
- data/bin/omf6 +679 -0
- data/bin/run_proxies +29 -0
- data/bin/user_proxy +58 -0
- data/etc/cm_proxy_conf.yaml +17 -0
- data/etc/frisbee_proxy_conf.yaml +45 -0
- data/etc/omf_script_conf.yaml +14 -0
- data/etc/user_proxy_conf.yaml +12 -0
- data/lib/nitos_testbed_rc/cm_factory.rb +419 -0
- data/lib/nitos_testbed_rc/frisbee.rb +82 -0
- data/lib/nitos_testbed_rc/frisbee_factory.rb +39 -0
- data/lib/nitos_testbed_rc/frisbeed.rb +98 -0
- data/lib/nitos_testbed_rc/imagezip_client.rb +84 -0
- data/lib/nitos_testbed_rc/imagezip_server.rb +65 -0
- data/lib/nitos_testbed_rc/user.rb +133 -0
- data/lib/nitos_testbed_rc/user_factory.rb +13 -0
- data/lib/nitos_testbed_rc.rb +4 -0
- data/lib/version.rb +5 -0
- data/nitos_testbed_rc.gemspec +26 -0
- metadata +139 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
#this resource is used to control applications frisbee/frisbeed and imagezip_server/imagezip_client.
|
2
|
+
|
3
|
+
$ports = []
|
4
|
+
module OmfRc::ResourceProxy::FrisbeeFactory
|
5
|
+
include OmfRc::ResourceProxyDSL
|
6
|
+
|
7
|
+
@config = YAML.load_file('/etc/nitos_testbed_rc/frisbee_proxy_conf.yaml')
|
8
|
+
# @config = YAML.load_file(File.join(File.dirname(File.expand_path(__FILE__)), '../etc/frisbee_proxy_conf.yaml'))
|
9
|
+
@fconf = @config[:frisbee]
|
10
|
+
|
11
|
+
register_proxy :frisbee_factory
|
12
|
+
|
13
|
+
request :ports do |res|
|
14
|
+
port = @fconf[:startPort]
|
15
|
+
loop do
|
16
|
+
if $ports.include?(port)
|
17
|
+
port +=1
|
18
|
+
elsif !res.port_open?(port)
|
19
|
+
port +=1
|
20
|
+
else
|
21
|
+
$ports << port
|
22
|
+
break
|
23
|
+
end
|
24
|
+
end
|
25
|
+
debug "port chosen: '#{port}'"
|
26
|
+
port
|
27
|
+
end
|
28
|
+
|
29
|
+
def port_open?(port, seconds=1)
|
30
|
+
Timeout::timeout(seconds) do
|
31
|
+
begin
|
32
|
+
TCPServer.new('localhost', port) rescue return false
|
33
|
+
return true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
rescue Timeout::Error
|
37
|
+
return false
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
#frisbee server
|
2
|
+
#created by parent :frisbee_factory
|
3
|
+
#used in load command
|
4
|
+
|
5
|
+
module OmfRc::ResourceProxy::Frisbeed
|
6
|
+
include OmfRc::ResourceProxyDSL
|
7
|
+
require 'omf_common/exec_app'
|
8
|
+
|
9
|
+
@config = YAML.load_file('/etc/nitos_testbed_rc/frisbee_proxy_conf.yaml')
|
10
|
+
# @config = YAML.load_file(File.join(File.dirname(File.expand_path(__FILE__)), '../etc/frisbee_proxy_conf.yaml'))
|
11
|
+
@fconf = @config[:frisbee]
|
12
|
+
|
13
|
+
register_proxy :frisbeed, :create_by => :frisbee_factory
|
14
|
+
|
15
|
+
utility :common_tools
|
16
|
+
utility :platform_tools
|
17
|
+
|
18
|
+
property :app_id, :default => nil
|
19
|
+
property :binary_path, :default => @fconf[:frisbeedBin] #binary path to frisbeed '/usr/sbin/frisbeed'
|
20
|
+
property :map_err_to_out, :default => false
|
21
|
+
|
22
|
+
property :multicast_interface, :default => @fconf[:multicastIF] #multicast interface, example 10.0.0.200 (-i arguement)
|
23
|
+
property :multicast_address, :default => @fconf[:mcAddress] #multicast address, example 224.0.0.1 (-m arguement)
|
24
|
+
property :port #port, example 7000 (-p arguement)
|
25
|
+
property :speed, :default => @fconf[:bandwidth] #bandwidth speed in bits/sec, example 50000000 (-W arguement)
|
26
|
+
property :image, :default => @fconf[:imageDir] + '/' + @fconf[:defaultImage] #image to burn, example /var/lib/omf-images-5.4/baseline.ndz
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
hook :after_initial_configured do |server|
|
31
|
+
server.property.app_id = server.hrn.nil? ? server.uid : server.hrn
|
32
|
+
server.property.image = server.property.image.nil? ? @fconf[:imageDir] + '/' + @fconf[:defaultImage] : server.property.image
|
33
|
+
server.property.image = server.property.image.start_with?('/') ? server.property.image : @fconf[:imageDir] + '/' + server.property.image
|
34
|
+
unless File.file?(server.property.image)
|
35
|
+
debug "File '#{server.property.image}' does not exist."
|
36
|
+
raise "FILE NOT FOUND."
|
37
|
+
end
|
38
|
+
debug "Frisbee server is loading image: #{server.property.image}"
|
39
|
+
|
40
|
+
@app = ExecApp.new(server.property.app_id, server.build_command_line, server.property.map_err_to_out) do |event_type, app_id, msg|
|
41
|
+
server.process_event(server, event_type, app_id, msg)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
hook :before_release do |server|
|
46
|
+
begin
|
47
|
+
@app.signal(signal = 'KILL')
|
48
|
+
rescue Exception => e
|
49
|
+
raise e unless e.message == "No such process"
|
50
|
+
ensure
|
51
|
+
$ports.delete_if {|x| x == server.property.port}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# This method processes an event coming from the application instance, which
|
56
|
+
# was started by this Resource Proxy (RP). It is a callback, which is usually
|
57
|
+
# called by the ExecApp class in OMF
|
58
|
+
#
|
59
|
+
# @param [AbstractResource] res this RP
|
60
|
+
# @param [String] event_type the type of event from the app instance
|
61
|
+
# (STARTED, DONE.OK, DONE.ERROR, STDOUT, STDERR)
|
62
|
+
# @param [String] app_id the id of the app instance
|
63
|
+
# @param [String] msg the message carried by the event
|
64
|
+
#
|
65
|
+
def process_event(res, event_type, app_id, msg)
|
66
|
+
logger.info "Frisbeed: App Event from '#{app_id}' - #{event_type}: '#{msg}'"
|
67
|
+
if event_type == 'EXIT' #maybe i should inform you for every event_type.
|
68
|
+
res.inform(:status, {
|
69
|
+
status_type: 'FRISBEED',
|
70
|
+
event: event_type.to_s.upcase,
|
71
|
+
app: app_id,
|
72
|
+
exit_code: msg,
|
73
|
+
msg: msg
|
74
|
+
}, :ALL)
|
75
|
+
elsif event_type == 'STDOUT'
|
76
|
+
res.inform(:status, {
|
77
|
+
status_type: 'FRISBEED',
|
78
|
+
event: event_type.to_s.upcase,
|
79
|
+
app: app_id,
|
80
|
+
exit_code: msg,
|
81
|
+
msg: msg
|
82
|
+
}, :ALL)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# Build the command line, which will be used to add a new user.
|
87
|
+
#
|
88
|
+
work('build_command_line') do |res|
|
89
|
+
cmd_line = "env -i " # Start with a 'clean' environment
|
90
|
+
cmd_line += res.property.binary_path + " " # the /usr/sbin/frisbeed
|
91
|
+
cmd_line += "-i " + res.property.multicast_interface + " " # -i for interface
|
92
|
+
cmd_line += "-m " + res.property.multicast_address + " " # -m for address
|
93
|
+
cmd_line += "-p " + res.property.port.to_s + " " # -p for port
|
94
|
+
cmd_line += "-W " + res.property.speed.to_s + " " # -W for bandwidth
|
95
|
+
cmd_line += res.property.image # image no arguement
|
96
|
+
cmd_line
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
#Imagezip client
|
2
|
+
#created by parent :frisbee_factory
|
3
|
+
#used in save command
|
4
|
+
|
5
|
+
#$domain = @config[:domain][:ip]
|
6
|
+
|
7
|
+
module OmfRc::ResourceProxy::ImagezipClient #Imagezip client
|
8
|
+
include OmfRc::ResourceProxyDSL
|
9
|
+
require 'omf_common/exec_app'
|
10
|
+
|
11
|
+
@config = YAML.load_file('/etc/nitos_testbed_rc/frisbee_proxy_conf.yaml')
|
12
|
+
# @config = YAML.load_file(File.join(File.dirname(File.expand_path(__FILE__)), '../etc/frisbee_proxy_conf.yaml'))
|
13
|
+
@fconf = @config[:frisbee]
|
14
|
+
|
15
|
+
register_proxy :imagezip_client, :create_by => :frisbee_factory
|
16
|
+
|
17
|
+
utility :common_tools
|
18
|
+
utility :platform_tools
|
19
|
+
|
20
|
+
property :app_id, :default => nil
|
21
|
+
property :binary_path, :default => @fconf[:imagezipClientBin] #usually '/usr/bin/imagezip'
|
22
|
+
property :map_err_to_out, :default => false
|
23
|
+
|
24
|
+
property :ip, :default => @fconf[:multicastIF]
|
25
|
+
property :port
|
26
|
+
property :hardrive, :default => "/dev/sda"
|
27
|
+
property :node_topic
|
28
|
+
|
29
|
+
hook :after_initial_configured do |client|
|
30
|
+
Thread.new do
|
31
|
+
debug "Received message '#{client.opts.inspect}'"
|
32
|
+
if error_msg = client.opts.error_msg
|
33
|
+
res.inform(:error,{
|
34
|
+
event_type: "AUTH",
|
35
|
+
exit_code: "-1",
|
36
|
+
node_name: client.property.node_topic,
|
37
|
+
msg: error_msg
|
38
|
+
}, :ALL)
|
39
|
+
next
|
40
|
+
end
|
41
|
+
|
42
|
+
nod = {}
|
43
|
+
nod[:node_name] = client.opts.node.resource.name
|
44
|
+
client.opts.node.resource.interfaces.each do |i|
|
45
|
+
if i[:role] == "control"
|
46
|
+
nod[:node_ip] = i[:ip][:address]
|
47
|
+
nod[:node_mac] = i[:mac]
|
48
|
+
elsif i[:role] == "cm_network"
|
49
|
+
nod[:node_cm_ip] = i[:ip][:address]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
nod[:node_cm_ip] = client.opts.node.resource.cmc.ip.address
|
53
|
+
|
54
|
+
client.property.app_id = client.hrn.nil? ? client.uid : client.hrn
|
55
|
+
|
56
|
+
command = "#{client.property.binary_path} -o -z1 #{client.property.hardrive} - | /bin/nc -q 0 #{client.property.ip} #{client.property.port}"
|
57
|
+
debug "Executing command #{command}"
|
58
|
+
# nod = {node_name: "node1", node_ip: "10.0.0.1", node_mac: "00-03-1d-0d-4b-96", node_cm_ip: "10.0.0.101"}
|
59
|
+
|
60
|
+
host = Net::Telnet.new("Host" => nod[:node_ip], "Timeout" => false)#, "Prompt" => /[\w().-]*[\$#>:.]\s?(?:\(enable\))?\s*$/)
|
61
|
+
host.cmd(command.to_s) do |c|
|
62
|
+
if c.to_s != "\n" && c[0,5] != "\n/usr" && c.to_s != "." && c.to_s != ".." && c.to_s != "..."
|
63
|
+
#puts '__' + c.to_s + '__'
|
64
|
+
client.inform(:status, {
|
65
|
+
status_type: 'IMAGEZIP',
|
66
|
+
event: "STDOUT",
|
67
|
+
app: client.property.app_id,
|
68
|
+
node: client.property.node_topic,
|
69
|
+
msg: "#{c.to_s}"
|
70
|
+
}, :ALL)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
client.inform(:status, {
|
75
|
+
status_type: 'IMAGEZIP',
|
76
|
+
event: "EXIT",
|
77
|
+
app: client.property.app_id,
|
78
|
+
node: client.property.node_topic,
|
79
|
+
msg: 'imagezip client completed.'
|
80
|
+
}, :ALL)
|
81
|
+
host.close
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#Imagezip client
|
2
|
+
#created by parent :frisbee_factory
|
3
|
+
#used in save command
|
4
|
+
|
5
|
+
module OmfRc::ResourceProxy::ImagezipServer #Imagezip server
|
6
|
+
include OmfRc::ResourceProxyDSL
|
7
|
+
require 'omf_common/exec_app'
|
8
|
+
|
9
|
+
@config = YAML.load_file('/etc/nitos_testbed_rc/frisbee_proxy_conf.yaml')
|
10
|
+
# @config = YAML.load_file(File.join(File.dirname(File.expand_path(__FILE__)), '../etc/frisbee_proxy_conf.yaml'))
|
11
|
+
@fconf = @config[:frisbee]
|
12
|
+
|
13
|
+
register_proxy :imagezip_server, :create_by => :frisbee_factory
|
14
|
+
|
15
|
+
utility :common_tools
|
16
|
+
utility :platform_tools
|
17
|
+
|
18
|
+
property :app_id, :default => nil
|
19
|
+
property :binary_path, :default => @fconf[:imagezipServerBin] #usualy '/bin/nc'
|
20
|
+
property :map_err_to_out, :default => false
|
21
|
+
|
22
|
+
property :ip, :default => @fconf[:multicastIF]
|
23
|
+
property :port
|
24
|
+
property :image_name, :default => @fconf[:imageDir] + '/new_image.ndz'
|
25
|
+
|
26
|
+
hook :after_initial_configured do |server|
|
27
|
+
server.property.app_id = server.hrn.nil? ? server.uid : server.hrn
|
28
|
+
|
29
|
+
@app = ExecApp.new(server.property.app_id, server.build_command_line, server.property.map_err_to_out) do |event_type, app_id, msg|
|
30
|
+
server.process_event(server, event_type, app_id, msg)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
hook :before_release do |server|
|
35
|
+
$ports.delete_if {|x| x == server.property.port} #ports is in frisbee_factory
|
36
|
+
end
|
37
|
+
|
38
|
+
def process_event(res, event_type, app_id, msg)
|
39
|
+
logger.info "Frisbeed: App Event from '#{app_id}' - #{event_type}: '#{msg}'"
|
40
|
+
if event_type == 'EXIT' #maybe i should inform you for every event_type, we'll see.
|
41
|
+
res.inform(:status, {
|
42
|
+
status_type: 'IMAGEZIP',
|
43
|
+
event: event_type.to_s.upcase,
|
44
|
+
app: app_id,
|
45
|
+
exit_code: msg,
|
46
|
+
msg: msg
|
47
|
+
}, :ALL)
|
48
|
+
elsif event_type == 'STDOUT'
|
49
|
+
res.inform(:status, {
|
50
|
+
status_type: 'IMAGEZIP',
|
51
|
+
event: event_type.to_s.upcase,
|
52
|
+
app: app_id,
|
53
|
+
exit_code: msg,
|
54
|
+
msg: msg
|
55
|
+
}, :ALL)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
work('build_command_line') do |res|
|
60
|
+
cmd_line = "env -i " # Start with a 'clean' environment
|
61
|
+
cmd_line += res.property.binary_path + " "
|
62
|
+
cmd_line += "-d -l " + res.property.ip + " " + res.property.port.to_s + " > " + res.property.image_name
|
63
|
+
cmd_line
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
#This resource is created the parent :user_factory resource
|
2
|
+
|
3
|
+
|
4
|
+
module OmfRc::ResourceProxy::User
|
5
|
+
include OmfRc::ResourceProxyDSL
|
6
|
+
|
7
|
+
require 'omf_common/exec_app'
|
8
|
+
|
9
|
+
register_proxy :user, :create_by => :user_factory
|
10
|
+
|
11
|
+
utility :common_tools
|
12
|
+
utility :platform_tools
|
13
|
+
|
14
|
+
property :username
|
15
|
+
property :app_id, :default => nil
|
16
|
+
property :binary_path, :default => '/usr/sbin/useradd'
|
17
|
+
property :map_err_to_out, :default => false
|
18
|
+
|
19
|
+
configure :cert do |res, value|
|
20
|
+
#puts "CERTIFICATE #{value.inspect}"
|
21
|
+
path = "/home/#{res.property.username}/.omf/"
|
22
|
+
unless File.directory?(path)#create the directory if it doesn't exist (it will never exist)
|
23
|
+
FileUtils.mkdir_p(path)
|
24
|
+
end
|
25
|
+
|
26
|
+
File.write("#{path}/cert.pem", value)
|
27
|
+
end
|
28
|
+
|
29
|
+
configure :auth_keys do |res, value|
|
30
|
+
File.open("/home/#{res.property.username}/.ssh/authorized_keys", 'w') do |file|
|
31
|
+
value.each do |v|
|
32
|
+
file.puts v
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
#hook :before_ready do |user|
|
38
|
+
#define_method("on_app_event") { |*args| process_event(self, *args) }
|
39
|
+
#end
|
40
|
+
|
41
|
+
hook :after_initial_configured do |user|
|
42
|
+
user.property.app_id = user.hrn.nil? ? user.uid : user.hrn
|
43
|
+
|
44
|
+
ExecApp.new(user.property.app_id, user.build_command_line, user.property.map_err_to_out) do |event_type, app_id, msg|
|
45
|
+
user.process_event(user, event_type, app_id, msg)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# This method processes an event coming from the application instance, which
|
50
|
+
# was started by this Resource Proxy (RP). It is a callback, which is usually
|
51
|
+
# called by the ExecApp class in OMF
|
52
|
+
#
|
53
|
+
# @param [AbstractResource] res this RP
|
54
|
+
# @param [String] event_type the type of event from the app instance
|
55
|
+
# (STARTED, DONE.OK, DONE.ERROR, STDOUT, STDERR)
|
56
|
+
# @param [String] app_id the id of the app instance
|
57
|
+
# @param [String] msg the message carried by the event
|
58
|
+
#
|
59
|
+
def process_event(res, event_type, app_id, msg)
|
60
|
+
logger.info "App Event from '#{app_id}' - #{event_type}: '#{msg}'"
|
61
|
+
if event_type == 'EXIT'
|
62
|
+
if msg == 0 #only when user creation succeeds, create a new public key and save it to /home/username/.ssh/
|
63
|
+
#then inform with the appropriate msg, and give the pub key
|
64
|
+
key = OpenSSL::PKey::RSA.new(2048)
|
65
|
+
|
66
|
+
pub_key = key.public_key
|
67
|
+
|
68
|
+
path = "/home/#{res.property.username}/.ssh/"
|
69
|
+
unless File.directory?(path)#create the directory if it doesn't exist (it will never exist)
|
70
|
+
FileUtils.mkdir_p(path)
|
71
|
+
end
|
72
|
+
|
73
|
+
File.write("#{path}/pub_key.pem", pub_key.to_pem)
|
74
|
+
File.write("#{path}/key.pem", key.to_pem)
|
75
|
+
|
76
|
+
res.inform(:status, {
|
77
|
+
status_type: 'APP_EVENT',
|
78
|
+
event: event_type.to_s.upcase,
|
79
|
+
app: app_id,
|
80
|
+
exit_code: msg,
|
81
|
+
msg: msg,
|
82
|
+
uid: res.uid, # do we really need this? Should be identical to 'src'
|
83
|
+
pub_key: pub_key
|
84
|
+
}, :ALL)
|
85
|
+
else #if msg!=0 then the application failed to complete
|
86
|
+
path = "/home/#{res.property.username}/.ssh/"
|
87
|
+
if File.exists?("#{path}/pub_key.pem") && File.exists?("#{path}/key.pem")#if keys exist just read the pub_key for the inform
|
88
|
+
file = File.open("#{path}/pub_key.pem", "rb")
|
89
|
+
pub_key = file.read
|
90
|
+
file.close
|
91
|
+
else #if keys do not exist create them and then inform
|
92
|
+
key = OpenSSL::PKey::RSA.new(2048)
|
93
|
+
|
94
|
+
pub_key = key.public_key
|
95
|
+
|
96
|
+
path = "/home/#{res.property.username}/.ssh/"
|
97
|
+
unless File.directory?(path)#create the directory if it doesn't exist (it will never exist)
|
98
|
+
FileUtils.mkdir_p(path)
|
99
|
+
end
|
100
|
+
|
101
|
+
File.write("#{path}/pub_key.pem", pub_key.to_pem)
|
102
|
+
File.write("#{path}/key.pem", key.to_pem)
|
103
|
+
end
|
104
|
+
res.inform(:status, {
|
105
|
+
status_type: 'APP_EVENT',
|
106
|
+
event: event_type.to_s.upcase,
|
107
|
+
app: app_id,
|
108
|
+
exit_code: msg,
|
109
|
+
msg: msg,
|
110
|
+
uid: res.uid, # do we really need this? Should be identical to 'src'
|
111
|
+
pub_key: pub_key
|
112
|
+
}, :ALL)
|
113
|
+
end
|
114
|
+
else
|
115
|
+
res.inform(:status, {
|
116
|
+
status_type: 'APP_EVENT',
|
117
|
+
event: event_type.to_s.upcase,
|
118
|
+
app: app_id,
|
119
|
+
msg: msg,
|
120
|
+
uid: res.uid
|
121
|
+
}, :ALL)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# Build the command line, which will be used to add a new user.
|
126
|
+
#
|
127
|
+
work('build_command_line') do |res|
|
128
|
+
cmd_line = "env -i " # Start with a 'clean' environment
|
129
|
+
cmd_line += res.property.binary_path + " " # the /usr/sbin/useradd
|
130
|
+
cmd_line += " -m -s /bin/bash #{res.property.username}" # the username, -m for adding folder -s for default shell to /bin/bash, removed -d /home/#{res.property.username}
|
131
|
+
cmd_line
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#This resource is related with user instance
|
2
|
+
|
3
|
+
|
4
|
+
module OmfRc::ResourceProxy::UserFactory
|
5
|
+
include OmfRc::ResourceProxyDSL
|
6
|
+
|
7
|
+
register_proxy :user_factory
|
8
|
+
|
9
|
+
configure :deluser do |res, value|
|
10
|
+
cmd = 'userdel -r ' + value[:username]
|
11
|
+
system cmd
|
12
|
+
end
|
13
|
+
end
|
data/lib/version.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "version.rb"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "nitos_testbed_rc"
|
7
|
+
s.version = NITOS::TestbedRc::VERSION
|
8
|
+
s.authors = ["NITOS"]
|
9
|
+
s.email = ["nitlab@inf.uth.gr"]
|
10
|
+
s.homepage = "http://nitlab.inf.uth.gr"
|
11
|
+
s.summary = %q{NITOS testbed resource controllers.}
|
12
|
+
s.description = %q{NITOS testbed resource controllers that support a. Chassis manager cards, b. frisbee clients and servers for loading and saving images and c. user creation.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "nitos_testbed_rc"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
# s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_runtime_dependency "omf_common", "~> 6.1.2.pre.5"
|
23
|
+
s.add_runtime_dependency "omf_rc", "~> 6.1.2.pre.5"
|
24
|
+
s.add_runtime_dependency "nokogiri", "~> 1.6.0"
|
25
|
+
s.add_development_dependency "net-ssh", "~> 2.8.0"
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nitos_testbed_rc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.pre.1
|
5
|
+
prerelease: 6
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- NITOS
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-06-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: omf_common
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 6.1.2.pre.5
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 6.1.2.pre.5
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: omf_rc
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 6.1.2.pre.5
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 6.1.2.pre.5
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: nokogiri
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.6.0
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.6.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: net-ssh
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.8.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.8.0
|
78
|
+
description: NITOS testbed resource controllers that support a. Chassis manager cards,
|
79
|
+
b. frisbee clients and servers for loading and saving images and c. user creation.
|
80
|
+
email:
|
81
|
+
- nitlab@inf.uth.gr
|
82
|
+
executables:
|
83
|
+
- cm_proxy
|
84
|
+
- frisbee_proxy
|
85
|
+
- install_ntrc
|
86
|
+
- omf6
|
87
|
+
- run_proxies
|
88
|
+
- user_proxy
|
89
|
+
extensions: []
|
90
|
+
extra_rdoc_files: []
|
91
|
+
files:
|
92
|
+
- .gitignore
|
93
|
+
- README.md
|
94
|
+
- bin/cm_proxy
|
95
|
+
- bin/frisbee_proxy
|
96
|
+
- bin/install_ntrc
|
97
|
+
- bin/omf6
|
98
|
+
- bin/run_proxies
|
99
|
+
- bin/user_proxy
|
100
|
+
- etc/cm_proxy_conf.yaml
|
101
|
+
- etc/frisbee_proxy_conf.yaml
|
102
|
+
- etc/omf_script_conf.yaml
|
103
|
+
- etc/user_proxy_conf.yaml
|
104
|
+
- lib/nitos_testbed_rc.rb
|
105
|
+
- lib/nitos_testbed_rc/cm_factory.rb
|
106
|
+
- lib/nitos_testbed_rc/frisbee.rb
|
107
|
+
- lib/nitos_testbed_rc/frisbee_factory.rb
|
108
|
+
- lib/nitos_testbed_rc/frisbeed.rb
|
109
|
+
- lib/nitos_testbed_rc/imagezip_client.rb
|
110
|
+
- lib/nitos_testbed_rc/imagezip_server.rb
|
111
|
+
- lib/nitos_testbed_rc/user.rb
|
112
|
+
- lib/nitos_testbed_rc/user_factory.rb
|
113
|
+
- lib/version.rb
|
114
|
+
- nitos_testbed_rc.gemspec
|
115
|
+
homepage: http://nitlab.inf.uth.gr
|
116
|
+
licenses: []
|
117
|
+
post_install_message:
|
118
|
+
rdoc_options: []
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>'
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.3.1
|
133
|
+
requirements: []
|
134
|
+
rubyforge_project: nitos_testbed_rc
|
135
|
+
rubygems_version: 1.8.25
|
136
|
+
signing_key:
|
137
|
+
specification_version: 3
|
138
|
+
summary: NITOS testbed resource controllers.
|
139
|
+
test_files: []
|