|  | # | 
|  | # 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) |