コード例 #1
0
def replace_list(key, values):
    redis = get_redis()
    pipe = redis.pipeline()
    pipe.delete(key)
    for item in values:
        pipe.lpush(key, json.dumps(item))
    pipe.execute()
コード例 #2
0
ファイル: views.py プロジェクト: Yelp/occam
def activity(server=None, node=None):
    redis = get_redis()
    start = request.args.get('start', 0)
    end = request.args.get('end', 99)
    if not server and not node:
        history_key = make_key("_all", "history")
    else:
        history_key = make_key(server, node, "log")
    max_entry = redis.llen(history_key)

    entries_raw = redis.lrange(history_key, start, end)
    entries = map(json.loads, entries_raw)
    nodes = {}
    for server_name, _ in iterate_servers():
        server_entries = filter(lambda x: x['server'] == server_name, entries)
        server_node_refs = set(map(lambda x: x['node'], server_entries))
        server_nodes = dict((node, json.loads(redis.get(make_key(server_name, "nodes", node))))
                            for node in server_node_refs)
        nodes[server_name] = server_nodes
    return {
        "entries": entries,
        "nodes": nodes,
        "start": start,
        "end": end,
        "max_entry": max_entry
    }
コード例 #3
0
ファイル: views.py プロジェクト: Akshaysharma123/occam
def activity(server=None, node=None):
    redis = get_redis()
    start = request.args.get('start', 0)
    end = request.args.get('end', 99)
    if not server and not node:
        history_key = make_key("_all", "history")
    else:
        history_key = make_key(server, node, "log")
    max_entry = redis.llen(history_key)

    entries_raw = redis.lrange(history_key, start, end)
    entries = map(json.loads, entries_raw)
    nodes = {}
    for server_name, _ in iterate_servers():
        server_entries = filter(lambda x: x['server'] == server_name, entries)
        server_node_refs = set(map(lambda x: x['node'], server_entries))
        server_nodes = dict(
            (node, json.loads(redis.get(make_key(server_name, "nodes", node))))
            for node in server_node_refs)
        nodes[server_name] = server_nodes
    return {
        "entries": entries,
        "nodes": nodes,
        "start": start,
        "end": end,
        "max_entry": max_entry
    }
コード例 #4
0
ファイル: views.py プロジェクト: Yelp/occam
def collection_view(collection, server=None, item=None):
    redis = get_redis()
    items = {}
    for server_name, _ in iterate_servers():
        server_item_refs = json.loads(redis.get(make_key(server_name, collection)))
        server_item_names = map(lambda x: x['name'], server_item_refs)
        server_items = dict((server_item, json.loads(redis.get(make_key(server_name, collection, server_item))))
                            for server_item in server_item_names)
        items[server_name] = server_items

    result = {
        "items": items,
        "collection": collection
    }
    if server and item:
        result.update({"server": server, "selected": item})
    return result
コード例 #5
0
ファイル: views.py プロジェクト: Akshaysharma123/occam
def collection_view(collection, server=None, item=None):
    redis = get_redis()
    items = {}
    for server_name, _ in iterate_servers():
        server_item_refs = json.loads(
            redis.get(make_key(server_name, collection)))
        server_item_names = map(lambda x: x['name'], server_item_refs)
        server_items = dict(
            (server_item,
             json.loads(
                 redis.get(make_key(server_name, collection, server_item))))
            for server_item in server_item_names)
        items[server_name] = server_items

    result = {"items": items, "collection": collection}
    if server and item:
        result.update({"server": server, "selected": item})
    return result
コード例 #6
0
ファイル: collector.py プロジェクト: Yelp/occam
def assemble_history():
    redis = get_redis()
    # Do a refresh of all our node information
    for server_name, server_location in iterate_servers():
        collect_type_for_server(server_name, server_location, "nodes")
        server_history = get_history_for_server(server_name, server_location)
        history_key = make_key(server_name, "history")
        replace_list(history_key, server_history)

    entries = []
    for server_name, _ in iterate_servers():
        server_history_key = make_key(server_name, "history")
        server_entries_raw = redis.lrange(server_history_key, 0, -1)
        server_entries = map(json.loads, server_entries_raw)
        entries.extend(server_entries)

    time_getter = lambda x: x["entry"]["timestamp"]
    entries = sorted_by_time_element(entries, time_getter)
    replace_list(make_key("_all", "history"), entries)
コード例 #7
0
ファイル: collector.py プロジェクト: Akshaysharma123/occam
def assemble_history():
    redis = get_redis()
    # Do a refresh of all our node information
    for server_name, server_location in iterate_servers():
        collect_type_for_server(server_name, server_location, "nodes")
        server_history = get_history_for_server(server_name, server_location)
        history_key = make_key(server_name, "history")
        replace_list(history_key, server_history)

    entries = []
    for server_name, _ in iterate_servers():
        server_history_key = make_key(server_name, "history")
        server_entries_raw = redis.lrange(server_history_key, 0, -1)
        server_entries = map(json.loads, server_entries_raw)
        entries.extend(server_entries)

    time_getter = lambda x: x["entry"]["timestamp"]
    entries = sorted_by_time_element(entries, time_getter)
    replace_list(make_key("_all", "history"), entries)
コード例 #8
0
ファイル: collector.py プロジェクト: Yelp/occam
def get_history_for_server(server_name, server_location):
    redis = get_redis()
    client = RazorClient(server_location['hostname'], server_location['port'])
    nodes_key = make_key(server_name, "nodes")
    nodes = json.loads(redis.get(nodes_key))

    entries = []
    for node in nodes:
        node_name = node["name"]
        node_entries = client.nodes(node_name, "log")
        node_history_key = make_key(server_name, node_name, "log")
        for entry in node_entries:
            entries.append({
                "entry": entry,
                "node": node_name,
                "server": server_name,
            })
        replace_list(node_history_key, entries)

    time_getter = lambda x: x["entry"]["timestamp"]

    entries = sorted_by_time_element(entries, time_getter)
    return entries
コード例 #9
0
ファイル: collector.py プロジェクト: Akshaysharma123/occam
def get_history_for_server(server_name, server_location):
    redis = get_redis()
    client = RazorClient(server_location['hostname'], server_location['port'])
    nodes_key = make_key(server_name, "nodes")
    nodes = json.loads(redis.get(nodes_key))

    entries = []
    for node in nodes:
        node_name = node["name"]
        node_entries = client.nodes(node_name, "log")
        node_history_key = make_key(server_name, node_name, "log")
        for entry in node_entries:
            entries.append({
                "entry": entry,
                "node": node_name,
                "server": server_name,
            })
        replace_list(node_history_key, entries)

    time_getter = lambda x: x["entry"]["timestamp"]

    entries = sorted_by_time_element(entries, time_getter)
    return entries
コード例 #10
0
def put_json_data(key, value):
    redis = get_redis()
    redis.set(key, json.dumps(value))
コード例 #11
0
def get_servers():
    redis = get_redis()
    servers = json.loads(redis.get(OCCAM_SERVER_CONFIG_KEY))

    return servers.items()
コード例 #12
0
def iterate_servers():
    redis = get_redis()
    servers = json.loads(redis.get(OCCAM_SERVER_CONFIG_KEY))

    for server_name, server_location in servers.iteritems():
        yield server_name, server_location