Open gurretp opened 1 year ago
I experience the same problem. The import error is happening in pysaml2
library used by django3_auth_saml2
There is an issue for it: https://github.com/IdentityPython/pysaml2/issues/917. path
function was clearly removed from importlib_resources
v6.0
The workaround mentioned in the linked issue works for me. I put importlib-resources==5.13.0
into my plugin_requirements.txt
(for now).
I guess you meant to put importlib-resources==5.13.0
in the local_requirements.txt
of /opt/netbox
Make sure it is before the django3-auth-saml2
and netbox-plugin-auth-saml2
lines
@PieterL75 You are correct about the order of configurations lines. I probably chose a different filename to use in Dockerfile-Plugins
.
Up-to-date version of pysaml2
library does not suffer from this problem. The culprit is django3-auth-saml2
defining an explicit version requirement for pysaml2.
And there is actually a PR for this https://github.com/jeremyschulman/django3-auth-saml2/pull/17
@MichalMMac, all - Thank you. I will update the other package today. I appreciate the heads up and your patience.
Just hit this but thankfully the workaround works. Are you able to create a new release tag to include the fix?
@OliElli - are you referring to this release that was tagged v0.6.1? https://github.com/jeremyschulman/django3-auth-saml2/releases/tag/v0.6.1
~Ah no, I was expecting a bump in the release tag for this project, should I instead separately tag the version of django-auth-saml2?~
Oops misunderstood, I'm already pinning this version so I'll update it. Thanks!
The new version of importlib-resources is not compatible with the plugin
step to reproduce: 1 install netbox and netbox-plugin-auth-saml2 2 pip install importlib-resources==6.0.0 3 run netbox manage script : ./manage.py migrate --noinput
the same configuration works fine with importlib-resources version 5.13.0
Expected Behavior ~/releases/netbox-3.5.6/netbox > ./manage.py migrate --noinput Operations to perform: Apply all migrations: admin, auth, circuits, contenttypes, core, dcim, django_rq, extras, ipam, sessions, social_django, taggit, tenancy, users, virtualization, wireless Running migrations: No migrations to apply.
Observed Behavior
~/releases/netbox-3.5.6/netbox > ./manage.py migrate --noinput Traceback (most recent call last): File "./manage.py", line 10, in execute_from_command_line(sys.argv) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/management/init.py", line 446, in execute_from_command_line utility.execute() File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/management/init.py", line 440, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/management/base.py", line 402, in run_from_argv self.execute(*args, cmd_options) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/management/base.py", line 448, in execute output = self.handle(*args, *options) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/management/base.py", line 96, in wrapped res = handle_func(args, kwargs) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/management/commands/migrate.py", line 97, in handle self.check(databases=[database]) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/management/base.py", line 475, in check all_issues = checks.run_checks( File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/checks/registry.py", line 88, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/checks/urls.py", line 14, in check_url_config return check_resolver(resolver) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/core/checks/urls.py", line 24, in check_resolver return check_method() File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/urls/resolvers.py", line 494, in check for pattern in self.url_patterns: File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/utils/functional.py", line 57, in get res = instance.dict[self.name] = self.func(instance) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/urls/resolvers.py", line 715, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/utils/functional.py", line 57, in get res = instance.dict[self.name] = self.func(instance) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/urls/resolvers.py", line 708, in urlconf_module return import_module(self.urlconf_name) File "/usr/lib64/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1014, in _gcd_import File "", line 991, in _find_and_load File "", line 975, in _find_and_load_unlocked File "", line 671, in _load_unlocked File "", line 843, in exec_module File "", line 219, in _call_with_frames_removed File "/srv/netbox/releases/netbox-3.5.6/netbox/netbox/urls.py", line 8, in from extras.plugins.urls import plugin_admin_patterns, plugin_patterns, plugin_api_patterns File "/srv/netbox/releases/netbox-3.5.6/netbox/extras/plugins/urls.py", line 38, in urlpatterns = import_string(f"{plugin_path}.api.urls.urlpatterns") File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/utils/module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/utils/module_loading.py", line 15, in cached_import module = import_module(module_path) File "/usr/lib64/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django3_saml2_nbplugin/api/urls.py", line 5, in path('', include('django3_auth_saml2.urls', namespace='django3_auth_saml2')), File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django/urls/conf.py", line 38, in include urlconf_module = import_module(urlconf_module) File "/usr/lib64/python3.8/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django3_auth_saml2/urls.py", line 3, in from . import views File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/django3_auth_saml2/views.py", line 20, in from saml2 import ( File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/saml2/entity.py", line 10, in from saml2.metadata import ENDPOINTS File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/saml2/metadata.py", line 2, in from saml2.algsupport import algorithm_support_in_metadata File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/saml2/algsupport.py", line 2, in from saml2.sigver import get_xmlsec_binary File "/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/saml2/sigver.py", line 16, in from importlib_resources import path as _resource_path ImportError: cannot import name 'path' from 'importlib_resources' (/srv/netbox/current/venv-py3/lib64/python3.8/site-packages/importlib_resources/init.py)