def web_getStatisticsData( self ): req = self.__request() paletteColor = Palette() RPC = RPCClient( "WorkloadManagement/WMSAdministrator" ) selector = self.request.arguments["statsField"][0] if selector == 'Site': selector = "GridSite" if selector == "Computing Element": selector = "DestinationSite" elif selector == "Owner Group": selector = "OwnerGroup" elif selector == "Owner": selector = "OwnerDN" result = yield self.threadTask( RPC.getPilotStatistics, selector, req ) if not result['OK']: if 'FromDate' in req: del req['FromDate'] if 'LastUpdate' in req: del req['LastUpdate'] if 'ToDate' in req: del req['ToDate'] result = yield self.threadTask( RPC.getCounters, "PilotAgents", [selector], req ) statistics = {} if result['OK']: for status, count in result['Value']: if "OwnerDN" in status: userName = getUsernameForDN( status['OwnerDN'] ) if userName['OK']: status['OwnerDN'] = userName['Value'] statistics[status[selector]] = count result = S_OK(statistics) if result["OK"]: callback = [] result = dict( result["Value"] ) keylist = result.keys() keylist.sort() if selector == "Site": tier1 = gConfig.getValue( "/WebApp/PreferredSites", [] ) if len( tier1 ) > 0: tier1.sort() for i in tier1: if result.has_key( i ): countryCode = i.rsplit( ".", 1 )[1] callback.append( {"key":i, "value":result[i], "code":countryCode, "color": paletteColor.getColor( countryCode ) } ) for key in keylist: if selector == "Site" and tier1: if key not in tier1: try: countryCode = key.rsplit( ".", 1 )[1] except: countryCode = "Unknown" callback.append( {"key":key, "value":result[key], "code":countryCode, "color": paletteColor.getColor( key ) } ) elif selector == "Site" and not tier1: try: countryCode = key.rsplit( ".", 1 )[1] except: countryCode = "Unknown" callback.append( {"key":key, "value":result[key], "code":countryCode, "color": paletteColor.getColor( key ) } ) else: callback.append( {"key":key, "value":result[key], "code":"", "color": paletteColor.getColor( key ) } ) callback = {"success":"true", "result":callback} else: callback = {"success":"false", "error":result["Message"]} self.finish( callback )
def web_getStatisticsData(self): req = self.__request() paletteColor = Palette() RPC = RPCClient("WorkloadManagement/WMSAdministrator") selector = self.request.arguments["statsField"][0] if selector == 'Site': selector = "GridSite" if selector == "Computing Element": selector = "DestinationSite" elif selector == "Owner Group": selector = "OwnerGroup" elif selector == "Owner": selector = "OwnerDN" result = yield self.threadTask(RPC.getPilotStatistics, selector, req) if not result['OK']: if 'FromDate' in req: del req['FromDate'] if 'LastUpdate' in req: del req['LastUpdate'] if 'ToDate' in req: del req['ToDate'] result = yield self.threadTask(RPC.getCounters, "PilotAgents", [selector], req) statistics = {} if result['OK']: for status, count in result['Value']: if "OwnerDN" in status: userName = getUsernameForDN(status['OwnerDN']) if userName['OK']: status['OwnerDN'] = userName['Value'] statistics[status[selector]] = count result = S_OK(statistics) if result["OK"]: callback = [] result = dict(result["Value"]) keylist = result.keys() keylist.sort() if selector == "Site": tier1 = gConfig.getValue("/WebApp/PreferredSites", []) if len(tier1) > 0: tier1.sort() for i in tier1: if result.has_key(i): countryCode = i.rsplit(".", 1)[1] callback.append({ "key": i, "value": result[i], "code": countryCode, "color": paletteColor.getColor(countryCode) }) for key in keylist: if selector == "Site" and tier1: if key not in tier1: try: countryCode = key.rsplit(".", 1)[1] except: countryCode = "Unknown" callback.append({ "key": key, "value": result[key], "code": countryCode, "color": paletteColor.getColor(key) }) elif selector == "Site" and not tier1: try: countryCode = key.rsplit(".", 1)[1] except: countryCode = "Unknown" callback.append({ "key": key, "value": result[key], "code": countryCode, "color": paletteColor.getColor(key) }) else: callback.append({ "key": key, "value": result[key], "code": "", "color": paletteColor.getColor(key) }) callback = {"success": "true", "result": callback} else: callback = {"success": "false", "error": result["Message"]} self.finish(callback)