Exemple #1
0
    def change(self, system, state):
        """Change Power Status"""
        session = self.__db.get_session()
        try:
            board = session.query(Board).filter_by(name=system).one()
            if board.slot:
                pos = board.slot.position
                if not board.slot or not board.slot.rack or not board.slot.rack.powercontrol:
                    return {'state': False}
                pc_id = board.slot.rack.powercontrol.id
                powerport = session.query(PowerPort).filter_by(
                    port=pos, powercontrol_id=pc_id).one()
                if powerport:
                    if (int(state)):
                        powerport.poweron()
                    else:
                        powerport.poweroff()
                else:
                    return {'state': False}

        except Exception as e:
            log.error("power: change status of {} failed: {}".format(
                system, e))
            raise SoapFault(
                faultcode="PowerChangeFailed",
                faultstring="change status of {} failed".format(system),
                detail=e)
        finally:
            session.close()

        return {'state': True}
Exemple #2
0
    def soap_list_boards(self, name):
        if name:
            l = self.list_boards(name=name)
        else:
            l = self.list_boards()

        if l['result'] == -1:
            raise SoapFault(faultcode="ListSystemsFailed",
                            faultstring="could not list boards")

        return {'list': l['list']}
Exemple #3
0
 def add_rack(self, name, location, desc="", num_slots=8):
     session = self.__db.get_session()
     try:
         rack = Rack(name=name, location=location, description=desc)
         for i in range(num_slots):
             slot = Slot(position=i + 1)
             rack.slots.append(slot)
         session.add(rack)
         session.commit()
     except Exception as e:
         log.error("add new rack failed: {}".format(e))
         raise SoapFault(faultcode="AddRackFailed",
                         faultstring="could not add a new rack",
                         detail=e)
     finally:
         session.close()
Exemple #4
0
    def get_serial (self, system):
        """Get Serialcontrol"""
        serport = {'host': 'none', 'port': -1}
        session = self.__db.get_session ()
        try:
            board = session.query (Board).filter_by (name = system).one ()
            serial = session.query (SerialControl).filter_by (rack_id = board.slot.rack_id).one ()
            port = session.query (SerialPort).filter_by (serialcontrol_id = serial.id, port = board.slot.position).one ()
            serport = {'host': serial.URI, 'port': port.udpport}
        except Exception as e:
            raise SoapFault (faultcode = "SerialGetSerialFailed",
                             faultstring = "get serial of {} failed".format (system),
                             detail = e)
        finally:
            session.close ()

        return serport
Exemple #5
0
 def status(self, system):
     """Get Testsystem Power Status"""
     session = self.__db.get_session()
     try:
         board = session.query(Board).filter_by(name=system).one()
         if board.slot:
             pos = board.slot.position
             pc_id = board.slot.rack.powercontrol.id
             powerport = session.query(PowerPort).filter_by(
                 port=pos, powercontrol_id=pc_id).one()
             state = powerport.powerstatus()
     except Exception as e:
         log.error("power: get status of {} failed: {}".format(system, e))
         raise SoapFault(
             faultcode="PowerStatusFailed",
             faultstring="get status of {} failed".format(system),
             detail=e)
     finally:
         session.close()
     return bool(state)
Exemple #6
0
    def list_racks(self):
        """list Testracks"""
        l = []
        session = self.__db.get_session()
        try:
            for rack in session.query(Rack):
                l.append({
                    'id': rack.id,
                    'name': rack.name,
                    'location': rack.location
                })

        except Exception as e:
            log.error("testrack query failed: {}".format(e))
            raise SoapFault(faultcode="ListSystemsFailed",
                            faultstring="could not list testracks",
                            detail=e)
        finally:
            session.close()

        log.info(l)
        return l
Exemple #7
0
 def divider(a, b):
     if b == 0:
         raise SoapFault(faultcode='DivisionByZero',
                         faultstring='Division by zero not allowed',
                         detail='test')
     return float(a) / b