@@ -279,6 +279,7 @@ def __init__(self, data=None, read_from_netbox=False, inventory=None, source=Non
279279 self .unset_items = list ()
280280 self .source = source
281281 self .deleted = False
282+ self ._original_data = dict ()
282283
283284 # add empty lists for list items
284285 for key , data_type in self .data_model .items ():
@@ -612,15 +613,29 @@ def update(self, data=None, read_from_netbox=False, source=None):
612613 if key == self .primary_key and current_value_str .lower () == new_value_str .lower ():
613614 continue
614615
615- self .data [key ] = new_value
616- self .updated_items .append (key )
617- data_updated = True
618-
619616 if self .is_new is False :
617+
618+ if self ._original_data .get (key ) == new_value_str and key in self .updated_items :
619+ self .data [key ] = new_value
620+ self .updated_items .remove (key )
621+ log .debug (f"{ self .name .capitalize ()} '{ display_name } ' attribute '{ key } ' was set back to "
622+ f"original NetBox value '{ current_value_str } '" )
623+ continue
624+
625+ # save original NetBox value for future use to detect updates which sets it back to the same value
626+ # which is already saved in NetBox
627+ elif self ._original_data .get (key ) is None :
628+ self ._original_data [key ] = current_value_str
629+ print (self ._original_data [key ])
630+
620631 new_value_str = new_value_str .replace ("\n " , " " )
621632 log .info (f"{ self .name .capitalize ()} '{ display_name } ' attribute '{ key } ' changed from "
622633 f"'{ current_value_str } ' to '{ new_value_str } '" )
623634
635+ self .data [key ] = new_value
636+ self .updated_items .append (key )
637+ data_updated = True
638+
624639 self .resolve_relations ()
625640
626641 if data_updated is True and self .is_new is False :
0 commit comments