From e62d44df853230a8a8458a569bca671e123ea8e2 Mon Sep 17 00:00:00 2001 From: Hyoun Jiil Date: Wed, 29 Jan 2014 10:03:45 +0900 Subject: [PATCH] build-svr : now set-attr is work dynamically [Description] when no db exist in server it must reboot server after set-attr command now I add Comm interface "SET" that set attribute dynamically Change-Id: I5256f1fa046833ae41a048d717700e66a58c884d Signed-off-by: Hyoun Jiil --- src/build_server/BuildServerController.rb | 12 ++++++++ src/build_server/BuildServerException.rb | 1 + src/build_server/SocketJobRequestListener.rb | 30 ++++++++++++++++++++ src/common/BuildComm.rb | 4 +-- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/build_server/BuildServerController.rb b/src/build_server/BuildServerController.rb index 5c4b5f0..29b31c0 100644 --- a/src/build_server/BuildServerController.rb +++ b/src/build_server/BuildServerController.rb @@ -854,6 +854,18 @@ class BuildServerController result = false end + if not server.has_db? then + client = BuildCommClient.create( "127.0.0.1", server.port ) + if not client.nil? then + # send request + if client.send "SET|#{attr}|#{value}" then + result = client.read_lines + end + # terminate + client.terminate + end + end + if result then write_server_config( server ) end return result diff --git a/src/build_server/BuildServerException.rb b/src/build_server/BuildServerException.rb index 7bd8133..762c2cb 100644 --- a/src/build_server/BuildServerException.rb +++ b/src/build_server/BuildServerException.rb @@ -27,6 +27,7 @@ class BuildServerException < Exception "ERR021" => "No DB exists and create(migrate) DB first!", "ERR022" => "There already exists same job.", "ERR023" => "Cannot create package client!", + "ERR024" => "Attribute not supports!", "ERR100" => "Package info file(\"package/pkginfo.manifest\") does not exist!", "ERR101" => "Parsing package info file failed!", diff --git a/src/build_server/SocketJobRequestListener.rb b/src/build_server/SocketJobRequestListener.rb index 426d219..2241835 100644 --- a/src/build_server/SocketJobRequestListener.rb +++ b/src/build_server/SocketJobRequestListener.rb @@ -135,6 +135,8 @@ class SocketJobRequestListener handle_cmd_build( req_line, req ) when "QUERY" handle_cmd_query( req_line, req ) + when "SET" + handle_cmd_set( req_line,req ) when "CANCEL" handle_cmd_cancel( req_line, req ) when "STOP" @@ -486,6 +488,34 @@ class SocketJobRequestListener end end + # "SET" + def handle_cmd_set( line, req ) + begin + handle_cmd_set_internal( line, req ) + rescue BuildServerException => e + @log.error(e.message) + BuildCommServer.send(req, e.err_message()) + ensure + BuildCommServer.send_end(req) + BuildCommServer.disconnect(req) + end + end + + def handle_cmd_set_internal( line, req ) + tok = line.split("|").map { |x| x.strip } + if tok.count < 3 then + raise BuildServerException.new("ERR001"), line + end + attr = tok[1] + value = tok[2] + case tok[1] + when "MAX_WORKING_JOBS" + BuildCommServer.send(req, "OK") + @parent_server.jobmgr.max_working_jobs = value.to_i + else + raise BuildServerException.new("ERR024"), line + end + end # "CANCEL" def handle_cmd_cancel( line, req ) diff --git a/src/common/BuildComm.rb b/src/common/BuildComm.rb index 7579175..8b0b18b 100644 --- a/src/common/BuildComm.rb +++ b/src/common/BuildComm.rb @@ -40,7 +40,7 @@ require "FileUtil" ATTEMPTS = ["first", "second", "third"] class BuildCommServer - VERSION = "1.9.0" + VERSION = "1.9.1" private_class_method :new @@ -339,7 +339,7 @@ end class BuildCommClient - VERSION = "1.9.0" + VERSION = "1.9.1" FIRST_RESPONSE_TIMEOUT = 120 private_class_method :new -- 2.34.1