Showing results for 
Search instead for 
Did you mean: 

NSO 4.7 is out

Cisco Employee

NSO 4.7 has been released. Read the detailed CHANGES (over NSO 4.6) here:


NSO-4.7 [June 20, 2018]

- webui-one: Support of Internet Explorer is deprecated



Non-backwards compatible enhancements:

- ncs: NSO protects device integrity by constraining or preventing the use
of the 'delete' and 'prune' actions on an executing queue item. This is
to prevent leaving the device in a bad state when interrupting in the
middle of an operation.
There are however situations when the integrity of the device is not
cared for, or you know it is already in a bad state. Then there is a
need to force remove the specific device or entire queue item. Thus a
'force' parameter has been added to prune and delete actions under
/devices/commit-queue and /devices/commit-queue/queue-item.
Since queue actions in a device cluster are propagated down
asynchronously the total effect of an action might not instantly be
shown on the upper queue item. Thus the leaf 'num-affected-queue-items'
are renamed to 'num-matched-queue-items' in /devices/commit-queue/prune
action output.


- ncs: Commit parameter 'reconcile' introduced. This option allows for
services to take ownership of pre-existing data, and also enables batch
service re-deployment in combination with 'touch'


- CLI: Changed the configuration mode of C-Style CLI, so that actions in
lists can not be called if the list instance is not existing. A new
setting 'confdConfig/cli/actionCallNoListInstance' has been added to
control the behavior. This setting defaults to 'deny-call', which will
give an error when the user tries to invoke the action. The setting can
also be set to 'create-instance', with the behavior: attempt to create
the missing instance and then call the action. The latter behavior will
of course leave a created, uncommitted, list instance in the change set.

(ENG-14810, RT:30205, RT:31586, PS-27584, PS-9937)

- Cluster: Added /devices/device/lsa-remote-node. Setting lsa-remote-node
indicates that the LSA device is the same as the cluster node. When set
the address and port of the cluster node is used for this device.
Previously the address and port of the device needed to be the same as
the cluster node since the commit queue compared the LSA device's
address and port against the address and port of the cluster remote node
to match them together. This meant duplicated configuration that was
error prone. For backwards compatibility this matching still works.


- RESTCONF: yanger - new yanger plugin to support generation of RESTCONF
Swagger definitions based on YANG modules



- ncs: Adjusted the window size for the SCP SSH channel to match the
default window size of OpenSSH (i.e. 2 MB). This will increase the
transfer rate of the /devices/device/scp-to and /devices/device/scp-from

(ENG-18780, PS-27226)

- ncs: Improved no-overwrite check for devices managed by CLI NEDs.


- ncs: Previously when pushing a service change through the commit-queue
you couldn't be sure that the change had been pushed to the network by
looking at the plan data. By adding a commit-queue container in the
plan, you can now view what outstanding commit queue items the service
instance has. If a commit queue item fails the failed leaf in the plan
will also be updated.
Previously for a failed atomic commit queue item which contained
multiple backpointers, only the service instances with backpointers for
the failed device(s) was marked as failed in the service commit queue
log. Since the whole queue item is rolled back, all service instances
with backpointers in the queue item should be marked as failed. This has
now been fixed.


- ncs: NSO now employs a more robust abort strategy when a commit
performed with no-overwrite option has failed.


- ncs: Added support for ha/extra-listen, an optional leaf-list of ip,
port pairs which a HA master also listens to for slave connections.

(ENG-18438, RT:32649, PS-28291)

- ncs: Added /scheduler/task/history/result to display the output result
of an action invocation in the scheduler.


- ncs: It is necessary to lock-down parts of the NSO configuration. To do
so, copy/merge the <java-vm>, <python-vm> and <smart-license> sections
of /opt/ncs/ncs-<vsn>/etc/ncs/ncs.conf.install to your /etc/ncs/ncs.conf
(assuming default "system install" locations).
This mandatory step upgrading from release below version:


- ncs: Added /scheduler/task/enabled to enable/disable tasks in the NSO


- ncs: An input parameter 'sync' has been added for 'reactive-re-deploy'
action to be able to run it synchronously and receive errors and
commit-queue item information. Note that service models need to be
recompiled with the new tailf-ncs module to support this functionality.

(ENG-18029, RT:32179, PS-27994)

- ncs: The internal regexp library has been updated to libxml2 version


- ncs: Added /ncs-config/enable-compressed-schema, to enable compression
of NSO's internal storage of the schema information. See the ncs.conf(5)
manual page for details.

(ENG-17973, RT:29551, PS-9613)

- ncs: For devices the with want-reverse=true the reverse diff is now sent
when the device fails during the sync-to action. Only the device(s) that
actually failed will be reverted.

(ENG-17867, RT:31647, PS-27619)

- ncs: Optimization to avoid unnecessary get_elem() and get_case() calls
while setting a non-default case when the default case is active and
closest ancestor of choice is created.

(ENG-17857, RT:26917, PS-8521)

