From: donghee yang Date: Fri, 19 Apr 2013 09:28:42 +0000 (+0900) Subject: [Title] Fixed upgrade module for No DB server X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=96cf2a2f3cecc16e37e7a0d438a9320c10d527f7;p=sdk%2Ftools%2Fsdk-build.git [Title] Fixed upgrade module for No DB server --- diff --git a/build-svr b/build-svr index 1d433f8..5989dce 100755 --- a/build-svr +++ b/build-svr @@ -107,7 +107,7 @@ begin 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| - cmd += " -D #{l.strip}" + cmd += " -u #{l.strip}" break end end @@ -135,19 +135,9 @@ begin when "upgrade" if not (option[:dist].nil? or option[:dist].empty?) then build_server = BuildServerController.get_server(option[:name]) - # distribution check - if not build_server.distmgr.get_distribution(option[:dist]).nil? then - File.open("#{BuildServer::CONFIG_ROOT}/#{option[:name]}/upgrade_dist","w") do |f| - f.puts option[:dist] - end - else - puts "Distribution \"#{option[:dist]}\" is not exits" - puts "Upgrade Failed!!" - exit 1 - end end - BuildServerController.upgrade_server( option[:name] ) + BuildServerController.upgrade_server( option[:name], option[:url], option[:dist] ) when "add-svr" svr_result = Utils.parse_server_addr(option[:domain]) diff --git a/src/build_server/BuildServerController.rb b/src/build_server/BuildServerController.rb index fe450a5..14021c9 100644 --- a/src/build_server/BuildServerController.rb +++ b/src/build_server/BuildServerController.rb @@ -211,11 +211,35 @@ class BuildServerController end # upgrade server - def self.upgrade_server( id ) + def self.upgrade_server( id, pkgsvr_url, dist_name ) - # server server = get_server(id) + # distribution check + if pkgsvr_url.nil? then + if not server.has_db? then + puts BuildServerException.get_message("ERR021") + return false + end + + if dist_name.nil? then + dist = server.distmgr.get_first_distribution() + if dist.nil? then + puts "No distribution exits!" + puts "Upgrade Failed!!" + return false + end + else + dist = server.distmgr.get_distribution( dist_name ) + if dist.nil? then + puts "Distribution \"#{dist_name}\" is not exits" + puts "Upgrade Failed!!" + return false + end + end + pkgsvr_url = dist.pkgsvr_url + end + client = BuildCommClient.create( "127.0.0.1", server.port ) if client.nil? then puts "Server is not running!" @@ -224,7 +248,7 @@ class BuildServerController # send request upgrade_ok = false - if client.send "UPGRADE|#{server.password}" then + if client.send "UPGRADE|#{server.password}|#{pkgsvr_url}" then # recevie & print mismatched = false result = client.read_lines do |l| diff --git a/src/build_server/BuildServerOptionParser.rb b/src/build_server/BuildServerOptionParser.rb index e051492..ac97fbd 100644 --- a/src/build_server/BuildServerOptionParser.rb +++ b/src/build_server/BuildServerOptionParser.rb @@ -36,7 +36,7 @@ class BuildServerUsage MIGRATE="build-svr migrate -n [--dsn [--dbuser --dbpassword ] ]" START="build-svr start -n [-p ]" STOP="build-svr stop -n " - UPGRADE="build-svr upgrade -n [-D ]" + UPGRADE="build-svr upgrade -n [-D ] [-u ]" ADD_SVR="build-svr add-svr -n -d " REMOVE_SVR= "build-svr remove-svr -n -d " ADD_OS= "build-svr add-os -n -o " diff --git a/src/build_server/SocketJobRequestListener.rb b/src/build_server/SocketJobRequestListener.rb index 0ec2cb2..77321f3 100644 --- a/src/build_server/SocketJobRequestListener.rb +++ b/src/build_server/SocketJobRequestListener.rb @@ -614,21 +614,28 @@ class SocketJobRequestListener def handle_cmd_upgrade_internal( line, req ) tok = line.split("|").map { |x| x.strip } - if tok.count < 2 then + if tok.count < 3 then raise BuildServerException.new("ERR001"), line end + password = tok[1] + pkgsvr_url = tok[2] - if tok[1] != @parent_server.password then + # write package server url + File.open("#{BuildServer::CONFIG_ROOT}/#{@parent_server.id}/upgrade_dist","w") do |f| + f.puts pkgsvr_url + end + + if password != @parent_server.password then raise BuildServerException.new("ERR015"), "" else BuildCommServer.send(req,"Server will be upgraded!") BuildCommServer.send_end(req) BuildCommServer.disconnect(req) end - if tok[1] == @parent_server.password then - @parent_server.finish = true - @parent_server.upgrade = true - end + + # set flag for quit message loop + @parent_server.finish = true + @parent_server.upgrade = true end diff --git a/upgrade b/upgrade index 26120ad..a9eed0b 100755 --- a/upgrade +++ b/upgrade @@ -135,15 +135,20 @@ begin UPGRADE_CMD = "#{PREV_VER_PATH}/upgrade" BUILD_CONFIG_ROOT = "#{Utils::HOME}/.build_tools/build_server/#{svr_name}" - if not svr_dist.nil? then + if pkg_svr_url.nil? and not svr_dist.nil? then build_server = BuildServerController.get_server(svr_name) - dist = build_server.distmgr.get_distribution(svr_dist) + if build_server.has_db? then + dist = build_server.distmgr.get_distribution(svr_dist) + else + dist = nil + end if dist.nil? then log.error "Upgrade failed : No distribution name \"#{svr_dist}\" exist!", Log::LV_USER cmd = Utils.generate_shell_command("#{dibs_path}/build-svr start -n #{svr_name} -p #{svr_port}") Utils.spawn(cmd) exit 1 end + pkg_svr_url = dist.pkgsvr_url end if not File.exist? BACKUP_ROOT then FileUtils.mkdir_p(BACKUP_ROOT) end @@ -164,17 +169,15 @@ begin # Run Upgrade if start_opt and svr_type.eql? "BUILDSERVER" then cmd = "#{UPGRADE_CMD} -I -l #{dibs_path} -S -t #{svr_type} -n #{svr_name} -p #{svr_port}" + else + cmd = "#{UPGRADE_CMD} -I -l #{dibs_path}" + end - if not (pkg_svr_url.nil? or pkg_svr_url.empty?) then - cmd += " -u #{pkg_svr_url}" - end - - if not (svr_dist.nil? or svr_dist.empty?) then - cmd += " -D #{svr_dist}" - end - + if not (pkg_svr_url.nil? or pkg_svr_url.empty?) then + cmd += " -u #{pkg_svr_url}" else - cmd = "#{UPGRADE_CMD} -I -l #{dibs_path} -u #{pkg_svr_url}" + log.error "Upgrade failed : No package server URL!", Log::LV_USER + exit 1 end cmd = Utils.generate_shell_command(cmd) @@ -182,22 +185,7 @@ begin else # Get SERVER INFORMATION - if start_opt and svr_type.eql? "BUILDSERVER" then - # only when acesss build server controller - build_server = BuildServerController.get_server(svr_name) - if pkg_svr_url.nil? or pkg_svr_url.empty? then - if svr_dist.nil? or svr_dist.empty? then - pkg_svr_url = build_server.distmgr.get_default_pkgsvr_url() - else - dist = build_server.distmgr.get_distribution(svr_dist) - if not dist.nil? then - pkg_svr_url = dist.pkgsvr_url - else - log.error "Upgrade failed : No distribution name \"#{svr_dist}\" exist!", Log::LV_USER - exit 1 - end - end - end + if svr_type.eql? "BUILDSERVER" then log.info("Build server : [#{svr_name}][#{svr_port}]", Log::LV_USER) end log.info("Package Server : [#{pkg_svr_url}]", Log::LV_USER) @@ -207,56 +195,59 @@ begin client = Client.new( pkg_svr_url, NEW_VER_PATH, log) client.update() client.install( DIBS_PKG_NAME, Utils::HOST_OS, true, true) + if not File.exist? "#{NEW_VER_PATH}/tools/dibs" then + log.error("Not installed package error.", Log::LV_USER) + exit(1) + end # Copy Current path if File.exist? "#{dibs_path}" then FileUtils.rm_rf("#{dibs_path}") #FileUtils.mkdir_p("#{dibs_path}") end - if File.exist? "#{NEW_VER_PATH}/tools/dibs" then - FileUtils.cp_r("#{NEW_VER_PATH}/tools/dibs/.", "#{dibs_path}", :preserve => true) - else - log.error("Not installed package error.", Log::LV_USER) - exit(1) - end + + FileUtils.cp_r("#{NEW_VER_PATH}/tools/dibs/.", "#{dibs_path}", :preserve => true) # Execute start command - if start_opt - if not build_server.nil? and svr_type.eql? "BUILDSERVER" then + if start_opt then + if svr_type.eql? "BUILDSERVER" then # get friends server information - build_server.get_remote_servers().each do |svr| - ip = svr.ip - port = svr.port - - build_client = BuildCommClient.create( ip, port ) - if build_client.nil? then - log.info("Friend Server #{ip}:#{port} is not running!", Log::LV_USER) - next - end + build_server = BuildServerController.get_server(svr_name) + if build_server.has_db? then + build_server.get_remote_servers().each do |svr| + ip = svr.ip + port = svr.port + + build_client = BuildCommClient.create( ip, port ) + if build_client.nil? then + log.info("Friend Server #{ip}:#{port} is not running!", Log::LV_USER) + next + end - # send request - log.info("Upgrading Friend Server #{ip}:#{port}...", Log::LV_USER) - if build_client.send "UPGRADE|#{build_server.password}" then - # recevie & print - mismatched = false - result = build_client.read_lines do |l| - log.info(l, Log::LV_USER) - if l.include? "Password mismatched!" then - mismatched = true + # send request + log.info("Upgrading Friend Server #{ip}:#{port}...", Log::LV_USER) + if build_client.send "UPGRADE|#{build_server.password}|#{pkg_svr_url}" then + # recevie & print + mismatched = false + result = build_client.read_lines do |l| + log.info(l, Log::LV_USER) + if l.include? "Password mismatched!" then + mismatched = true + end end - end - if not result then + if not result then + log.info("Upgrading failed! #{build_client.get_error_msg()}", Log::LV_USER) + elsif mismatched then + log.info("Upgrading failed! Password mismatched!", Log::LV_USER) + end + else log.info("Upgrading failed! #{build_client.get_error_msg()}", Log::LV_USER) - elsif mismatched then - log.info("Upgrading failed! Password mismatched!", Log::LV_USER) + next end - else - log.info("Upgrading failed! #{build_client.get_error_msg()}", Log::LV_USER) - next - end - # terminate - build_client.terminate + # terminate + build_client.terminate + end end # Start Build server