From 4ccf957deb184d2264f71681d7d4e21a13428add Mon Sep 17 00:00:00 2001 From: Sungmin Kim Date: Thu, 6 Feb 2014 16:07:20 +0900 Subject: [PATCH] Modified clone-dist about copying project's source info. Signed-off-by: Sungmin Kim Change-Id: I6b5bd8db67749352ba7cc4b972c0b96d277ad8d9 --- src/build_server/BuildServer.rb | 2 +- src/build_server/CommonProject.rb | 9 +++++++ src/build_server/DistributionManager.rb | 19 ++++++++------- src/build_server/ProjectManager.rb | 31 +++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index 8159be1..e38a2a3 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -1076,7 +1076,7 @@ class BuildServer rescue DBI::InterfaceError => e raise BuildServerException.new("ERR950"), e.errstr rescue => e - @log.error e.errstr if not @log.nil? + @log.error e.message if not @log.nil? @log.error e.backtrace.inspect if not @log.nil? end diff --git a/src/build_server/CommonProject.rb b/src/build_server/CommonProject.rb index a8cb9cb..cc03520 100644 --- a/src/build_server/CommonProject.rb +++ b/src/build_server/CommonProject.rb @@ -378,4 +378,13 @@ class CommonProject end return result end + + public + def self.get_project_rows_in_distribution(db, distribution_name) + result = [] + db.select_all("SELECT projects.name,distributions.name as dist_name,projects.ptype FROM projects,distributions WHERE projects.distribution_id=distributions.id AND distributions.name = '#{distribution_name}'") do |row| + result.push row.to_h + end + return result + end end diff --git a/src/build_server/DistributionManager.rb b/src/build_server/DistributionManager.rb index e403586..d16158f 100644 --- a/src/build_server/DistributionManager.rb +++ b/src/build_server/DistributionManager.rb @@ -220,22 +220,23 @@ class DistributionManager @server.log.info "Added a new distribution \"#{target_name}\"" #Get project list - projects = @server.prjmgr.get_all_projects() + projects = @server.prjmgr.get_projects_in_distribution(origin_name) #Add project projects.each do |prj| if prj.type.eql? "GIT" then @server.prjmgr.add_git_project(prj.name, prj.repository, prj.branch, prj.os_list, target_name) - - source = prj.get_latest_source_info(db) - if not source.nil? then - new_prj = @server.prjmgr.get_project(prj.name, target_name) - db.do "INSERT INTO sources(project_id, pkg_ver,location) - VALUES(#{new_prj.prj_id},'#{source["pkg_ver"]}','#{source["location"]}')" - end elsif prj.type.eql? "BINARY" then @server.prjmgr.add_binary_project(prj.name, prj.pkg_name, prj.os_list, target_name) end + + # copy source info + source_cnt = db.select_one("SELECT count(*) val FROM sources WHERE project_id =#{prj.prj_id}")[0] + if( source_cnt > 0 ) + new_prj = @server.prjmgr.get_project(prj.name, target_name) + db.do "INSERT INTO sources(project_id, pkg_ver,location) + SELECT #{new_prj.prj_id}, pkg_ver, location FROM sources WHERE project_id = #{prj.prj_id}" + end end result = true @@ -247,7 +248,7 @@ class DistributionManager end rescue => e if not @server.log.nil? then - @server.log.error e.errstr + @server.log.error e.message end end return result diff --git a/src/build_server/ProjectManager.rb b/src/build_server/ProjectManager.rb index 720a93c..b3505cc 100644 --- a/src/build_server/ProjectManager.rb +++ b/src/build_server/ProjectManager.rb @@ -96,6 +96,37 @@ class ProjectManager return result end + #name get_all_project + #return project list + #return [] when DB error occurred + def get_projects_in_distribution(distribution_name) + result = [] + begin + @server.get_db_connection() do |db| + rows = CommonProject.get_project_rows_in_distribution(db, distribution_name) + rows.each do |row| + if row['ptype'] == "GIT" then + prj = GitBuildProject.load(row['name'], row['dist_name'], @server, db) + else + prj = BinaryUploadProject.load(row['name'], row['dist_name'], @server, db) + end + if not prj.nil? then result.push prj end + end + end + rescue BuildServerException => e + if not @server.log.nil? then + @server.log.error e.message + end + rescue => e + if not @server.log.nil? then + @server.log.error e.errstr + end + end + + return result + end + + #name get_all_project #return project list #return [] when DB error occurred -- 2.34.1