- ncs: Added verbosity levels for progress trace. These can be configured
/progress/trace/verbosity or set when piping an action to details in the
CLI. Template and XPath debug messages are also display when setting the
verbosity level to 'debug'.
Added calls in MAAPI to report progress events in user code. These are
available in the C, Java and Python API.
Added /progress/trace/event/timer to display time difference from the
first occurrence of an transaction handle in the /progress/trace/event
Added better support to log progress trace events for the commit queue.
The top level container /progress is now by default invisible due to a
hidden attribute. In order to make /progress visible in the CLI, two
steps are required. First the following XML snippet must be added to
Then the unhide command must be used in the CLI session:
admin(config)# unhide debug
Also harmonized the XPath trace messages being written to the
xpath.trace log.


- ncs: Added leaf 'commit-queue/error-option' to the commit parameters.
This leaf sets the desired error option to use in the transaction for
the commit queue. Depending on the selected error option NSO will store
the reverse of the original transaction intent to be able to undo the
transaction changes and get back to the previous state. This data is
stored in the /devices/commit-queue/completed tree from where it can be
viewed and invoked with the rollback action. Possible values are;
'continue-on-error', 'rollback-on-error' and 'stop-on-error'. The
'continue-on-error' value means that the commit queue will continue on
errors. No rollback data will be created. This is the preferred choice
when re-deploying a service as a re-deploy doesn't have a transaction
intent. The 'rollback-on-error' value means that the commit queue item
will roll back on errors. The commit queue will place a lock with
'block-others' on the devices and services in the failed queue item. The
rollback action will then automatically be invoked when the queue item
has finished its execution. The lock will be removed as part of the
rollback. The 'stop-on-error' means that the commit queue will place a
lock with 'block-others' on the devices and services in the failed queue
item. The lock must then either manually be released when the error is
fixed or the rollback action under /devices/commit-queue/completed be
invoked. Also added leaf
/devices/global-settings/commit-queue/error-option that sets the error
option globally for every transaction. This replaces
/devices/global-settings/commit-queue/error-recovery which has been
removed. Any previous configuration will be mapped to the new during
In a cluster environment this change means that the upper NSO node will
be able to orchestrate the transaction through the cluster independent
on the settings on the lower nodes. Previously it was important that the
setting was left untouched on the lower nodes. It also means that no
unnecessary rollback data is created on the lower nodes.
To guarantee service integrity NSO checks for overlapping service or
device modifications when committing with the commit queue. This feature
could previously be enabled or disabled by the
/devices/global-settings/commit-queue/error-recovery/mode leaf. It has
now been replaced by the leaf
/devices/global-settings/commit-queue/check-integrity with type boolean.
Any previous configuration will be mapped to the new during upgrade.
Added container 'commit-queue' and leaf 'no-out-of-sync-check' to
/devices/commit-queue/completed/queue-item/rollback/input/. When invoked
manually the default behavior of the rollback action has been changed to
commit without the commit queue. It can be invoked with the commit queue
by changing the input parameters.
If a commit queue item has completed successfully the rollback data is
no longer stored under /devices/commit-queue/completed/.


- ncs: - ncs: Support for Service Progress Monitoring (SPM) has been
SPM offers mechanisms to put time limits on the progress of plan states,
making it possible to keep track on if services are delivered in time.


- AAA: The implementation of the fix for NACM compliance (ENG-16570,
RT:29762, PS-9722) has been optimized.


- CLI: A workaround has been added in ncs_cli to handle broken kernels
that return EAGAIN from read when poll has indicated POLLIN.

(ENG-18702, RT:33133, PS-28644)

- CLI: Previously, the number of list instances fetched in order to
calculate table width for 'show devices list' was hard coded to 50. Now
it takes the value from 'ncs-config/cli/table-look-ahead', which
defaults to 50 but can be set higher.

(ENG-18095, RT:32197, PS-28018)

- CLI: It is now possible to view rollback changes on a slave-node in a HA
cluster by running the C-Style commands 'show configuration commit
changes <id>' or 'show configuration rollback changes <nr>' in
operational mode.

(ENG-16661, RT:29759, PS-9720)

- CLI: Configuring an 'ordered-by user' list and displaying the C-style
configuration diff (e.g. show configuration, commit dry-run outformat
native), comments indicating the list elements position in the list
would in some cases be redundant. This has been fixed.


- CLI: Completion of deletion commands in the CLI has been improved. It is
now possible to see existing values in leaf-lists which can be deleted.

(ENG-15515, RT:22921, RT:24537, RT:30035, RT:30103, PS-7324, PS-7771,
PS-9846, PS-9882)

- CLI: Two new flags has been added for suppressing backslash quoting when
extracting the configuration, and when loading configuration in C-style.

(ENG-14548, RT:28128, PS-8971)

- CLI: Performance when using lists within lists data-models has been
optimized when performing "commit dry-run" in the CLI.

(ENG-12845, RT:29351, PS-9515)

- Documentation: The 'confd.conf' setting
'confdConfig/cli/actionCallNoListInstance' did not take effect in
I-style CLI. This has been fixed.

(ENG-18474, RT:32913, PS-28479)

- JSON-RPC: get_values now supports check_default parameter behaving the
same as the get_value variant.


- JSON-RPC: get_schema now include dependencies for tailf:display-when
expressions in deps.

(ENG-17889, PS-27810)

- JSON-RPC: The deps field in the get_schema response now includes
dependencies for tailf:non-strict-leafref.


- NCT: Added support for RESTCONF for NCT check


- NETCONF: The filtering code in NETCONF has been optimized in order to
not call the dataprovider's get-case function when no nodes from the
case are requested.

(ENG-18483, RT:32815, PS-28420)

- RESTCONF: RESTCONF and NETCONF now also support the NSO progress trace


- RESTCONF: Speed up of large amounts of data, returned from a RESTCONF

(ENG-17416, RT:31150, PS-27289)

- Toolchain: The YANG compiler would compile faulty paths provided by
tailf:cli-diff-before and tailf:cli-diff-after without complaining. This
has been fixed.


- Toolchain: It is now possible to have multiple tailf:export in a
tailf:annotate statement.

(ENG-144, RT:30603, PS-10147)

- Web Server: Cache-Control header has been changed to must-revalidate,
proxy-revalidate and Expires removed for static content allowing the
client to cache the response.

(ENG-16400, RT:28122, PS-8967)

- webui-one: Too long entries in device and service manager will now wrap.


- webui-one: Added "loading spinner" to a the leafref widget.


- webui-one: You can now close popup dialogs with the Escape key.


- webui-one: Loading spinner is displayed instead of full page reload when
updating a widget with dependencies to other widgets on the same page.


- webui-one: New styling has been implemented to enhance visual


- webui-one: The former Model browser view now serves as a 'root view' for
the Configuration editor. The breadcrumb navigation is expanded so it
can be used to navigate into any models from the root level.
The new, merged tool will use the name Configuration editor. This means
that there is no longer a tool called Model browser.


- webui-one: Leaf lists now supports creating multiple elements at once.
Use the bracket notation with a space separated list to achieve this
Example: [ key1 key2 "this is key3" ]


- webui-one: Enhanced the device manager. The number of devices it can
handle has increased significantly. The devices are now fetched using
server side pagination, instead of storing all of them in the web
browser state.


- webui-one: The data in the configuration editor lists are now fetched in
chunks. Which means that larger lists can be handled.


- webui-one: You can now see additional information about a configuration
element (leaf or list). When in 'options' mode, there is an information
button that displays a modal with additional information about the
element when pressed.


Non-backwards compatible corrections:

- ncs: The northbound interfaces would incorrectly accept "0" (for
"false") and "1" (for "true") as values for leafs of type boolean. This
has been fixed.

(ENG-18297, RT:32535, PS-28232)

- ncs: Previously commit flags ('no-networking', 'no-out-of-sync-check',
'no-overwrite' and 'no-revision-drop') were not propagated to the lower
LSA nodes when used together with the commit queue. This has now been
Previously the commit queue always accepted out-of-sync devices but
collected their transaction id. Now the commit queue will check if the
device is out of sync unless the 'out-of-sync-commit-behaviour' leaf is
configured to 'accept' or the 'no-out-of-sync-check' commit flag is
Removed leaf /devices/commit-queue/queue-item/kilo-bytes-size.


- webui-one: The port column has been replaced with ned-id.



- ncs: For HA, do an info log entry of when a SLAVE sends a message to
MASTER node which is unregistered, instead of an error log entry. This
typically happens during shutdown of a cluster setup.


- ncs: Previously service transactions in NSO leaked system sessions when
writing to the service log. This has now been fixed. Service log entries
are written by user code or by NSO when there is a service or device

(ENG-18773, RT:33312, PS-28785)

- ncs: Improved integrity check for commit queue. For devices managed by
CLI NEDs there are a few CLI extensions that need to be considered in
the integrity check as they cause NSO to send more configuration to the
device than the changeset contains.
The integrity check has also been more relaxed to not give an error if
there are only attribute changes on a specific path.


- ncs: Previously doing show on /progress/trace/event could result in an
internal error if progress trace with file destination was configured.
This has now been fixed.


- ncs: Previously the /devices/device/scp-to action did not work correctly
with some devices. When NSO tried to trigger sink mode on the remote
host it used the directory name as argument instead of the entire
filename. This has now been fixed.

(ENG-18711, RT:33007, PS-28552)

- ncs: Time spent in validation of /devices/device-group/device-name has
been significantly reduced. This could for large device groups mean
going from several minutes to subsecond.
Changed type of /devices/device-group/device-name leaf-list from type
leafref to type string.

(ENG-18506, RT:32857, PS-28459)

- ncs: Robustified the reverse-diff calculation during abort in scenarios
where device is out-of-sync with CDB. No-overwrite behaviour has been
made more strict to check the subtrees that could be aborted in case of

(ENG-18464, RT:32830, PS-28436)

- ncs: An np-container, containing config in running, should be removed
if its when-rule is falsified by some new (incoming Netconf) config
that replaces the dependee. This was not done because a child of
the np-container had a default value that broke the logic. This has
now been fixed.

(ENG-18428, RT:32703, PS-28326)

