cocluto/cocluto/ClusterController/QueueMachine.py

82 lines
2.5 KiB
Python

class QueueMachineStateFlags: #
DISABLED = 1 # the queue machine is disabled
ALARM = 2 # the queue machine is in alarm state (see man qstat)
UNKNOWN = 4 # the queue machine is in unknown state because sge_execd cannot be contected (see man qstat)
ERROR = 8 # the queue is in error state
OBSOLETE = 16 # the queue no longer exists but it is still visible because it still contains running jobs
SUSPENDED = 32 # the queue machine is suspended
class QueueMachine:
"""
a QueueMachine instance represents a given SGE queue on a given machine (eg allintel.q@simpatix10)
"""
def __init__(self, queueName, machineName):
self.m_queueName = queueName
self.m_machineName = machineName
self.m_numSlots = None
self.m_numUsedSlots = None
self.m_fCpuLoad = None
self.m_stateFlags = 0
self.m_strDisableMessage = ''
def getName(self):
"""
returns the name of the machine queue (such as allintel.q@simpatix10)
"""
return self.m_queueName + '@' + self.m_machineName
def getQueueName(self):
return self.m_queueName
def getMachineName(self):
return self.m_machineName
def setNumSlots(self, numSlots):
self.m_numSlots = numSlots
def setNumUsedSlots(self, numSlots):
self.m_numUsedSlots = numSlots
def getNumSlots(self):
assert self.m_numSlots is not None
return self.m_numSlots
def getNumUsedSlots(self):
assert self.m_numUsedSlots is not None
return self.m_numUsedSlots
def setCpuLoad(self, fCpuLoad):
self.m_fCpuLoad = fCpuLoad
def cpuLoadIsAvailable(self):
return self.m_fCpuLoad is not None
def getCpuLoad(self):
assert self.m_fCpuLoad is not None
return self.m_fCpuLoad
def setState(self, state):
self.m_stateFlags = state
def isDisabled(self):
return self.m_stateFlags & QueueMachineStateFlags.DISABLED
def isInErrorState(self):
return self.m_stateFlags & QueueMachineStateFlags.ERROR
def isResponding(self):
return not (self.m_stateFlags & QueueMachineStateFlags.UNKNOWN)
def isInAlarmState(self):
return self.m_stateFlags & QueueMachineStateFlags.ALARM
def isSuspended(self):
return self.m_stateFlags & QueueMachineStateFlags.SUSPENDED
"""
def getStateAsString(self):
assert(self.m_strState is not None)
return self.m_strState
"""