ansible / django-ansible-base

Apache License 2.0
12 stars 43 forks source link

Reverse migrations are not possible because of resource_registry #555

Closed AlanCoding closed 2 weeks ago

AlanCoding commented 1 month ago

Reproducer is to run the bootstrap script, then:

python manage.py migrate dab_rbac zero

that gives:

2024-08-06 16:29:10,176 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.api_documentation.urls
2024-08-06 16:29:10,176 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.api_documentation.urls
2024-08-06 16:29:10,216 DEBUG    []  ansible_base.authentication.urls Loaded URLS from ansible_base.authentication.authenticator_plugins.saml
2024-08-06 16:29:10,216 DEBUG    []  ansible_base.authentication.urls Loaded URLS from ansible_base.authentication.authenticator_plugins.saml
2024-08-06 16:29:10,243 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.authentication.urls
2024-08-06 16:29:10,243 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.authentication.urls
2024-08-06 16:29:10,243 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Module ansible_base.rest_filters does not specify urls.py
2024-08-06 16:29:10,243 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Module ansible_base.rest_filters does not specify urls.py
2024-08-06 16:29:10,244 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.jwt_consumer.urls
2024-08-06 16:29:10,244 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.jwt_consumer.urls
2024-08-06 16:29:10,245 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.resource_registry.urls
2024-08-06 16:29:10,245 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.resource_registry.urls
2024-08-06 16:29:10,245 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Module ansible_base.rest_pagination does not specify urls.py
2024-08-06 16:29:10,245 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Module ansible_base.rest_pagination does not specify urls.py
2024-08-06 16:29:10,247 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.rbac.urls
2024-08-06 16:29:10,247 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.rbac.urls
2024-08-06 16:29:10,247 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.oauth2_provider.urls
2024-08-06 16:29:10,247 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.oauth2_provider.urls
2024-08-06 16:29:10,248 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.activitystream.urls
2024-08-06 16:29:10,248 DEBUG    []  ansible_base.lib.dynamic_config.dynamic_urls Including URLS from ansible_base.activitystream.urls
Operations to perform:
  Unapply all migrations: dab_rbac
Running migrations:
  Rendering model states... DONE
  Unapplying test_app.0014_autoextrauuidmodel_manualextrauuidmodel_and_more... OK
  Unapplying test_app.0013_alter_manageduser_managers_alter_user_managers... OK
  Unapplying test_app.0012_encryptionjsonmodel... OK
  Unapplying test_app.0011_publicdata... OK
  Unapplying test_app.0010_manageduser... OK
  Unapplying test_app.0009_city_state... OK
  Unapplying test_app.0008_secretcolor... OK
  Unapplying test_app.0007_alter_animal_created_by_alter_animal_modified_by_and_more... OK
  Unapplying test_app.0006_team_admins_team_users... OK
  Unapplying test_app.0005_city... OK
  Unapplying test_app.0004_multiplefieldsmodel_animal... OK
  Unapplying test_app.0003_immutablelogentrynotcommon_immutablelogentry... OK
  Unapplying test_app.0002_set_up_resources_test_data... OK
  Unapplying dab_rbac.0001_initial... OK
2024-08-06 16:29:13,422 INFO     []  ansible_base.resource_registry.apps updating resource types
2024-08-06 16:29:13,422 INFO     []  ansible_base.resource_registry.apps updating resource types
2024-08-06 16:29:13,453 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for shared.user
2024-08-06 16:29:13,453 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for shared.user
2024-08-06 16:29:13,465 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for shared.team
2024-08-06 16:29:13,465 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for shared.team
2024-08-06 16:29:13,475 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for shared.organization
2024-08-06 16:29:13,475 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for shared.organization
2024-08-06 16:29:13,483 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for aap.authenticator
2024-08-06 16:29:13,483 INFO     []  ansible_base.resource_registry.apps adding unmigrated resources for aap.authenticator
Traceback (most recent call last):
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/apps/config.py", line 235, in get_model
    return self.models[model_name.lower()]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
KeyError: 'resourcemigrationtestmodel'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/alancoding/repos/awx/testing/django-ansible-base/manage.py", line 22, in <module>
    main()
  File "/home/alancoding/repos/awx/testing/django-ansible-base/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/core/management/base.py", line 412, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/core/management/base.py", line 458, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/core/management/base.py", line 106, in wrapper
    res = handle_func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/core/management/commands/migrate.py", line 383, in handle
    emit_post_migrate_signal(
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/core/management/sql.py", line 52, in emit_post_migrate_signal
    models.signals.post_migrate.send(
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/dispatch/dispatcher.py", line 177, in send
    (receiver, receiver(signal=self, sender=sender, **named))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alancoding/repos/awx/testing/django-ansible-base/ansible_base/resource_registry/apps.py", line 72, in initialize_resources
    resource_model = apps.get_model(r_type.content_type.app_label, r_type.content_type.model)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/apps/registry.py", line 213, in get_model
    return app_config.get_model(model_name, require_ready=require_ready)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alancoding/venvs/awx/lib64/python3.12/site-packages/django/apps/config.py", line 237, in get_model
    raise LookupError(
LookupError: App 'test_app' doesn't have a 'resourcemigrationtestmodel' model.