summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-10-21 21:02:23 +0200
committerGitHub <noreply@github.com>2025-10-21 21:02:23 +0200
commit9e1cb14a5eb1eedd1fce67732ad84f6528e30314 (patch)
tree9c21ef35446f1e94940a0f3a20d41e1bc1ad4bd5 /python
parent2de4e9df6382edbb4b2af6148ef267854fa7ebbf (diff)
parentf87b522967bb7e3354278628d5d6ef9356a87948 (diff)
downloadvyos-1x-9e1cb14a5eb1eedd1fce67732ad84f6528e30314.tar.gz
vyos-1x-9e1cb14a5eb1eedd1fce67732ad84f6528e30314.zip
Merge pull request #4792 from sarthurdev/kea_config
kea: T7925: Improve error handling, validate IPv6 PD prefix length
Diffstat (limited to 'python')
-rw-r--r--python/vyos/kea.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/python/vyos/kea.py b/python/vyos/kea.py
index 5ce6f47f1..f48cf293d 100644
--- a/python/vyos/kea.py
+++ b/python/vyos/kea.py
@@ -15,6 +15,7 @@
import json
import os
+import re
import socket
from datetime import datetime
@@ -25,7 +26,7 @@ from vyos.template import is_ipv6
from vyos.template import netmask_from_cidr
from vyos.utils.dict import dict_search_args
from vyos.utils.file import file_permissions
-from vyos.utils.process import run
+from vyos.utils.process import run, rc_cmd
kea4_options = {
'name_server': 'domain-name-servers',
@@ -86,6 +87,14 @@ def _find_list_of_dict_index(lst, key='ip', value=''):
idx = next((index for (index, d) in enumerate(lst) if d[key] == value), None)
return idx
+def kea_test_config(process: str, config_path: str) -> tuple[bool, str]:
+ result, output = rc_cmd(f'{process} -t {config_path}')
+
+ if result == 0:
+ return (True, None)
+
+ find = re.search(r'Error encountered:\s([^\n$]+)', output)
+ return (False, find[1] if find else None)
def kea_parse_options(config):
options = []