コード例 #1
0
 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})
コード例 #2
0
 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}))
コード例 #3
0
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']
コード例 #4
0
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']
コード例 #5
0
ファイル: Test_ReportsClient.py プロジェクト: DIRACGrid/DIRAC
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']
コード例 #6
0
ファイル: acct.py プロジェクト: atsareg/BESDIRAC
 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 )
コード例 #7
0
 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 )
コード例 #8
0
 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}))
コード例 #9
0
ファイル: Map.py プロジェクト: DIRACGrid/-obsolete-DIRACWeb
 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
コード例 #10
0
ファイル: acct.py プロジェクト: atsareg/BESDIRAC
 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})
コード例 #11
0
ファイル: JobMonitor.py プロジェクト: nikolalazovski/DIRACWeb
 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