- ncs: Fixed problem where a failed attempt to transition from MASTER
state directly to SLAVE state, i.e. not by explicitly transitioning to
NONE state first, would resulting in differing cluster - and cdb cluster

(ENG-18427, RT:32762, PS-28399)

- ncs: In some cases of NETCONF notifications with 'when' statements on
parameters, e.g. the 'netconf-confirmed-commit' notification defined in
ietf-netconf-notifications.yang, NSO would not store the notification in
/devices/device/netconf-notifications/received-notifications when it was
received from a device. This has been fixed.


- ncs: Previously the NSO scheduler could not handle augmented actions
correctly. This has now been fixed.
The type of /scheduler/task/action-name changed from
yang:yang-identifier to tailf:identifier-ref.

(ENG-18419, RT:32739, PS-28384)

- ncs: NSO could lose service properties list in certain scenarios that
involve stacked services. This has been fixed.

(ENG-18409, RT:32727, PS-28377)

- ncs: Previously NSO could not handle namespace changes in RPC output.
This has now been fixed.

(ENG-18351, RT:32705, PS-28329)

- ncs: Setting
/ncs-config/logs/syslog-config/syslog-servers/server/enabled to "false"
had no effect, the server would still get the syslog messages. This has
been fixed.

(ENG-18333, RT:32647, PS-28285)

- ncs: If the Java VM crashed early in NSO startup, NSO could get into a
state where it was impossible to restart the Java VM from NSO. (The Java
VM would hang indefinitely and a restart of NSO would be required). This
has been fixed.


- ncs: Fixed a problem where applying an admin applying a rollback, on
configuration without having full privileges for all changes, would
cause an internal error message.

(ENG-18279, RT:32492, PS-28197)

- ncs: Already existing NETCONF notification subscriptions would fail when
upgrading from NSO < 4.5 to 4.5 or 4.6. This has been fixed.

(ENG-18197, , RT:32413, RT:32453, PS-28136, PS-28165)

- ncs: A when-expression for a NP-container would be evaluated even though
an enclosing when-expression belonging to an outer NP-container already
had been evaluated to false.

(ENG-18068, RT:32202, PS-28008)

- ncs: Previously if a user was not assigned a NACM group a service
re-deploy would fail with an access denied error. This has now been

(ENG-18008, RT:31285, RT:32017, PS-27440, PS-27875)

- ncs: XML encoding of identityref leafs would under certain circumstances
not include an xmlns attribute. This has been fixed.

(ENG-17928, RT:32183, RT:31203, RT:31799, PS-27713, PS-27988, PS-27335)

- ncs: Using tailf:value-length on yang:hex-string made the validation to
always fail. This has been corrected.

(ENG-17924, RT:31967, PS-27838)

- ncs: Performing a model upgrade with mmap schema disabled would cause an
error message to appear in the devel.log. This has been fixed.

(ENG-17887, RT:31886, PS-27845)

- ncs: If both DSA and RSA keys were present in
/ncs-config/aaa/ssh-server-key-dir, they could both be used by the SSH
server even if /ncs-config/ssh/algorithms/server-host-key had only one
of "ssh-dss" and "ssh-rsa". This has been fixed.

(ENG-17834, RT:31808, PS-27717)

- ncs: Fixed a race condition that in rare cases could cause a crash when
formatting output from a dry-run.

(ENG-17770, RT:31646, PS-27640)

- ncs: When a kicker triggered an action, if the action had some input
parameters but not the parameters defined in kicker:action-input-params
grouping, its invocation would fail. This has been fixed.

(ENG-17706, RT:31286, RT:32052, PS-27902, PS-27441)

- ncs: Mixing when/must expressions with default values could cause the
default value to overwrite a correct set value.

(ENG-17417, RT:31165, PS-27304)

- ncs: must expressions was incorrectly evaluated in inactive case
statements, this has been fixed.

(ENG-17170, RT:30886, PS-27142)

- ncs: Mandatory leafs deactivated by an ancestor node with a
'when'-expression evaluating to false could cause unnecessary
diff_iterate invocations with MOP_MODIFIED.
This has now been fixed.


- AAA: The fix for NACM compliance (ENG-16570, RT:29762, PS-9722)
introduced a regression that in some cases could make the CLI fail when
attempting to delete a config tree. This has been fixed.

(ENG-18569, RT:32774, PS-28382)

- Building: Makefiles in the test directory generated by "ncs-make-package
--service-skeleton python..." was missing the "build" target. This has
been fixed.

(ENG-18462, RT:32787, PS-28392)

- C-API: Improved TRACE logging. Changed to use proper datastore names.

(ENG-18126, RT:32110, PS-27936)

- CDB: Memory consumption has been reduced when using a large number of
CDB subscribers with many subscription points.

(ENG-18750, RT:32377, PS-28111)

- CLI: Configuration files on curly bracket format would not load properly
if they
contained a leaf-list of type objectref, and the last character in the
was a ]. This has been fixed.


- CLI: Leaf lists of string type with tailf:cli-range-list-syntax can have
both integer ranges and string values as part of the same expression,
e.g. 1-3,t1,t2


- CLI: Missing error message regarding incorrect range boundaries for list
with tailf:cli-range-list-syntax is fixed.

(ENG-18768, RT:33297, PS-28772)

- CLI: Table headers (legends) would be displayed even when the list was
This has been fixed. Also, the de-select pipe target did not prevent
instances from being displayed. This has also been fixed.

(ENG-18748, RT:33242, PS-28729)

- CLI: The tailf:alt-name annotation was not respected when parsing show
commands in operational mode and expecting a match completion where
the keys were left out. This has been fixed.

(ENG-18730, RT:33086, PS-28613)

- CLI: The configuration diff (e.g. show configuration, commit dry-run
outformat native) after adding a prefix-leaf to an already existing list
instance annotated with tailf:cli-remove-before-change would place the
deletion of the list before adding the prefix-leaf. This has been fixed.

(ENG-18701, RT:33169, PS-28691)

- CLI: Running an oper mode show command from configuration mode would not
allow the use of 'select xxx' pipe targets. This has been fixed.

(ENG-18700, RT:33065, PS-28591)

- CLI: Containers annotated with 'tailf:cli-add-mode' would in some cases
be displayed in the C-style configuration diff (e.g. show configuration,
commit dry-run outformat native), even though they were not part of a
configuration change. This has been fixed.

(ENG-18664, RT:33131, PS-28631)

- CLI: Lists with 'tailf:cli-suppress-mode', 'ordered-by user' and
'tailf:cli-show-long-obu-diffs' would produce an erroneous diff when
deleting a child presence container. This has been fixed.

(ENG-18649, RT:32541, PS-28276)

- CLI: The CLI would not show all alternatives to a list node if the data
model contained a when expression that was set for the first existing
instance in the range. This has been fixed.

(ENG-18604, RT:32978, PS-28530)

- CLI: With new implementation of leaf-list after ncs-4.5, the performance
of set leaf-list with many instances is getting much slower in the case
that there is a when expression inside a np-container that depends on
the leaf-list. This has now been fixed.

(ENG-18586, RT:32958, PS-28536)

- CLI: The tailf:cli-table-footer would not recognize display-group
variables. This has been fixed.

(ENG-18583, RT:32412, PS-28135)

- CLI: YANG range sub statement to integer types, together with CLI range
expressions, worked only for int32. This has been fixed so that it works
with all integer types.

(ENG-18516, RT:30945, PS-27157)

- CLI: Aliases would be wrongly expanded when using the annotate and tag
commands on an alias definition. This has been fixed.

(ENG-18463, RT:31361, PS-27418)

- CLI: The CLI would restart if a show command was run on a specific list
instance if the data provider was down. This has been fixed.

(ENG-18456, RT:32839, RT:32442, PS-28217, PS-28433)

- CLI: When a leaf has the extension tailf:ned-ignore-compare-config, its
value was ignored in the commit dry-run output. But the extension
tailf:ned-ignore-compare-config shall only take effect in the
compare-config output not in the commit dry-run output. This has now
been fixed.

(ENG-18446, RT:32557, PS-28428)

- CLI: When showing tables with multiple nested lists, and the innermost
list was empty for the last entry in the table, only parts of the last
line would be shown. This has been fixed.

(ENG-18442, RT:31896, RT:32935, PS-28500, PS-27793)

- CLI: An internal error would be generated if a long string values
(longer than 255 characters) was entered in the CLI and the CLI
attempted to parse that as a YANG tag name. This has been fixed.

(ENG-18432, RT:32801, PS-28401)

- CLI: Invalid completion entries would be displayed for the 'show
configuration commit changes' command if a character was entered in
place of a number. This has been fixed.

(ENG-18405, RT:32766, PS-28373)

- CLI: Executing a show command to display the running configuration,
where an instance filter based on the value of a Boolean leaf, it would
fail to display any configuration when the pipe target 'display xml' was
used. This has been fixed.

(ENG-18399, RT:32701, PS-28327)

- CLI: A regression bug caused SSH login to the CLI with a password
containing semicolon to hang. This has been fixed.

(ENG-18397, RT:32736, PS-28354)

- CLI: An action parameter of type leaflist would not be correctly handled
when min-elements was set to more than 1. This has been fixed.

(ENG-18363, RT:31773, PS-27735)

- CLI: Lists with 'tailf:cli-suppress-mode', 'ordered-by user' and
'tailf:cli-show-long-obu-diffs' would produce an erroneous diff when
deleting a child leaf. This has been fixed.

(ENG-18359, RT:32541, PS-28276)

- CLI: The tailf:info text would not be displayed properly for leaves
using a type
that was defined in another namespace and where the tailf:info
was set in the type definition. This has been fixed.


- CLI: Executing 'show parser dump' concurrently in multiple CLI sessions
resulted in internal error. This has now been fixed.

(ENG-18332, RT:32652, PS-28281)

- CLI: The ncs_cli command would terminate after 30 seconds when used
non-interactively, if the input pipe was closed, for example, when used
like this
echo "show running-configuration" | ncs_cli
This has now been fixed. A workaround is to keep the input pipe open for
a short time after issuing the command, for example as follows
(echo "show running-configuration" ; sleep 2) | ncs_cli

