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 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) 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..f8861b2 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")