This was working with SSoT version 2.2.0 but doesn't work with 2.3.0.
A traceback is produced and cables aren't created:
File "/usr/local/lib/python3.11/site-packages/celery/app/trace.py", line 477, in trace_task
R = retval = fun(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nautobot/extras/jobs.py", line 153, in __call__
return self.run(*args, **deserialized_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/git/dcim_data_ssot/jobs/yaml_sync_job.py", line 4834, in run
super().run(dryrun=self.dryrun, memory_profiling=self.memory_profiling, *args, **kwargs)
File "/opt/nautobot/.local/lib/python3.11/site-packages/nautobot_ssot/jobs/base.py", line 316, in run
self.sync_data(memory_profiling)
File "/opt/nautobot/.local/lib/python3.11/site-packages/nautobot_ssot/jobs/base.py", line 165, in sync_data
self.execute_sync()
File "/opt/nautobot/.local/lib/python3.11/site-packages/nautobot_ssot/jobs/base.py", line 97, in execute_sync
self.source_adapter.sync_to(self.target_adapter, flags=self.diffsync_flags)
File "/opt/nautobot/.local/lib/python3.11/site-packages/diffsync/__init__.py", line 601, in sync_to
return target.sync_from(self, diff_class=diff_class, flags=flags, callback=callback, diff=diff)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/.local/lib/python3.11/site-packages/diffsync/__init__.py", line 573, in sync_from
result = syncer.perform_sync()
^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/.local/lib/python3.11/site-packages/diffsync/helpers.py", line 329, in perform_sync
changed |= self.sync_diff_element(element)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/.local/lib/python3.11/site-packages/diffsync/helpers.py", line 379, in sync_diff_element
changed, modified_model = self.sync_model(src_model=src_model, dst_model=dst_model, ids=ids, attrs=attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/.local/lib/python3.11/site-packages/diffsync/helpers.py", line 428, in sync_model
dst_model = self.model_class.create(diffsync=self.dst_diffsync, ids=ids, attrs=attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/.local/lib/python3.11/site-packages/nautobot_ssot/contrib.py", line 539, in create
cls._update_obj_with_parameters(obj, parameters, diffsync)
File "/opt/nautobot/.local/lib/python3.11/site-packages/nautobot_ssot/contrib.py", line 641, in _update_obj_with_parameters
cls._lookup_and_set_foreign_keys(relationship_fields["foreign_keys"], obj, diffsync=diffsync)
File "/opt/nautobot/.local/lib/python3.11/site-packages/nautobot_ssot/contrib.py", line 779, in _lookup_and_set_foreign_keys
related_object = diffsync.get_from_orm_cache(related_model_dict, related_model)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/nautobot/.local/lib/python3.11/site-packages/nautobot_ssot/contrib.py", line 149, in get_from_orm_cache
self._cache[model_cache_key][parameter_set] = model_class.objects.get(**dict(parameter_set))
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/manager.py", line 179, in __get__
raise AttributeError("Manager isn't accessible via %s instances" % cls.__name__)
AttributeError: Manager isn't accessible via ContentType instances
Steps to Reproduce
Create two devices
Attempt to create a cable connection between the devices using SSoT
Environment
Expected Behavior
Cables are created
Observed Behavior
This was working with SSoT version 2.2.0 but doesn't work with 2.3.0.
A traceback is produced and cables aren't created:
Steps to Reproduce
Example: