Skip to content
Snippets Groups Projects
Commit 571f579a authored by Erik Reid's avatar Erik Reid
Browse files

write data to redis hashes

parent afca2bcd
No related branches found
No related tags found
No related merge requests found
......@@ -25,7 +25,7 @@ def ssh_exec_commands_q(hostname, ssh_params, commands, q):
threading_logger.debug("[<<EXIT] exec_router_commands_q: %r" % hostname)
def get_router_details(router, params, q):
def get_router_details(router, params):
threading_logger = logging.getLogger(constants.THREADING_LOGGER_NAME)
......@@ -53,21 +53,26 @@ def get_router_details(router, params, q):
command_output = commands_proc_queue.get()
assert len(command_output) == len(commands)
result = {}
r = redis.StrictRedis(
host=params["redis"]["hostname"],
port=params["redis"]["port"])
for c, o in zip(commands, command_output):
if c["key"]:
result[c["key"]] = c["parser"](o)
r.hset(
name=router["hostname"],
key=c["key"],
value=json.dumps(c["parser"](o)))
commands_proc.join()
threading_logger.debug("... got commands result & joined: %r" % router)
threading_logger.debug("waiting for snmp ifc results: %r" % router)
result["snmp-interfaces"] = snmpifc_proc_queue.get()
r.hset(
name=router["hostname"],
key="snmp-interfaces",
value=json.dumps(snmpifc_proc_queue.get()))
snmpifc_proc.join()
threading_logger.debug("... got snmp ifc result & joined: %r" % router)
q.put(result)
threading_logger.debug("[<<EXIT]get_router_details: %r" % router)
......@@ -77,21 +82,14 @@ def load_network_details(params):
processes = []
for r in params["routers"]:
q = Queue()
p = Process(target=get_router_details, args=(r, params, q))
p = Process(target=get_router_details, args=(r, params))
p.start()
processes.append({"router": r, "process": p, "queue": q})
r = redis.StrictRedis(
host=params["redis"]["hostname"],
port=params["redis"]["port"])
processes.append({"router": r, "process": p})
result = {}
for p in processes:
threading_logger.debug(
"waiting for get_router_details result: %r" % p["router"])
r.set(p["router"]["hostname"], json.dumps(p["queue"].get()))
p["process"].join()
threading_logger.debug(
"got result and joined get_router_details proc: %r" % p["router"])
......@@ -117,7 +115,15 @@ def cli(params):
r = redis.StrictRedis(
host=params["redis"]["hostname"],
port=params["redis"]["port"])
result = dict([(k.decode("utf-8"), json.loads(r.get(k))) for k in r.keys()])
result = {}
for hostname in r.keys():
host = {}
for key in r.hkeys(name=hostname):
host[key.decode("utf-8")] = json.loads(
r.hget(hostname, key).decode("utf-8")
)
result[hostname.decode("utf-8")] = host
filename = "/tmp/router-info.json"
logging.debug("writing output to: " + filename)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment