From bee2eb77763fb6be9380a253721ac93b86b3fef3 Mon Sep 17 00:00:00 2001 From: David Mc Ken Date: Sun, 31 Oct 2021 17:54:46 -0400 Subject: [PATCH 1/4] Add branch support Set default branch name of 'master' in settings.py and then checkout the branch as appropriate. --- nb-dt-import.py | 9 +++++++-- settings.py | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/nb-dt-import.py b/nb-dt-import.py index f72815c..e7c96ca 100755 --- a/nb-dt-import.py +++ b/nb-dt-import.py @@ -13,11 +13,12 @@ import settings counter = Counter(added=0, updated=0, manufacturer=0) -def update_package(path: str): +def update_package(path: str, branch: str): try: repo = Repo(path) if repo.remotes.origin.url.endswith('.git'): repo.remotes.origin.pull() + repo.git.checkout(branch) print(f"Pulled Repo {repo.remotes.origin.url}") except exc.InvalidGitRepositoryError: pass @@ -387,12 +388,16 @@ def main(): VENDORS = settings.VENDORS REPO_URL = settings.REPO_URL + REPO_BRANCH = settings.REPO_BRANCH + parser = argparse.ArgumentParser(description='Import Netbox Device Types') parser.add_argument('--vendors', nargs='+', default=VENDORS, help="List of vendors to import eg. apc cisco") parser.add_argument('--url', '--git', default=REPO_URL, help="Git URL with valid Device Type YAML files") + parser.add_argument('--branch', default=REPO_BRANCH, + help="Git branch to use from repo") args = parser.parse_args() @@ -402,7 +407,7 @@ def main(): + f"updating {os.path.join(cwd, 'repo')}") update_package('./repo') else: - repo = Repo.clone_from(args.url, os.path.join(cwd, 'repo')) + repo = Repo.clone_from(args.url, os.path.join(cwd, 'repo'), branch=args.branch) print(f"Package Installed {repo.remotes.origin.url}") except exc.GitCommandError as error: print("Couldn't clone {} ({})".format(args.url, error)) diff --git a/settings.py b/settings.py index eb9ecb3..86487bf 100644 --- a/settings.py +++ b/settings.py @@ -3,6 +3,7 @@ from dotenv import load_dotenv load_dotenv() REPO_URL = os.getenv("REPO_URL") +REPO_BRANCH = os.getenv("REPO_BRANCH", 'master') NETBOX_URL = os.getenv("NETBOX_URL") NETBOX_TOKEN = os.getenv("NETBOX_TOKEN") IGNORE_SSL_ERRORS = (os.getenv("IGNORE_SSL_ERRORS", "False") == "True") From 46e71fdc6215a58e92a1eb7eb79a65be84f0c2b9 Mon Sep 17 00:00:00 2001 From: David Mc Ken Date: Sun, 31 Oct 2021 18:07:25 -0400 Subject: [PATCH 2/4] Update .env.example Added REPO_BRANCH default env variable. --- .env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/.env.example b/.env.example index 37a6f36..6fd00f6 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ NETBOX_URL= NETBOX_TOKEN= REPO_URL=https://github.com/netbox-community/devicetype-library.git +REPO_BRANCH=master IGNORE_SSL_ERRORS=False From c0fbe76247b55bf87ffc4d647919918d940f0e7f Mon Sep 17 00:00:00 2001 From: David Mc Ken Date: Sun, 31 Oct 2021 18:09:54 -0400 Subject: [PATCH 3/4] Update settings.py Fixed quotes to be consistent with the rest of settings.py --- settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.py b/settings.py index 86487bf..f8861b2 100644 --- a/settings.py +++ b/settings.py @@ -3,7 +3,7 @@ from dotenv import load_dotenv load_dotenv() REPO_URL = os.getenv("REPO_URL") -REPO_BRANCH = os.getenv("REPO_BRANCH", 'master') +REPO_BRANCH = os.getenv("REPO_BRANCH", "master") NETBOX_URL = os.getenv("NETBOX_URL") NETBOX_TOKEN = os.getenv("NETBOX_TOKEN") IGNORE_SSL_ERRORS = (os.getenv("IGNORE_SSL_ERRORS", "False") == "True") From 58be6126d6e7dd9a1731abb145a113de1ebfd47d Mon Sep 17 00:00:00 2001 From: David Mc Ken Date: Sun, 31 Oct 2021 18:14:09 -0400 Subject: [PATCH 4/4] Update README.md Added documentation for REPO_BRANCH environment variable. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 58315fd..390c1c8 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ docker build -t netbox-devicetype-import-library . The container supports the following env var as configuration : - `REPO_URL`, the repo to look for device types (defaults to _https://github.com/netbox-community/devicetype-library.git_) +- `REPO_BRANCH`, the branch to check out if appropriate, defaults to master. - `NETBOX_URL`, used to access netbox - `NETBOX_TOKEN`, token for accessing netbox - `VENDORS`, a space-separated list of vendors to import (defaults to None)