build-svr : now set-attr is work dynamically 31/15831/1
authorHyoun Jiil <jiil.hyoun@samsung.com>
Wed, 29 Jan 2014 01:03:45 +0000 (10:03 +0900)
committerHyoun Jiil <jiil.hyoun@samsung.com>
Wed, 29 Jan 2014 01:03:45 +0000 (10:03 +0900)
[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 <jiil.hyoun@samsung.com>
src/build_server/BuildServerController.rb
src/build_server/BuildServerException.rb
src/build_server/SocketJobRequestListener.rb
src/common/BuildComm.rb

index 5c4b5f0de50f48e70a1e9cd443d2273186c1a56c..29b31c0300e5cb76ea1cd95c191a1a7a6255bba9 100644 (file)
@@ -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
index 7bd81333aa914c96c5d0981df0f2d38190c199b3..762c2cb46b117702d37af51aa2b5f03f7e90ccd3 100644 (file)
@@ -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!",
index 426d219b7a6ea79110ba37e1acf33891de5869b2..2241835eb370c20b5fb9160c2827db4e38541e9e 100644 (file)
@@ -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 )
index 7579175a6fed8f0becd2aad2077ef59e47ba5c56..8b0b18b3a7753292adcbf5b2d4793b933eb5babd 100644 (file)
@@ -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