You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consider this simple modifying of a given attribute:
>>>importpynetbox>>>nb=pynetbox.api('http://127.0.0.1:8000', 'yada')
>>>br_native=nb.dcim.interfaces.get(id=411)
>>>eth3=nb.dcim.interfaces.get(id=415)
>>>eth3.bridgebr-native>>>eth3.bridge=None>>>eth3.save()
True>>>eth3.bridge=br_native>>>eth3.save()
False#and, for added confusion, changing to another bridge works again.>>>br_users=nb.dcim.interfaces.get(id=412)
>>>eth3.bridge=br_users>>>eth3.save()
True
Expected Behavior
This happens because _diff() in response.py returns False as the desired state matches its initial internal state, coming from the _init_cache list.
We've been here manytimes. Yes, I know I should have called .full_details() after the .save() to have the attributes fetched and populated again. Yes, I know pynetbox is not an ORM and it just abstracts API calls, but let's be honest, this whole way of working is highly misleading, especially for newbies.
Observed Behavior
I propose to:
mention this behavior in the documentation,
or add Api an option that makes pynetbox reload the object once it was saved or updated, like this: nb=pynetbox.api('http://127.0.0.1:8000', 'yada', always_reload=True)
or rename/alias this full_details() to reload() or something else that makes more sense
or have the Record update its own _init_cache. I know this is hard/impossible without getting back the object from NetBox and doing so would incur performance penalties; hence, I don't recommend it to be enabled by default.
The text was updated successfully, but these errors were encountered:
pynetbox version
v7.0.1
NetBox version
v3.6.1
Python version
3.11
Steps to Reproduce
Consider this simple modifying of a given attribute:
Expected Behavior
This happens because
_diff()
inresponse.py
returnsFalse
as the desired state matches its initial internal state, coming from the_init_cache
list.We've been here many times. Yes, I know I should have called
.full_details()
after the.save()
to have the attributes fetched and populated again. Yes, I know pynetbox is not an ORM and it just abstracts API calls, but let's be honest, this whole way of working is highly misleading, especially for newbies.Observed Behavior
I propose to:
Api
an option that makespynetbox
reload the object once it was saved or updated, like this:nb=pynetbox.api('http://127.0.0.1:8000', 'yada', always_reload=True)
full_details()
toreload()
or something else that makes more senseRecord
update its own_init_cache
. I know this is hard/impossible without getting back the object from NetBox and doing so would incur performance penalties; hence, I don't recommend it to be enabled by default.The text was updated successfully, but these errors were encountered: