09-11-2019 06:50 AM
Hi. I want an advice from someone who are familiar with 'wait-for-lock' which has been implemented since NSO 4.4.2 as follows.
- ncs: 'sync-from'/'sync-to'/'check-sync'/'partial-sync-from' actions now
have a 'wait-for-lock' parameter that can be used to specify a timeout
that the action waits until the device lock is released and any commit
queue items that contain the device are done. If the 'wait-for-lock'
parameter is not specified, the action will fail immediately for the
device if the lock is taken for the device or if the device is placed
in the commit queue.
A commit now use the /devices/global-settings/commit-retries to wait
for any device lock to be released.
(Issue tracker: #27591)
When compare-config and sync-to are executed almost at the same time (compare-config first, sync-to second), sync-to fails as follows because device is locked in a compare-config-operation.
# devices device R1 sync-to
result false
info R1: Device is locked in a compare-config operation by session 328060
This can be solved by adding 'wait-for-lock' option as follows.
# devices device R1 sync-to wait-for-lock { timeout 60 }
# (Success after waiting for device unlocked)
I was expecting this is also achieved by /devices/global-settings/commit-retries setting because above statement says so.
(config)# devices global-settings commit-retries timeout 60
(config)# commit
Commit complete.
But it doesn't work as follows.
# devices device R1 sync-to
result false
info R1: Device is locked in a compare-config operation by session 328630
Is it any way to achieve it by config or ncs.conf setting?
Solved! Go to Solution.
09-17-2019 02:22 AM
According to the YANG model in my NSO 5.2.0.3 install for devices you can configure it at the global-settings level:
revision 2019-04-09 { description "Released as part of NCS-5.1. ... Added 'wait-for-lock' choice under 'device-profile-parameters' grouping.
And the mentioned grouping:
grouping device-profile-parameters { description "A set of parameters to use when communicating with a device. These parameters can be set on: o global-settings o device-profile o device If a parameter is set on the device, its value is used. Otherwise, if the paramater is set in the device's device-profile, its value is used. Otherwise, the global setting is used, if set. Otherwise, the value used depends on the NED type."; uses timeouts; uses wait-for-lock{ refine wait-for-lock-choice{ description "When an action accepting the wait-for-lock parameter is called without providing the wait-for-lock parameter, the wait-for-lock-choice device setting is going to be used."; } }
I checked NSO 4.7.4.2 YANG model and this is not present so it seems you can achieve what you want starting with NSO 5.1
09-17-2019 02:22 AM
According to the YANG model in my NSO 5.2.0.3 install for devices you can configure it at the global-settings level:
revision 2019-04-09 { description "Released as part of NCS-5.1. ... Added 'wait-for-lock' choice under 'device-profile-parameters' grouping.
And the mentioned grouping:
grouping device-profile-parameters { description "A set of parameters to use when communicating with a device. These parameters can be set on: o global-settings o device-profile o device If a parameter is set on the device, its value is used. Otherwise, if the paramater is set in the device's device-profile, its value is used. Otherwise, the global setting is used, if set. Otherwise, the value used depends on the NED type."; uses timeouts; uses wait-for-lock{ refine wait-for-lock-choice{ description "When an action accepting the wait-for-lock parameter is called without providing the wait-for-lock parameter, the wait-for-lock-choice device setting is going to be used."; } }
I checked NSO 4.7.4.2 YANG model and this is not present so it seems you can achieve what you want starting with NSO 5.1
09-17-2019 08:00 PM
Hi Guillaume.
Thank you for your kind advice.
Yes. You are right. In NSO 5.2.0.3, I could configure 'wait-for-lock' and it worked as expected.
Here is a log from my test.
admin@ncs# show ncs-state version
ncs-state version 5.2.0.3
First, I executed 'compare-config'
admin@ncs# devices device vCPE001 compare-config
Right after this, I executed 'check-sync'. It failed as I expected due to the lock by 'compare-config'
admin@ncs# devices device vCPE001 check-sync
result error
info vCPE001: Device is locked in a compare-config operation by session 39
Then I added 'wait-for-lock' option to the command.
Of course it works (same as NSO 4.7)
admin@ncs# devices device vCPE001 check-sync wait-for-lock { timeout 60 }
result in-sync
Then I configured 'wait-for-lock' which is newly implemented at NSO 5.x
admin@ncs# config
Entering configuration mode terminal
admin@ncs(config)# devices global-settings wait-for-lock timeout 60
admin@ncs(config)# commit
Commit complete.
admin@ncs(config)# exit
Then I executed check-sync without 'wait-for-lock' option right after compare-config.
It worked as I expected.
admin@ncs# devices device vCPE001 check-sync
result in-sync
I would be glad if it was implemented at NSO 4.x
Thank you again Guillaume
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