diff options
author | Tom Pollard <tom.pollard@codethink.co.uk> | 2019-07-31 16:31:47 +0100 |
---|---|---|
committer | bst-marge-bot <marge-bot@buildstream.build> | 2019-08-08 13:52:36 +0000 |
commit | 0026e37918998addb61d7cefcbb9b5f7f6f7b4f4 (patch) | |
tree | a756eaf5ba545882f8ec69204759ac22b8112d23 /src/buildstream/_messenger.py | |
parent | 1701aa1239f472317edfc6f675378dc91b1fcd61 (diff) | |
download | buildstream-tpollard/messageobject.tar.gz |
_message.py: Use element_name & element_key instead of unique_idtpollard/messageobject
Adding the element full name and display key into all element related
messages removes the need to look up the plugintable via a plugin
unique_id just to retrieve the same values for logging and widget
frontend display. Relying on plugintable state is also incompatible
if the frontend will be running in a different process, as it will
exist in multiple states.
The element full name is now displayed instead of the unique_id,
such as in the debugging widget. It is also displayed in place of
'name' (i.e including any junction prepend) to be more informative.
Diffstat (limited to 'src/buildstream/_messenger.py')
-rw-r--r-- | src/buildstream/_messenger.py | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/src/buildstream/_messenger.py b/src/buildstream/_messenger.py index d768abf0c..be5f12c0a 100644 --- a/src/buildstream/_messenger.py +++ b/src/buildstream/_messenger.py @@ -25,7 +25,6 @@ from . import _signals from . import utils from ._exceptions import BstError from ._message import Message, MessageType -from .plugin import Plugin _RENDER_INTERVAL = datetime.timedelta(seconds=1) @@ -149,16 +148,16 @@ class Messenger(): # # Args: # activity_name (str): The name of the activity - # unique_id (int): Optionally, the unique id of the plugin related to the message + # element_name (str): Optionally, the element full name of the plugin related to the message # detail (str): An optional detailed message, can be multiline output # silent_nested (bool): If True, all but _message.unconditional_messages are silenced # @contextmanager - def timed_activity(self, activity_name, *, unique_id=None, detail=None, silent_nested=False): + def timed_activity(self, activity_name, *, element_name=None, detail=None, silent_nested=False): with self._timed_suspendable() as timedata: try: # Push activity depth for status messages - message = Message(unique_id, MessageType.START, activity_name, detail=detail) + message = Message(MessageType.START, activity_name, detail=detail, element_name=element_name) self.message(message) with self.silence(actually_silence=silent_nested): yield @@ -167,12 +166,12 @@ class Messenger(): # Note the failure in status messages and reraise, the scheduler # expects an error when there is an error. elapsed = datetime.datetime.now() - timedata.start_time - message = Message(unique_id, MessageType.FAIL, activity_name, elapsed=elapsed) + message = Message(MessageType.FAIL, activity_name, elapsed=elapsed, element_name=element_name) self.message(message) raise elapsed = datetime.datetime.now() - timedata.start_time - message = Message(unique_id, MessageType.SUCCESS, activity_name, elapsed=elapsed) + message = Message(MessageType.SUCCESS, activity_name, elapsed=elapsed, element_name=element_name) self.message(message) # simple_task() @@ -181,7 +180,7 @@ class Messenger(): # # Args: # activity_name (str): The name of the activity - # unique_id (int): Optionally, the unique id of the plugin related to the message + # element_name (str): Optionally, the element full name of the plugin related to the message # full_name (str): Optionally, the distinguishing name of the activity, e.g. element name # silent_nested (bool): If True, all but _message.unconditional_messages are silenced # @@ -189,10 +188,10 @@ class Messenger(): # Task: A Task object that represents this activity, principally used to report progress # @contextmanager - def simple_task(self, activity_name, *, unique_id=None, full_name=None, silent_nested=False): + def simple_task(self, activity_name, *, element_name=None, full_name=None, silent_nested=False): # Bypass use of State when none exists (e.g. tests) if not self._state: - with self.timed_activity(activity_name, unique_id=unique_id, silent_nested=silent_nested): + with self.timed_activity(activity_name, element_name=element_name, silent_nested=silent_nested): yield return @@ -201,7 +200,7 @@ class Messenger(): with self._timed_suspendable() as timedata: try: - message = Message(unique_id, MessageType.START, activity_name) + message = Message(MessageType.START, activity_name, element_name=element_name) self.message(message) task = self._state.add_task(activity_name, full_name) @@ -215,7 +214,7 @@ class Messenger(): except BstError: elapsed = datetime.datetime.now() - timedata.start_time - message = Message(unique_id, MessageType.FAIL, activity_name, elapsed=elapsed) + message = Message(MessageType.FAIL, activity_name, elapsed=elapsed, element_name=element_name) self.message(message) raise finally: @@ -232,7 +231,8 @@ class Messenger(): detail = "{} subtasks processed".format(task.current_progress) else: detail = None - message = Message(unique_id, MessageType.SUCCESS, activity_name, elapsed=elapsed, detail=detail) + message = Message(MessageType.SUCCESS, activity_name, elapsed=elapsed, detail=detail, + element_name=element_name) self.message(message) # recorded_messages() @@ -336,13 +336,12 @@ class Messenger(): EMPTYTIME = "--:--:--" template = "[{timecode: <8}] {type: <7}" - # If this message is associated with a plugin, print what - # we know about the plugin. - plugin_name = "" - if message.unique_id: - template += " {plugin}" - plugin = Plugin._lookup(message.unique_id) - plugin_name = plugin.name + # If this message is associated with an element or source plugin, print the + # full element name of the instance. + element_name = "" + if message.element_name: + template += " {element_name}" + element_name = message.element_name template += ": {message}" @@ -359,7 +358,7 @@ class Messenger(): timecode = "{0:02d}:{1:02d}:{2:02d}".format(hours, minutes, seconds) text = template.format(timecode=timecode, - plugin=plugin_name, + element_name=element_name, type=message.message_type.upper(), message=message.message, detail=detail) |