]> xenbits.xensource.com Git - people/liuw/osstest.git/commitdiff
daemons: Allow QueueDaemon and OwnerDaemon to run on different hosts
authorIan Jackson <ian.jackson@eu.citrix.com>
Sun, 8 Mar 2015 12:20:34 +0000 (12:20 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Tue, 24 Mar 2015 18:53:52 +0000 (18:53 +0000)
We want the OwnerDaemon to run on the same host as the database (for
fate-sharing reasons).  OTOH the QueueDaemon is less critical if it
fails, and it generates reports etc., and wants to be more frequently
updated, so it should run on the osstest VM.

Permit this by:
 * Providing OwnerDaemonHost and QueueDaemonHost config settings
   which default to the value of ControlDaemonHost.
 * Using those everywhere.
 * In the daemons' Tcl code, have main-daemon take the string `Owner'
   or `Queue' so that it can look up both the host and port.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Osstest/Executive.pm
ms-ownerdaemon
ms-queuedaemon
ms-reportuptime
tcl/JobDB-Executive.tcl
tcl/daemonlib.tcl

index 3dc37d1ed0130e39dded7cb9b747ab04c6469e53..118a91a3915df8664138e1f7beed1dcd4ab91ba6 100644 (file)
@@ -100,6 +100,11 @@ augmentconfigdefaults(
     BisectionRevisonGraphSize => '600x300',
 );
 
+augmentconfigdefaults(
+    OwnerDaemonHost => $c{ControlDaemonHost},
+    QueueDaemonHost => $c{ControlDaemonHost},
+);
+
 #---------- configuration reader etc. ----------
 
 sub opendb_tests () {
@@ -241,7 +246,7 @@ sub alloc_resources_rollback_begin_work () {
 our $alloc_resources_waitstart;
 
 sub tcpconnect_queuedaemon () {
-    my $qserv= tcpconnect($c{ControlDaemonHost}, $c{QueueDaemonPort});
+    my $qserv= tcpconnect($c{QueueDaemonHost}, $c{QueueDaemonPort});
     $qserv->autoflush(1);
 
     $_= <$qserv>;  defined && m/^OK ms-queuedaemon\s/ or die "$_?";
index 61b5adedf04108ec911cf646d618ce520dc46817..33ee2381bc37d5d4b772842994498186e9d3c06c 100755 (executable)
@@ -89,7 +89,7 @@ proc banner {chan} {
     return "OK ms-ownerdaemon"
 }
 
-main-daemon $c(OwnerDaemonPort) {
+main-daemon Owner {
     jobdb::db-open
     
     jobdb::transaction resources {
index 26d83e23ab554457144e0dc43fd4cbf7de69ccf8..e15bc79ff0be0e0bd496c966ade2f2b20f461882 100755 (executable)
@@ -470,7 +470,7 @@ proc add-inhibit {why seconds} {
     log "inhibition $why: starts, ${seconds}s, now $inhibit"
 }
 
-main-daemon $c(QueueDaemonPort) {
+main-daemon Queue {
     global owndchan chandesc inhibit plan
     
     jobdb::db-open
@@ -484,7 +484,7 @@ main-daemon $c(QueueDaemonPort) {
     # 1: run queue only if new resources available
     # 2: definitely run queue
 
-    set owndchan [socket $c(ControlDaemonHost) $c(OwnerDaemonPort)]
+    set owndchan [socket $c(OwnerDaemonHost) $c(OwnerDaemonPort)]
     fconfigure $owndchan -buffering line -translation lf
     set chandesc($owndchan) ownd
     
index 9b376a76113e80a5f5de136b80637d9e235d295c..aeac4831244e6c6c1a6c2bab78916d28ed49e01f 100755 (executable)
@@ -23,7 +23,7 @@ source daemonlib.tcl
 
 readconfig
 
-set s [socket $c(ControlDaemonHost) $c(QueueDaemonPort)]
+set s [socket $c(QueueDaemonHost) $c(QueueDaemonPort)]
 fconfigure $s -buffering line
 set chandesc($s) qd
 
index ad13cbdf4d8411fb8601206ce5bec1dd04810ddb..430ea84ce8f5b255fa3afb5b21c91dbee8d61832 100644 (file)
@@ -253,7 +253,7 @@ proc become-task {comment} {
     global env c
     if {[info exists env(OSSTEST_TASK)]} return
 
-    set ownerqueue [socket $c(ControlDaemonHost) $c(OwnerDaemonPort)]
+    set ownerqueue [socket $c(OwnerDaemonHost) $c(OwnerDaemonPort)]
     fconfigure $ownerqueue -buffering line -translation lf
     must-gets $ownerqueue {^OK ms-ownerdaemon\M}
     puts $ownerqueue create-task
index c0e703db320cad6763d4d21681975094d0aef8ab..d097624fbc7a3b29b80b140cf8528a5f4879296f 100644 (file)
@@ -184,10 +184,11 @@ proc newconn {chan addr port} {
     }
 }
 
-proc main-daemon {port setup} {
+proc main-daemon {which setup} {
     global c argv
 
-    set host $c(ControlDaemonHost)
+    set host $c(${which}DaemonHost)
+    set port $c(${which}DaemonPort)
 
     foreach arg $argv {
         switch -glob -- $arg {