Esempio n. 1
0
 def web_index(self):
     # Render base template
     data = SessionData().getData()
     self.render("root.tpl",
                 base_url=data["baseURL"],
                 _dev=Conf.devMode(),
                 ext_version=data['extVersion'])
Esempio n. 2
0
  def __getUniqueKeyValues( self, typeName ):
    sessionData = SessionData().getData()
    userGroup = sessionData["user"]["group"]
    if 'NormalUser' in CS.getPropertiesForGroup( userGroup ):
      cacheKey = ( sessionData["user"]["username"], userGroup, sessionData["setup"], typeName )
    else:
      cacheKey = ( userGroup, sessionData["setup"], typeName )
    data = AccountingPlotOldHandler.__keysCache.get( cacheKey )
    if not data:
      rpcClient = RPCClient( "Accounting/ReportGenerator" )
      retVal = rpcClient.listUniqueKeyValues( typeName )
      if 'rpcStub' in retVal:
        del( retVal[ 'rpcStub' ] )
      if not retVal[ 'OK' ]:
        return retVal

      #Site ordering based on TierLevel / alpha
      if 'Site' in retVal[ 'Value' ]:
        siteLevel = {}
        for siteName in retVal[ 'Value' ][ 'Site' ]:
          sitePrefix = siteName.split( "." )[0].strip()
          level = gConfig.getValue( "/Resources/Sites/%s/%s/MoUTierLevel" % ( sitePrefix, siteName ), 10 )
          if level not in siteLevel:
            siteLevel[ level ] = []
          siteLevel[ level ].append( siteName )
        orderedSites = []
        for level in sorted( siteLevel ):
          orderedSites.extend( sorted( siteLevel[ level ] ) )
        retVal[ 'Value' ][ 'Site' ] = orderedSites
      data = retVal
      AccountingPlotOldHandler.__keysCache.add( cacheKey, 300, data )
    return data
Esempio n. 3
0
 def __init__(self, *args, **kwargs):
     """
 Initialize the handler
 """
     super(WebHandler, self).__init__(*args, **kwargs)
     if not WebHandler.__log:
         WebHandler.__log = gLogger.getSubLogger(self.__class__.__name__)
     self.__credDict = {}
     self.__setup = Conf.setup()
     self.__processCredentials()
     self.__disetConfig.reset()
     self.__disetConfig.setDecorator(self.__disetBlockDecor)
     self.__disetDump = self.__disetConfig.dump()
     match = self.PATH_RE.match(self.request.path)
     self._pathResult = self.__checkPath(*match.groups())
     self.__sessionData = SessionData(self.__credDict, self.__setup)
Esempio n. 4
0
 def web_getConfigData(self):
     self.write(json.dumps(SessionData().getData()))
