Paramiko 2.2.2 and 2.3.0 fail to import if gssapi is also installed #1319

Closed
opened 2025-12-29 16:31:25 +01:00 by adam · 1 comment
Owner

Originally created by @tuxmelv on GitHub (Oct 17, 2017).

Issue type

[ ] Feature request
[X] Bug report
[ ] Documentation

Environment

Python 2.7.12
NetBox version: v2.1.5 Upgrading to Release v2.2.1

Steps to Reproduce:

Install Netbox and a system that has FreeIPA client installed.

$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/paramiko/__init__.py", line 31, in <module>
    from paramiko.transport import SecurityOptions, Transport
  File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 38, in <module>
    from paramiko.auth_handler import AuthHandler
  File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 48, in <module>
    from paramiko.ssh_gss import GSSAuth, GSS_EXCEPTIONS
  File "/usr/local/lib/python2.7/dist-packages/paramiko/ssh_gss.py", line 54, in <module>
    GSS_EXCEPTIONS = (gssapi.GSSException,)
AttributeError: 'module' object has no attribute 'GSSException'
>>> exit()

The install works fine during pip package upgrades but errors out during manage.py migrate. It looks like this is due to the upgrade of python package paramiko to 2.3.1 and is referenced on Paramiko Bug 1069. The temporary workaround is to downgrade to paramiko==2.2.1 but I was unable to successfully run NetBox v2.2.1 using paramiko==2.2.1.

Relevant error:

Applying database migrations (python netbox/manage.py migrate)...
Traceback (most recent call last):
  File "netbox/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute
    django.setup()
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models()
  File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/opt/netbox/netbox/dcim/models.py", line 21, in <module>
    from extras.rpc import RPC_CLIENTS
  File "/opt/netbox/netbox/extras/rpc.py", line 5, in <module>
    from ncclient import manager
  File "/usr/local/lib/python2.7/dist-packages/ncclient/manager.py", line 22, in <module>
    from ncclient import operations
  File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/__init__.py", line 16, in <module>
    from ncclient.operations.rpc import RPC, RPCReply, RPCError, RaiseMode
  File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/rpc.py", line 20, in <module>
    from ncclient.transport import SessionListener
  File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/__init__.py", line 18, in <module>
    from ncclient.transport.ssh import SSHSession
  File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/ssh.py", line 26, in <module>
    import paramiko
  File "/usr/local/lib/python2.7/dist-packages/paramiko/__init__.py", line 31, in <module>
    from paramiko.transport import SecurityOptions, Transport
  File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 38, in <module>
    from paramiko.auth_handler import AuthHandler
  File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 48, in <module>
    from paramiko.ssh_gss import GSSAuth, GSS_EXCEPTIONS
  File "/usr/local/lib/python2.7/dist-packages/paramiko/ssh_gss.py", line 54, in <module>
    GSS_EXCEPTIONS = (gssapi.GSSException,)
AttributeError: 'module' object has no attribute 'GSSException'
Collecting static files (python netbox/manage.py collectstatic --no-input)...
Traceback (most recent call last):
  File "netbox/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute
    django.setup()
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models()
  File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/opt/netbox/netbox/dcim/models.py", line 21, in <module>
    from extras.rpc import RPC_CLIENTS
  File "/opt/netbox/netbox/extras/rpc.py", line 5, in <module>
    from ncclient import manager
  File "/usr/local/lib/python2.7/dist-packages/ncclient/manager.py", line 22, in <module>
    from ncclient import operations
  File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/__init__.py", line 16, in <module>
    from ncclient.operations.rpc import RPC, RPCReply, RPCError, RaiseMode
  File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/rpc.py", line 20, in <module>
    from ncclient.transport import SessionListener
  File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/__init__.py", line 18, in <module>
    from ncclient.transport.ssh import SSHSession
  File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/ssh.py", line 26, in <module>
    import paramiko
  File "/usr/local/lib/python2.7/dist-packages/paramiko/__init__.py", line 31, in <module>
    from paramiko.transport import SecurityOptions, Transport
  File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 38, in <module>
    from paramiko.auth_handler import AuthHandler
  File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 48, in <module>
    from paramiko.ssh_gss import GSSAuth, GSS_EXCEPTIONS
  File "/usr/local/lib/python2.7/dist-packages/paramiko/ssh_gss.py", line 54, in <module>
    GSS_EXCEPTIONS = (gssapi.GSSException,)
