pvc = pvc + self.users[ user ]['private'][1] pbn = pbn + self.users[ user ]['public'][0] pbc = pbc + self.users[ user ]['public'][1] return [ pvn, pvc, pbn, pbc ] def userSummary( self, user ): return[ self.users[ user ]['private'][0], self.users[ user ]['private'][1], self.users[ user ]['public'][0], self.users[ user ]['public'][1], ] r = et.fromstring( s.doCommand( [ "mdiag", "--xml", '-r', ] ) ) reserved_nodes = {} for q in r.findall( 'rsv' ): rsv = Reservation( q.attrib ) if 'STANDINGRSV' in rsv.flags: reserved_nodes.update( rsv.AllocNodeList ) r = et.fromstring( s.doCommand( [ "mdiag", "--xml", '-j', ] ) ) # total = {'acctname':AS()}} total = {}
# ckang2 16 # syin2 2 # krcurtis 1 # Free 62 # Total 1496 from scheduler import Scheduler from mtypes import Job import xml.etree.ElementTree as et s = Scheduler() summary = {} r = et.fromstring( s.doCommand( [ "showq", "--xml", '-r', ] ) ) # Used/free stats are in the "cluster" branch free_nodes = r.find( 'cluster' ).attrib[ 'LocalIdleNodes' ] up_nodes = r.find( 'cluster' ).attrib[ 'LocalUpNodes' ] free_cores = r.find( 'cluster' ).attrib[ 'LocalIdleProcs' ] up_cores = r.find( 'cluster' ).attrib[ 'LocalUpProcs' ] for j in r.findall( 'queue/job' ): job = Job( j.attrib ) try: summary[ job.User ] = summary[ job.User ] + job.ReqProcs except KeyError: summary[ job.User ] = job.ReqProcs