VultureProject / vulture3-gui

Vulture 3 Management GUI (Django project)
GNU General Public License v3.0
4 stars 5 forks source link

Error bootstraping secondary node - populate() isn't reentrant #10

Open underscoredje opened 3 years ago

underscoredje commented 3 years ago

While boostraping secondary node, I got this error stack:

Configuring network...
Configuring NTP service...
/home/vlt-gui/env/lib/python3.7/site-packages/urllib3/connectionpool.py:988: InsecureRequestWarning: Unverified HTTPS request is being made to host 'csmelovult22.elosi.lan'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
Downloading Vulture LIBS...
[+] Updating Vulture-LIBS...
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat/pkg /usr/local/lib/ipsec /usr/local/lib/mysql /usr/local/lib/perl5/5.32/mach/CORE
32-bit compatibility ldconfig path: /usr/lib32
[*] Update of Vulture-LIBS ended successfully
Downloading Vulture...

mongod not running? (check /var/db/mongodb/mongod.lock).
Starting mongod.
Traceback (most recent call last):
  File "./bootstrap.py", line 399, in <module>
    if configure_secondary(conf_host, conf["network_configuration"]):
  File "/var/bootstrap/configure_secondary_node.py", line 77, in configure_secondary
    res, ret1 = populate_database(network['gateway'], network['gateway6'])  #TODO
  File "/var/bootstrap/configure_secondary_node.py", line 243, in populate_database
    django.setup()
  File "/home/vlt-gui/env/lib/python3.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/vlt-gui/env/lib/python3.7/site-packages/django/apps/registry.py", line 78, in populate
    raise RuntimeError("populate() isn't reentrant")
RuntimeError: populate() isn't reentrant

After checking on the, I found that it is some kind of generic error. To know ther real error, I modified /home/vlt-gui/env/lib/python3.7/site-packages/django/apps/registry.py

     75             # app_config should be pristine, otherwise the code below won't
     76             # guarantee that the order matches the order in INSTALLED_APPS.
     77             if self.app_configs:
     78                 self.app_configs = {}
     79                 # raise RuntimeError("populate() isn't reentrant")

Running bootstrap again :

Starting mongod.
Traceback (most recent call last):
  File "/var/bootstrap/bootstrap.py", line 399, in <module>
    if configure_secondary(conf_host, conf["network_configuration"]):
  File "/var/bootstrap/configure_secondary_node.py", line 77, in configure_secondary
    res, ret1 = populate_database(network['gateway'], network['gateway6'])  #TODO
  File "/var/bootstrap/configure_secondary_node.py", line 243, in populate_database
    django.setup()
  File "/home/vlt-gui/env/lib/python3.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/vlt-gui/env/lib/python3.7/site-packages/django/apps/registry.py", line 109, in populate
    app_config.import_models(all_models)
  File "/home/vlt-gui/env/lib/python3.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/vlt-gui/vulture/gui/models/__init__.py", line 1, in <module>
    from gui.models.user_document import VultureUser
  File "/home/vlt-gui/vulture/gui/models/user_document.py", line 30, in <module>
    from vulture_toolkit.auth.session import MongoSession
  File "/home/vlt-gui/vulture/vulture_toolkit/auth/session.py", line 18, in <module>
    from gui.models.system_settings import Cluster
  File "/home/vlt-gui/vulture/gui/models/system_settings.py", line 38, in <module>
    from gui.models.network_settings import Interface, Listener
  File "/home/vlt-gui/vulture/gui/models/network_settings.py", line 35, in <module>
    from gui.models.modssl_settings import ModSSL
  File "/home/vlt-gui/vulture/gui/models/modssl_settings.py", line 33, in <module>
    from gui.models.ssl_certificate import SSLCertificate
  File "/home/vlt-gui/vulture/gui/models/ssl_certificate.py", line 30, in <module>
    import OpenSSL
  File "/home/vlt-gui/env/lib/python3.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/home/vlt-gui/env/lib/python3.7/site-packages/OpenSSL/crypto.py", line 15, in <module>
    from OpenSSL._util import (
  File "/home/vlt-gui/env/lib/python3.7/site-packages/OpenSSL/_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "/home/vlt-gui/env/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 14, in <module>
    from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: Shared object "libffi.so.6" not found, required by "_cffi_backend.so"

The real error is missing libffi.so.6 lib:

find / -name "libffi.so*"
/usr/local/lib/libffi.so
/usr/local/lib/libffi.so.7
/usr/local/lib/libffi.so.7.1.0

I fixed this by symlinking:

ln -s /usr/local/lib/libffi.so.7 /usr/local/lib/libffi.so.6

Now bootstrap is working, but I guess this not the best way to fix this.