Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 PKG = 'life_test'
00038 
00039 
00040 
00041 
00042 
00043 class FailedLoadError(Exception): pass
00044 class BayNameExistsError(Exception): pass
00045 
00046 
00047 class TestRoom:
00048     def __init__(self, hostname):
00049         self.hostname = hostname
00050         self._bays = {}
00051 
00052     def add_bay(self, bay):
00053         if self._bays.has_key(bay.name):
00054             raise BayNameExistsError("Bay %s already exists in room %s." % 
00055                                      (bay.name, self.hostname))
00056         self._bays[bay.name] = bay
00057 
00058     def get_bay_names(self, need_power):
00059         if not need_power:
00060             bays = self._bays.keys()
00061             bays.sort()
00062             return bays
00063 
00064         names = []
00065         for name in self._bays.keys():
00066             if self._bays[name].board is not None:
00067                 names.append(name)
00068         names.sort()
00069         return names
00070 
00071     def get_bay(self, name):
00072         if not self._bays.has_key(name):
00073             return None
00074         return self._bays[name]
00075 
00076 
00077 class TestBay:
00078     def __init__(self, xml_doc):
00079         self.name = xml_doc.attributes['name'].value
00080         self.machine = xml_doc.attributes['machine'].value
00081         if xml_doc.attributes.has_key('board'):
00082             self.board = int(xml_doc.attributes['board'].value)
00083             self.breaker = int(xml_doc.attributes['breaker'].value)
00084             if self.breaker not in [0, 1, 2]:
00085                 raise FailedLoadError("Invalid power breaker. Must be [0, 1, 2]")
00086         else:
00087             self.board = None
00088             self.breaker = None
00089         
00090 
00091 
00092 
00093 
00094                             
00095