From 583163a6938e3c4e81a910871e16a3d031406445 Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Thu, 8 Jul 2010 17:06:14 +0200
Subject: [PATCH] cli.SubmitOpCode: Support custom job reporter

This is necessary to reuse SubmitOpCode while adding processing for
custom message types.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 lib/cli.py | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/lib/cli.py b/lib/cli.py
index 327026dca..1de60a02f 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -1503,6 +1503,7 @@ def FormatLogMessage(log_type, log_msg):
   return utils.SafeEncode(log_msg)
 
 
+def PollJob(job_id, cl=None, feedback_fn=None, reporter=None):
   """Function to poll for the result of a job.
 
   @type job_id: job identified
@@ -1515,15 +1516,18 @@ def FormatLogMessage(log_type, log_msg):
   if cl is None:
     cl = GetClient()
 
-  if feedback_fn:
-    reporter = FeedbackFnJobPollReportCb(feedback_fn)
-  else:
-    reporter = StdioJobPollReportCb()
+  if reporter is None:
+    if feedback_fn:
+      reporter = FeedbackFnJobPollReportCb(feedback_fn)
+    else:
+      reporter = StdioJobPollReportCb()
+  elif feedback_fn:
+    raise errors.ProgrammerError("Can't specify reporter and feedback function")
 
   return GenericPollJob(job_id, _LuxiJobPollCb(cl), reporter)
 
 
-def SubmitOpCode(op, cl=None, feedback_fn=None, opts=None):
+def SubmitOpCode(op, cl=None, feedback_fn=None, opts=None, reporter=None):
   """Legacy function to submit an opcode.
 
   This is just a simple wrapper over the construction of the processor
@@ -1538,7 +1542,8 @@ def SubmitOpCode(op, cl=None, feedback_fn=None, opts=None):
 
   job_id = SendJob([op], cl)
 
-  op_results = PollJob(job_id, cl=cl, feedback_fn=feedback_fn)
+  op_results = PollJob(job_id, cl=cl, feedback_fn=feedback_fn,
+                       reporter=reporter)
 
   return op_results[0]
 
-- 
GitLab