11-14-2022 01:36 AM - edited 11-14-2022 02:07 AM
update : just fixed a syntax error in the code snippet below. get_rollback_id seems to works also in a commit queue context !
Hello,
We'd like to facilitate rollback action for persons operating action on the network handled by NSO. They may not have direct access to NSO to manually find a rollback file so we need to programmatically get the rollback ID.
We saw that this would be possible since NSO 5.4 so we've waited for it until we recently upgrade from NSO 5.2.8 to 5.7.4. It works as expected for basic transaction but we encounter an error when we try to use it along commit queue :
with ncs.maapi.Maapi() as m:
with ncs.maapi.Session(m, uinfo.username, 'system'):
with m.start_write_trans() as t:
root = ncs.maagic.get_root(t)
root.devices.device['DEVICE1'].config.port['4/2/5'].description = "test"
commit_params = ncs.maapi.CommitParams()
commit_params.no_overwrite()
commit_params.commit_queue_sync()
commit_params.commit_queue_atomic()
commit_params.commit_queue_error_option("rollback-on-error")
result = t.apply_params(params=commit_params)
try:
cq_id = result["id"]
except KeyError:
cq_id = None
self.log.info("Pas de commit queue ID")
else:
status = result["status"]
if status != 'completed':
self.log.info("Error sending conf")
else:
rollbackID = _ncs.maapi.get_rollback_id(t.maapi.msock,t.th)
output.result = "configuration OK, rollback ID : " + str(rollbackID)
Error: Python cb_action error. Bad protocol usage or unexpected retval (21): not allowed for attached transaction
I've tried to tune cq-params (remove no-overwrite, cq-atomic, error-option) and set cq-async but same result yet. I didn't found a lot of documentation on top of the maapi spec : https://developer.cisco.com/docs/nso/api/#!_ncs-maapi/module-_ncs-maapi
Does anyone know if there is a way to use the get_rollback_id maapi function with commit queue ?
Thanks,
Regards,
Yann Gayral
Orange (fr)
Solved! Go to Solution.
11-14-2022 02:08 AM
just fixed a syntax error in the code snippet below. get_rollback_id seems to works also in a commit queue context !
11-14-2022 02:08 AM
just fixed a syntax error in the code snippet below. get_rollback_id seems to works also in a commit queue context !
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide