attr_accessor :pkginfo, :source_path
attr_accessor :pkgsvr_client, :thread
- attr_accessor :rev_fail_projects, :rev_success_jobs
- attr_accessor :pending_ancestor, :cancel_state
+# attr_accessor :rev_fail_projects, :rev_success_jobs
+ #attr_accessor :pending_ancestor, :cancel_state
+ attr_accessor :cancel_state
attr_accessor :no_reverse
attr_accessor :remote_id
@type = "BUILD"
@cancel_state = "NONE"
- @resolve = false
+ #@resolve = false
@host_os = Utils::HOST_OS
if not @server.distmgr.nil? then
@pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url
@parent = nil # for job hierachy
#for cancel operation
- @pending_ancestor = nil # for cancel pending job
+ #@pending_ancestor = nil # for cancel pending job
@remote_id = nil # for cancel remote_working job
@build_dep_prjs = nil # for cacnel pending job
- # for resolving build-break
- @rev_fail_projects = [] # list of [project,os]
- @rev_success_jobs = [] # list of job
+ ## for resolving build-break
+ #@rev_fail_projects = [] # list of [project,os]
+ #@rev_success_jobs = [] # list of job
# remote build
@remote_server = nil
end
- # set option for waiting for resolve
- def set_resolve_flag()
- @resolve = true
- end
+ ## set option for waiting for resolve
+ #def set_resolve_flag()
+ # @resolve = true
+ #end
# set force rebuild
end
client.terminate
end
- when "PENDING" then
- if @pending_ancestor.nil? then
- #resolve pending job
- pending_descendants = @server.jobmgr.jobs.select do |j|
- (not j.pending_ancestor.nil?) and "#{j.pending_ancestor.id}" == "#{@id}"
- end
- pending_descendants.each do |pd|
- pd.cancel_state = "INIT"
- end
- else
- # remove myself from success job if exist
- # and add myself into rev_fail_project list if not exist
- @pending_ancestor.remove_rev_success_job(self)
- @pending_ancestor.add_rev_fail_project( @project, @os )
-
- # remove the project that depends on me if exist
- # and add it into rev_fail_project list if not exist
- p_sub_jobs = @server.jobmgr.jobs.select do |j|
- ( not j.pending_ancestor.nil? and
- "#{j.pending_ancestor.id}" == "#{@pending_ancestor.id}" and
- j.is_build_dependent_project(@project, @os) )
- end
- p_sub_jobs.each do |d|
- @pending_ancestor.remove_rev_success_job(d)
- @pending_ancestor.add_rev_fail_project( d.get_project, d.os )
-
- if not d.thread.nil? then d.thread.terminate end
- d.status = "WAITING"
- end
- end
+ #when "PENDING" then
+ # if @pending_ancestor.nil? then
+ # #resolve pending job
+ # pending_descendants = @server.jobmgr.jobs.select do |j|
+ # (not j.pending_ancestor.nil?) and "#{j.pending_ancestor.id}" == "#{@id}"
+ # end
+ # pending_descendants.each do |pd|
+ # pd.cancel_state = "INIT"
+ # end
+ # else
+ # # remove myself from success job if exist
+ # # and add myself into rev_fail_project list if not exist
+ # @pending_ancestor.remove_rev_success_job(self)
+ # @pending_ancestor.add_rev_fail_project( @project, @os )
+
+ # # remove the project that depends on me if exist
+ # # and add it into rev_fail_project list if not exist
+ # p_sub_jobs = @server.jobmgr.jobs.select do |j|
+ # ( not j.pending_ancestor.nil? and
+ # "#{j.pending_ancestor.id}" == "#{@pending_ancestor.id}" and
+ # j.is_build_dependent_project(@project, @os) )
+ # end
+ # p_sub_jobs.each do |d|
+ # @pending_ancestor.remove_rev_success_job(d)
+ # @pending_ancestor.add_rev_fail_project( d.get_project, d.os )
+
+ # if not d.thread.nil? then d.thread.terminate end
+ # d.status = "WAITING"
+ # end
+ # end
when "WORKING", "WAITING" , "INITIALIZING" , "JUST_CREATED" then
#just log
else # ERROR | FINISHED | RESOLVED
end
- # remove job from reverse success job
- def remove_rev_success_job( job )
- @rev_success_jobs.delete job if @rev_success_jobs.include? job
- end
+ ## remove job from reverse success job
+ #def remove_rev_success_job( job )
+ # @rev_success_jobs.delete job if @rev_success_jobs.include? job
+ #end
- # check [project,os] is in reverse fail project list
- def is_rev_fail_project( prj, os )
- # check the project already exist
- @rev_fail_projects.each do |p|
- if p[0] == prj and p[1] == os then
- return true
- end
- end
+ ## check [project,os] is in reverse fail project list
+ #def is_rev_fail_project( prj, os )
+ # # check the project already exist
+ # @rev_fail_projects.each do |p|
+ # if p[0] == prj and p[1] == os then
+ # return true
+ # end
+ # end
- return false
- end
+ # return false
+ #end
- # add [project,os] to reverse fail project list
- def add_rev_fail_project( prj, os )
- # check the project already exist
- @rev_fail_projects.each do |p|
- if p[0] == prj and p[1] == os then
- return
- end
- end
- # if not, add it
- @rev_fail_projects.push [prj,os]
- end
+ ## add [project,os] to reverse fail project list
+ #def add_rev_fail_project( prj, os )
+ # # check the project already exist
+ # @rev_fail_projects.each do |p|
+ # if p[0] == prj and p[1] == os then
+ # return
+ # end
+ # end
+ # # if not, add it
+ # @rev_fail_projects.push [prj,os]
+ #end
- # remove [project,os] from reverse fail project list
- def remove_rev_fail_project( prj, os )
- remove_list = []
+ ## remove [project,os] from reverse fail project list
+ #def remove_rev_fail_project( prj, os )
+ # remove_list = []
- # check project and os name
- @rev_fail_projects.each do |p|
- if p[0] == prj and p[1] == os then
- remove_list.push p
- end
- end
+ # # check project and os name
+ # @rev_fail_projects.each do |p|
+ # if p[0] == prj and p[1] == os then
+ # remove_list.push p
+ # end
+ # end
- # remove
- remove_list.each do |r|
- @rev_fail_projects.delete r
- end
- end
+ # # remove
+ # remove_list.each do |r|
+ # @rev_fail_projects.delete r
+ # end
+ #end
# get project that my job is dependent on
# build clean
def build()
- # check there are pending packages which wait for me
- # it will return nil if not exist
- # this process must be skip if it is sub-job
- if not @is_rev_build_check_job and not @is_internal_job then
- @server.cancel_lock.synchronize do
- @pending_ancestor = get_pending_ancestor_job()
- end
- end
+ ## check there are pending packages which wait for me
+ ## it will return nil if not exist
+ ## this process must be skip if it is sub-job
+ #if not @is_rev_build_check_job and not @is_internal_job then
+ # @server.cancel_lock.synchronize do
+ # @pending_ancestor = get_pending_ancestor_job()
+ # end
+ #end
+
+ #if not @pending_ancestor.nil? then
+ # # resolve other pending job
+ # resolve()
+ #elsif @resolve then
+ # # wait for being resolved by other jobs
+ # # this condition must be placed after checking pending status
+ # wait_resolve()
+ #else
+ # # build
+ # build_normal()
+ #end
- if not @pending_ancestor.nil? then
- # resolve other pending job
- resolve()
- elsif @resolve then
- # wait for being resolved by other jobs
- # this condition must be placed after checking pending status
- wait_resolve()
- else
- # build
- build_normal()
- end
+ # build
+ build_normal()
end
- # return pending job that wait for me
- def get_pending_ancestor_job()
- @server.jobmgr.get_pending_jobs.each do |job|
- # must have same distribution
- if get_distribution_name() != job.get_distribution_name() then
- next
- end
+ ## return pending job that wait for me
+ #def get_pending_ancestor_job()
+ # @server.jobmgr.get_pending_jobs.each do |job|
+ # # must have same distribution
+ # if get_distribution_name() != job.get_distribution_name() then
+ # next
+ # end
- if job.is_rev_fail_project(@project,@os) then
- return job
- end
- end
+ # if job.is_rev_fail_project(@project,@os) then
+ # return job
+ # end
+ # end
- return nil
- end
+ # return nil
+ #end
# check whether build this job or not
end
- # wait to be resolved by other jobs
- def wait_resolve()
- @log.info( "Started to build this job and wait for being resolved...", Log::LV_USER)
-
- # create builder
- if @is_remote_job then
- builder = RemoteBuilder.new("JB#{@id}", @remote_server, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
- @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
- @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
- if not @server.ftp_addr.nil? then
- @log.info( " - FTP Server : #{@server.ftp_addr}" )
- end
- else
- 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 : #{@pkgsvr_url}" )
- @log.info( " - Build Cache Path : #{@server.build_cache_dir}" )
- end
- @log.info( " - Log Path : #{@log.path}" )
-
- # build
- if @is_remote_job then
- result = builder.build_job(self, [])
- else
- result = builder.build_job(self, true, [], false )
- end
- if not result then
- @log.error( "Building job failed", Log::LV_USER)
- write_log_url()
- return false
- end
-
- # check reverse dependecy
- @rev_fail_projects = ReverseBuildChecker.check(self, false)
- if @rev_fail_projects.empty? then
- # if no problem?, it OK
- return true
- end
-
- # pending
- @status = "PENDING"
- @log.info( "Entered the PENDING state ...", Log::LV_USER)
- old_msg = ""
- while @status == "PENDING"
- new_msg = @rev_fail_projects.map {|p| "#{p[0].name}(#{p[1]})"}.join(", ")
- if old_msg != new_msg then
- @log.error( " * Waiting for building next projects: #{new_msg}", Log::LV_USER)
- old_msg = new_msg
- end
- sleep 1
- end
-
- return true
- end
-
-
- # resolve other pending job
- def resolve()
-
- # wait for other build-dependent projects are resolved
- old_msg = ""
- wait_prjs = @pending_ancestor.rev_fail_projects.select {|p| is_build_dependent_project(p[0], p[1])}
- @log.info("Checking build dependency before RESOLVE", Log::LV_USER)
- while not wait_prjs.empty?
- @status = "PENDING"
- new_msg = wait_prjs.map {|p| "#{p[0].name}(#{p[1]})"}.join(", ")
- if new_msg != old_msg then
- @log.info(" * Waiting for building next projects: #{new_msg}", Log::LV_USER)
- old_msg = new_msg
- end
- sleep 1
- wait_prjs = @pending_ancestor.rev_fail_projects.select {|p| is_build_dependent_project(p[0], p[1])}
- end
-
- # return back to "WORKING"
- @status = "WORKING"
-
- @log.info( "Started to build this job and resolve other pending job...", Log::LV_USER)
-
- # create builder
- if @is_remote_job then
- builder = RemoteBuilder.new("JB#{@id}", @remote_server, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
- @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
- @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
- if not @server.ftp_addr.nil? then
- @log.info( " - FTP Server : #{@server.ftp_addr}" )
- end
- else
- 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 : #{@pkgsvr_url}" )
- @log.info( " - Build Cache Path : #{@server.build_cache_dir}" )
- end
- @log.info( " - Log Path : #{@log.path}" )
-
- # get local packages to overwite
- # they must be composed of packages of pending jobs and its success list
- local_pkgs=[]
- local_pkgs += @external_pkgs
- src_path = @pending_ancestor.source_path
- ver = @pending_ancestor.pkginfo.get_version()
- @pending_ancestor.pkginfo.get_target_packages(@os).each do |pkg|
- local_pkgs.push "#{src_path}/#{pkg.package_name}_#{ver}_#{@os}.zip"
- end
- @pending_ancestor.rev_success_jobs.each do |job|
- src_path = job.source_path
- ver = job.pkginfo.get_version()
- job.pkginfo.get_target_packages(@os).each do |pkg|
- local_pkgs.push "#{src_path}/#{pkg.package_name}_#{ver}_#{@os}.zip"
- end
- end
-
- # build
- if @is_remote_job then
- result = builder.build_job(self, local_pkgs)
- else
- result = builder.build_job(self, true, local_pkgs, false )
- end
- if not result then
- @log.error( "Building job failed", Log::LV_USER)
- write_log_url()
- return false
- end
-
- # check reverse dependecy and update parent rev_fail_project list
- new_fail_projects = ReverseBuildChecker.check(self, false)
- new_fail_projects.each do |p|
- @pending_ancestor.add_rev_fail_project(p[0], p[1])
- end
-
- # update the status of pending job
- @status = "PENDING"
- @pending_ancestor.remove_rev_fail_project(@project, @os)
- @pending_ancestor.rev_success_jobs.push self
- if @pending_ancestor.rev_fail_projects.empty? then
- @pending_ancestor.status = "RESOLVED"
- @pending_ancestor.rev_success_jobs.each do |job|
- job.status = "RESOLVED"
- end
- else
- @log.info( "Entered the PENDING state ...", Log::LV_USER)
- old_msg = ""
- while @status == "PENDING"
- new_msg = @pending_ancestor.rev_fail_projects.map {|p| "#{p[0].name}(#{p[1]})"}.join(", ")
-
- if new_msg != old_msg then
- @log.info(" * Waiting for building next projects: #{new_msg}", Log::LV_USER)
- old_msg = new_msg
- end
-
- sleep 1
- end
- end
-
- return true
- end
+ ## wait to be resolved by other jobs
+ #def wait_resolve()
+ # @log.info( "Started to build this job and wait for being resolved...", Log::LV_USER)
+
+ # # create builder
+ # if @is_remote_job then
+ # builder = RemoteBuilder.new("JB#{@id}", @remote_server, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+ # @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
+ # @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
+ # if not @server.ftp_addr.nil? then
+ # @log.info( " - FTP Server : #{@server.ftp_addr}" )
+ # end
+ # else
+ # 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 : #{@pkgsvr_url}" )
+ # @log.info( " - Build Cache Path : #{@server.build_cache_dir}" )
+ # end
+ # @log.info( " - Log Path : #{@log.path}" )
+
+ # # build
+ # if @is_remote_job then
+ # result = builder.build_job(self, [])
+ # else
+ # result = builder.build_job(self, true, [], false )
+ # end
+ # if not result then
+ # @log.error( "Building job failed", Log::LV_USER)
+ # write_log_url()
+ # return false
+ # end
+
+ # # check reverse dependecy
+ # @rev_fail_projects = ReverseBuildChecker.check(self, false)
+ # if @rev_fail_projects.empty? then
+ # # if no problem?, it OK
+ # return true
+ # end
+
+ # # pending
+ # @status = "PENDING"
+ # @log.info( "Entered the PENDING state ...", Log::LV_USER)
+ # old_msg = ""
+ # while @status == "PENDING"
+ # new_msg = @rev_fail_projects.map {|p| "#{p[0].name}(#{p[1]})"}.join(", ")
+ # if old_msg != new_msg then
+ # @log.error( " * Waiting for building next projects: #{new_msg}", Log::LV_USER)
+ # old_msg = new_msg
+ # end
+ # sleep 1
+ # end
+
+ # return true
+ #end
+
+
+ ## resolve other pending job
+ #def resolve()
+
+ # # wait for other build-dependent projects are resolved
+ # old_msg = ""
+ # wait_prjs = @pending_ancestor.rev_fail_projects.select {|p| is_build_dependent_project(p[0], p[1])}
+ # @log.info("Checking build dependency before RESOLVE", Log::LV_USER)
+ # while not wait_prjs.empty?
+ # @status = "PENDING"
+ # new_msg = wait_prjs.map {|p| "#{p[0].name}(#{p[1]})"}.join(", ")
+ # if new_msg != old_msg then
+ # @log.info(" * Waiting for building next projects: #{new_msg}", Log::LV_USER)
+ # old_msg = new_msg
+ # end
+ # sleep 1
+ # wait_prjs = @pending_ancestor.rev_fail_projects.select {|p| is_build_dependent_project(p[0], p[1])}
+ # end
+
+ # # return back to "WORKING"
+ # @status = "WORKING"
+
+ # @log.info( "Started to build this job and resolve other pending job...", Log::LV_USER)
+
+ # # create builder
+ # if @is_remote_job then
+ # builder = RemoteBuilder.new("JB#{@id}", @remote_server, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+ # @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
+ # @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
+ # if not @server.ftp_addr.nil? then
+ # @log.info( " - FTP Server : #{@server.ftp_addr}" )
+ # end
+ # else
+ # 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 : #{@pkgsvr_url}" )
+ # @log.info( " - Build Cache Path : #{@server.build_cache_dir}" )
+ # end
+ # @log.info( " - Log Path : #{@log.path}" )
+
+ # # get local packages to overwite
+ # # they must be composed of packages of pending jobs and its success list
+ # local_pkgs=[]
+ # local_pkgs += @external_pkgs
+ # src_path = @pending_ancestor.source_path
+ # ver = @pending_ancestor.pkginfo.get_version()
+ # @pending_ancestor.pkginfo.get_target_packages(@os).each do |pkg|
+ # local_pkgs.push "#{src_path}/#{pkg.package_name}_#{ver}_#{@os}.zip"
+ # end
+ # @pending_ancestor.rev_success_jobs.each do |job|
+ # src_path = job.source_path
+ # ver = job.pkginfo.get_version()
+ # job.pkginfo.get_target_packages(@os).each do |pkg|
+ # local_pkgs.push "#{src_path}/#{pkg.package_name}_#{ver}_#{@os}.zip"
+ # end
+ # end
+
+ # # build
+ # if @is_remote_job then
+ # result = builder.build_job(self, local_pkgs)
+ # else
+ # result = builder.build_job(self, true, local_pkgs, false )
+ # end
+ # if not result then
+ # @log.error( "Building job failed", Log::LV_USER)
+ # write_log_url()
+ # return false
+ # end
+
+ # # check reverse dependecy and update parent rev_fail_project list
+ # new_fail_projects = ReverseBuildChecker.check(self, false)
+ # new_fail_projects.each do |p|
+ # @pending_ancestor.add_rev_fail_project(p[0], p[1])
+ # end
+
+ # # update the status of pending job
+ # @status = "PENDING"
+ # @pending_ancestor.remove_rev_fail_project(@project, @os)
+ # @pending_ancestor.rev_success_jobs.push self
+ # if @pending_ancestor.rev_fail_projects.empty? then
+ # @pending_ancestor.status = "RESOLVED"
+ # @pending_ancestor.rev_success_jobs.each do |job|
+ # job.status = "RESOLVED"
+ # end
+ # else
+ # @log.info( "Entered the PENDING state ...", Log::LV_USER)
+ # old_msg = ""
+ # while @status == "PENDING"
+ # new_msg = @pending_ancestor.rev_fail_projects.map {|p| "#{p[0].name}(#{p[1]})"}.join(", ")
+
+ # if new_msg != old_msg then
+ # @log.info(" * Waiting for building next projects: #{new_msg}", Log::LV_USER)
+ # old_msg = new_msg
+ # end
+
+ # sleep 1
+ # end
+ # end
+
+ # return true
+ #end
def upload()
case cmd
when "BUILD"
handle_cmd_build( req_line, req )
- when "RESOLVE"
- handle_cmd_resolve( req_line, req )
+ #when "RESOLVE"
+ # handle_cmd_resolve( req_line, req )
when "QUERY"
handle_cmd_query( req_line, req )
when "CANCEL"
end
- # "RESOLVE"
- def handle_cmd_resolve( line, req )
- @log.info "Received REQ: #{line}"
-
- begin
- handle_cmd_resolve_internal( line, req )
- rescue BuildServerException => e
- @log.error(e.message)
- BuildCommServer.send(req, e.err_message())
- BuildCommServer.send_end(req)
- BuildCommServer.disconnect(req)
- end
-
- @log.info "Handled REQ: #{line}"
- end
-
-
- def handle_cmd_resolve_internal( line ,req)
- tok = line.split("|").map { |x| x.strip }
- if tok.count < 3 then
- raise BuildServerException.new("ERR001"), line
- end
-
- case tok[1]
- # RESOLVE|GIT|project_name|passwd|os|async|dist_name|user_email|verbose
- when "GIT"
-
- # parse
- project_name=tok[2]
- passwd=tok[3]
- os=tok[4]
- async = tok[5].eql? "YES"
- dist_name = tok[6]
- user_email = (not tok[7].nil? and not tok[7].empty?) ? tok[7].strip : ""
- verbose = tok[8].eql? "YES"
- if (dist_name.nil? or dist_name.empty?) then
- dist_name = @parent_server.distmgr.get_default_distribution_name()
- end
-
- # check distribution
- check_distribution(dist_name, req)
-
- # check project
- prj = check_project_exist(project_name, dist_name, req)
-
- # check passwd
- check_project_password(prj, passwd, req)
-
- # check os
- os_list = check_supported_os( [os] , req )
- os = os_list[0]
-
- # check user email
- user_id = @parent_server.check_user_id_from_email( user_email )
- if user_id == -1 then
- raise BuildServerException.new("ERR004"), user_email
- end
-
- # check user accessable
- if not check_project_user_id(project_name,dist_name,user_id) then
- raise BuildServerException.new("ERR005"), "#{user_email} -> #{project_name}"
- end
-
- # create new job
- new_job = create_new_job( project_name, os, dist_name )
- if new_job.nil? then
- raise BuildServerException.new("ERR006"), "Resolve job #{project_name} #{os}"
- end
- @log.info "Received a request for resolving this project : #{project_name}, #{os}"
-
- new_job.user_id = user_id
-
- # resolve
- new_job.set_resolve_flag()
-
- # create logger and set
- if async then
- new_job.create_logger( nil, verbose)
- BuildCommServer.send(req,"Info: Added new job \"#{new_job.id}\" for #{new_job.os}!")
- if not @parent_server.job_log_url.empty? then
- BuildCommServer.send(req,"Info: * Log URL : #{@parent_server.job_log_url}/#{new_job.id}/log")
- end
- BuildCommServer.send(req,"Info: Above job(s) will be processed asynchronously!")
- BuildCommServer.send_end(req)
- BuildCommServer.disconnect(req)
- else
- logger = new_job.create_logger( req, verbose)
- logger.info( "Added new job \"#{new_job.id}\" for #{new_job.os}!", Log::LV_USER)
- if not @parent_server.job_log_url.empty? then
- logger.info( " * Log URL : #{@parent_server.job_log_url}/#{new_job.id}/log", Log::LV_USER)
- end
- end
-
- @parent_server.jobmgr.add_job( new_job )
- else
- raise BuildServerException.new("ERR001"), line
- end
- end
+ ## "RESOLVE"
+ #def handle_cmd_resolve( line, req )
+ # @log.info "Received REQ: #{line}"
+
+ # begin
+ # handle_cmd_resolve_internal( line, req )
+ # rescue BuildServerException => e
+ # @log.error(e.message)
+ # BuildCommServer.send(req, e.err_message())
+ # BuildCommServer.send_end(req)
+ # BuildCommServer.disconnect(req)
+ # end
+
+ # @log.info "Handled REQ: #{line}"
+ #end
+
+
+ #def handle_cmd_resolve_internal( line ,req)
+ # tok = line.split("|").map { |x| x.strip }
+ # if tok.count < 3 then
+ # raise BuildServerException.new("ERR001"), line
+ # end
+
+ # case tok[1]
+ # # RESOLVE|GIT|project_name|passwd|os|async|dist_name|user_email|verbose
+ # when "GIT"
+
+ # # parse
+ # project_name=tok[2]
+ # passwd=tok[3]
+ # os=tok[4]
+ # async = tok[5].eql? "YES"
+ # dist_name = tok[6]
+ # user_email = (not tok[7].nil? and not tok[7].empty?) ? tok[7].strip : ""
+ # verbose = tok[8].eql? "YES"
+ # if (dist_name.nil? or dist_name.empty?) then
+ # dist_name = @parent_server.distmgr.get_default_distribution_name()
+ # end
+
+ # # check distribution
+ # check_distribution(dist_name, req)
+
+ # # check project
+ # prj = check_project_exist(project_name, dist_name, req)
+
+ # # check passwd
+ # check_project_password(prj, passwd, req)
+
+ # # check os
+ # os_list = check_supported_os( [os] , req )
+ # os = os_list[0]
+
+ # # check user email
+ # user_id = @parent_server.check_user_id_from_email( user_email )
+ # if user_id == -1 then
+ # raise BuildServerException.new("ERR004"), user_email
+ # end
+
+ # # check user accessable
+ # if not check_project_user_id(project_name,dist_name,user_id) then
+ # raise BuildServerException.new("ERR005"), "#{user_email} -> #{project_name}"
+ # end
+
+ # # create new job
+ # new_job = create_new_job( project_name, os, dist_name )
+ # if new_job.nil? then
+ # raise BuildServerException.new("ERR006"), "Resolve job #{project_name} #{os}"
+ # end
+ # @log.info "Received a request for resolving this project : #{project_name}, #{os}"
+
+ # new_job.user_id = user_id
+
+ # # resolve
+ # new_job.set_resolve_flag()
+
+ # # create logger and set
+ # if async then
+ # new_job.create_logger( nil, verbose)
+ # BuildCommServer.send(req,"Info: Added new job \"#{new_job.id}\" for #{new_job.os}!")
+ # if not @parent_server.job_log_url.empty? then
+ # BuildCommServer.send(req,"Info: * Log URL : #{@parent_server.job_log_url}/#{new_job.id}/log")
+ # end
+ # BuildCommServer.send(req,"Info: Above job(s) will be processed asynchronously!")
+ # BuildCommServer.send_end(req)
+ # BuildCommServer.disconnect(req)
+ # else
+ # logger = new_job.create_logger( req, verbose)
+ # logger.info( "Added new job \"#{new_job.id}\" for #{new_job.os}!", Log::LV_USER)
+ # if not @parent_server.job_log_url.empty? then
+ # logger.info( " * Log URL : #{@parent_server.job_log_url}/#{new_job.id}/log", Log::LV_USER)
+ # end
+ # end
+
+ # @parent_server.jobmgr.add_job( new_job )
+ # else
+ # raise BuildServerException.new("ERR001"), line
+ # end
+ #end
# "QUERY"
case job.type
when "BUILD"
- if status == "PENDING" then
- if job.pending_ancestor.nil? then
- ids = "/"
- else
- ids = job.pending_ancestor.id
- end
- BuildCommServer.send(req,"#{status}:#{ids},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
- else
- BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
- end
+ #if status == "PENDING" then
+ # if job.pending_ancestor.nil? then
+ # ids = "/"
+ # else
+ # ids = job.pending_ancestor.id
+ # end
+ # BuildCommServer.send(req,"#{status}:#{ids},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
+ #else
+ # BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
+ #end
+ BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")
when "REGISTER"
if job.pkg_type == "BINARY" and not job.get_project().nil? then
BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress},#{job.get_distribution_name}")