AttributeError: 'module' object has no attribute 'GSSException'
Originally created by @tuxmelv on GitHub (Oct 17, 2017). ### Issue type [ ] Feature request <!-- Requesting the implementation of a new feature --> [X] Bug report <!-- Reporting unexpected or erroneous behavior --> [ ] Documentation <!-- Proposing a modification to the documentation --> ### Environment Python 2.7.12 NetBox version: v2.1.5 Upgrading to Release v2.2.1 ### Steps to Reproduce: Install Netbox and a system that has FreeIPA client installed. ``` $ python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import paramiko Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/paramiko/__init__.py", line 31, in <module> from paramiko.transport import SecurityOptions, Transport File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 38, in <module> from paramiko.auth_handler import AuthHandler File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 48, in <module> from paramiko.ssh_gss import GSSAuth, GSS_EXCEPTIONS File "/usr/local/lib/python2.7/dist-packages/paramiko/ssh_gss.py", line 54, in <module> GSS_EXCEPTIONS = (gssapi.GSSException,) AttributeError: 'module' object has no attribute 'GSSException' >>> exit() ``` The install works fine during pip package upgrades but errors out during manage.py migrate. It looks like this is due to the upgrade of python package paramiko to 2.3.1 and is referenced on [Paramiko Bug 1069](https://github.com/paramiko/paramiko/issues/1069). The temporary workaround is to downgrade to paramiko==2.2.1 but I was unable to successfully run NetBox v2.2.1 using paramiko==2.2.1. ### Relevant error: ``` Applying database migrations (python netbox/manage.py migrate)... Traceback (most recent call last): File "netbox/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute django.setup() File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 27, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 108, in populate app_config.import_models() File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 202, in import_models self.models_module = import_module(models_module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/opt/netbox/netbox/dcim/models.py", line 21, in <module> from extras.rpc import RPC_CLIENTS File "/opt/netbox/netbox/extras/rpc.py", line 5, in <module> from ncclient import manager File "/usr/local/lib/python2.7/dist-packages/ncclient/manager.py", line 22, in <module> from ncclient import operations File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/__init__.py", line 16, in <module> from ncclient.operations.rpc import RPC, RPCReply, RPCError, RaiseMode File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/rpc.py", line 20, in <module> from ncclient.transport import SessionListener File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/__init__.py", line 18, in <module> from ncclient.transport.ssh import SSHSession File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/ssh.py", line 26, in <module> import paramiko File "/usr/local/lib/python2.7/dist-packages/paramiko/__init__.py", line 31, in <module> from paramiko.transport import SecurityOptions, Transport File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 38, in <module> from paramiko.auth_handler import AuthHandler File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 48, in <module> from paramiko.ssh_gss import GSSAuth, GSS_EXCEPTIONS File "/usr/local/lib/python2.7/dist-packages/paramiko/ssh_gss.py", line 54, in <module> GSS_EXCEPTIONS = (gssapi.GSSException,) AttributeError: 'module' object has no attribute 'GSSException' Collecting static files (python netbox/manage.py collectstatic --no-input)... Traceback (most recent call last): File "netbox/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute django.setup() File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 27, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 108, in populate app_config.import_models() File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 202, in import_models self.models_module = import_module(models_module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/opt/netbox/netbox/dcim/models.py", line 21, in <module> from extras.rpc import RPC_CLIENTS File "/opt/netbox/netbox/extras/rpc.py", line 5, in <module> from ncclient import manager File "/usr/local/lib/python2.7/dist-packages/ncclient/manager.py", line 22, in <module> from ncclient import operations File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/__init__.py", line 16, in <module> from ncclient.operations.rpc import RPC, RPCReply, RPCError, RaiseMode File "/usr/local/lib/python2.7/dist-packages/ncclient/operations/rpc.py", line 20, in <module> from ncclient.transport import SessionListener File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/__init__.py", line 18, in <module> from ncclient.transport.ssh import SSHSession File "/usr/local/lib/python2.7/dist-packages/ncclient/transport/ssh.py", line 26, in <module> import paramiko File "/usr/local/lib/python2.7/dist-packages/paramiko/__init__.py", line 31, in <module> from paramiko.transport import SecurityOptions, Transport File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 38, in <module> from paramiko.auth_handler import AuthHandler File "/usr/local/lib/python2.7/dist-packages/paramiko/auth_handler.py", line 48, in <module> from paramiko.ssh_gss import GSSAuth, GSS_EXCEPTIONS File "/usr/local/lib/python2.7/dist-packages/paramiko/ssh_gss.py", line 54, in <module> GSS_EXCEPTIONS = (gssapi.GSSException,) AttributeError: 'module' object has no attribute 'GSSException' ```
adam closed this issue 2025-12-29 16:31:25 +01:00
Author
Owner

@jeremystretch commented on GitHub (Oct 17, 2017):

I don't think this is something we can control, but thank you for documenting it. I'm hoping to rip out the legacy RPC stuff as soon as I can get inventory working via NAPALM, which should help avoid this kind of issue.

@jeremystretch commented on GitHub (Oct 17, 2017): I don't think this is something we can control, but thank you for documenting it. I'm hoping to rip out the legacy RPC stuff as soon as I can get inventory working via NAPALM, which should help avoid this kind of issue.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#1319