Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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)