From a098c3b0c1010c12e7e88424b587b1c7526619ba Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 22 Mar 2023 11:25:03 -0400 Subject: [PATCH] #11558: Introduce GIT_PATH configuration setting --- docs/configuration/system.md | 8 ++++++++ netbox/core/data_backends.py | 9 ++++++--- netbox/netbox/settings.py | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/configuration/system.md b/docs/configuration/system.md index 7061274f1..c9d1e0012 100644 --- a/docs/configuration/system.md +++ b/docs/configuration/system.md @@ -73,6 +73,14 @@ Determines if localization features are enabled or not. This should only be enab --- +## GIT_PATH + +Default: `git` + +The system path to the `git` executable, used by the synchronization backend for remote git repositories. + +--- + ## HTTP_PROXIES Default: None diff --git a/netbox/core/data_backends.py b/netbox/core/data_backends.py index 1160b87ef..96b8d7d4f 100644 --- a/netbox/core/data_backends.py +++ b/netbox/core/data_backends.py @@ -99,7 +99,7 @@ class GitBackend(DataBackend): url = self.url # Compile git arguments - args = ['git', 'clone', '--depth', '1'] + args = [settings.GIT_PATH, 'clone', '--depth', '1'] if branch := self.params.get('branch'): args.extend(['--branch', branch]) args.extend([url, local_path.name]) @@ -112,10 +112,13 @@ class GitBackend(DataBackend): logger.debug(f"Cloning git repo: {' '.join(args)}") try: subprocess.run(args, check=True, capture_output=True, env=env_vars) - except subprocess.CalledProcessError as e: + except FileNotFoundError as e: raise SyncError( - f"Fetching remote data failed: {e.stderr}" + f"Unable to fetch: git executable not found. Check that the git executable exists at the " + f"configured path: {settings.GIT_PATH}" ) + except subprocess.CalledProcessError as e: + raise SyncError(f"Fetching remote data failed: {e.stderr}") yield local_path.name diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 22849e6ba..906ff4cad 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -92,6 +92,7 @@ EMAIL = getattr(configuration, 'EMAIL', {}) EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', []) FIELD_CHOICES = getattr(configuration, 'FIELD_CHOICES', {}) FILE_UPLOAD_MAX_MEMORY_SIZE = getattr(configuration, 'FILE_UPLOAD_MAX_MEMORY_SIZE', 2621440) +GIT_PATH = getattr(configuration, 'GIT_PATH', 'git') HTTP_PROXIES = getattr(configuration, 'HTTP_PROXIES', None) INTERNAL_IPS = getattr(configuration, 'INTERNAL_IPS', ('127.0.0.1', '::1')) JINJA2_FILTERS = getattr(configuration, 'JINJA2_FILTERS', {})