summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-06-07 18:13:04 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-06-12 17:48:52 +0100
commitc761751e259bb8e940552a28794b45887b5a72d9 (patch)
tree0504eb972355270d1ad0b9074d61bab8c99f9f7b
parent860ec42b220b7ed3f3bbe52c3546bba66644eac8 (diff)
downloadbitbake-contrib-c761751e259bb8e940552a28794b45887b5a72d9.tar.gz
prserv: Adapt autostart to bitbake-worker
With the change to bitbake-worker we need to ensure the workers know how to contact the PR service, the magic 0 port and singleton is no longer enough. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xbin/bitbake-worker1
-rw-r--r--lib/bb/cooker.py2
-rw-r--r--lib/bb/runqueue.py1
-rw-r--r--lib/prserv/serv.py11
4 files changed, 12 insertions, 3 deletions
diff --git a/bin/bitbake-worker b/bin/bitbake-worker
index 8edf8dd65..6580078af 100755
--- a/bin/bitbake-worker
+++ b/bin/bitbake-worker
@@ -280,6 +280,7 @@ class BitbakeWorker(object):
bb.msg.loggerDefaultVerbose = self.workerdata["logdefaultverbose"]
bb.msg.loggerVerboseLogs = self.workerdata["logdefaultverboselogs"]
bb.msg.loggerDefaultDomains = self.workerdata["logdefaultdomain"]
+ self.data.setVar("PRSERV_HOST", self.workerdata["prhost"])
def handle_ping(self, _):
workerlog_write("Handling ping\n")
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 77273dcb2..f375a6f58 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1177,7 +1177,7 @@ class BBCooker:
# necessary from the data store.
#bb.utils.empty_environment()
try:
- prserv.serv.auto_start(self.data)
+ self.prhost = prserv.serv.auto_start(self.data)
except prserv.serv.PRServiceConfigError:
bb.event.fire(CookerExit(), self.event_data)
return
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 577f04a6c..bd4253868 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -831,6 +831,7 @@ class RunQueue:
"logdefaultverbose" : bb.msg.loggerDefaultVerbose,
"logdefaultverboselogs" : bb.msg.loggerVerboseLogs,
"logdefaultdomain" : bb.msg.loggerDefaultDomains,
+ "prhost" : self.cooker.prhost,
}
worker.stdin.write("<cookerconfig>" + pickle.dumps(self.cooker.configuration) + "</cookerconfig>")
diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py
index d7ab9ee0d..7f9331d13 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -207,6 +207,9 @@ class PRServerConnection():
def importone(self, version, pkgarch, checksum, value):
return self.connection.importone(version, pkgarch, checksum, value)
+ def getinfo(self):
+ return self.host, self.port
+
def start_daemon(dbfile, host, port, logfile):
pidfile = PIDPREFIX % (host, port)
try:
@@ -271,7 +274,7 @@ def auto_start(d):
host_params = filter(None, (d.getVar('PRSERV_HOST', True) or '').split(':'))
if not host_params:
- return True
+ return None
if len(host_params) != 2:
logger.critical('\n'.join(['PRSERV_HOST: incorrect format',
@@ -296,7 +299,11 @@ def auto_start(d):
port = int(host_params[1])
try:
- return PRServerConnection(host,port).ping()
+ connection = PRServerConnection(host,port)
+ connection.ping()
+ realhost, realport = connection.getinfo()
+ return str(realhost) + ":" + str(realport)
+
except Exception:
logger.critical("PRservice %s:%d not available" % (host, port))
raise PRServiceConfigError