def update_all_jobs(batchserver_name): """ Update info about all jobs of the given batchserver. """ server,created = getBatchServer(batchserver_name) if not pbs_data_jobs.has_key(batchserver_name): pbs_data_jobs[batchserver_name] = {'last_update':None, 'jobs':{}} if pbs_data_jobs[batchserver_name]['last_update'] and (datetime.datetime.now()-pbs_data_jobs[batchserver_name]['last_update']).total_seconds()<GlobalConfiguration.objects.get(pk=1).max_lastupdate: logging.debug("jobs info is new enough for server: %s" % batchserver_name) print "not updated" return pbs_data_jobs print "updated" conn = pbs.pbs_connect(batchserver_name.encode('iso-8859-1', 'replace')) if conn==-1: logging.error("Cannot connect to %s - live data will be missing" % server.name) return statjobs = pbs.pbs_statjob(conn, "" , [], "") pbs.pbs_disconnect(conn) for sj in statjobs: jobid = sj.name attr_dict = dict([ (x.name,x.value) for x in sj.attribs]) attr_dict = {} for x in sj.attribs: if x.resource: attr_dict[x.name+"_"+x.resource] = x.value else: attr_dict[x.name] = x.value pbs_data_jobs[batchserver_name]['jobs'][jobid] = update_one_job_from_pbs_data(jobid, attr_dict) pbs_data_jobs[batchserver_name]['last_update'] = datetime.datetime.now() return pbs_data_jobs
def update_all_queues(batchserver_name): """ Update info about all queues for give batchserver. """ server,created = getBatchServer(batchserver_name) if server.queues_lastupdate and (datetime.datetime.now()-server.queues_lastupdate).total_seconds()<GlobalConfiguration.objects.get(pk=1).max_lastupdate: logging.debug("Queue info is new enough for server: %s" % batchserver_name) return conn = pbs.pbs_connect(batchserver_name.encode('iso-8859-1', 'replace')) if conn==-1: logging.error("Cannot connect to %s - live data will be missing" % server.name) return statqueues = pbs.pbs_statque(conn, "" , [], "") pbs.pbs_disconnect(conn) if conn==-1: logging.error("Cannot connect to %s - live data will be missing" % server.name) return for sq in statqueues: queue,created = getQueue(sq.name, server) attr_dict = dict([ (x.name,x.value) for x in sq.attribs]) update_one_queue_from_pbs_data(queue, attr_dict) queue.save() server.queues_lastupdate = datetime.datetime.now() server.save()
def update_all_nodes(batchserver_name): """ Update info about all nodes of the given batchserver. """ server,created = getBatchServer(batchserver_name) if not pbs_data_nodes.has_key(batchserver_name): pbs_data_nodes[batchserver_name] = {'last_update':None, 'nodes':{}} if pbs_data_nodes[batchserver_name]['last_update'] and (datetime.datetime.now()-pbs_data_nodes[batchserver_name]['last_update']).total_seconds()<GlobalConfiguration.objects.get(pk=1).max_lastupdate: logging.debug("Nodes info is new enough for server: %s" % batchserver_name) print "not updated" return pbs_data_nodes print "updated" conn = pbs.pbs_connect(batchserver_name.encode('iso-8859-1', 'replace')) if conn==-1: logging.error("Cannot connect to %s - live data will be missing" % server.name) return statnodes = pbs.pbs_statnode(conn, "" , [], "") pbs.pbs_disconnect(conn) for sn in statnodes: node,created = getNode(sn.name, server) attr_dict = dict([ (x.name,x.value) for x in sn.attribs]) pbs_data_nodes[batchserver_name]['nodes'][node] = update_one_node_from_pbs_data(node, attr_dict) pbs_data_nodes[batchserver_name]['last_update'] = datetime.datetime.now() return pbs_data_nodes