(ENG-18255, RT:32428, RT:32710, RT:32754, PS-28161, PS-28336, PS-28389)

- CLI: Using a relative XPath expression for tailf:cli-diff-delete-after
and tailf:cli-diff-delete-before would in some cases cause the
dependency to be ignored.


- CLI: Annotations would not be displayed properly for embedded nodes in
the C- and I-style CLI. This has been fixed.

(ENG-18220, RT:31127, RT:33317, PS-27249, PS-28773)

- CLI: Activate or deactivate a leaf-list element resulted in internal
error. This has now been fixed.

(ENG-18219, RT:32440, PS-28168)

- CLI: A leaf with 'tailf:cli-prefix-key' of type enumeration (or union),
did not work with when-expression pointing to the list instance key.
This has been fixed.

(ENG-18162, RT:32351, PS-28097)

- CLI: The fault when range expression in leaf-list could start with a
delimiter (comma or minus sign) while tailf:cli-range-list-syntax is
enabled, is fixed.

(ENG-18076, RT:32074, PS-27917)

- CLI: When performing 'commit dry-run' in the CLI and some nodes had the
attributes ref_count and/or back_pointers (internal meta-data) set those
nodes would be listed as modified although nothing was listed in the
actual diff-set. This has been fixed by filtering out these nodes.

(ENG-18074, RT:32027, PS-27883)

- CLI: When enabling timestamps, the CLI could in certain cases print
these timestamps multiple times. This has been fixed.

(ENG-17913, RT:31954, PS-27834)

- CLI: The diff-dependency (tailf:cli-diff-delete-before) was not
triggered in the case of deleting a container inside a list which is
also inside another list. This has now been fixed.


- CLI: After deleting a list containing mandatory leafs with when
expressions, and then re-setting the list without committing, the
resulting configuration diff as displayed in curly bracket format would
in some cases be incorrect. This has been fixed.

(ENG-17840, RT:31871, PS-27790)

- CLI: Sometimes when doing a load merge in config shared mode it would
fail with an internal error. This has been fixed.

(ENG-17799, RT:31764, PS-27705)

- CLI: The CLI would consume 100% CPU after stdout has been closed and
while waiting for the input to be fully processes. This has been fixed.

(ENG-17725, RT:31224, PS-27360)

- CLI: Duplicate error message appeared as the result of "config" command
on slave node in HA mode with writable-through-candidate datastore. This
has been fixed.

(ENG-17710, RT:31655, PS-27623)

- CLI: When expressions were not taken into account when processing action
parameters, only when parsing them. The result was that leaves that
where not active due to a when expression would still be prompted for.
This has been fixed.

(ENG-17688, RT:31608, PS-27604)

- CLI: Modifying leaf-list annotated with 'ordered-by user' and displaying
the configuration diff in curly-braces format (ex. commit dry-run) and
if the parent was a list, the keys would be missing from the parent list
in the output. This has been fixed.

(ENG-17593, RT:31464, PS-27486)

- CLI: Comments would not be handled properly when they occurred at the
end of a line, and complete-on-space was enabled. A consequence was that
configuration with such comments could not be copy-and-pasted into the
CLI. This has been fixed. A workaround is to disable complete-on-space
while pasting configurations containing same-line comments.

(ENG-17550, RT:31223, PS-27327)

- CLI: The CLI would crash when performing tab completion for a list key,
if the list had multiple keys, and the leaf under completion had a must
expression referring to the list instance. This has been fixed.

(ENG-17534, RT:31351, PS-27420)

- CLI: Fixed the issue when non-existent config file in "load override"
caused deletion of all existing configuration.

(ENG-17340, RT:31051, PS-27197)

- CLI: The enabled/disabled shortcut for the enabled true/false leaf did
not work for action/rpc parameters. This has been fixed.

(ENG-17153, RT:30865, RT:32008, PS-27862, PS-27108)

- CLI: When calling a command which is defined in Clispec, in
non-interactive mode, the CLI should automatically provide 'yes' in
'confirmText' prompts.

(ENG-17053, RT:30721, RT:32573, PS-130, PS-28258)

- CLI: When a list has key with leafref referring to a child node under
the list, auto completion did not work properly for set but work for
delete the list key in the case that the leafref path is relative and
does not contain list name in the path. This has now been fixed.

(ENG-16859, RT:30621, PS-10161)

- CLI: Missing leaf range value check with tailf:cli-full-command is

(ENG-16601, RT:29730, PS-9702)

- CLI: After deleting a node either inside a list annotated with
tailf:cli-suppress-mode or in a modeless presence container, the command
'commit dry-run outformat native' would in some cases display an
incorrect configuration diff. This has been fixed.

(ENG-16501, RT:28647, PS-9182)

- CLI: Show templates for enter and legend would not be displayed for a
list if the child of the list was a list itself, and that list was
displayed as an auto-rendered table. This has been fixed.

(ENG-16057, RT:30277, PS-9965)

- CLI: The pipe target 'display prefixes' did not result in prefixes being
displayed when showing the configuration in the C- and I-style CLI. This
has been fixed.