Esempio n. 5
0
    def __request(self):
        self.pageNumber = 0
        self.numberOfJobs = 25
        self.globalSort = [["JobID", "DESC"]]
        sData = SessionData().getData()
        req = {}
        group = sData["user"]["group"]
        user = sData["user"]["username"]

        if self.request.arguments.has_key("limit") and len(
                self.request.arguments["limit"][0]) > 0:
            self.numberOfJobs = int(self.request.arguments["limit"][0])
            if self.request.arguments.has_key("start") and len(
                    self.request.arguments["start"][0]) > 0:
                self.pageNumber = int(self.request.arguments["start"][0])
            else:
                self.pageNumber = 0

        if self.request.arguments.has_key("ids") and len(
                self.request.arguments["ids"][0]) > 0:
            req["JobID"] = []
            reqIds = str(self.request.arguments["ids"][0]).split(',')
            for i in reqIds:
                testI = i.split('-')
                if len(testI) == 2:
                    rangeID = range(int(testI[0].strip(' ')),
                                    int(testI[1].strip(' ')) + 1)
                    req["JobID"].extend(rangeID)
                else:
                    req["JobID"].append(i)
        #groupProperty = credentials.getProperties(group)
        result = gConfig.getOption("/Website/ListSeparator")
        if result["OK"]:
            separator = result["Value"]
        else:
            separator = ","

        if self.request.arguments.has_key("prod") and len(
                self.request.arguments["prod"][0]) > 0:
            if str(self.request.arguments["prod"][0]) != "":
                req["JobGroup"] = str(
                    self.request.arguments["prod"][0]).split(separator)

        if self.request.arguments.has_key("site") and len(
                self.request.arguments["site"][0]) > 0:
            if str(self.request.arguments["site"][0]) != "":
                req["Site"] = [
                    x.strip() for x in str(self.request.arguments["site"]
                                           [0]).split(separator)
                ]

        if self.request.arguments.has_key("status") and len(
                self.request.arguments["status"][0]) > 0:
            if str(self.request.arguments["status"][0]) != "":
                req["Status"] = str(
                    self.request.arguments["status"][0]).split(separator)

        if self.request.arguments.has_key("minorstat") and len(
                self.request.arguments["minorstat"][0]) > 0:
            if str(self.request.arguments["minorstat"][0]) != "":
                req["MinorStatus"] = str(
                    self.request.arguments["minorstat"][0]).split(separator)

        if self.request.arguments.has_key("app") and len(
                self.request.arguments["app"][0]) > 0:
            if str(self.request.arguments["app"][0]) != "":
                req["ApplicationStatus"] = str(
                    self.request.arguments["app"][0]).split(separator)

        if self.request.arguments.has_key("types") and len(
                self.request.arguments["types"][0]) > 0:
            if str(self.request.arguments["types"][0]) != "":
                req["JobType"] = str(
                    self.request.arguments["types"][0]).split(separator)

        if self.request.arguments.has_key("owner") and len(
                self.request.arguments["owner"][0]) > 0:
            if str(self.request.arguments["owner"][0]) != "":
                req["Owner"] = str(
                    self.request.arguments["owner"][0]).split(separator)

        if self.request.arguments.has_key("startDate") and len(
                self.request.arguments["startDate"][0]) > 0:
            if str(self.request.arguments["startDate"][0]) != "YYYY-mm-dd":
                if self.request.arguments.has_key("startTime") and len(
                        self.request.arguments["startTime"][0]) > 0:
                    req["FromDate"] = str(
                        self.request.arguments["startDate"][0] + " " +
                        self.request.arguments["startTime"][0])
                else:
                    req["FromDate"] = str(
                        self.request.arguments["startDate"][0])

        if self.request.arguments.has_key("endDate") and len(
                self.request.arguments["endDate"][0]) > 0:
            if str(self.request.arguments["endDate"][0]) != "YYYY-mm-dd":
                if self.request.arguments.has_key("endTime") and len(
                        self.request.arguments["endTime"][0]) > 0:
                    req["ToDate"] = str(self.request.arguments["endDate"][0] +
                                        " " +
                                        self.request.arguments["endTime"][0])
                else:
                    req["ToDate"] = str(self.request.arguments["endDate"][0])

        if self.request.arguments.has_key("date") and len(
                self.request.arguments["date"][0]) > 0:
            if str(self.request.arguments["date"][0]) != "YYYY-mm-dd":
                req["LastUpdate"] = str(self.request.arguments["date"][0])

        if self.request.arguments.has_key("sort") and len(
                self.request.arguments["sort"][0]) > 0:
            sortValue = self.request.arguments["sort"][0]
            #converting the string into a dictionary
            sortValue = ast.literal_eval(sortValue.strip("[]"))
            self.globalSort = [[sortValue["property"], sortValue["direction"]]]
        return req
Esempio n. 6
0
 def web_standalone(self):
     self.render("JobMonitor/standalone.tpl",
                 config_data=json.dumps(SessionData().getData()))
