Nautobot during initialization when running signals.py for Meraki integration gives the following traceback. The instance has multiple platforms with Meraki in their name
Traceback (most recent call last): │
│ File "/usr/local/bin/nautobot-server", line 8, in <module> │
│ sys.exit(main()) │
│ ~~~~^^ │
│ File "/usr/local/lib/python3.13/site-packages/nautobot/core/cli/__init__.py", line 346, in main │
│ execute_from_command_line([sys.argv[0], *unparsed_args]) │
│ ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line │
│ utility.execute() │
│ ~~~~~~~~~~~~~~~^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 436, in execute │
│ self.fetch_command(subcommand).run_from_argv(self.argv) │
│ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/base.py", line 412, in run_from_argv │
│ self.execute(*args, **cmd_options) │
│ ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/base.py", line 458, in execute │
│ output = self.handle(*args, **options) │
│ File "/usr/local/lib/python3.13/site-packages/nautobot/core/management/commands/post_upgrade.py", line 91, in handle │
│ call_command( │
│ ~~~~~~~~~~~~^ │
│ "migrate", │
│ ^^^^^^^^^^ │
│ ...<3 lines>...
verbosity=options["verbosity"], │
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ ) │
│ ^ │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 194, in call_command │
│ return command.execute(*args, **defaults) │
│ ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/base.py", line 458, in execute │
│ output = self.handle(*args, **options) │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/base.py", line 106, in wrapper │
│ res = handle_func(*args, **kwargs) │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/commands/migrate.py", line 383, in handle │
│ emit_post_migrate_signal( │
│ ~~~~~~~~~~~~~~~~~~~~~~~~^ │
│ self.verbosity, │
│ ^^^^^^^^^^^^^^^ │
│ ...<4 lines>... │
│ plan=plan, │
│ ^^^^^^^^^^ │
│ ) │
│ ^ │
│ File "/usr/local/lib/python3.13/site-packages/django/core/management/sql.py", line 52, in emit_post_migrate_signal │
│ models.signals.post_migrate.send( │
│ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ │
│ sender=app_config, │
│ ^^^^^^^^^^^^^^^^^^ │
│ ...<4 lines>... │
│ **kwargs, │
│ ^^^^^^^^^ │
│ ) │
│ ^
File "/usr/local/lib/python3.13/site-packages/django/dispatch/dispatcher.py", line 177, in send │
│ (receiver, receiver(signal=self, sender=sender, **named)) │
│ ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/nautobot/core/apps/__init__.py", line 310, in post_migrate_send_nautobot_database_ready │
│ nautobot_database_ready.send(sender=app_conf, app_config=app_conf, **kwargs) │
│ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/dispatch/dispatcher.py", line 177, in send │
│ (receiver, receiver(signal=self, sender=sender, **named)) │
│ ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/nautobot_ssot/integrations/meraki/signals.py", line 33, in nautobot_database_ready_callback │
│ Platform.objects.update_or_create(name__icontains="Meraki", defaults=plat_dict) │
│ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/db/models/manager.py", line 87, in manager_method │
│ return getattr(self.get_queryset(), name)(*args, **kwargs) │
│ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/db/models/query.py", line 951, in update_or_create │
│ obj, created = self.select_for_update().get_or_create(defaults, **kwargs) │
│ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/db/models/query.py", line 918, in get_or_create │
│ return self.get(**kwargs), False │
│ ~~~~~~~~^^^^^^^^^^ │
│ File "/usr/local/lib/python3.13/site-packages/django/db/models/query.py", line 642, in get │
│ raise self.model.MultipleObjectsReturned( │
│ ...<5 lines>... │
│ ) │
│ __fake__.Platform.MultipleObjectsReturned: get() returned more than one Platform -- it returned 5!
Environment
Expected Behavior
Nautobot deploys initializes without error
Observed Behavior
Nautobot during initialization when running signals.py for Meraki integration gives the following traceback. The instance has multiple platforms with Meraki in their name
Steps to Reproduce