(ENG-15787, RT:26748, PS-8460)

- CLI: Leaves with the tailf:cli-multi-value annotation would not properly
display multiple spaces between words when showing the configuration in
I- and C-style. Also, when entering leaf values multiple spaces would be
reduced to a single space. This has been fixed.

(ENG-15508, RT:21005, RT:32850, PS-6585, PS-28437)

- CLI: When using lists within lists in the data model the CLI would
sometimes not filter data correctly when using wildcards. This has been

(ENG-14384, RT:29376, PS-9527)

- CLI: Question mark completion for abbreviated commands did not show the
full set of possible completion candidates. This has now been fixed.

(ENG-14007, RT:28706, PS-9206)

- CLI: The ncs.conf setting restricted-file-regexp was not applied
properly. It is now applied to the base name of the entered

(ENG-13687, RT:29360, PS-9521)

- CLI: Annotations would not be displayed for a list instance in C- and
I-style CLI when a tailf:cli-suppress-mode annotation was used. This has
been fixed. However, all annotations cannot be displayed in C- and
I-style configuration formatting since configuration originating from
multiple YANG nodes are displayed on a single command line. For full
visibility of annotations it is recommended to use the "display
curly-braces" pipe target.

(ENG-2489, RT:29064, PS-9379)

- CLI: Running a show command on a path that is valid but without
configuration returned an error, this has been fixed such that it
instead returns ok.

(ENG-2453, RT:28761, RT:32577, PS-9227, PS-28247)

- Cluster: In the commit queue an LSA device node's address and port are
compared against the address and port of the cluster remote-node, to
match the LSA node to the cluster node. This comparison fails if one of
them is a hostname and the other is an IP address. This failure leads to
the upper LSA node failing to unlock remote queue-items, which means the
commit never finishes (ie., the remote queue-item is perpetually
locked). The mapping of LSA nodes to cluster nodes are now more robust
to support one of them being a hostname and the other an IP address.

(ENG-18344, RT:32555, PS-28245)

- Cluster: Previously an NSO in HA mode 'none' could crash when getting an
event notification from the 'ncs-events' stream from a lower cluster
node. Also in the event of a HA failover or when NSO is booting up a
race condition could occur where an event notification from a lower
cluster node could appear to be handled by the commit queue even though
it was not, leaving the queue item waiting for it indefinitely. This has
now been fixed.

(ENG-18330, RT:32662, PS-28301)

- Examples: The usage of MAAPI sockets in the
getting-started/developing-with-ncs/18-simple-service-erlang example
has been corrected and clarified.


- JSON-RPC: Modifications on hidden leafs under a subscription point was
reported even though the schema was not unhidden, this has been fixed.

(ENG-18320, RT:32325, PS-28077)

- JSON-RPC: Empty strings was not forwarded to action callbacks, this has
been fixed.

(ENG-18218, RT:32405, PS-28129)

- JSON-RPC: Setting
/devices/global-settings/commit-queue/enabled-by-default to true did not
result in a commit queue id being returned. This has been fixed.

(ENG-15516, RT:26420, PS-8342)

- NCT: Fixed issue with nct-upgrade backup functionality that did not work
with the new backup file extension.


- NED: Failed to parse errors in the trace file would not be generated for
commands. This has been fixed.

(ENG-18643, RT:32864, PS-28454)

- NETCONF: If an invalid <default-operation> was sent in an <edit-config>
request, the session would terminate instead of sending an <rpc-error>.
This bug has been fixed.

(ENG-18331, RT:32302, PS-28062)

- Python API: After deleting all list instances using the
ncs.maagic.List.delete() method it was impossible to call create(),
exist() etc. on that list object. This has been fixed.

(ENG-18322, RT:32586, RT:32725, PS-28491, PS-28260)

- Python API: Make it possible (again) to build the Python API using an
installed release.

(ENG-18139, RT:32340, PS-28087)

- Python API: Closing a Maapi or Transaction object without detaching from
an attached session will now raise an Exception to avoid unintentional
closing of user sessions.

(ENG-17984, RT:28348, PS-26436)

- REST API: query XML response did not include xmlns on the elements under
data even though there was a namespace change, this has been fixed.

(ENG-14815, RT:30106, PS-9885)

- RESTCONF: Augmented namespaces in the RESTCONF Yang Patch JSON payload
was handled wrong.


- RESTCONF: When a yang model contained a list with a child container,
both with the same name, the JSON representation of the data was
The child container name was missing from the JSON output generated.

(ENG-16269, RT:29736, RT:32523, PS-9706, PS-28223)

- SNMP Agent: If SNMPv3 USM authentication failed, the
authenticationFailure notification was not generated. This bug has been

(ENG-17860, RT:31895, PS-27798)

- Smart Licensing: Support for running smart licensing with openjdk >=9
was added.


- Toolchain: ncs-project update would display an internal error string
when it failed to clone a git repository. This has been fixed.


- Toolchain: CLI extensions such as tailf:cli-configure-mode and
tailf:cli-operational-mode that are valid for tailf:action were not
accepted by the compiler for YANG 1.1 'action'. This has been fixed.

