From 635ef8bf00b4f58d13e10ca5035f66a3adf96448 Mon Sep 17 00:00:00 2001 From: "jiil.hyoun" Date: Tue, 27 Nov 2012 23:03:17 +0900 Subject: [PATCH] [Title] support remomte build server schema [Type] Enhancement [Module] Toolchain / [Priority] Major [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] Change-Id: Ice959bf08046643b23803021ee932f7e83f3b8cb --- src/build_server/BuildClientOptionParser.rb | 2 +- src/build_server/BuildServer.rb | 8 +++--- src/build_server/RemoteBuildServer.rb | 27 ++++++++++++++++++--- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/build_server/BuildClientOptionParser.rb b/src/build_server/BuildClientOptionParser.rb index c239ee2..63fb3da 100644 --- a/src/build_server/BuildClientOptionParser.rb +++ b/src/build_server/BuildClientOptionParser.rb @@ -37,7 +37,7 @@ class BuildClientUsage QUERY_SYSTEM="build-cli query-system -d " QUERY_PROJECT="build-cli query-project -d " QUERY_JOB="build-cli query-job -d " - CANCEL="build-cli cancel -j -d [-w ]" + CANCEL="build-cli cancel -j -d [-w ] [-U user-email]" REGISTER="build-cli register -P -d [-t ] [-w ] [-D ] [-U user-email]" end diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index 995c0db..f2b66cc 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -241,7 +241,9 @@ class BuildServer @remote_servers = get_remote_servers() @remote_servers.each do |server| # update state - server.update_state + get_db_connection() do |db| + server.update_state(db) + end end # handle jobs @@ -625,14 +627,14 @@ class BuildServer description VARCHAR(255), CONSTRAINT fk_sync_pkg_servers_distributions1 FOREIGN KEY ( distribution_id ) REFERENCES distributions ( id ) ) #{post_fix}" - RemoteBuildServer.create_table(db, inc, post_fix) - db.do "CREATE TABLE supported_os ( id INTEGER PRIMARY KEY #{inc}, os_category_id INTEGER NOT NULL, name VARCHAR(32) NOT NULL UNIQUE, CONSTRAINT fk_supported_os_os_category1 FOREIGN KEY ( os_category_id ) REFERENCES os_category ( id ) ) #{post_fix}" + RemoteBuildServer.create_table(db, inc, post_fix) + # USERS/GROUPS # users db.do "CREATE TABLE users ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE, email VARCHAR(256), password_hash VARCHAR(256), password_salt VARCHAR(256) ) #{post_fix}" diff --git a/src/build_server/RemoteBuildServer.rb b/src/build_server/RemoteBuildServer.rb index e4089e6..e4ec43e 100644 --- a/src/build_server/RemoteBuildServer.rb +++ b/src/build_server/RemoteBuildServer.rb @@ -70,7 +70,7 @@ class RemoteBuildServer # query remote server info & update server state - def update_state + def update_state(db) # send #@status = "DISCONNECTED" @@ -88,7 +88,10 @@ class RemoteBuildServer @status = "DISCONNECTED" end client.terminate - if @status == "DISCONNECTED" then return end + if @status == "DISCONNECTED" then + db.do "UPDATE remote_build_servers SET status = 'DISCONNECTED', max_job_count = 0, working_job_count = 0, waiting_job_count = 0 WHERE id = #{@id}" + return + end # send @working_jobs = [] @@ -116,6 +119,16 @@ class RemoteBuildServer @status = "DISCONNECTED" end client.terminate + if @status == "DISCONNECTED" then + db.do "UPDATE remote_build_servers SET status = 'DISCONNECTED', max_job_count = 0, working_job_count = 0, waiting_job_count = 0 WHERE id = #{@id}" + else + db.do "UPDATE remote_build_servers SET + status = '#{@status}', + supported_os_id = (SELECT supported_os.id FROM supported_os_id WHERE supported_os.name = '#{@host_os}'), + max_job_count = #{@max_working_jobs}, + working_job_count = #{@working_jobs.count}, + waiting_job_count = #{@waiting_jobs.count} WHERE id = #{@id}" + end end @@ -163,7 +176,13 @@ class RemoteBuildServer db.do "CREATE TABLE remote_build_servers ( id INTEGER PRIMARY KEY #{inc}, svr_addr VARCHAR(64) NOT NULL UNIQUE, - description VARCHAR(256) )#{post_fix}" + description VARCHAR(256), + status VARCHAR(32), + supported_os_id INTEGER, + max_job_count INTEGER, + working_job_count INTEGER, + waiting_job_count INTEGER, + CONSTRAINT fk_remote_build_servers_supported_os1 FOREIGN KEY ( supported_os_id ) REFERENCES supported_os ( id ) )#{post_fix}" end @@ -192,7 +211,7 @@ class RemoteBuildServer def self.load_row(row) svr_ip,svr_port=row['svr_addr'].strip.split(":") new_obj = new(svr_ip, svr_port, row['description'] ) - new_obj.set_id( row['id'] ) + new_obj.set_id( row['id'] ) return new_obj end -- 2.34.1