Esempio n. 7
0
    def web_getSelectionData(self):
        sData = SessionData().getData()
        callback = {}
        group = sData["user"]["group"]
        user = sData["user"]["username"]
        '''
    if len(self.request.arguments) > 0:
      tmp = {}
      for i in self.request.arguments:
        tmp[i] = str(self.request.arguments[i])
      callback["extra"] = tmp
      if callback["extra"].has_key("prod"):
        callback["extra"]["prod"] = callback["extra"]["prod"].zfill(8)
        if callback["extra"]["prod"] == "00000000":
          callback["extra"]["prod"] = ""
    '''
        if user == "Anonymous":
            callback["prod"] = [["Insufficient rights"]]
        else:
            #RPC = getRPCClient("WorkloadManagement/JobMonitoring")
            RPC = RPCClient("WorkloadManagement/JobMonitoring")
            result = RPC.getProductionIds()
            if result["OK"]:
                prod = []
                prods = result["Value"]
                if len(prods) > 0:
                    #prod.append([str("All")])
                    tmp = []
                    for keys in prods:
                        try:
                            id = str(int(keys)).zfill(8)
                        except:
                            id = str(keys)
                        tmp.append(str(id))
                    tmp.sort(reverse=True)
                    for i in tmp:
                        prod.append([str(i)])
                else:
                    prod = [["Nothing to display"]]
            else:
                #        gLogger.error("RPC.getProductionIds() return error: %s" % result["Message"])
                prod = [["Error happened on service side"]]
            callback["prod"] = prod


###
#RPC = getRPCClient("WorkloadManagement/JobMonitoring")
        RPC = RPCClient("WorkloadManagement/JobMonitoring")
        result = RPC.getSites()
        if result["OK"]:
            #tier1 = gConfig.getValue("/Website/PreferredSites",[]) # Always return a list
            site = []
            if len(result["Value"]) > 0:
                s = list(result["Value"])
                #site.append([str("All")])
                for i in s:
                    site.append([str(i)])
            else:
                site = [["Nothing to display"]]
        else:
            gLogger.error("RPC.getSites() return error: %s" %
                          result["Message"])
            site = [["Error happened on service side"]]
        callback["site"] = site
        ###
        result = RPC.getStates()
        if result["OK"]:
            stat = []
            if len(result["Value"]) > 0:
                #stat.append([str("All")])
                for i in result["Value"]:
                    stat.append([str(i)])
            else:
                stat = [["Nothing to display"]]
        else:
            gLogger.error("RPC.getStates() return error: %s" %
                          result["Message"])
            stat = [["Error happened on service side"]]
        callback["status"] = stat
        ###
        result = RPC.getMinorStates()
        if result["OK"]:
            stat = []
            if len(result["Value"]) > 0:
                #stat.append([str("All")])
                for i in result["Value"]:
                    i = i.replace(",", ";")
                    stat.append([i])
            else:
                stat = [["Nothing to display"]]
        else:
            gLogger.error("RPC.getMinorStates() return error: %s" %
                          result["Message"])
            stat = [["Error happened on service side"]]
        callback["minorstat"] = stat
        ###
        result = RPC.getApplicationStates()
        if result["OK"]:
            app = []
            if len(result["Value"]) > 0:
                #app.append([str("All")])
                for i in result["Value"]:
                    i = i.replace(",", ";")
                    app.append([i])
            else:
                app = [["Nothing to display"]]
        else:
            #      gLogger.error("RPC.getApplicationstates() return error: %s" % result["Message"])
            app = [["Error happened on service side"]]
        callback["app"] = app
        ###
        result = RPC.getJobTypes()
        if result["OK"]:
            types = []
            if len(result["Value"]) > 0:
                #types.append([str("All")])
                for i in result["Value"]:
                    i = i.replace(",", ";")
                    types.append([i])
            else:
                types = [["Nothing to display"]]
        else:
            #      gLogger.error("RPC.getJobTypes() return error: %s" % result["Message"])
            types = [["Error happened on service side"]]
        callback["types"] = types
        ###
        #groupProperty = credentials.getProperties(group)
        if user == "Anonymous":
            callback["owner"] = [["Insufficient rights"]]
        else:
            result = RPC.getOwners()
            if result["OK"]:
                owner = []
                if len(result["Value"]) > 0:
                    #owner.append([str("All")])
                    for i in result["Value"]:
                        owner.append([str(i)])
                else:
                    owner = [["Nothing to display"]]
            else:
                #        gLogger.error("RPC.getOwners() return error: %s" % result["Message"])
                owner = [["Error happened on service side"]]
            callback["owner"] = owner
        self.write(json.dumps(callback))