From a6700c7d3b75854c3b213b65951a51464cd073be Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Fri, 8 Mar 2019 18:54:57 +0100
Subject: T1277: [dhcpv6-server] bugfix 'show dhcpv6 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 dhcpv6 server leases
  Traceback (most recent call last):
    File "/usr/libexec/vyos/op_mode/show_dhcpv6.py", line 77, in <module>
      leases = get_leases(lease_file, state='active')
    File "/usr/libexec/vyos/op_mode/show_dhcpv6.py", line 46, 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/dhcpdv6.leases'
---
 src/op_mode/show_dhcpv6.py | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

(limited to 'src/op_mode')

diff --git a/src/op_mode/show_dhcpv6.py b/src/op_mode/show_dhcpv6.py
index 8879a45c5..bf73b92ea 100755
--- a/src/op_mode/show_dhcpv6.py
+++ b/src/op_mode/show_dhcpv6.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/dhcpdv6.leases"
 
 def get_lease_data(lease):
@@ -73,6 +71,12 @@ if __name__ == '__main__':
 
     args = parser.parse_args()
 
+    # Do nothing if service is not configured
+    c = Config()
+    if not c.exists_effective('service dhcpv6-server'):
+        print("DHCPv6 service is not configured")
+        sys.exit(0)
+
     if args.leases:
         leases = get_leases(lease_file, state='active')
         show_leases(leases)
-- 
cgit v1.2.3