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'])
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
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)
def web_getConfigData(self): self.write(json.dumps(SessionData().getData()))
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
def web_standalone(self): self.render("JobMonitor/standalone.tpl", config_data=json.dumps(SessionData().getData()))
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))