Exemplo n.º 1
0
  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 )
Exemplo n.º 2
0
    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)