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