(ENG-18272, RT:32483, PS-28190)

- Toolchain: The YANG compiler did not apply the result of evaluating the
'if-feature' substatement for 'augment', nor for the "top-level" nodes
in the augment section - i.e. the nodes were included regardless of
which features were supported. This bug was introduced by the correction
to ignore 'augment', 'deviation', and 'tailf:annotate' when the target
node had been removed due to 'if-feature' evaluation (Issue tracker:
#25936, #27441), and has now been fixed.

(ENG-18183, RT:32341, PS-28096)

- Toolchain: Using ncs-project with a package defined to use a git branch,
the "update" stage could fail if the package-meta-data was updated to
use a new branch. This has been fixed.


- Toolchain: The YANG compiler did not report errors/warnings for paths
referencing nodes that were removed due to 'if-feature' evaluation: it
would either fail with "internal error" (for a 'leafref' path) or
succeed without any report (for a 'must'/'when' expression). This bug
was introduced by the correction to ignore 'augment', 'deviation', and
'tailf:annotate' when the target node had been removed due to
'if-feature' evaluation (Issue tracker: #25936, #27441), and has now
been fixed.

(ENG-18123, RT:32309, PS-28067)

- Toolchain: Removed unnecessary compiler warnings appearing when
compiling NEDs.


- Toolchain: Leafrefs in top-level typedefs in submodules could give false
compilation errors. This bug has been fixed.

(ENG-18062, RT:32185, PS-28000)

- Toolchain: ncsc help and manual page did not include --prefix option for
--emit-mib, this has been fixed.

(ENG-16740, RT:30329, PS-9994)

- Toolchain: If a leaf had 'type leafref' with tailf:info and a path to a
different YANG module, the tailf:info text would be lost. This has been


- Web Server: redirect setting did not work on non authenticated
connections. This has been fixed.

(ENG-17937, RT:32040, PS-27896)

- XPath: XPath starts-with() on strings with colon returns incorrect
result. This regression has now been fixed.

(ENG-18619, RT:33052, PS-28571)

- webui-one: Default web-ui applications are not initially stored in the
CDB anymore. It is still possible to add the applications to hide or
customize titles, keyboard shortcuts and other meta data.


- webui-one: In Device Manager:
Not warning was displayed when a user tried to create a device that
already existed.
This has been fixed.


- webui-one: In modal for creating a leaf-list item that is a leaf-ref.
Entering a value or selecting from drop-down did not enable the confirm
This has been fixed.


- webui-one: When navigating with the breadcrumb to a list with different
namespace then it's parent the list was always displayed as empty.
This has been fixed.


- webui-one: Applications with no href were still rendered in the Shortcut
This has now been fixed.


- webui-one: Application links with a relative URL ('/foo') got prepended
with the webui-one prefix, which resulted in an invalid URL
This has now been fixed.


- webui-one: Cisco fonts were sometimes loaded from local files instead as
a network resource. This has now been fixed.


- webui-one: In a create modal for leaf-list item to a leaf-ref.
When a user selected an option with key-typing (ce + down-arrow) and
pressed enter an item with only the entered keys was created (ce not
This has been fixed.


- webui-one: Trying to sort a leaf-list will caused an error. This has
been fixed by disabling sorting on leaf-lists in webui-one.


- webui-one: When a user tried to change a leafref with a dependency to a
list-entry with multiple keys the page was not updated correctly. A page
refresh was needed to display the new content.
This has been fixed.

(ENG-18356, RT:32241, PS-28026)

- webui-one: The breadcrumb navigation input box was always shown with a
"/" in front even when trying to navigate inside a list. This has now
been fixed with curly braces surrounding the input box to indicate
navigation within a list.


- webui-one: When a user tried to add a new list item with two leafref
keys. The leafref values from the first leafref was shown in the
drop-down for the second leafref. This has been fixed.


- webui-one: Nodes below a presence container where not deleted in the
webui when a delete notification for the container was received on the
comet channel.
This has now been fixed.


- webui-one: The create button for presence container was not hidden when
the container was created in another transaction. This has been fixed.


- webui-one: The webui could not render some pages when a key contained a
dot "."
This has been fixed.


- webui-one: When navigating via the breadcrumb input box, suggestions was
shown with when statements that was evaluated to false. This has now
been fixed.


- webui-one: The breadcrumb input field always contained non-config
entries. This has now been fixed by hiding oper data when 'show oper
data' is unchecked.


- webui-one: The font size inside tooltip was too small. Increased it by a
small amount.


- webui-one: When navigating via the breadcrumb input box, errors were
thrown when trying to navigate to non existing node. This has now been


- webui-one: The tailf:info attribute was not visible for enumeration
This has been fixed.


- webui-one: The modal dialog for adding new list items closed immediately
after clicking add, regardless of if the operation was successful or not
which forced the user to fill out the modal again if there was an error.
This has been fixed and the modal now waits for a positive response
before closing.


- webui-one: A tooltip was not rendered for primitive keys in a
schema-based modal dialog.
This has been fixed.