| # |
| # Copyright 2008 Google Inc. All Rights Reserved. |
| |
| """ |
| If you need to change the default behavior of some atest commands, you |
| can create a site_<topic>.py file to subclass some of the classes from |
| <topic>.py. |
| |
| The following example would prevent the creation of platform labels. |
| """ |
| |
| import inspect, new, sys |
| |
| from autotest_lib.cli import topic_common, label |
| |
| |
| class site_label(label.label): |
| pass |
| |
| |
| class site_label_create(label.label_create): |
| """Disable the platform option |
| atest label create <labels>|--blist <file>""" |
| def __init__(self): |
| super(site_label_create, self).__init__() |
| self.parser.remove_option("--platform") |
| |
| |
| def parse(self): |
| (options, leftover) = super(site_label_create, self).parse() |
| self.is_platform = False |
| return (options, leftover) |
| |
| |
| # The following boiler plate code should be added at the end to create |
| # all the other site_<topic>_<action> classes that do not modify their |
| # <topic>_<action> super class. |
| |
| # Any classes we don't override in label should be copied automatically |
| for cls in [getattr(label, n) for n in dir(label) if not n.startswith("_")]: |
| if not inspect.isclass(cls): |
| continue |
| cls_name = cls.__name__ |
| site_cls_name = 'site_' + cls_name |
| if hasattr(sys.modules[__name__], site_cls_name): |
| continue |
| bases = (site_label, cls) |
| members = {'__doc__': cls.__doc__} |
| site_cls = new.classobj(site_cls_name, bases, members) |
| setattr(sys.modules[__name__], site_cls_name, site_cls) |