Skip to content

Commit 4fcd32e

Browse files
committed
fix: Use super.save()
1 parent 271971f commit 4fcd32e

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

nautobot_netbox_importer/diffsync/models/cables.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,5 +181,10 @@ def create_missing_cable_terminations(adapter: SourceAdapter) -> None:
181181
wrapper = adapter.get_or_create_wrapper("dcim.cable")
182182

183183
for cable in adapter.get_all(wrapper.nautobot.diffsync_class):
184+
if getattr(cable, "termination_a_id", None) and getattr(cable, "termination_b_id", None):
185+
continue
186+
187+
adapter.logger.debug(f"Processing missing cable terminations {getattr(cable, 'id')} ...")
188+
184189
_update_cable_termination(wrapper, cable, "a")
185190
_update_cable_termination(wrapper, cable, "b")

nautobot_netbox_importer/diffsync/models/dcim.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ def setup(adapter: SourceAdapter) -> None:
106106
"dcim.cable",
107107
fields={
108108
"label": _define_cable_label,
109+
"termination_a_type": "",
110+
"termination_a_id": "",
111+
"termination_b_type": "",
112+
"termination_b_id": "",
109113
},
110114
)
111115
adapter.configure_model(

nautobot_netbox_importer/generator/nautobot.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,24 @@ def set_empty(field, field_name: FieldName):
615615
else:
616616
setattr(instance, field_name, None)
617617

618+
def save_or_super_save():
619+
error = None
620+
621+
try:
622+
instance.save()
623+
return
624+
except Exception as exception:
625+
error = exception
626+
627+
super(instance.__class__, instance).save()
628+
629+
self.add_issue(
630+
"FirstSaveFailed",
631+
nautobot_instance=instance,
632+
data=values,
633+
error=error,
634+
)
635+
618636
@atomic
619637
def save():
620638
m2m_fields = set()
@@ -636,13 +654,13 @@ def save():
636654
else:
637655
setattr(instance, field_name, value)
638656

639-
instance.save()
657+
save_or_super_save()
640658

641659
if force_fields:
642660
# These fields has to be set after the initial save to override any default values.
643661
for field_name, value in force_fields.items():
644662
setattr(instance, field_name, value)
645-
instance.save()
663+
save_or_super_save()
646664

647665
for field_name in m2m_fields:
648666
field = getattr(instance, field_name)

tasks.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,12 +627,16 @@ def import_db(context, db_name="", input_file="dump.sql"):
627627
@task(
628628
help={
629629
"db-name": "Database name to backup (default: Nautobot database)",
630+
"format": "Database dump format (default: `sql`)",
630631
"output-file": "Ouput file, overwrite if exists (default: `dump.sql`)",
631632
"readable": "Flag to dump database data in more readable format (default: `True`)",
632633
}
633634
)
634-
def backup_db(context, db_name="", output_file="dump.sql", readable=True):
635+
def backup_db(context, db_name="", format="sql", output_file="", readable=True):
635636
"""Dump database into `output_file` file from `db` container."""
637+
if not output_file:
638+
output_file = f"dump.{format}"
639+
636640
start(context, "db")
637641
_await_healthy_service(context, "db")
638642

@@ -651,6 +655,7 @@ def backup_db(context, db_name="", output_file="dump.sql", readable=True):
651655
"pg_dump",
652656
"--username=$POSTGRES_USER",
653657
f"--dbname={db_name or '$POSTGRES_DB'}",
658+
f"--format={format}",
654659
"--inserts" if readable else "",
655660
]
656661
else:

0 commit comments

Comments
 (0)