From: jiil.hyoun Date: Fri, 28 Dec 2012 01:49:30 +0000 (+0900) Subject: [Title] Add distribution when upgrade X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d183473b5bb8476a3993f18c497b5d3b6a553171;p=sdk%2Ftools%2Fsdk-build.git [Title] Add distribution when upgrade [Type] Feature [Module] Toolchain / [Priority] Major [Jira#] [Redmine#] 7863 [Problem] [Cause] [Solution] [TestCase] Change-Id: Icde038f20f26bd242a623d9b0dc610dba360855f --- diff --git a/build-svr b/build-svr index 06cef66..fc9a98f 100755 --- a/build-svr +++ b/build-svr @@ -97,6 +97,16 @@ begin 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]}" + 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}" + break + end + end + File.delete "#{BuildServer::CONFIG_ROOT}/#{option[:name]}/upgrade_dist" + end + cmd = Utils.generate_shell_command(cmd) puts cmd Utils.spawn(cmd) @@ -115,6 +125,20 @@ begin BuildServerController.stop_server( option[:name] ) 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] ) when "add-svr" diff --git a/src/build_server/BuildServerOptionParser.rb b/src/build_server/BuildServerOptionParser.rb index bcfb5d9..455a48b 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 " + UPGRADE="build-svr upgrade -n [-D ]" 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/common/log.rb b/src/common/log.rb index d1e090a..893885f 100644 --- a/src/common/log.rb +++ b/src/common/log.rb @@ -133,3 +133,15 @@ class DummyLog end end +class StandardOutLog < Log + + def initialize(path) + super(path) + @second_out = $stdout + end + + protected + def output_extra(msg) + @second_out.puts msg + end +end diff --git a/test/upgrade/01.testcase b/test/upgrade/01.testcase index 308aa9b..af117a1 100644 --- a/test/upgrade/01.testcase +++ b/test/upgrade/01.testcase @@ -1,6 +1,7 @@ #PRE-EXEC -./dibs1/build-svr upgrade -n testserver3 +./dibs1/build-svr upgrade -n testserver3 -D unstable #EXEC +sleep 3 ls dibs1/VERSION dibs2/VERSION #POST-EXEC #EXPECT diff --git a/upgrade b/upgrade index c26eb7a..26120ad 100755 --- a/upgrade +++ b/upgrade @@ -33,15 +33,15 @@ require 'optparse' $LOAD_PATH.unshift File.dirname(__FILE__)+"/src/common" $LOAD_PATH.unshift File.dirname(__FILE__)+"/src/build_server" $LOAD_PATH.unshift File.dirname(__FILE__)+"/src/pkg_server" +require "BuildServerController" require "utils.rb" require "log.rb" -require "packageServerLog" require "client" def option_error_check( options ) if options[:start] then if options[:locate].nil? or options[:type].nil? or options[:name].nil? then - raise ArgumentError, "upgrade -l -S -t -n -p " + "\n" + raise ArgumentError, "upgrade -l -S -t -n -p -D " + "\n" end else if options[:locate].nil? or options[:url].nil? then @@ -84,6 +84,10 @@ def option_parse options[:name] = name end + opts.on( '-D', '--distribution ', 'build server distribution name' ) do|dist| + options[:dist] = dist + end + options[:port] = 2222 opts.on( '-p', '--port ', 'server port number: 2224' ) do|port| options[:port] = port.strip.to_i @@ -122,6 +126,7 @@ begin svr_type = option[:type] svr_name = option[:name] svr_port = option[:port] + svr_dist = option[:dist] DIBS_PKG_NAME = "dibs" BACKUP_ROOT = Utils::HOME + "/.build_tools/backup" @@ -130,8 +135,19 @@ begin UPGRADE_CMD = "#{PREV_VER_PATH}/upgrade" BUILD_CONFIG_ROOT = "#{Utils::HOME}/.build_tools/build_server/#{svr_name}" + if not svr_dist.nil? then + build_server = BuildServerController.get_server(svr_name) + dist = build_server.distmgr.get_distribution(svr_dist) + 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 + end + if not File.exist? BACKUP_ROOT then FileUtils.mkdir_p(BACKUP_ROOT) end - log = PackageServerLog.new( "#{BACKUP_ROOT}/log" ) + log = StandardOutLog.new( "#{BUILD_CONFIG_ROOT}/log" ) if not install_opt then puts "" @@ -147,11 +163,16 @@ begin # Run Upgrade if start_opt and svr_type.eql? "BUILDSERVER" then - if pkg_svr_url.nil? or pkg_svr_url.empty? 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} -S -t #{svr_type} -n #{svr_name} -p #{svr_port} -u #{pkg_svr_url}" + cmd = "#{UPGRADE_CMD} -I -l #{dibs_path} -S -t #{svr_type} -n #{svr_name} -p #{svr_port}" + + 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 + else cmd = "#{UPGRADE_CMD} -I -l #{dibs_path} -u #{pkg_svr_url}" end @@ -163,10 +184,19 @@ begin # Get SERVER INFORMATION if start_opt and svr_type.eql? "BUILDSERVER" then # only when acesss build server controller - require "BuildServerController" build_server = BuildServerController.get_server(svr_name) if pkg_svr_url.nil? or pkg_svr_url.empty? then - pkg_svr_url = build_server.distmgr.get_default_pkgsvr_url() + 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 log.info("Build server : [#{svr_name}][#{svr_port}]", Log::LV_USER) end @@ -210,7 +240,7 @@ begin # recevie & print mismatched = false result = build_client.read_lines do |l| - log.error(l, Log::LV_USER) + log.info(l, Log::LV_USER) if l.include? "Password mismatched!" then mismatched = true end