Skip to content
Snippets Groups Projects
Select Git revision
  • d4e26a23abc4e166b1beb5ce1e36e9d22067cd40
  • develop default protected
  • master protected
  • authorship-fix-from-develop
  • 1048-service-config-backfilling
  • feature/nat-1211-edgeport-lacp-xmit
  • fix/nat-1120-sdp-validation
  • NAT-1154-import-edge-port-update
  • fix/l3-imports
  • feature/10GGBS-NAT-980
  • fix/NAT-1009/fix-redeploy-base-config-if-there-is-a-vprn
  • 4.25
  • 4.24
  • 4.23
  • 4.22
  • 4.21
  • 4.20
  • 4.19
  • 4.18
  • 4.17
  • 4.16
  • 4.15
  • 4.14
  • 4.13
  • 4.12
  • 4.11
  • 4.10
  • 4.8
  • 4.5
  • 4.4
  • 4.3
31 results

index.rst

Blame
  • circuit_tree.py 1.67 KiB
    import os
    from operator import itemgetter
    
    import click
    from tree_format import format_tree
    
    from inventory_provider.db.ims import IMS, CIRCUIT_PROPERTIES
    
    username = 'TEST05'
    password = ''
    bt = os.getenv('IMS_BT')
    
    ds = IMS('http://83.97.94.128:2080/api', username, password, bt)
    
    NAV_PROPS = [
        CIRCUIT_PROPERTIES['Speed'],
        CIRCUIT_PROPERTIES['Product']
    ]
    
    
    @click.command()
    @click.option('-c', 'carriers', is_flag=True)
    @click.argument('root_circuit_id', type=click.INT, required=True)
    def cli(carriers, root_circuit_id):
        if carriers:
            children_prop = 'carriercircuits'
            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):
    
            circuit = ds.get_entity_by_id(
                'circuit', circuit_id, navigation_properties=NAV_PROPS)
            _tree = [
                f'{circuit["id"]} -- {circuit["name"]} -- '
                f'prod. {circuit["product"]["name"]} -- '
                f'spd. {circuit["speed"]["name"]}'
            ]
    
            if circuit[children_prop]:
    
                children = []
                for child_circuit in circuit[children_prop]:
                    children.append(_get_childcircuit_tree(
                        child_circuit[childid]
                    ))
                _tree.append(children)
            else:
                _tree.append([])
            return _tree
        tree = _get_childcircuit_tree(root_circuit_id)
        print(format_tree(
            tree, format_node=itemgetter(0), get_children=itemgetter(1))
        )
    
    
    if __name__ == '__main__':
        # 659386
        cli()