From cdf01487f26dd88196e202bd327f7a35845f8c00 Mon Sep 17 00:00:00 2001 From: Feng Pan Date: Fri, 5 Apr 2024 08:02:57 +0000 Subject: [PATCH] Add CLI for bmp configdb entity Get/Set. --- config/main.py | 160 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/config/main.py b/config/main.py index a068a1b7f4..8472b1fee6 100644 --- a/config/main.py +++ b/config/main.py @@ -3916,6 +3916,166 @@ def del_user(db, user): click.echo("Restart service snmp failed with error {}".format(e)) raise click.Abort() +# +# 'bmp' group ('config bmp ...') +# + +@config.group() +@click.pass_context +def bmp(ctx): + """BMP-related configuration""" + +# +# 'enable' subgroup ('config bmp enable ...') +# +@bmp.group() +@click.pass_context +def enable(ctx): + """Enable BMP table dump """ + +# +# 'bgp-neighbor-table' command ('config bmp enable bgp-neighbor-table') +# +@enable.command('bgp-neighbor-table') +@click.pass_context +def enable_bgp_neighbor_table(ctx): + """enable bgp-neighbor-table sessions + In the case of Multi-Asic platform, corresponding database instance of neighbor will be operated. + """ + log.log_info("'bmp enable bgp-neighbor-table' executing...") + config_db = ConfigDBConnector() + config_db.connect() + bmp_table = config_db.get_table('BMP') + if not bmp_table: + bmp_table = {'table': {'bgp_neighbor_table': 'true'}} + else: + bmp_table['table']['bgp_neighbor_table'] = 'true' + try: + config_db.mod_entry('BMP', 'table', bmp_table['table']) + except ValueError as e: + ctx.fail("Invalid ConfigDB. Error: {}".format(e)) + + + +# +# 'bgp-rib-out-table' command ('config bmp enable bgp-rib-out-table') +# +@enable.command('bgp-rib-out-table') +@click.pass_context +def enable_bgp_rib_out_table(ctx): + """enable bgp-rib-out-table sessions + In the case of Multi-Asic platform, corresponding database instance of neighbor will be operated. + """ + log.log_info("'bmp enable bgp-rib-out-table' executing...") + config_db = ConfigDBConnector() + config_db.connect() + bmp_table = config_db.get_table('BMP') + if not bmp_table: + bmp_table = {'table': {'bgp-rib-out-table': 'true'}} + else: + bmp_table['table']['bgp-rib-out-table'] = 'true' + try: + config_db.mod_entry('BMP', 'table', bmp_table['table']) + except ValueError as e: + ctx.fail("Invalid ConfigDB. Error: {}".format(e)) + +# +# 'bgp-rib-in-table' command ('config bmp enable bgp-rib-in-table') +# +@enable.command('bgp-rib-in-table') +@click.pass_context +def enable_bgp_rib_out_table(ctx): + """enable bgp-rib-in-table sessions + In the case of Multi-Asic platform, corresponding database instance of neighbor will be operated. + """ + log.log_info("'bmp enable bgp-rib-in-table' executing...") + config_db = ConfigDBConnector() + config_db.connect() + bmp_table = config_db.get_table('BMP') + if not bmp_table: + bmp_table = {'table': {'bgp-rib-in-table': 'true'}} + else: + bmp_table['table']['bgp-rib-in-table'] = 'true' + try: + config_db.mod_entry('BMP', 'table', bmp_table['table']) + except ValueError as e: + ctx.fail("Invalid ConfigDB. Error: {}".format(e)) + +# +# 'disable' subgroup ('config bmp disable ...') +# +@bmp.group() +@click.pass_context +def disable(ctx): + """Disable BMP table dump """ + +# +# 'bgp-neighbor-table' command ('config bmp disable bgp-neighbor-table') +# +@disable.command('bgp-neighbor-table') +@click.pass_context +def disable_bgp_neighbor_table(ctx): + """disable bgp-neighbor-table sessions + In the case of Multi-Asic platform, corresponding database instance of neighbor will be operated. + """ + log.log_info("'bmp disable bgp-neighbor-table' executing...") + config_db = ConfigDBConnector() + config_db.connect() + bmp_table = config_db.get_table('BMP') + if not bmp_table: + bmp_table = {'table': {'bgp-neighbor-table': 'false'}} + else: + bmp_table['table']['bgp-neighbor-table'] = 'false' + try: + config_db.mod_entry('BMP', 'table', bmp_table['table']) + except ValueError as e: + ctx.fail("Invalid ConfigDB. Error: {}".format(e)) + +# +# 'bgp-rib-out-table' command ('config bmp disable bgp-rib-out-table') +# +@enable.command('bgp-rib-out-table') +@click.pass_context +def diable_bgp_rib_out_table(ctx): + """disable bgp-rib-out-table sessions + In the case of Multi-Asic platform, corresponding database instance of neighbor will be operated. + """ + log.log_info("'bmp disable bgp-rib-out-table' executing...") + config_db = ConfigDBConnector() + config_db.connect() + bmp_table = config_db.get_table('BMP') + if not bmp_table: + bmp_table = {'table': {'bgp-rib-out-table': 'false'}} + else: + bmp_table['table']['bgp-rib-out-table'] = 'false' + try: + config_db.mod_entry('BMP', 'table', bmp_table['table']) + except ValueError as e: + ctx.fail("Invalid ConfigDB. Error: {}".format(e)) + + +# +# 'bgp-rib-in-table' command ('config bmp disable bgp-rib-in-table') +# +@enable.command('bgp-rib-in-table') +@click.pass_context +def disable_bgp_rib_out_table(ctx): + """disable bgp-rib-in-table sessions + In the case of Multi-Asic platform, corresponding database instance of neighbor will be operated. + """ + log.log_info("'bmp disable bgp-rib-in-table' executing...") + config_db = ConfigDBConnector() + config_db.connect() + bmp_table = config_db.get_table('BMP') + if not bmp_table: + bmp_table = {'table': {'bgp-rib-in-table': 'false'}} + else: + bmp_table['table']['bgp-rib-in-table'] = 'false' + try: + config_db.mod_entry('BMP', 'table', bmp_table['table']) + except ValueError as e: + ctx.fail("Invalid ConfigDB. Error: {}".format(e)) + # # 'bgp' group ('config bgp ...') #