def getPlotListAndSelectionValues(self): result = {} try: typeName = str(request.params['typeName']) except: return S_ERROR("Missing or invalid type name!") retVal = self.__getUniqueKeyValues(typeName) if not retVal['OK'] and 'rpcStub' in retVal: del (retVal['rpcStub']) return retVal selectionValues = retVal['Value'] data = AccountingplotsController.__keysCache.get("reportsList:%s" % typeName) if not data: repClient = ReportsClient( rpcClient=getRPCClient("Accounting/ReportGenerator")) retVal = repClient.listReports(typeName) if not retVal['OK']: return retVal data = simplejson.dumps(retVal['Value']) AccountingplotsController.__keysCache.add( "reportsList:%s" % typeName, 300, data) try: plotsList = eval(data) except: return S_ERROR('Failed to convert a string to a list!') return S_OK({'SelectionData': selectionValues, 'PlotList': plotsList})
def web_getSelectionData(self): callback = {} typeName = self.request.arguments["type"][0] #Get unique key values retVal = self.__getUniqueKeyValues(typeName) if not retVal['OK']: self.write( json.dumps({ "success": "false", "result": "", "error": retVal['Message'] })) return callback["selectionValues"] = json.dumps(retVal['Value']) #Cache for plotsList? data = AccountingPlotOldHandler.__keysCache.get("reportsList:%s" % typeName) if not data: repClient = ReportsClient( rpcClient=RPCClient("Accounting/ReportGenerator")) retVal = repClient.listReports(typeName) if not retVal['OK']: self.write( json.dumps({ "success": "false", "result": "", "error": retVal['Message'] })) return data = json.dumps(retVal['Value']) AccountingPlotOldHandler.__keysCache.add( "reportsList:%s" % typeName, 300, data) callback["plotsList"] = data self.write(json.dumps({"success": "true", "result": callback}))
def test_addAndRemoveStorageOccupancy(): # just inserting one record record = createStorageOccupancyAccountingRecord() record.setStartTime() record.setEndTime() res = gDataStoreClient.addRegister(record) assert res['OK'] res = gDataStoreClient.commit() assert res['OK'] rc = ReportsClient() res = rc.listReports('StorageOccupancy') assert res['OK'] res = rc.listUniqueKeyValues('StorageOccupancy') assert res['OK'] res = rc.getReport('StorageOccupancy', 'Free and Used Space', datetime.datetime.utcnow(), datetime.datetime.utcnow(), {}, 'StorageElement') assert res['OK'] # now removing that record res = gDataStoreClient.remove(record) assert res['OK']
def test_addAndRemoveDataOperation(): # just inserting one record record = createDataOperationAccountingRecord() record.setStartTime() record.setEndTime() res = gDataStoreClient.addRegister(record) assert res['OK'] res = gDataStoreClient.commit() assert res['OK'] rc = ReportsClient() res = rc.listReports('DataOperation') assert res['OK'] res = rc.listUniqueKeyValues('DataOperation') assert res['OK'] res = rc.getReport('DataOperation', 'Successful transfers', datetime.datetime.utcnow(), datetime.datetime.utcnow(), {}, 'Destination') assert res['OK'] # now removing that record res = gDataStoreClient.remove(record) assert res['OK']
def test_addAndRemove(): # just inserting one record record = createAccountingRecord() record.setStartTime() record.setEndTime() res = gDataStoreClient.addRegister(record) assert res['OK'] res = gDataStoreClient.commit() assert res['OK'] rc = ReportsClient() res = rc.listReports('DataOperation') assert res['OK'] res = rc.listUniqueKeyValues('DataOperation') assert res['OK'] res = rc.getReport('DataOperation', 'Successful transfers', datetime.datetime.utcnow(), datetime.datetime.utcnow(), {}, 'Destination') assert res['OK'] # now removing that record res = gDataStoreClient.remove(record) assert res['OK']
def __showPlotPage( self, typeName, templateFile ): #Get unique key values retVal = self.__getUniqueKeyValues( typeName ) if not retVal[ 'OK' ]: c.error = retVal[ 'Message' ] return render ( "/error.mako" ) c.selectionValues = simplejson.dumps( retVal[ 'Value' ] ) #Cache for plotsList? data = AcctController.__keysCache.get( "reportsList:%s" % typeName ) if not data: repClient = ReportsClient( rpcClient = getRPCClient( "Accounting/ReportGenerator" ) ) retVal = repClient.listReports( typeName ) if not retVal[ 'OK' ]: c.error = retVal[ 'Message' ] return render ( "/error.mako" ) data = simplejson.dumps( retVal[ 'Value' ] ) AcctController.__keysCache.add( "reportsList:%s" % typeName, 300, data ) c.plotsList = data return render ( templateFile )
def __showPlotPage( self, typeName, templateFile ): #Get unique key values retVal = self.__getUniqueKeyValues( typeName ) if not retVal[ 'OK' ]: c.error = retVal[ 'Message' ] return render ( "/error.mako" ) c.selectionValues = simplejson.dumps( retVal[ 'Value' ] ) #Cache for plotsList? data = AccountingplotsController.__keysCache.get( "reportsList:%s" % typeName ) if not data: repClient = ReportsClient( rpcClient = getRPCClient( "Accounting/ReportGenerator" ) ) retVal = repClient.listReports( typeName ) if not retVal[ 'OK' ]: c.error = retVal[ 'Message' ] return render ( "/error.mako" ) data = simplejson.dumps( retVal[ 'Value' ] ) AccountingplotsController.__keysCache.add( "reportsList:%s" % typeName, 300, data ) c.plotsList = data return render ( templateFile )
def web_getSelectionData(self): callback = {} typeName = self.request.arguments["type"][0] #Get unique key values retVal = self.__getUniqueKeyValues( typeName ) if not retVal[ 'OK' ]: self.write(json.dumps({"success":"false", "result":"", "error":retVal[ 'Message' ]})) return callback["selectionValues"] = simplejson.dumps( retVal[ 'Value' ] ) #Cache for plotsList? data = AccountingPlotHandler.__keysCache.get( "reportsList:%s" % typeName ) if not data: repClient = ReportsClient( rpcClient = RPCClient( "Accounting/ReportGenerator" ) ) retVal = repClient.listReports( typeName ) if not retVal[ 'OK' ]: self.write(json.dumps({"success":"false", "result":"", "error":retVal[ 'Message' ]})) return data = simplejson.dumps( retVal[ 'Value' ] ) AccountingPlotHandler.__keysCache.add( "reportsList:%s" % typeName, 300, data ) callback["plotsList"] = data self.write(json.dumps({"success":"true", "result":callback}))
def __getPlotSrc(self,name,time,type): rc = ReportsClient() time = str(time) now = datetime.datetime.utcnow() if time == 'day': timeSpan = now - datetime.timedelta( seconds = 86400 ) elif time == 'week': timeSpan = now - datetime.timedelta( seconds = 86400 * 7 ) elif time == 'month': timeSpan = now - datetime.timedelta( seconds = 86400 * 30 ) elif time == 'year': timeSpan = now - datetime.timedelta( seconds = 86400 * 360 ) else: timeSpan = now - datetime.timedelta( seconds = 86400 * 7 ) if len(name) < 1: c.result = {"success":"false","error":"Recived empty value"} else: result = rc.listReports("Job") if result["OK"]: plots = result["Value"] if type == 'jobsBySite': result = rc.generatePlot("Job",plots[8],timeSpan,now,{"Site":name},"Site") elif type == 'jobCPUbySite': result = rc.generatePlot("Job",plots[0],timeSpan,now,{"Site":name},"Site") elif type == 'CPUUsedBySite': result = rc.generatePlot("Job",plots[2],timeSpan,now,{"Site":name},"Site") else: result = rc.generatePlot("Job",plots[8],timeSpan,now,{"Site":name},"Site") if result["OK"]: result = result["Value"] result = result["plot"] gLogger.info("result:",result) c.result = {"success":"true","result":result} else: c.result = {"success":"false","error":result["Message"]} else: c.result = {"success":"false","error":result["Message"]} gLogger.info("getPlotSrc:",c.result) return c.result
def getPlotListAndSelectionValues(self): result = {} try: typeName = str( request.params[ 'typeName' ] ) except: return S_ERROR( "Missing or invalid type name!" ) retVal = self.__getUniqueKeyValues( typeName ) if not retVal[ 'OK' ] and 'rpcStub' in retVal: del( retVal[ 'rpcStub' ] ) return retVal selectionValues = retVal['Value'] data = AcctController.__keysCache.get( "reportsList:%s" % typeName ) if not data: repClient = ReportsClient( rpcClient = getRPCClient( "Accounting/ReportGenerator" ) ) retVal = repClient.listReports( typeName ) if not retVal[ 'OK' ]: return retVal data = simplejson.dumps( retVal[ 'Value' ] ) AcctController.__keysCache.add( "reportsList:%s" % typeName, 300, data ) try: plotsList = eval(data) except: return S_ERROR('Failed to convert a string to a list!') return S_OK({'SelectionData':selectionValues, 'PlotList':plotsList})
def __getPlotSrc(self,type,args,timeToSet,img): rc = ReportsClient() type = str(type) args = str(args) name = type + args if args == "All": args = {} else: args = args.split(",") args = {"Site":args} time = str(timeToSet) now = datetime.datetime.utcnow() if timeToSet == 'day': timeSpan = now - datetime.timedelta( seconds = 86400 ) elif timeToSet == 'week': timeSpan = now - datetime.timedelta( seconds = 86400 * 7 ) elif timeToSet == 'month': timeSpan = now - datetime.timedelta( seconds = 86400 * 30 ) elif timeToSet == 'year': timeSpan = now - datetime.timedelta( seconds = 86400 * 360 ) else: timeSpan = now - datetime.timedelta( seconds = 86400 * 7 ) if len(name) < 1: c.result = {"success":"false","error":"Recived empty value"} else: result = self.__imgCache.get(name) if not result: result = rc.listReports("Job") if result["OK"]: plots = result["Value"] if type == 'jobsBySite': if img == 'True': result = rc.generatePlot("Job",plots[8],timeSpan,now,args,"Site") else: result = rc.generatePlot("Job",plots[8],timeSpan,now,args,"Site",{'thumbnail':True,'widh':800,'height':600,'thb_width':190,'thb_height':125}) elif type == 'jobCPUbySite': if img == 'True': result = rc.generatePlot("Job",plots[0],timeSpan,now,args,"Site") else: result = rc.generatePlot("Job",plots[0],timeSpan,now,args,"Site",{'thumbnail':True,'widh':800,'height':600,'thb_width':196,'thb_height':125}) elif type == 'CPUUsedBySite': if img == 'True': result = rc.generatePlot("Job",plots[2],timeSpan,now,args,"Site") else: result = rc.generatePlot("Job",plots[2],timeSpan,now,args,"Site",{'thumbnail':True,'widh':800,'height':600,'thb_width':196,'thb_height':125}) else: if img == 'True': result = rc.generatePlot("Job",plots[8],timeSpan,now,args,"Site") else: result = rc.generatePlot("Job",plots[8],timeSpan,now,{},"Site",{'thumbnail':True,'widh':800,'height':600,'thb_width':196,'thb_height':125}) gLogger.info("-RES:",result) if result["OK"]: result = result["Value"] if img == 'True': result = result["plot"] else: result = result["thumbnail"] c.result = {"success":"true","result":result} self.__imgCache.add(name, 600, result) else: c.result = {"success":"false","error":result["Message"]} else: c.result = {"success":"false","error":result["Message"]} else: c.result = {"success":"true","result":result} gLogger.info("getPlotSrc:",c.result) return c.result