From ed620ef7e8ba741e165698c558b110a31cc35dfd Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Fri, 8 Mar 2019 19:01:33 +0100 Subject: T1277: [dhcp-server] bugfix 'show dhcp server leases' The script did not check if the service was actually configured or not. This caused a FileNotFoundError for unconfigured services. vyos@vyos:~$ show dhcp server leases Traceback (most recent call last): File "/usr/libexec/vyos/op_mode/show_dhcp.py", line 123, in leases = get_leases(lease_file, state='active') File "/usr/libexec/vyos/op_mode/show_dhcp.py", line 60, in get_leases leases = IscDhcpLeases(lease_file).get() File "/usr/lib/python3/dist-packages/isc_dhcp_leases/iscdhcpleases.py", line 110, in get with open(self.filename) as lease_file: FileNotFoundError: [Errno 2] No such file or directory: '/config/dhcpd.leases' --- src/op_mode/show_dhcp.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/op_mode/show_dhcp.py b/src/op_mode/show_dhcp.py index 0005d62a3..4c4ee6355 100755 --- a/src/op_mode/show_dhcp.py +++ b/src/op_mode/show_dhcp.py @@ -18,14 +18,12 @@ import json import argparse import ipaddress - import tabulate +import sys -import vyos.config - +from vyos.config import Config from isc_dhcp_leases import Lease, IscDhcpLeases - lease_file = "/config/dhcpd.leases" pool_key = "shared-networkname" @@ -110,6 +108,12 @@ if __name__ == '__main__': args = parser.parse_args() + # Do nothing if service is not configured + config = Config() + if not config.exists_effective('service dhcp-server'): + print("DHCP service is not configured") + sys.exit(0) + if args.leases: if args.expired: if args.pool: @@ -127,8 +131,6 @@ if __name__ == '__main__': else: show_leases(leases) elif args.statistics: - config = vyos.config.Config() - pools = [] # Get relevant pools -- cgit v1.2.3