[Title] Applied "Distribution" concept to buildserver
authordonghee yang <donghee.yang@samsung.com>
Thu, 27 Sep 2012 07:49:34 +0000 (16:49 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Thu, 27 Sep 2012 07:49:34 +0000 (16:49 +0900)
src/build_server/BuildJob.rb
src/build_server/BuildServer.rb
src/build_server/BuildServerController.rb
src/build_server/CommonProject.rb
src/build_server/DistributionManager.rb [new file with mode: 0644]
src/build_server/FullBuildJob.rb [deleted file]
src/build_server/GitBuildJob.rb
src/build_server/MultiBuildJob.rb
src/build_server/PackageSync.rb
src/build_server/RegisterPackageJob.rb
src/build_server/RemoteBuildServer.rb

index 553ee8969ab45e3ac813f952dd685b9a6a92fa25..1fe8050269747bdfd06f1e08905bd54fa5db9c56 100644 (file)
@@ -62,7 +62,9 @@ class BuildJob < CommonJob
                @cancel_state = "NONE"
         @resolve = false
                @host_os = Utils::HOST_OS
-               @pkgserver_url = @server.pkgserver_url
+               @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url
+               @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip
+               @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port
                @job_root = "#{@server.path}/jobs/#{@id}"
                @source_path = @job_root+"/temp"
                @job_working_dir=@job_root+"/works"
@@ -736,14 +738,14 @@ class BuildJob < CommonJob
                        @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
                        @log.info( " - FTP Server : #{@server.ftp_addr}" )
                else
-                       builder = Builder.create( "JB#{@id}", @pkgserver_url, nil,
+                       builder = Builder.create( "JB#{@id}", @pkgsvr_url, nil,
                                 "#{@buildroot_dir}", @server.build_cache_dir )
                        if builder.nil?
                                @log.error( "Creating job builder failed", Log::LV_USER)
                                return false
                        end
                        @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
-                       @log.info( " - Package Server : #{@pkgserver_url}" )
+                       @log.info( " - Package Server : #{@pkgsvr_url}" )
                        @log.info( " - Build Cache Path : #{@server.build_cache_dir}" )
                end
                @log.info( " - Log Path : #{@log.path}" )
@@ -832,14 +834,14 @@ class BuildJob < CommonJob
                        @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
                        @log.info( " - FTP Server : #{@server.ftp_addr}" )
                else
-                       builder = Builder.create( "JB#{@id}", @pkgserver_url, nil,
+                       builder = Builder.create( "JB#{@id}", @pkgsvr_url, nil,
                                 "#{@buildroot_dir}/#{@os}", @server.build_cache_dir )
                        if builder.nil?
                                @log.error( "Creating job builder failed", Log::LV_USER)
                                return false
                        end
                        @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
-                       @log.info( " - Package Server : #{@pkgserver_url}" )
+                       @log.info( " - Package Server : #{@pkgsvr_url}" )
                        @log.info( " - Build Cache Path : #{@server.build_cache_dir}" )
                end
                @log.info( " - Log Path : #{@log.path}" )
@@ -910,14 +912,14 @@ class BuildJob < CommonJob
                        @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
                        @log.info( " - FTP Server : #{@server.ftp_addr}" )
                else
-                       builder = Builder.create( "JB#{@id}", @pkgserver_url, nil,
+                       builder = Builder.create( "JB#{@id}", @pkgsvr_url, nil,
                                 "#{@buildroot_dir}/#{@os}", @server.build_cache_dir )
                        if builder.nil?
                                @log.error( "Creating job builder failed", Log::LV_USER)
                                return false
                        end
                        @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
-                       @log.info( " - Package Server : #{@pkgserver_url}" )
+                       @log.info( " - Package Server : #{@pkgsvr_url}" )
                        @log.info( " - Build Cache Path : #{@server.build_cache_dir}" )
                end
                @log.info( " - Log Path : #{@log.path}" )
@@ -992,8 +994,8 @@ class BuildJob < CommonJob
                binpkg_path_list = Dir.glob("#{@source_path}/*_*_#{@os}.zip")
 
                # upload
-               u_client = Client.new( @server.pkgserver_url, nil, @log )
-               snapshot = u_client.upload( @server.pkgserver_addr, @server.pkgserver_port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, binpkg_path_list)
+               u_client = Client.new( @pkgsvr_url, nil, @log )
+               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, binpkg_path_list)
 
                if snapshot.nil? then
                        @log.info( "Upload failed...", Log::LV_USER)
index d92d637eb6730ed44a429ce0b2f1fed34d12cf8e..25150f818c7aba1d7d41a79cb2a37948c8423973 100644 (file)
@@ -36,9 +36,10 @@ require "JobClean.rb"
 require "RemoteBuildServer.rb"
 require "PackageSync.rb"
 require "ProjectManager.rb"
+require "DistributionManager.rb"
 
 class BuildServer
-       attr_accessor :id, :path, :pkgserver_url, :pkgserver_addr, :pkgserver_port, :port, :status, :friend_servers, :host_os, :log
+       attr_accessor :id, :path, :port, :status, :friend_servers, :host_os, :log
        attr_accessor :git_server_url, :git_bin_path
        attr_accessor :job_log_url
        attr_accessor :allowed_git_branch
@@ -54,7 +55,7 @@ class BuildServer
        attr_accessor :ftp_username
        attr_accessor :ftp_passwd
        attr_accessor :cleaner
-       attr_accessor :prjmgr
+       attr_accessor :prjmgr, :distmgr
        attr_accessor :transport_path
        attr_accessor :cancel_lock
        attr_accessor :supported_os_list
@@ -69,9 +70,6 @@ class BuildServer
        def initialize (id, path, ftpsvr_addr, ftpsvr_port, ftpsvr_username, ftpsvr_passwd)
                @id = id
                @path = path
-               @pkgserver_url = nil
-               @pkgserver_addr = nil
-        @pkgserver_port = nil
                @friend_servers = []
                @remote_pkg_servers = []
                @req_listener = []
@@ -102,6 +100,7 @@ class BuildServer
         @ftp_passwd = ftpsvr_passwd
                @cleaner=nil
                @prjmgr = ProjectManager.new(self)
+               @distmgr = DistributionManager.new(self)
                # 
                @transport_path = "#{@path}/transport"
                @cancel_lock = Mutex.new
@@ -367,7 +366,7 @@ class BuildServer
                        # create table
                        db.execute "CREATE TABLE IF NOT EXISTS distributions(name VARCHAR(32) PRIMARY KEY, pkgsvr_url VARCHAR(256), pkgsvr_addr VARCHAR(64))"
                        db.execute "CREATE TABLE IF NOT EXISTS remote_build_servers(id INTEGER PRIMARY KEY, svr_addr VARCHAR(64))"
-                       db.execute "CREATE TABLE IF NOT EXISTS sync_pkg_servers(id INTEGER PRIMARY KEY, pkgsvr_url VARCHAR(256), period INTEGER)"
+                       db.execute "CREATE TABLE IF NOT EXISTS sync_pkg_servers(id INTEGER PRIMARY KEY, pkgsvr_url VARCHAR(256), period INTEGER, dist_name VARCHAR(32))"
                        db.execute "CREATE TABLE IF NOT EXISTS supported_os(name VARCHAR(32) PRIMARY KEY)"
                        db.execute "CREATE TABLE IF NOT EXISTS projects(id INTEGER PRIMARY KEY, name VARCHAR(32), type VARCHAR(32), password VARCHAR(32), dist_name VARCHAR(32))"
                        db.execute "CREATE TABLE IF NOT EXISTS project_os(prj_id INTEGER, os_name VARCHAR(32))"
@@ -382,17 +381,15 @@ class BuildServer
 
        # save
        def save_db()
+
+               # distribution
+               @distmgr.save_db()
+
                db_file = "#{BuildServer::CONFIG_ROOT}/#{@id}/server.db" 
                begin
                        # open DB
                        db = SQLite3::Database.open db_file
 
-                       # distributions
-                       url = @pkgserver_url
-                       addr = @pkgserver_addr + ":" + @pkgserver_port.to_s
-                       db.execute "DELETE FROM distributions"
-                       db.execute "INSERT INTO distributions VALUES('BASE','#{url}','#{addr}')"
-
                        # remote_build_servers
                        db.execute "DELETE FROM remote_build_servers"
                        idx = 0
@@ -405,7 +402,7 @@ class BuildServer
                        db.execute "DELETE FROM sync_pkg_servers"
                        idx = 0
                        @remote_pkg_servers.each { |svr|
-                               db.execute "INSERT INTO sync_pkg_servers VALUES('#{idx}','#{svr[0]}','#{@pkg_sync_period}')"
+                               db.execute "INSERT INTO sync_pkg_servers VALUES('#{idx}','#{svr[0]}','#{@pkg_sync_period}','BASE')"
                                idx += 1
                        }
 
@@ -426,22 +423,16 @@ class BuildServer
 
        # load
        def load_db()
+
+               # distribution
+               @distmgr.load_db()
+
                db_file = "#{BuildServer::CONFIG_ROOT}/#{@id}/server.db" 
                begin
                        # open DB
                        db = SQLite3::Database.open db_file
                        db.results_as_hash = true
 
-                       # distributions
-                       stm = db.prepare "SELECT * FROM distributions"
-                       rs = stm.execute
-                       rs.each { |row|
-                               @pkgserver_url = row['pkgsvr_url']
-                               @pkgserver_addr = row['pkgsvr_addr'].split(":")[0]
-                               @pkgserver_port = row['pkgsvr_addr'].split(":")[1].to_i
-                       }
-                       stm.close if stm
-
                        # remote_build_servers
                        @friend_servers = []
                        stm = db.prepare "SELECT * FROM remote_build_servers"
index bc6c87a112aa43386aacfa394c65ef2a8251585f..0bfb648ee31866127c6aa5d872d47fc4828fe6f1 100644 (file)
@@ -46,7 +46,6 @@ 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"
@@ -56,13 +55,18 @@ class BuildServerController
                @@instance_map[id].jobmgr.max_working_jobs= 2
                @@instance_map[id].job_log_url=""
                @@instance_map[id].send_mail="NO"
-               @@instance_map[id].pkgserver_url=pkgsvr_url
-               @@instance_map[id].pkgserver_addr=pkgsvr_addr
-               @@instance_map[id].pkgserver_port=pkgsvr_port
        
                # write config
                write_server_config( @@instance_map[id] )
 
+               # set logger
+               @@instance_map[id].log = Log.new( "#{BuildServer::CONFIG_ROOT}/#{id}/log" )
+
+               # add distribution
+               if not pkgsvr_url.nil? then 
+                       @@instance_map[id].distmgr.add_distribution("BASE", pkgsvr_url, pkgsvr_addr, pkgsvr_port)
+               end
+
                puts "Created new build server: \"#{id}\""
                return @@instance_map[id]
        end
index 4874937b57506cbb429adc80c8ceb6ff8a99000e..d1a0b979cf56f9902f476a00f026016e785d2b46 100644 (file)
@@ -31,7 +31,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__)
 $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/common"
 
 class CommonProject
-       attr_accessor :name, :type, :passwd, :os_list
+       attr_accessor :name, :type, :passwd, :os_list, :dist_name
 
        # initialize
        def initialize( name, type, server, os_list )
@@ -41,6 +41,7 @@ class CommonProject
                @passwd = ""
                @os_list = os_list
                @server = server
+               @dist_name = "BASE"
                @extra_infos = {}
                read_ext_info
        end
diff --git a/src/build_server/DistributionManager.rb b/src/build_server/DistributionManager.rb
new file mode 100644 (file)
index 0000000..b140a93
--- /dev/null
@@ -0,0 +1,169 @@
+=begin
+ DistributionManager.rb
+
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+
+Contact:
+Taejun Ha <taejun.ha@samsung.com>
+Jiil Hyoun <jiil.hyoun@samsung.com>
+Donghyuk Yang <donghyuk.yang@samsung.com>
+DongHee Yang <donghee.yang@samsung.com>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Contributors:
+- S-Core Co., Ltd
+=end
+
+require 'fileutils'
+require 'thread'
+$LOAD_PATH.unshift File.dirname(__FILE__)
+$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/pkg_server"
+require "SocketJobRequestListener.rb"
+require "RemoteBuildJob.rb"
+require "RegisterPackageJob.rb"
+require "packageServer.rb"
+
+class PackageDistribution
+       attr_accessor :name, :pkgsvr_url, :pkgsvr_ip, :pkgsvr_port
+
+       def initialize( name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, server )
+               @server = server
+               @name = name
+               @pkgsvr_url = pkgsvr_url
+               @pkgsvr_ip = pkgsvr_ip
+        @pkgsvr_port = pkgsvr_port
+       end
+end
+
+
+class DistributionManager
+       attr_accessor :max_working_jobs, :jobs, :internal_jobs, :reverse_build_jobs
+       attr_accessor :internal_job_schedule
+
+       # initialize
+       def initialize( server )
+               @server = server
+               @distributions = []
+       end
+
+
+       # get distribution
+       def get_distribution(name)
+               @distributions.each { |d|
+                       if d.name == name then
+                               return d
+                       end
+               }
+       
+               return nil
+       end
+
+
+       # check exist?
+       def distribution_exist?(name) 
+               return get_distribution(name).nil? ? false : true
+       end
+
+
+       # add 
+       def add_distribution(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port)
+               load_db()
+               if distribution_exist?(name) then
+                       @server.log.info "The distribution \"#{name}\" already exists on server"
+                       @server.log.error "Adding distribution failed!"
+                       return
+               end
+
+               add_distribution_internal(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port)
+               save_db()
+               @server.log.info "Added a new distribution \"#{name}\""
+       end
+
+
+       # remove
+       def remove_distribution(name)
+               if not distribution.exist?(name) then
+                       @server.log.error "The distribution \"#{name}\" does not exists on server"
+                       @server.log.error "Removing distribution failed!"
+                       return
+               end
+
+               remove_distribution_internal(name)
+               @server.log.info "Removed the distribution \"#{name}\""
+       end
+
+
+       # save
+       def save_db()
+               db_file = "#{BuildServer::CONFIG_ROOT}/#{@server.id}/server.db" 
+               begin
+                       # open DB
+                       db = SQLite3::Database.open db_file
+
+                       # distributions
+                       db.execute "DELETE FROM distributions"
+                       @distributions.each { |dist|
+                               dist_addr = dist.pkgsvr_ip + ":" + dist.pkgsvr_port.to_s
+                               db.execute "INSERT INTO distributions VALUES('#{dist.name}','#{dist.pkgsvr_url}','#{dist_addr}')"
+                       }
+               rescue SQLite3::Exception => e
+                       puts "DB update failed!"
+                       puts e
+               ensure
+                       db.close if db
+               end
+       end
+
+
+       # load
+       def load_db()
+               @distributions = []
+
+               db_file = "#{BuildServer::CONFIG_ROOT}/#{@server.id}/server.db" 
+               begin
+                       # open DB
+                       db = SQLite3::Database.open db_file
+                       db.results_as_hash = true
+
+                       # distributions
+                       stm = db.prepare "SELECT * FROM distributions"
+                       rs = stm.execute
+                       rs.each { |row|
+                               pkgsvr_ip = row['pkgsvr_addr'].split(":")[0]
+                               pkgsvr_port = row['pkgsvr_addr'].split(":")[1].to_i
+                               add_distribution_internal(row['name'], row['pkgsvr_url'], pkgsvr_ip, pkgsvr_port)
+                       }
+               rescue SQLite3::Exception => e
+                       puts "DB loading failed!"
+                       puts e
+               ensure
+                       stm.close if stm
+                       db.close if db
+               end
+
+       end
+
+
+       def add_distribution_internal(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port)
+               @distributions.push PackageDistribution.new(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, @server)
+       end
+
+
+       def remove_distribution_internal(name)
+               @distributions.delete get_distribution(name)
+       end
+
+       #END
+end
diff --git a/src/build_server/FullBuildJob.rb b/src/build_server/FullBuildJob.rb
deleted file mode 100644 (file)
index 7bf1d59..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-=begin
-
- FullBuildJob.rb
-
-Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-
-Contact:
-Taejun Ha <taejun.ha@samsung.com>
-Jiil Hyoun <jiil.hyoun@samsung.com>
-Donghyuk Yang <donghyuk.yang@samsung.com>
-DongHee Yang <donghee.yang@samsung.com>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Contributors:
-- S-Core Co., Ltd
-=end
-
-require "fileutils"
-$LOAD_PATH.unshift File.dirname(__FILE__)
-$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/common"
-$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/builder"
-$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/pkg_server"
-require "client.rb"
-require "PackageManifest.rb"
-require "Version.rb"
-require "Builder.rb"
-require "RemoteBuilder.rb"
-require "BuildServer.rb"
-require "JobLog.rb"
-require "mail.rb"
-require "CommonJob.rb"
-
-class FullBuildJob < CommonJob
-
-       attr_accessor :pre_jobs, :os, :type
-       attr_accessor :source_path
-       attr_accessor :pkgsvr_client, :thread
-       attr_accessor :is_fullbuild_job
-
-       # initialize
-       def initialize (server)
-               super(server)
-               @log = nil
-               @type = "FULLBUILD"
-
-               @host_os = Utils::HOST_OS
-               @pkgserver_url = @server.pkgserver_url
-               @job_root = "#{@server.path}/jobs/#{@id}"
-               @source_path = @job_root+"/temp"
-               @job_working_dir=@job_root+"/works"
-               @buildroot_dir = "#{@job_root}/buildroot"
-               @pre_jobs = [] #pre-requisite jobs
-
-               @is_fullbuild_job = false
-       end
-
-
-       # 
-       def init
-               # mkdir
-               if not File.exist? @job_root then 
-                       FileUtils.mkdir_p @job_root
-               end
-
-               # create logger
-               if @log.nil? then
-                       @log = JobLog.new(self, nil )
-               end
-
-               @log.info( "Initializing job...", Log::LV_USER)
-
-               # create dummy source path
-               if not File.exist? @source_path then
-                       FileUtils.mkdir_p @source_path
-               end 
-
-               # set up pkgsvr_client
-               @pkgsvr_client =  Client.new(@pkgserver_url, @job_working_dir, @log)
-               @pkgsvr_client.update
-               
-               return true
-       end
-
-
-       #terminate
-       def terminate()
-               # report error
-               if @status == "ERROR" then
-                       @log.error( "Job is stopped by ERROR" , Log::LV_USER)
-                       @server.cleaner.clean_afterwards(@id)
-               else
-                       # clean up
-                       @server.cleaner.clean(@id)
-               end
-
-               # close logger
-               @log.close
-       end
-
-
-       #cancel
-       def cancel()
-               #TODO
-       end
-
-
-       # check building is possible
-       def can_be_built_on?(host_os)
-               return true
-       end
-
-
-       def has_build_dependency?(other_job)
-               return true
-       end
-
-
-       def has_same_packages?( wjob )
-               return self.eql? wjob
-       end
-
-
-       def does_depend_on?( wjob )
-               return true
-       end
-
-
-       def does_depended_by?( wjob )
-               return true
-       end
-
-
-       def is_connected?
-               return true
-       end
-
-
-       # return the job is asyncronous job
-       def is_asynchronous_job?
-               return false
-       end
-
-
-       #
-       # PROTECTED METHODS
-       #
-
-
-       # main module   
-       protected
-       def job_main()
-               @log.info( "Invoking a thread for FULL-BUILD Job #{@id}", Log::LV_USER)
-               if @status == "ERROR" then return  end
-               @log.info( "New Job #{@id} is started", Log::LV_USER)
-               
-               # check passwd
-
-               # create sub jobs
-               build_jobs = []
-               @server.prjmgr.projects.each do |prj|
-                       if prj.type != "GIT" then next end      
-                       build_jobs += @server.prjmgr.create_new_jobs_for_all_os( prj.name )
-               end
-       
-               # set full build job flag
-               build_jobs.each do |job|
-                       job.is_fullbuild_job = true
-                       job.set_parent_job( self )
-               end
-
-               # add all jobs to jobmanager
-               job_status_map = {} # for tracking job status changes
-               build_jobs.each do |job|
-                       @server.jobmgr.add_internal_job( job )
-
-                       @log.info( "Added new job \"#{job.id}\"(#{job.get_project().name}) for #{job.os}!",
-                                Log::LV_USER)
-
-                       if not @server.job_log_url.empty? then
-                               @log.info( " * Log URL : #{@server.job_log_url}/#{job.id}/log", Log::LV_USER)
-                       end
-
-                       # set satus
-                       job_status_map[job.id] = job.status
-               end
-
-               # show job status changes
-               all_jobs_finished = false
-               error_exist = false
-               while not all_jobs_finished
-                       all_jobs_finished = true
-                       build_jobs.each do |job|
-
-                               # check status chanaged, if then print
-                               if job_status_map[ job.id ]  != job.status then
-                                       @log.info("Job #{job.id}(#{job.get_project().name},#{job.os}) is #{job.status}", Log::LV_USER)
-                                       job_status_map[ job.id ] = job.status
-                               end
-                               if job.status != "ERROR" and job.status != "FINISHED" then
-                                       all_jobs_finished = false
-                               end
-                               if job.status == "ERROR" then error_exist = true end
-                       end
-                       sleep 1
-               end
-
-               # check error
-               if error_exist then 
-                       @status = "ERROR"
-                       return
-               end
-
-               # INFO. don't change this string
-               @log.info( "Job is completed!", Log::LV_USER)
-               @status = "FINISHED"
-       end
-
-end
index 457e379206f6456845f279f83c312b5ebece8a9c..c071f8a5e3cf7cccd9aec84415ab11f4d6c06905 100644 (file)
@@ -156,7 +156,7 @@ class GitBuildJob < BuildJob
                end
 
                # set up pkgsvr_client
-               @pkgsvr_client =  Client.new(@pkgserver_url, @job_working_dir, @log)
+               @pkgsvr_client =  Client.new(@pkgsvr_url, @job_working_dir, @log)
 
                # checking version if not reverse-build job or not internal-job
                if not @is_rev_build_check_job and not @is_internal_job  then
index a832ec401a18cf9e0c823e500d70fd4ee94b1590..428f4b6c785c24e11ffda8f85c55bba1d9bb5203 100644 (file)
@@ -55,7 +55,9 @@ class MultiBuildJob < CommonJob
                @os = "Unknown"
 
                @host_os = Utils::HOST_OS
-               @pkgserver_url = @server.pkgserver_url
+               @pkgsvr_url = nil
+               @pkgsvr_ip = nil
+               @pkgsvr_port = nil
                @job_root = "#{@server.path}/jobs/#{@id}"
                @source_path = @job_root+"/temp"
                @job_working_dir=@job_root+"/works"
@@ -126,7 +128,11 @@ class MultiBuildJob < CommonJob
 
 
                # set up pkgsvr_client
-               @pkgsvr_client =  Client.new(@pkgserver_url, @job_working_dir, @log)
+               first_project = @sub_jobs[0].get_project()
+               @pkgsvr_url = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_url
+               @pkgsvr_ip = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_ip
+               @pkgsvr_port = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_port
+               @pkgsvr_client =  Client.new(@pkgsvr_url, @job_working_dir, @log)
        
                return true
        end
@@ -398,8 +404,8 @@ class MultiBuildJob < CommonJob
                binpkg_path_list = Dir.glob("#{@source_path}/*_*_*.zip")
 
                # upload
-               u_client = Client.new( @server.pkgserver_url, nil, @log )
-               snapshot = u_client.upload( @server.pkgserver_addr, @server.pkgserver_port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, binpkg_path_list)
+               u_client = Client.new( @pkgsvr_url, nil, @log )
+               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, binpkg_path_list)
 
                if snapshot.nil? then
                        @log.info( "Upload failed...", Log::LV_USER)
index f395856d4e6ea3301a83c613bdc4362492678e17..f008f4fc96432e0ae3946e585933c903a94093fd 100644 (file)
@@ -38,7 +38,7 @@ require "ScheduledActionHandler.rb"
 class PackageSyncAction < Action
        @@new_id = 0
        
-       def initialize( time, url, proxy, server )
+       def initialize( time, url, proxy, server, dist_name = "BASE" )
                super(time, server.pkg_sync_period)
                my_id = @@new_id
                @@new_id += 1
@@ -46,6 +46,7 @@ class PackageSyncAction < Action
                @proxy = proxy
                @server = server
                @pkgsvr_client = nil
+               @dist_name = dist_name
                @main_client = nil
                @sync_root = "#{@server.path}/sync/#{my_id}"
                @download_path = "#{@sync_root}/remote"
@@ -65,7 +66,9 @@ class PackageSyncAction < Action
 
                # create client
                @pkgsvr_client = Client.new( @pkgsvr_url, @download_path, @server.log )
-               @main_client = Client.new( @server.pkgserver_url, @original_path, @server.log )
+
+               main_url = @server.distmgr.get_distribution(@dist_name).pkgsvr_url
+               @main_client = Client.new( main_url, @original_path, @server.log )
        end
 
 
index 9fb069f2c6310ecd94a73eb318a9c89e5e539d40..b618c8fa30389e0414ee4550dbd79d346f99df0e 100644 (file)
@@ -30,7 +30,7 @@ require "fileutils"
 $LOAD_PATH.unshift File.dirname(__FILE__)
 $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/common"
 $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/builder"
-$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/pkg_server"
+$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/plkg_server"
 require "client.rb"
 require "PackageManifest.rb"
 require "Version.rb"
@@ -56,7 +56,9 @@ class RegisterPackageJob < CommonJob
                @type = "REGISTER"
 
                @host_os = Utils::HOST_OS
-               @pkgserver_url = @server.pkgserver_url
+               @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url
+               @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip
+               @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port
                @job_root = "#{@server.path}/jobs/#{@id}"
                @source_path = @job_root+"/temp"
                @job_working_dir=@job_root+"/works"
@@ -138,7 +140,7 @@ class RegisterPackageJob < CommonJob
                if @cancel_state != "NONE" then return false end
 
                # set up pkgsvr_client
-               @pkgsvr_client =  Client.new(@pkgserver_url, @job_working_dir, @log)
+               @pkgsvr_client =  Client.new(@pkgsvr_url, @job_working_dir, @log)
 
                if @cancel_state != "NONE" then return false end
 
@@ -469,8 +471,8 @@ class RegisterPackageJob < CommonJob
                end
 
                # upload
-               u_client = Client.new( @server.pkgserver_url, nil, @log )
-               snapshot = u_client.upload( @server.pkgserver_addr, @server.pkgserver_port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, binpkg_path_list)
+               u_client = Client.new( @pkgsvr_url, nil, @log )
+               snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, binpkg_path_list)
 
                if snapshot.nil? then
                        @log.info( "Upload failed...", Log::LV_USER)
index 8c71460220187e8bfb64b4ce3cc4c65707e3a681..ba43e127943d5dbe49d22a3c8e66ba17af997abc 100644 (file)
@@ -35,7 +35,7 @@ require 'thread'
 class RemoteBuildServer
        attr_accessor :ip, :port, :status, :host_os
        attr_accessor :max_working_jobs, :working_jobs, :waiting_jobs
-       attr_accessor :pkgserver_url, :path
+       attr_accessor :path
 
        # initialize
        def initialize(ip, port, parent)
@@ -46,7 +46,6 @@ class RemoteBuildServer
                @max_working_jobs = 2
                @working_jobs = []
                @waiting_jobs = []
-               @pkgserver_url = parent.pkgserver_url
                @path = ""
                @file_transfer_cnt_mutex = Mutex.new
                @file_transfer_cnt = 0