Skip to content
Snippets Groups Projects
Commit c6ee20a1 authored by Robert Latta's avatar Robert Latta
Browse files

added tree from local redis

parent 61882cb3
No related branches found
No related tags found
No related merge requests found
import json
import os import os
from operator import itemgetter from operator import itemgetter
import click import click
import redis
from tree_format import format_tree from tree_format import format_tree
from inventory_provider.db.ims import IMS, CIRCUIT_PROPERTIES from inventory_provider.db.ims import IMS, CIRCUIT_PROPERTIES, InventoryStatus
username = 'TEST05' username = 'TEST05'
password = '' password = ''
...@@ -20,25 +22,33 @@ NAV_PROPS = [ ...@@ -20,25 +22,33 @@ NAV_PROPS = [
@click.command() @click.command()
@click.option('-c', 'carriers', is_flag=True) @click.option('-c', 'carriers', is_flag=True)
@click.option('-l', 'local', is_flag=True)
@click.argument('root_circuit_id', type=click.INT, required=True) @click.argument('root_circuit_id', type=click.INT, required=True)
def cli(carriers, root_circuit_id): def cli(carriers, local, root_circuit_id):
if carriers: if local:
children_prop = 'carriercircuits' if carriers:
childid = 'carriercircuitid' children_prop = 'carrier-circuits'
NAV_PROPS.append(CIRCUIT_PROPERTIES['CarrierCircuits']) else:
children_prop = 'sub-circuits'
else: else:
children_prop = 'subcircuits' if carriers:
childid = 'subcircuitid' children_prop = 'carriercircuits'
NAV_PROPS.append(CIRCUIT_PROPERTIES['SubCircuits']) childid = 'carriercircuitid'
NAV_PROPS.append(CIRCUIT_PROPERTIES['CarrierCircuits'])
else:
children_prop = 'subcircuits'
childid = 'subcircuitid'
NAV_PROPS.append(CIRCUIT_PROPERTIES['SubCircuits'])
def _get_childcircuit_tree(circuit_id): def _get_childcircuit_tree(circuit_id):
circuit = ds.get_entity_by_id( circuit = ds.get_entity_by_id(
'circuit', circuit_id, navigation_properties=NAV_PROPS) 'circuit', circuit_id, navigation_properties=NAV_PROPS)
# print(circuit["id"])
_tree = [ _tree = [
f'{circuit["id"]} -- {circuit["name"]} -- ' f'{circuit["id"]} -- {circuit["name"]} -- '
f'prod. {circuit["product"]["name"]} -- ' f'prod: {circuit["product"]["name"]} -- '
f'spd. {circuit["speed"]["name"]}' f'spd: {circuit["speed"]["name"]} -- '
f'status: {InventoryStatus(circuit["inventorystatusid"]).name}'
] ]
if circuit[children_prop]: if circuit[children_prop]:
...@@ -52,7 +62,40 @@ def cli(carriers, root_circuit_id): ...@@ -52,7 +62,40 @@ def cli(carriers, root_circuit_id):
else: else:
_tree.append([]) _tree.append([])
return _tree return _tree
tree = _get_childcircuit_tree(root_circuit_id)
def _get_childcircuit_tree_local(circuit_id, r):
circuit = r.get(f'ims:circuit_hierarchy:{circuit_id}')
if not circuit:
return None
circuit = json.loads(circuit)[0]
_tree = [
f'{circuit["id"]} -- {circuit["name"]} -- '
f'prod: {circuit["product"]} -- '
f'spd: {circuit["speed"]} -- '
f'status: {circuit["status"]}'
]
if circuit.get(children_prop, None):
children = []
for child_id in circuit[children_prop]:
v = _get_childcircuit_tree_local(child_id, r)
if v:
children.append(v)
_tree.append(children)
else:
_tree.append([])
return _tree
if local:
tree = _get_childcircuit_tree_local(
root_circuit_id,
redis.StrictRedis(
host='localhost', db=0, decode_responses=True,
encoding='utf-8')
)
else:
tree = _get_childcircuit_tree(root_circuit_id)
print(format_tree( print(format_tree(
tree, format_node=itemgetter(0), get_children=itemgetter(1)) tree, format_node=itemgetter(0), get_children=itemgetter(1))
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment