Skip to content

Commit 51e56cc

Browse files
Fix get() by modelname (#118)
1 parent 9c7cd5a commit 51e56cc

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

diffsync/store/__init__.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,9 @@ def _get_object_class_and_model(
194194
"""Get object class and model name for a model."""
195195
if isinstance(model, str):
196196
modelname = model
197-
if not hasattr(self, model):
197+
if not hasattr(self.diffsync, model):
198198
return None, modelname
199-
object_class = getattr(self, model)
199+
object_class = getattr(self.diffsync, model)
200200
else:
201201
object_class = model
202202
modelname = model.get_type()
@@ -216,7 +216,7 @@ def _get_uid(
216216
uid = object_class.create_unique_id(**identifier)
217217
else:
218218
raise ValueError(
219-
f"Invalid args: ({model}, {identifier}): "
220-
f"either {model} should be a class/instance or {identifier} should be a str"
219+
f"Invalid args: ({model}, {object_class}, {identifier}): "
220+
f"either {object_class} should be a class/instance or {identifier} should be a str"
221221
)
222222
return uid

tests/unit/test_diffsync.py

+4
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ def test_diffsync_add_raises_already_exists_with_updated_object(generic_diffsync
115115

116116

117117
def test_diffsync_get_or_instantiate_create_non_existent_object(generic_diffsync):
118+
generic_diffsync.interface = Interface
118119
intf_identifiers = {"device_name": "device1", "name": "eth1"}
119120

120121
# Assert that the object does not currently exist.
@@ -124,6 +125,7 @@ def test_diffsync_get_or_instantiate_create_non_existent_object(generic_diffsync
124125
obj, created = generic_diffsync.get_or_instantiate(Interface, intf_identifiers)
125126
assert created
126127
assert obj is generic_diffsync.get(Interface, intf_identifiers)
128+
assert obj is generic_diffsync.get("interface", intf_identifiers)
127129

128130

129131
def test_diffsync_get_or_instantiate_retrieve_existing_object(generic_diffsync):
@@ -150,6 +152,7 @@ def test_diffsync_get_or_instantiate_retrieve_existing_object_w_attrs(generic_di
150152

151153

152154
def test_diffsync_get_or_instantiate_retrieve_create_non_existent_w_attrs(generic_diffsync):
155+
generic_diffsync.interface = Interface
153156
intf_identifiers = {"device_name": "device1", "name": "eth1"}
154157
intf_attrs = {"interface_type": "1000base-t", "description": "Testing"}
155158

@@ -158,6 +161,7 @@ def test_diffsync_get_or_instantiate_retrieve_create_non_existent_w_attrs(generi
158161
assert obj.interface_type == "1000base-t"
159162
assert obj.description == "Testing"
160163
assert obj is generic_diffsync.get(Interface, intf_identifiers)
164+
assert obj is generic_diffsync.get("interface", intf_identifiers)
161165

162166

163167
def test_diffsync_get_or_instantiate_retrieve_existing_object_wo_attrs(generic_diffsync):

0 commit comments

Comments
 (0)