blob: 3abbe2b2d7aac025eda2c65eddef6bd6d50d5784 [file] [log] [blame] [edit]
#
# 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)