From 015011edef1dcacd21ce9b78dc3652a2856c2cce Mon Sep 17 00:00:00 2001 From: "jonghwan2.park" Date: Thu, 18 Apr 2013 16:14:12 +0900 Subject: [PATCH] [TITLE][DIBS][Build server] using default server port [DESC.] redmine #8727 Change-Id: I0dc1a85adc5c48481d18abaebfed6f4d266c20da --- build-svr | 10 +++-- src/build_server/BuildServer.rb | 8 ++-- src/build_server/BuildServerController.rb | 47 +++++++++++++++++---- src/build_server/BuildServerOptionParser.rb | 7 ++- 4 files changed, 54 insertions(+), 18 deletions(-) diff --git a/build-svr b/build-svr index d892c67..1d433f8 100755 --- a/build-svr +++ b/build-svr @@ -85,11 +85,15 @@ begin begin while(true) log.info "Build Server[#{option[:name]}] Start - PORT: [#{option[:port]}]" + + # set port option + port_option = ((option[:port] != "") and (option[:port] != nil)) ? "-p #{option[:port]}" : "" + # Start child process - cmd = Utils.generate_shell_command("#{File.dirname(__FILE__)}/build-svr start -n #{option[:name]} -p #{option[:port]} --CHILD") + cmd = Utils.generate_shell_command("#{File.dirname(__FILE__)}/build-svr start -n #{option[:name]} #{port_option} --CHILD") io = IO.popen(cmd) - puts io.readlines() + puts io.readlines() pid = Process.wait @@ -99,7 +103,7 @@ begin log.info "Down Build Server." break elsif ($?.exitstatus == 99) then # DIBS UPGRADE - cmd = "#{File.dirname(__FILE__)}/upgrade -l #{File.dirname(__FILE__)} -S -t BUILDSERVER -n #{option[:name]} -p #{option[:port]}" + cmd = "#{File.dirname(__FILE__)}/upgrade -l #{File.dirname(__FILE__)} -S -t BUILDSERVER -n #{option[:name]} #{port_option}" if File.exist? "#{BuildServer::CONFIG_ROOT}/#{option[:name]}/upgrade_dist" then File.open("#{BuildServer::CONFIG_ROOT}/#{option[:name]}/upgrade_dist","r") do |f| f.each_line do |l| diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index ae2e5de..8eb377f 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -47,6 +47,7 @@ class BuildServer attr_accessor :id, :path, :status, :host_os, :log attr_accessor :remote_servers attr_accessor :git_server_url, :git_bin_path + attr_accessor :config_port attr_accessor :allowed_git_branch attr_accessor :jobmgr attr_accessor :test_time @@ -71,11 +72,12 @@ class BuildServer def initialize (id, path, ftpsvr_addr, ftpsvr_port, ftpsvr_username, ftpsvr_passwd) @id = id @path = path - @run_file_path = File.join(BuildServer::CONFIG_ROOT, @id, "run") + @run_file_path = File.join(BuildServer::CONFIG_ROOT, @id, "run") @remote_servers = [] @req_listener = [] @finish = false @running_port = nil + @config_port = nil # status @status = "INITIALIZING" # host_os @@ -297,7 +299,7 @@ class BuildServer @pkg_sync = PackageServerSynchronizer.new(self) @pkg_sync.start end - + # update friend server status @log.info "Initializing Remote Servers..." if has_db? then @@ -306,7 +308,7 @@ class BuildServer server.create_system_monitor() end end - + # main loop @log.info "Entering main loop..." @status = "RUNNING" diff --git a/src/build_server/BuildServerController.rb b/src/build_server/BuildServerController.rb index 5110305..fe450a5 100644 --- a/src/build_server/BuildServerController.rb +++ b/src/build_server/BuildServerController.rb @@ -47,12 +47,17 @@ class BuildServerController # create new instance and return it @@instance_map[id] = BuildServer.new( id, path, ftpsvr_addr, ftpsvr_port, ftpsvr_username, ftpsvr_passwd) + # set default if Utils.is_windows_like_os(Utils::HOST_OS) then @@instance_map[id].git_bin_path="/c/Program\\ Files/Git/bin/git.exe" else @@instance_map[id].git_bin_path="/usr/bin/git" end + + # set default server port + default_port = 2222 + @@instance_map[id].port = default_port # write config write_server_config( @@instance_map[id] ) @@ -61,6 +66,10 @@ class BuildServerController @@instance_map[id].log = Log.new( "#{BuildServer::CONFIG_ROOT}/#{id}/log" ) puts "Created new build server: \"#{id}\"" + puts " - server location : #{path}" + puts " - server configure file : #{BuildServer::CONFIG_ROOT}/#{id}/server.cfg" + puts " - default server port : #{default_port}" + return @@instance_map[id] end @@ -127,21 +136,34 @@ class BuildServerController # start server - def self.start_server( id, port = 2222 ) + def self.start_server( id, port ) server = get_server(id) if server.has_db? then server.jobmgr.cancel_broken_status end - # write run port server_dir = "#{BuildServer::CONFIG_ROOT}/#{server.id}" - f = File.open( "#{server_dir}/run", "w" ) - f.puts port - f.close + + # if user input exsist, set user's port number. + if (port != "") and (port != nil) then + # update server port information + original_string = "SERVER_PORT=#{server.config_port}" + replacement_string = "SERVER_PORT=#{port}" + contents = File.read("#{server_dir}/server.cfg").gsub("#{original_string}", "#{replacement_string}") + + # write to config file + File.open("#{server_dir}/server.cfg", "w") { |f| f.puts contents } + # update to db + server.port = port + else # if user input not exsist, set config file's port number. + server.port = server.config_port + end + + # write run port + File.open( "#{server_dir}/run", "w" ) { |f| f.puts server.port } # start - server.port = port if server.has_db? then server.save_id_to_db(server.id) server.save_path_to_db(server.path) @@ -884,6 +906,7 @@ class BuildServerController f.puts "ID=#{server.id}" f.puts "PATH=#{server.path}" f.puts "GIT_BIN_PATH=#{server.git_bin_path}" + f.puts "SERVER_PORT=#{server.port}" f.puts "TEST_TIME=#{server.test_time}" if server.test_time > 0 f.puts "PASSWORD=#{server.test_time}" if server.password != "0000" if not server.ftp_addr.nil? then @@ -901,6 +924,8 @@ class BuildServerController def self.read_server_config( id ) path="" git_bin_path="/usr/bin/git" + running_port=nil + config_port=nil test_time=0 password="0000" ftp_addr=nil @@ -923,6 +948,8 @@ class BuildServerController path = l[idx,length].strip elsif l.start_with?("GIT_BIN_PATH=") git_bin_path = l[idx,length].strip + elsif l.start_with?("SERVER_PORT=") + config_port = l[idx,length].strip.to_i elsif l.start_with?("TEST_TIME=") test_time = l[idx,length].strip.to_i elsif l.start_with?("PASSWORD=") @@ -961,14 +988,18 @@ class BuildServerController # create server object obj = BuildServer.new( id, path, ftp_addr, ftp_port, ftp_username, ftp_passwd ) - # check running port + # get running port if File.exist? "#{server_dir}/run" then f = File.open( "#{server_dir}/run", "r" ) l = f.gets - obj.port = l.strip.to_i + running_port = l.strip.to_i f.close end + # set port information + obj.port = running_port if (running_port != nil) + obj.config_port = config_port + # set git binary path obj.git_bin_path = git_bin_path diff --git a/src/build_server/BuildServerOptionParser.rb b/src/build_server/BuildServerOptionParser.rb index 1e22842..e051492 100644 --- a/src/build_server/BuildServerOptionParser.rb +++ b/src/build_server/BuildServerOptionParser.rb @@ -34,7 +34,7 @@ class BuildServerUsage CREATE="build-svr create -n [-t ]" REMOVE="build-svr remove -n " MIGRATE="build-svr migrate -n [--dsn [--dbuser --dbpassword ] ]" - START="build-svr start -n -p " + START="build-svr start -n [-p ]" STOP="build-svr stop -n " UPGRADE="build-svr upgrade -n [-D ]" ADD_SVR="build-svr add-svr -n -d " @@ -74,8 +74,7 @@ def option_error_check( options ) end when "start" - if options[:name].nil? or options[:name].empty? or - options[:port].nil? then + if options[:name].nil? or options[:name].empty? then raise ArgumentError, "Usage: " + BuildServerUsage::START end @@ -262,7 +261,7 @@ def option_parse options[:domain] = domain end - options[:port] = 2222 + options[:port] = nil opts.on( '-p', '--port ', 'server port number: 2224' ) do|port| options[:port] = port.strip.to_i end -- 2.34.1