From 3c794d95902fc40e68efe4b672979cffe2145c25 Mon Sep 17 00:00:00 2001 From: donghee yang Date: Thu, 27 Sep 2012 16:49:34 +0900 Subject: [PATCH] [Title] Applied "Distribution" concept to buildserver --- src/build_server/BuildJob.rb | 20 +- src/build_server/BuildServer.rb | 37 ++-- src/build_server/BuildServerController.rb | 12 +- src/build_server/CommonProject.rb | 3 +- src/build_server/DistributionManager.rb | 169 ++++++++++++++++ src/build_server/FullBuildJob.rb | 229 ---------------------- src/build_server/GitBuildJob.rb | 2 +- src/build_server/MultiBuildJob.rb | 14 +- src/build_server/PackageSync.rb | 7 +- src/build_server/RegisterPackageJob.rb | 12 +- src/build_server/RemoteBuildServer.rb | 3 +- 11 files changed, 228 insertions(+), 280 deletions(-) create mode 100644 src/build_server/DistributionManager.rb delete mode 100644 src/build_server/FullBuildJob.rb diff --git a/src/build_server/BuildJob.rb b/src/build_server/BuildJob.rb index 553ee89..1fe8050 100644 --- a/src/build_server/BuildJob.rb +++ b/src/build_server/BuildJob.rb @@ -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) diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index d92d637..25150f8 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -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" diff --git a/src/build_server/BuildServerController.rb b/src/build_server/BuildServerController.rb index bc6c87a..0bfb648 100644 --- a/src/build_server/BuildServerController.rb +++ b/src/build_server/BuildServerController.rb @@ -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 diff --git a/src/build_server/CommonProject.rb b/src/build_server/CommonProject.rb index 4874937..d1a0b97 100644 --- a/src/build_server/CommonProject.rb +++ b/src/build_server/CommonProject.rb @@ -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 index 0000000..b140a93 --- /dev/null +++ b/src/build_server/DistributionManager.rb @@ -0,0 +1,169 @@ +=begin + + DistributionManager.rb + +Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + +Contact: +Taejun Ha +Jiil Hyoun +Donghyuk Yang +DongHee Yang + +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 index 7bf1d59..0000000 --- a/src/build_server/FullBuildJob.rb +++ /dev/null @@ -1,229 +0,0 @@ -=begin - - FullBuildJob.rb - -Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - -Contact: -Taejun Ha -Jiil Hyoun -Donghyuk Yang -DongHee Yang - -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 diff --git a/src/build_server/GitBuildJob.rb b/src/build_server/GitBuildJob.rb index 457e379..c071f8a 100644 --- a/src/build_server/GitBuildJob.rb +++ b/src/build_server/GitBuildJob.rb @@ -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 diff --git a/src/build_server/MultiBuildJob.rb b/src/build_server/MultiBuildJob.rb index a832ec4..428f4b6 100644 --- a/src/build_server/MultiBuildJob.rb +++ b/src/build_server/MultiBuildJob.rb @@ -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) diff --git a/src/build_server/PackageSync.rb b/src/build_server/PackageSync.rb index f395856..f008f4f 100644 --- a/src/build_server/PackageSync.rb +++ b/src/build_server/PackageSync.rb @@ -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 diff --git a/src/build_server/RegisterPackageJob.rb b/src/build_server/RegisterPackageJob.rb index 9fb069f..b618c8f 100644 --- a/src/build_server/RegisterPackageJob.rb +++ b/src/build_server/RegisterPackageJob.rb @@ -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) diff --git a/src/build_server/RemoteBuildServer.rb b/src/build_server/RemoteBuildServer.rb index 8c71460..ba43e12 100644 --- a/src/build_server/RemoteBuildServer.rb +++ b/src/build_server/RemoteBuildServer.rb @@ -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 -- 2.34.1