summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2025-08-08 14:34:13 -0500
committerJohn Estabrook <jestabro@vyos.io>2025-08-18 23:41:32 -0500
commit87f479bd88dc2f9692f57b1398e5ff90cbe7d8d1 (patch)
tree397ac4a3c8bc6388e6c8d4e14e9ce27fd4902024
parentb89730b5893712b8b000b0409c4ced690b201fe7 (diff)
downloadvyos-1x-87f479bd88dc2f9692f57b1398e5ff90cbe7d8d1.tar.gz
vyos-1x-87f479bd88dc2f9692f57b1398e5ff90cbe7d8d1.zip
T7718: add validate-config script
-rwxr-xr-xsrc/helpers/validate-config.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/helpers/validate-config.py b/src/helpers/validate-config.py
new file mode 100755
index 000000000..1c77d2240
--- /dev/null
+++ b/src/helpers/validate-config.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+#
+# Copyright VyOS maintainers and contributors <maintainers@vyos.io>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+import sys
+import argparse
+
+from vyos.configtree import ConfigTree
+from vyos.configtree import validate_tree_filter
+from vyos.component_version import add_system_version
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('config_file', help='config file to validate')
+parser.add_argument('--filtered-config', help='write valid subset of config file')
+
+args = parser.parse_args()
+
+config_file = args.config_file
+filtered_config = args.filtered_config
+
+with open(config_file) as f:
+ config_str = f.read()
+
+config_tree = ConfigTree(config_str)
+
+valid_tree, out = validate_tree_filter(config_tree)
+
+if filtered_config:
+ add_system_version(valid_tree.to_string(), filtered_config)
+
+if out:
+ print(out)
+
+sys.exit(int(bool(out)))