From 6accee0a7425509275f5e1957775b84b59e6e201 Mon Sep 17 00:00:00 2001 From: xuu Date: Fri, 10 Nov 2017 14:57:21 -0700 Subject: [PATCH] fix --- check-my-stuff | 11 +++++++++-- data/inet6num/fd42:5d71:217:ffff:ffff:ffff:467::_112 | 2 +- data/schema/SCHEMA-SCHEMA | 4 ++-- utils/schema-check/dn42-schema.py | 12 +++++++++++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/check-my-stuff b/check-my-stuff index 81b19bd0a..e0190ebb0 100755 --- a/check-my-stuff +++ b/check-my-stuff @@ -6,17 +6,24 @@ if [ $# -eq 0 ] exit fi +if [[ "$1" = "--all" ]] +then + MNT="" +else + MNT="-m $1" +fi + BASE="$(realpath "$0")" BASE="$(dirname "$BASE")" cd "$BASE" || exit 1 -utils/schema-check/dn42-schema.py -v scan data/ -m "$1" || ( echo "Schema validation failed, please check above!" ; exit 1 ) +utils/schema-check/dn42-schema.py -v scan data/ $MNT || ( echo "Schema validation failed, please check above!" ; exit 1 ) exit 0 git diff --cached --name-only | while IFS='/' read -ra LINE; do if [[ "${LINE[0]}" = "data" ]]; then - if ! utils/schema-check/dn42-schema.py policy ${LINE[1]} ${LINE[2]} $1; then + if ! utils/schema-check/dn42-schema.py policy ${LINE[1]} ${LINE[2]} $MNT; then echo "# This file fails policy checks. To continue with the commit revert the change." echo "# git reset HEAD -- " ${LINE[1]}/${LINE[1]}/${LINE[2]} echo "# git checkout -- " ${LINE[1]}/${LINE[1]}/${LINE[2]} diff --git a/data/inet6num/fd42:5d71:217:ffff:ffff:ffff:467::_112 b/data/inet6num/fd42:5d71:217:ffff:ffff:ffff:467::_112 index e5e04ceb9..71aee6b5c 100644 --- a/data/inet6num/fd42:5d71:217:ffff:ffff:ffff:467::_112 +++ b/data/inet6num/fd42:5d71:217:ffff:ffff:ffff:467::_112 @@ -4,4 +4,4 @@ admin-c: JRB0001-DN42 tech-c: JRB0001-DN42 mnt-by: JRB0001-MNT status: ASSIGNED -cidr: fd42:5d71:217:ffff:ffff:ffff:0467::/112 +cidr: fd42:5d71:217:ffff:ffff:ffff:467::/112 diff --git a/data/schema/SCHEMA-SCHEMA b/data/schema/SCHEMA-SCHEMA index aaf9c7913..27ab5ab37 100644 --- a/data/schema/SCHEMA-SCHEMA +++ b/data/schema/SCHEMA-SCHEMA @@ -1,7 +1,7 @@ schema: SCHEMA-SCHEMA ref: dn42.schema -key: schema required single schema > [name] -key: ref required single primary > [schema] +key: schema required single schema primary > [name] +key: ref required single > [schema] key: key required multiple > [key-name] {required|optional|recommend|deprecate} {one|many} {single|multi} {primary|} {schema|} diff --git a/utils/schema-check/dn42-schema.py b/utils/schema-check/dn42-schema.py index d67d01fb2..b1b620e0e 100755 --- a/utils/schema-check/dn42-schema.py +++ b/utils/schema-check/dn42-schema.py @@ -20,6 +20,8 @@ class SchemaDOM: schema = None name = None ref = None + primary = None + type = None def __init__(self, fn): self.src = fn @@ -39,6 +41,7 @@ class SchemaDOM: v = v.split() key = v.pop(0) + schema[key] = set() for i in v: if i == ">": @@ -47,7 +50,11 @@ class SchemaDOM: schema[key].add(i) for k, v in schema.items(): + if 'schema' in v: + self.type = k + if 'primary' in v: + self.primary = k schema[k].add("oneline") if "multiline" in v: schema[k].remove("multiline") @@ -71,7 +78,6 @@ class SchemaDOM: def check_file(self, f, lookups=None): status = "PASS" - for k, v in self.schema.items(): if 'required' in v and k not in f.keys: log.error( @@ -102,6 +108,10 @@ class SchemaDOM: status = "FAIL" for k, v, l in f.dom: + if k == self.primary and not f.src.endswith("/" + v.replace("/","_").replace(" ","")): + log.error("%s Line %d: Primary [%s: %s] does not match filename." % (f.src, l, k, v)) + status = "FAIL" + if k.startswith("x-"): log.info("%s Line %d: Key [%s] is user defined." % (f.src, l, k))