[TITLE][DIBS][Build server] using default server port
authorjonghwan2.park <jonghwan2.park@samsung.com>
Thu, 18 Apr 2013 07:14:12 +0000 (16:14 +0900)
committerjonghwan2.park <jonghwan2.park@samsung.com>
Thu, 18 Apr 2013 07:14:12 +0000 (16:14 +0900)
[DESC.] redmine #8727

Change-Id: I0dc1a85adc5c48481d18abaebfed6f4d266c20da

build-svr
src/build_server/BuildServer.rb
src/build_server/BuildServerController.rb
src/build_server/BuildServerOptionParser.rb

index d892c67..1d433f8 100755 (executable)
--- 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|
index ae2e5de..8eb377f 100644 (file)
@@ -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"
index 5110305..fe450a5 100644 (file)
@@ -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
 
index 1e22842..e051492 100644 (file)
@@ -34,7 +34,7 @@ class BuildServerUsage
        CREATE="build-svr create -n <server name> [-t <ftp server url>]"
        REMOVE="build-svr remove -n <server name>"
        MIGRATE="build-svr migrate -n <server name> [--dsn <db dsn> [--dbuser <db_user> --dbpassword <db_password>] ]"
-       START="build-svr start -n <server name> -p <port>"
+       START="build-svr start -n <server name> [-p <port>]"
        STOP="build-svr stop -n <server name>"
        UPGRADE="build-svr upgrade -n <server name> [-D <distribution name>]"
        ADD_SVR="build-svr add-svr -n <server name> -d <friend server address>"
@@ -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 <port>', 'server port number: 2224' ) do|port|
                        options[:port] = port.strip.to_i
                end