summaryrefslogtreecommitdiff
path: root/src/op_mode/vrrp.py
diff options
context:
space:
mode:
authorThomas Mangin <thomas.mangin@exa.net.uk>2020-04-14 09:43:19 +0100
committerThomas Mangin <thomas.mangin@exa.net.uk>2020-04-14 12:04:39 +0100
commitfdfd050431f786f9c9b7bfdcb51b5e8aca3f79f5 (patch)
treea4f559e957a122f49b2574a4e4098cc3eb9ed503 /src/op_mode/vrrp.py
parent9389f3e1d7ee754fd654b4d6b88338754dab452f (diff)
downloadvyos-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/vrrp.py')
-rwxr-xr-xsrc/op_mode/vrrp.py87
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)