def pbs_service(self, rack_name=None): config = cm_config() username = config.get("cloudmesh.hpc.username") pbs = PBS(username, "india.futuregrid.org") dict_pbs_info = pbs.pbsnodes() dict_data = {} inventory = Inventory() racks = inventory.get_clusters() for rack in racks: rack_name = rack["cm_cluster"] dict_data[rack_name] = {} hosts = rack["cm_value"] for host in hosts: (hid, hlabel) = inventory.get_host_id_label(host, "public") utype = "unknown" if hlabel in dict_pbs_info: server = dict_pbs_info[hlabel] if "note" in server.keys(): note_value = server["note"] # to compatible with the future change if type(note_value) is dict: utype = note_value["service"] else: # currently is a literal string for note utype = note_value dict_data[rack_name][hid] = utype return dict_data
def get_qinfo(self, host): HEADING() self.pbs = PBS(self.user, host) results = self.pbs.qinfo() for name in results: element = results[name] pprint(element)
def test_info(self): HEADING() for host in self.hosts: self.pbs = PBS(self.user, host) results = self.pbs.qstat() print host, " =", len(results), "jobs"
def display_status(): msg = "" status = "" values = { 'india': { 'jobs': 0, 'users': 0 }, 'bravo': { 'jobs': 0, 'users': 0 }, 'echo': { 'jobs': 0, 'users': 0 }, 'hotel': { 'jobs': 0, 'users': 0 }, 'sierra': { 'jobs': 0, 'users': 0 }, 'alamo': { 'jobs': 0, 'users': 0 }, 'delta': { 'jobs': 0, 'users': 0 }, 'lima': { 'jobs': 0, 'users': 0 } } config = cm_config() time_now = datetime.now().strftime("%Y-%m-%d %H:%M") user = config.get("cloudmesh.hpc.username") services = {} qinfo = {} qstat = {} qstat_uniq_users = {} for host in [ 'sierra.futuregrid.org', 'india.futuregrid.org', ]: pbs = PBS(user, host) services[host] = pbs.service_distribution() qinfo[host] = pbs.qinfo() qstat[host] = pbs.qstat() qstat_uniq_users[host] = pbs.get_uniq_users() machines = services.keys() # print "FFF", machines # # collecting all atttributes # all_attributes = set() for machine in machines: attributes = set(list(services[machine].keys())) print "P", attributes all_attributes.update(attributes) # print "XXX", all_attributes spider_services = { 'machines': machines, 'categories': list(all_attributes), 'data': {} } # # seeting all attributes to 0 # for machine in machines: ser = [] i = 0 for attribute in all_attributes: try: ser.append(services[machine][attribute]) except: ser.append(0) i = i + 1 spider_services['data'][machine] = ser # print "SSS", spider_services # Users and Jobs total_jobs = {} unique_users = {} for machine in machines: for qserver in qinfo[machine]: total_jobs[qserver] = 0 unique_users[qserver] = 0 try: hostname = qserver.split('.')[0] except: hostname = "" for qname in qinfo[machine][qserver]: total_jobs[qserver] += qinfo[machine][qserver][qname][ 'total_jobs'] try: unique_users[qserver] += len( qstat_uniq_users[machine][qserver]) except KeyError: pass values[hostname]['jobs'] = total_jobs[qserver] values[hostname]['users'] = unique_users[qserver] return render_template('status/status.html', services=spider_services, values=values, status=status, show=msg)
def fetch_pbs_nodes_info(self): pbs = PBS(self.username, self.hostname) self.pbs_nodes_info = pbs.pbsnodes()
def activate(self, host, user): """activates a specific host to be queried""" self.pbs_client = PBS(user, host) self.hosts[host] = self.pbs_client
group='group1', user='******', state='defined', ssh_config='india', queue=queue) job.save() # print (Job.status(name)) # jobs = Job.objects() Job.list() Job.info(name) j = Job.find(name) j.name = 'a' j.save() Job.list() # # BUG # Job.rename(name, 'job2') # Job.info('job2') banner("PBS") pbs = PBS("gvonlasz", "india.futuregrid.org") # pprint (pbs.qinfo()) pprint(pbs.qstat())
def fetch_pbs_nodes_info(self): ''' fetches the pbs_nodes information from the remote computer ''' pbs = PBS(self.username, self.hostname) self.pbs_nodes_info = pbs.pbsnodes()