def api_dates_v2(nodeid): nodeid = nodeid.lower() dates = list_node_dates(version="2") try: return jsonify(sorted(dates[nodeid], reverse=True)) except KeyError: return "node not found", 404
def api_nodes(): version = request.args.get("version", "1") # if bAllNodes ('b' is for 'bool') is True, print all nodes, otherwise filter the active ones bAllNodes = request.args.get("all", "false").lower() == "true" logger.info("__ api_nodes() version = {}, bAllNodes = {}".format(version, str(bAllNodes))) db = get_mysql_db() all_nodes = {} # limit the output with a WHERE clause if bAllNodes is false whereClause = " " if bAllNodes else " WHERE opmode = 'active' " query = "SELECT node_id, hostname, project, description, reverse_ssh_port, name, location, last_updated FROM nodes {};".format( whereClause ) logger.debug(" query = " + query) mysql_nodes_result = db.query_all(query) for result in mysql_nodes_result: node_id, hostname, project, description, reverse_ssh_port, name, location, last_updated = result if not node_id: continue # cleanup formatting node_id = node_id.lower() all_nodes[node_id] = { "project": project, "description": description, "reverse_ssh_port": reverse_ssh_port, "name": name, "location": location, "last_updated": last_updated, } if bAllNodes: # WCC: commenting this out nodes_dict = list_node_dates() for node_id in nodes_dict.keys(): if not node_id in all_nodes: all_nodes[node_id] = {} # for node_id in all_nodes.keys(): # logger.debug("%s %s" % (node_id, type(node_id))) obj = {} obj["data"] = all_nodes return jsonify(obj)
def GET(self): #query = web.ctx.query #web.header('Content-type','text/plain') #web.header('Transfer-Encoding','chunked') db = get_mysql_db() all_nodes = {} mysql_nodes_result = db.query_all( "SELECT node_id,hostname,project,description,reverse_ssh_port FROM nodes;" ) for result in mysql_nodes_result: node_id, hostname, project, description, reverse_ssh_port = result if node_id: node_id = node_id.encode('ascii', 'replace').lower() else: node_id = 'unknown' if hostname: hostname = hostname.encode('ascii', 'replace') if description: description = description.encode('ascii', 'replace') logger.debug( 'got from mysql: %s %s %s %s %s' % (node_id, hostname, project, description, reverse_ssh_port)) all_nodes[node_id] = { 'hostname': hostname, 'project': project, 'description': description, 'reverse_ssh_port': reverse_ssh_port } nodes_dict = list_node_dates() # lower case for node_id in nodes_dict.keys(): if not node_id in all_nodes: all_nodes[node_id] = {} #for node_id in all_nodes.keys(): # logger.debug("%s %s" % (node_id, type(node_id))) obj = {} obj['data'] = all_nodes return json.dumps(obj, indent=4)
def GET(self): #query = web.ctx.query #web.header('Content-type','text/plain') #web.header('Transfer-Encoding','chunked') db = get_mysql_db() all_nodes = {} mysql_nodes_result = db.query_all("SELECT node_id,hostname,project,description,reverse_ssh_port FROM nodes;") for result in mysql_nodes_result: node_id, hostname, project, description, reverse_ssh_port = result if node_id: node_id = node_id.encode('ascii','replace').lower() else: node_id = 'unknown' if hostname: hostname = hostname.encode('ascii','replace') if description: description = description.encode('ascii','replace') logger.debug('got from mysql: %s %s %s %s %s' % (node_id, hostname, project, description, reverse_ssh_port)) all_nodes[node_id] = { 'hostname' : hostname, 'project' : project, 'description' : description , 'reverse_ssh_port' : reverse_ssh_port } nodes_dict = list_node_dates() # lower case for node_id in nodes_dict.keys(): if not node_id in all_nodes: all_nodes[node_id]={} #for node_id in all_nodes.keys(): # logger.debug("%s %s" % (node_id, type(node_id))) obj = {} obj['data'] = all_nodes return json.dumps(obj, indent=4)
def api_nodes(): logger.debug('GET api_nodes') #query = web.ctx.query #web.header('Content-type','text/plain') #web.header('Transfer-Encoding','chunked') db = get_mysql_db() all_nodes = {} mysql_nodes_result = db.query_all("SELECT node_id,hostname,project,description,reverse_ssh_port,name,location,last_updated FROM nodes;") for result in mysql_nodes_result: node_id, hostname, project, description, reverse_ssh_port, name, location, last_updated = result # these are strings if node_id: node_id = node_id.lower() else: node_id = 'unknown' logger.debug("reverse_ssh_port type: " + str(type(reverse_ssh_port))) logger.debug('got from mysql: %s %s %s %s %s %s %s %s' % (node_id, hostname, project, description, reverse_ssh_port, name, location, last_updated)) all_nodes[node_id] = { 'hostname' : hostname, 'project' : project, 'description' : description , 'reverse_ssh_port' : reverse_ssh_port , 'name' : name, 'location' : location, 'last_updated' : last_updated} nodes_dict = list_node_dates() # lower case for node_id in nodes_dict.keys(): if not node_id in all_nodes: all_nodes[node_id]={} #for node_id in all_nodes.keys(): # logger.debug("%s %s" % (node_id, type(node_id))) obj = {} obj['data'] = all_nodes return jsonify(obj)
def api_all_dates(): version = request.args.get('version', '1') sort_type = request.args.get('sort', 'desc').lower()[:3] logger.info("__ api_all_dates() version = {}".format(version)) nodes_dict = export.list_node_dates(version) bSortReverse = False if sort_type == 'asc' else True for node_id in sorted(nodes_dict): nodes_dict[node_id].sort(reverse=bSortReverse) obj = {} obj['data'] = nodes_dict return jsonify(obj)
def GET(self, node_id): node_id = node_id.lower() query = web.ctx.query nodes_dict = list_node_dates() if not node_id in nodes_dict: logger.debug("node_id not found in nodes_dict: " + node_id) raise web.notfound() dates = nodes_dict[node_id] logger.debug("dates: " + str(dates)) obj = {} obj['data'] = sorted(dates, reverse=True) return json.dumps(obj, indent=4)
def GET(self, node_id): node_id = node_id.lower() query = web.ctx.query nodes_dict = list_node_dates() if not node_id in nodes_dict: logger.debug("node_id not found in nodes_dict: " + node_id) raise web.notfound() dates = nodes_dict[node_id] logger.debug("dates: " + str(dates)) obj = {} obj['data'] = sorted(dates, reverse=True) return json.dumps(obj, indent=4)
def api_dates(node_id): logger.debug('GET api_dates') node_id = node_id.lower() nodes_dict = list_node_dates() if not node_id in nodes_dict: logger.debug("nodes_dict: " + json.dumps(nodes_dict)) raise InvalidUsage("node_id not found in nodes_dict: " + node_id, status_code=STATUS_Bad_Request ) dates = nodes_dict[node_id] logger.debug("dates: " + str(dates)) obj = {} obj['data'] = sorted(dates, reverse=True) return jsonify(obj)
def api_dates(node_id): node_id = node_id.lower() version = request.args.get("version", "1") logger.info("__ api_dates() version = {}".format(version)) nodes_dict = list_node_dates(version) if not node_id in nodes_dict: logger.debug("nodes_dict.keys(): " + ",".join([x for x in nodes_dict])) # logger.debug("nodes_dict: " + json.dumps(nodes_dict)) raise InvalidUsage("node_id not found in nodes_dict: " + node_id, status_code=STATUS_Bad_Request) dates = nodes_dict[node_id] logger.debug("dates: " + str(dates)) obj = {} obj["data"] = sorted(dates, reverse=True) return jsonify(obj)
def api_dates(node_id): node_id = node_id.lower() version = request.args.get('version', '1') logger.info("__ api_dates() version = {}".format(version)) nodes_dict = export.list_node_dates(version) if not node_id in nodes_dict: logger.debug("nodes_dict.keys(): " + ','.join([x for x in nodes_dict])) raise InvalidUsage("node_id not found in nodes_dict: " + node_id, status_code=STATUS_Bad_Request) dates = nodes_dict[node_id] logger.debug("dates: " + str(dates)) obj = {} obj['data'] = sorted(dates, reverse=True) return jsonify(obj)
def web_node_page(node_id): data = {} datesUnion = set() for version in export.dataset_versions: api_call = '%s1/nodes/%s/dates?version=%s' % (api_url, node_id, version) nodes_dict = export.list_node_dates(version) dates = {'data': nodes_dict.get(node_id, list())} data[version] = dates['data'] datesUnion.update(data[version]) # union of all dates datesUnionSorted = sorted(list(datesUnion), reverse=True) dateList = [] for date in datesUnionSorted: l = list() l.append(date) for version in export.dataset_versions: if date in data[version]: l.append( '<a href="/api/1/nodes/%s/export?date=%s&version=%s">download</a>' % (node_id, date, version)) else: l.append('') dateList.append(l) return render_template('node_data.html', node_id=node_id, web_host=web_host, api_call=api_call, api_url=api_url, dateList=dateList)
def WCC_web_node_page(node_id): logger.debug("GET WCC_web_node_page() node_id = {}".format(node_id)) versions = ["2", "2.1", "1"] data = {} datesUnion = set() listDebug = [] for version in versions: listDebug.append(" VERSION " + version + "<br>\n") api_call = "%s/api/1/nodes/%s/dates?version=%s" % (api_url, node_id, version) api_call_internal = "%s/api/1/nodes/%s/dates?version=%s" % (api_url_internal, node_id, version) logger.debug(" in WCC_web_node_page: api_call_internal = {}".format(api_call_internal)) if False: try: req = requests.get(api_url_internal) # , auth=('user', 'password') except Exception as e: msg = "Could not make request: %s", (str(e)) logger.error(msg) continue # raise internalerror(msg) if req.status_code != 200: msg = "status code: %d" % (req.status_code) logger.error(msg) continue # raise internalerror(msg) try: dates = req.json() except ValueError: logger.debug("Not json: " + str(req)) continue # raise internalerror("not found") if not "data" in dates: logger.debug("data field not found") continue # raise internalerror("not found") else: nodes_dict = list_node_dates(version) logger.debug("///////////// nodes_dict(version = {}) = {}".format(version, str(nodes_dict))) dates = {"data": nodes_dict.get(node_id, list())} data[version] = dates["data"] listDebug.append(" >>>>>>>>>VERSION " + version + " DATES: " + str(dates) + "<br>\n") datesUnion.update(data[version]) # union of all dates datesUnionSorted = sorted(list(datesUnion), reverse=True) dateDict = {} for date in datesUnionSorted: l = list() for version in versions: if date in data[version]: l.append(date) else: l.append("") dateDict[date] = l listDebug.append("<br><br>\n\n {}".format(str(dateDict))) logger.debug(" DEBUG: " + "\n".join(listDebug)) return "<br>\n".join(listDebug)