diff options
author | Thomas Mangin <thomas.mangin@exa.net.uk> | 2020-04-14 09:43:19 +0100 |
---|---|---|
committer | Thomas Mangin <thomas.mangin@exa.net.uk> | 2020-04-14 12:04:39 +0100 |
commit | fdfd050431f786f9c9b7bfdcb51b5e8aca3f79f5 (patch) | |
tree | a4f559e957a122f49b2574a4e4098cc3eb9ed503 /src/op_mode | |
parent | 9389f3e1d7ee754fd654b4d6b88338754dab452f (diff) | |
download | vyos-1x-fdfd050431f786f9c9b7bfdcb51b5e8aca3f79f5.tar.gz vyos-1x-fdfd050431f786f9c9b7bfdcb51b5e8aca3f79f5.zip |
vrrp: T2223: move VRRP within ifconfig
Tidied up the code and moved it under VRRP in view to use
with show-interface (which has VRRP filtering)
No change in functionality
Diffstat (limited to 'src/op_mode')
-rwxr-xr-x | src/op_mode/vrrp.py | 87 |
1 files changed, 7 insertions, 80 deletions
diff --git a/src/op_mode/vrrp.py b/src/op_mode/vrrp.py index 8a993f92c..923cfa4d4 100755 --- a/src/op_mode/vrrp.py +++ b/src/op_mode/vrrp.py @@ -24,81 +24,8 @@ import tabulate import vyos.keepalived import vyos.util -config_dict_path = '/run/keepalived_config.dict' - - -# get disabled instances from a config -def vrrp_get_disabled(): - # read the dictionary file with configuration - with open(config_dict_path, 'r') as dict_file: - vrrp_config_dict = json.load(dict_file) - vrrp_disabled = [] - # add disabled groups to the list - for vrrp_group in vrrp_config_dict['vrrp_groups']: - if vrrp_group['disable']: - vrrp_disabled.append([vrrp_group['name'], vrrp_group['interface'], vrrp_group['vrid'], 'DISABLED', '']) - # return list with disabled instances - return vrrp_disabled - - -def print_summary(): - try: - vyos.keepalived.force_json_dump() - # Wait for keepalived to produce the data - # Replace with inotify or similar if it proves problematic - time.sleep(0.2) - json_data = vyos.keepalived.get_json_data() - vyos.keepalived.remove_vrrp_data("json") - except: - print("VRRP information is not available") - sys.exit(1) - - groups = [] - for group in json_data: - data = group["data"] - - name = data["iname"] - - ltrans_timestamp = float(data["last_transition"]) - ltrans_time = vyos.util.seconds_to_human(int(time.time() - ltrans_timestamp)) - - interface = data["ifp_ifname"] - vrid = data["vrid"] - - state = vyos.keepalived.decode_state(data["state"]) - - row = [name, interface, vrid, state, ltrans_time] - groups.append(row) - - # add to the active list disabled instances - groups.extend(vrrp_get_disabled()) - headers = ["Name", "Interface", "VRID", "State", "Last Transition"] - output = tabulate.tabulate(groups, headers) - print(output) - - -def print_statistics(): - try: - vyos.keepalived.force_stats_dump() - time.sleep(0.2) - output = vyos.keepalived.get_statistics() - print(output) - vyos.keepalived.remove_vrrp_data("stats") - except: - print("VRRP statistics are not available") - sys.exit(1) - - -def print_state_data(): - try: - vyos.keepalived.force_state_data_dump() - time.sleep(0.2) - output = vyos.keepalived.get_state_data() - print(output) - vyos.keepalived.remove_vrrp_data("state") - except: - print("VRRP information is not available") - sys.exit(1) +from vyos.ifconfig.vrrp import VRRP +from vyos.ifconfig.vrrp import VRRPError parser = argparse.ArgumentParser() @@ -110,16 +37,16 @@ group.add_argument("-d", "--data", action="store_true", help="Print detailed VRR args = parser.parse_args() # Exit early if VRRP is dead or not configured -if not vyos.keepalived.vrrp_running(): - print("VRRP is not running") +if not VRRP.is_running(): + print('VRRP is not running') sys.exit(0) if args.summary: - print_summary() + print(VRRP.format(VRRP.collect('json'))) elif args.statistics: - print_statistics() + print(VRRP.collect('stats')) elif args.data: - print_state_data() + print(VRRP.collect('state')) else: parser.print_help() sys.exit(1) |