From 3b795caaf9c84a4a3e59938a3e95e573250cb127 Mon Sep 17 00:00:00 2001 From: donghee yang Date: Mon, 27 Aug 2012 22:27:47 +0900 Subject: [PATCH] [Title] Applied "register" to use internal file transfer slot("dock") --- build-cli | 6 +++-- src/build_server/BinaryUploadProject.rb | 6 ++--- src/build_server/RegisterPackageJob.rb | 28 ++++++++++++-------- src/build_server/SocketJobRequestListener.rb | 9 ++++--- 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/build-cli b/build-cli index 040e1a1..24e874c 100755 --- a/build-cli +++ b/build-cli @@ -313,7 +313,9 @@ begin puts "Can't access server #{bs_ip}:#{bs_port}" exit(-1) end - client.send("UPLOAD") + dock = Utils.create_uniq_name() + msg = "UPLOAD|#{dock}" + client.send( msg ) result = client.send_file(ip, port, username, passwd, option[:package]) client.terminate if not result then @@ -327,7 +329,7 @@ begin puts "Can't access server #{bs_ip}:#{bs_port}" exit(-1) end - client.send("REGISTER|BINARY|#{File.basename(option[:package])}|#{option[:passwd]}") + client.send("REGISTER|BINARY|#{File.basename(option[:package])}|#{option[:passwd]}|#{dock}") client.print_stream client.terminate diff --git a/src/build_server/BinaryUploadProject.rb b/src/build_server/BinaryUploadProject.rb index 580ad99..28f81ea 100644 --- a/src/build_server/BinaryUploadProject.rb +++ b/src/build_server/BinaryUploadProject.rb @@ -45,7 +45,7 @@ class BinaryUploadProject < CommonProject # create new job - def create_new_job( filename ) + def create_new_job( filename, dock = "0" ) new_name = filename.sub(/(.*)_(.*)_(.*)\.zip/,'\1,\2,\3') pkg_name = new_name.split(",")[0] os = new_name.split(",")[2] @@ -57,7 +57,7 @@ class BinaryUploadProject < CommonProject if not @server.supported_os_list.include? os then return nil end # check package info - file_path = "#{@server.transport_path}/#{filename}" + file_path = "#{@server.transport_path}/#{dock}/#{filename}" if not File.exist? file_path then return nil end pkginfo_dir = "#{@server.path}/projects/#{@name}/pkginfos" @@ -75,7 +75,7 @@ class BinaryUploadProject < CommonProject if pkgs.count != 1 then return nil end if pkgs[0].package_name != @pkg_name then return nil end - new_job = RegisterPackageJob.new( "#{@server.transport_path}/#{filename}", self, @server ) + new_job = RegisterPackageJob.new( file_path, self, @server ) return new_job end diff --git a/src/build_server/RegisterPackageJob.rb b/src/build_server/RegisterPackageJob.rb index 7962c65..d77fb9f 100644 --- a/src/build_server/RegisterPackageJob.rb +++ b/src/build_server/RegisterPackageJob.rb @@ -46,7 +46,7 @@ class RegisterPackageJob attr_accessor :status, :log, :source_path attr_accessor :pkgsvr_client, :thread, :pkg_type attr_accessor :pkg_name, :pkginfo, :cancel_state - + # initialize def initialize( local_path, project, server, ftpurl=nil ) @@ -66,6 +66,7 @@ class RegisterPackageJob @pre_jobs = [] @local_path=local_path + @file_path = nil @filename = File.basename(local_path) if @filename =~ /.*_.*_.*\.zip/ then @pkg_type = "BINARY" @@ -143,24 +144,29 @@ class RegisterPackageJob FileUtils.mkdir_p @source_path end - if @cancel_state != "NONE" then return false end - - # set up pkgsvr_client - @pkgsvr_client = Client.new(@pkgserver_url, @job_working_dir, @log) - - if @cancel_state != "NONE" then return false end - # copy package file to source path + @file_path = "#{@source_path}/#{File.basename(@local_path)}" if not File.exist? @local_path then @log.error( "File not found!", Log::LV_USER) @status = "ERROR" return false else - FileUtils.cp(@local_path,"#{@source_path}/#{File.basename(@local_path)}") + if not @project.nil? then + # if remote upload remove file and its directory + FileUtils.mv(@local_path, @file_path) + FileUtils.rm_rf("#{File.dirname(@local_path)}") + else + FileUtils.cp(@local_path, @file_path) + end end if @cancel_state != "NONE" then return false end + # set up pkgsvr_client + @pkgsvr_client = Client.new(@pkgserver_url, @job_working_dir, @log) + + if @cancel_state != "NONE" then return false end + # check if the os is supported by build server if @pkg_type == "BINARY" and not @server.supported_os_list.include? @os then @@ -174,7 +180,7 @@ class RegisterPackageJob # checking version if not reverse-build job if @pkg_type == "BINARY" then # extrac pkg file - cmd = "cd \"#{@source_path}\";unzip #{@local_path}" + cmd = "cd \"#{@source_path}\";unzip #{@file_path}" if not Utils.execute_shell(cmd) then @log.error( "Extracting package file failed!", Log::LV_USER) @status = "ERROR" @@ -395,7 +401,7 @@ class RegisterPackageJob # make new package file for compatible OS newfile = "#{@pkg_name}_#{@pkg_version}_#{os}.zip" @log.info( "Copying #{@filename} to #{newfile}" ) - FileUtils.cp(@local_path,"#{@source_path}/#{newfile}") + FileUtils.cp(@file_path,"#{@source_path}/#{newfile}") # reverse check if not ReverseBuildChecker.check( self, true, os ) then diff --git a/src/build_server/SocketJobRequestListener.rb b/src/build_server/SocketJobRequestListener.rb index 0af0cc2..f09a056 100644 --- a/src/build_server/SocketJobRequestListener.rb +++ b/src/build_server/SocketJobRequestListener.rb @@ -568,6 +568,7 @@ class SocketJobRequestListener # parse filename = tok[2] passwd = tok[3] + dock = (tok[4].nil? or tok[4].empty?) ? "0" : tok[4].strip # check project prj = check_project_for_package_file_name(filename, req) @@ -581,8 +582,8 @@ class SocketJobRequestListener end # create new job - @log.info "Received a request for uploading binaries : #{tok[2]}" - new_job = create_new_upload_job( prj.name, filename, req ) + @log.info "Received a request for uploading binaries : #{filename}" + new_job = create_new_upload_job( prj.name, filename, dock, req ) if new_job.nil? then raise "Creating build job failed : #{prj.name}, #{filename}" end @@ -785,9 +786,9 @@ class SocketJobRequestListener private - def create_new_upload_job( project_name, filename, req) + def create_new_upload_job( project_name, filename, dock, req) - new_job = @parent_server.prjmgr.get_project(project_name).create_new_job(filename) + new_job = @parent_server.prjmgr.get_project(project_name).create_new_job(filename, dock) if new_job.nil? then BuildCommServer.send_begin(req) -- 2.34.1