From 25e644d0e22f90fae2e31f6a7f6f3f681231935f Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 8 Jul 2020 18:44:56 +0000 Subject: [PATCH] Added support for pulling yang modules from yangcatalog.org. - Legacy-Id: 18141 --- bin/daily | 3 +++ ietf/checks.py | 2 +- ietf/settings.py | 3 ++- ietf/submit/checkers.py | 4 +++- ietf/submit/tests.py | 6 ++++++ 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/bin/daily b/bin/daily index 10d59c698..9a441a032 100755 --- a/bin/daily +++ b/bin/daily @@ -32,6 +32,9 @@ $DTDIR/ietf/manage.py update_external_command_info # Hardcode the rsync target to avoid any unwanted deletes: rsync -avzq --delete rsync.ietf.org::iana/yang-parameters/ /a/www/ietf-ftp/yang/ianamod/ +# Get Yang models from Yangcatalog. +rsync -avzq rsync://yangcatalog.org:10873/yangdeps /a/www/ietf-ftp/yang/catalogmod/ + # Populate the yang repositories $DTDIR/ietf/manage.py populate_yang_model_dirs -v0 diff --git a/ietf/checks.py b/ietf/checks.py index 5e76035d7..0316855ff 100644 --- a/ietf/checks.py +++ b/ietf/checks.py @@ -152,7 +152,7 @@ def check_yang_model_directories(app_configs, **kwargs): return [] # errors = [] - for s in ("SUBMIT_YANG_RFC_MODEL_DIR", "SUBMIT_YANG_DRAFT_MODEL_DIR", "SUBMIT_YANG_IANA_MODEL_DIR", ): + for s in ("SUBMIT_YANG_RFC_MODEL_DIR", "SUBMIT_YANG_DRAFT_MODEL_DIR", "SUBMIT_YANG_IANA_MODEL_DIR", "SUBMIT_YANG_CATALOG_MODEL_DIR",): p = getattr(settings, s) if not os.path.exists(p): errors.append(checks.Critical( diff --git a/ietf/settings.py b/ietf/settings.py index c0b275b36..9250c38de 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -819,13 +819,14 @@ IDSUBMIT_DEFAULT_CUTOFF_WARNING_DAYS = datetime.timedelta(days=21) SUBMIT_YANG_RFC_MODEL_DIR = '/a/www/ietf-ftp/yang/rfcmod/' SUBMIT_YANG_DRAFT_MODEL_DIR = '/a/www/ietf-ftp/yang/draftmod/' SUBMIT_YANG_IANA_MODEL_DIR = '/a/www/ietf-ftp/yang/ianamod/' +SUBMIT_YANG_CATALOG_MODEL_DIR = '/a/www/ietf-ftp/yang/catalogmod/' IDSUBMIT_REPOSITORY_PATH = INTERNET_DRAFT_PATH IDSUBMIT_STAGING_PATH = '/a/www/www6s/staging/' IDSUBMIT_STAGING_URL = '//www.ietf.org/staging/' IDSUBMIT_IDNITS_BINARY = '/a/www/ietf-datatracker/scripts/idnits' SUBMIT_PYANG_COMMAND = 'pyang --verbose --ietf -p {libs} {model}' -SUBMIT_YANGLINT_COMMAND = 'yanglint --verbose -p {tmplib} -p {rfclib} -p {draftlib} -p {ianalib} {model} -i' +SUBMIT_YANGLINT_COMMAND = 'yanglint --verbose -p {tmplib} -p {rfclib} -p {draftlib} -p {ianalib} -p {cataloglib} {model} -i' SUBMIT_YANGLINT_COMMAND = '' # use the value above if you have yanglint installed SUBMIT_YANG_CATALOG_MODULEARG = "modules[]={module}" diff --git a/ietf/submit/checkers.py b/ietf/submit/checkers.py index 59db02f16..642ad820d 100644 --- a/ietf/submit/checkers.py +++ b/ietf/submit/checkers.py @@ -201,6 +201,7 @@ class DraftYangChecker(object): settings.SUBMIT_YANG_RFC_MODEL_DIR, settings.SUBMIT_YANG_DRAFT_MODEL_DIR, settings.SUBMIT_YANG_IANA_MODEL_DIR, + settings.SUBMIT_YANG_CATALOG_MODEL_DIR, ]) if os.path.exists(path): with io.open(path) as file: @@ -242,7 +243,8 @@ class DraftYangChecker(object): command = [ w for w in cmd_template.split() if not '=' in w ][0] cmd_version = VersionInfo.objects.get(command=command).version cmd = cmd_template.format(model=path, rfclib=settings.SUBMIT_YANG_RFC_MODEL_DIR, tmplib=workdir, - draftlib=settings.SUBMIT_YANG_DRAFT_MODEL_DIR, ianalib=settings.SUBMIT_YANG_IANA_MODEL_DIR, ) + draftlib=settings.SUBMIT_YANG_DRAFT_MODEL_DIR, ianalib=settings.SUBMIT_YANG_IANA_MODEL_DIR, + cataloglib=settings.SUBMIT_YANG_CATALOG_MODEL_DIR, ) code, out, err = pipe(cmd) out = out.decode('utf-8') err = err.decode('utf-8') diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 338eccef9..9e028d159 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -103,6 +103,10 @@ class SubmitTests(TestCase): self.yang_iana_model_dir = self.tempdir('yang-iana-model') settings.SUBMIT_YANG_IANA_MODEL_DIR = self.yang_iana_model_dir + self.saved_yang_catalog_model_dir = settings.SUBMIT_YANG_CATALOG_MODEL_DIR + self.yang_catalog_model_dir = self.tempdir('yang-catalog-model') + settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.yang_catalog_model_dir + # Submit views assume there is a "next" IETF to look for cutoff dates against MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=180)) @@ -113,6 +117,7 @@ class SubmitTests(TestCase): shutil.rmtree(self.yang_rfc_model_dir) shutil.rmtree(self.yang_draft_model_dir) shutil.rmtree(self.yang_iana_model_dir) + shutil.rmtree(self.yang_catalog_model_dir) settings.IDSUBMIT_STAGING_PATH = self.saved_idsubmit_staging_path settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path settings.IDSUBMIT_REPOSITORY_PATH = self.saved_idsubmit_repository_path @@ -120,6 +125,7 @@ class SubmitTests(TestCase): settings.SUBMIT_YANG_RFC_MODEL_DIR = self.saved_yang_rfc_model_dir settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.saved_yang_draft_model_dir settings.SUBMIT_YANG_IANA_MODEL_DIR = self.saved_yang_iana_model_dir + settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.saved_yang_catalog_model_dir def do_submission(self, name, rev, group=None, formats=["txt",], author=None):