Run hooks for DisplayCommandBase
Command base class has provisions to run hooks for a command in its run() method. We need to do the same for the DisplayCommandBase class since it does not call super().run() Change-Id: Ic5481523d4bd919fe7fb10e00330dea2ff688ec4
This commit is contained in:
@@ -133,12 +133,36 @@ class Command(object):
|
|||||||
|
|
||||||
Return the value returned by :meth:`take_action` or 0.
|
Return the value returned by :meth:`take_action` or 0.
|
||||||
"""
|
"""
|
||||||
|
self._run_before_hooks(parsed_args)
|
||||||
|
return_code = self.take_action(parsed_args) or 0
|
||||||
|
self._run_after_hooks(parsed_args, return_code)
|
||||||
|
return return_code
|
||||||
|
|
||||||
|
def _run_before_hooks(self, parsed_args):
|
||||||
|
"""Calls before() method of the hooks.
|
||||||
|
|
||||||
|
This method is intended to be called from the run() method before
|
||||||
|
take_action() is called.
|
||||||
|
|
||||||
|
This method should only be overriden by developers creating new
|
||||||
|
command base classes and only if it is necessary to have different
|
||||||
|
hook processing behavior.
|
||||||
|
"""
|
||||||
for hook in self._hooks:
|
for hook in self._hooks:
|
||||||
hook.obj.before(parsed_args)
|
hook.obj.before(parsed_args)
|
||||||
return_code = self.take_action(parsed_args) or 0
|
|
||||||
|
def _run_after_hooks(self, parsed_args, return_code):
|
||||||
|
"""Calls after() method of the hooks.
|
||||||
|
|
||||||
|
This method is intended to be called from the run() method after
|
||||||
|
take_action() is called.
|
||||||
|
|
||||||
|
This method should only be overriden by developers creating new
|
||||||
|
command base classes and only if it is necessary to have different
|
||||||
|
hook processing behavior.
|
||||||
|
"""
|
||||||
for hook in self._hooks:
|
for hook in self._hooks:
|
||||||
hook.obj.after(parsed_args, return_code)
|
hook.obj.after(parsed_args, return_code)
|
||||||
return return_code
|
|
||||||
|
|
||||||
|
|
||||||
class _SmartHelpFormatter(_argparse.HelpFormatter):
|
class _SmartHelpFormatter(_argparse.HelpFormatter):
|
||||||
|
|||||||
@@ -108,8 +108,10 @@ class DisplayCommandBase(command.Command):
|
|||||||
return columns_to_include, selector
|
return columns_to_include, selector
|
||||||
|
|
||||||
def run(self, parsed_args):
|
def run(self, parsed_args):
|
||||||
|
self._run_before_hooks(parsed_args)
|
||||||
self.formatter = self._formatter_plugins[parsed_args.formatter].obj
|
self.formatter = self._formatter_plugins[parsed_args.formatter].obj
|
||||||
column_names, data = self.take_action(parsed_args)
|
column_names, data = self.take_action(parsed_args)
|
||||||
|
self._run_after_hooks(parsed_args, (column_names, data))
|
||||||
self.produce_output(parsed_args, column_names, data)
|
self.produce_output(parsed_args, column_names, data)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user