Fix sending actions

DatastoreAccess::execute functions always expect input with the prefix
deleted. This does make the test somewhat prettier, because you don't
need to repeat the prefix all the time, however, this adds complexity to
the `execute` functions, because you have to consider that. Also what
really happens inside NetconfAccess/SysrepoAccess is that it just gets
concatenated again.

The actual bug is this: when using ProxyDatastore datastore to send
RPC/action, getItems is called to get the input. This algorithm was
supposed to strip the prefixes. But there was an error in this stripping
algorithm, because stripping an "action" path is more difficult than RPC
because it can be nested.

The solution: get rid of the compacted paths in input to simplify the
algorithms.

Also, there is another bug, where the output XPaths don't get the action
prefix trimmed because the input action path is fully prefixed, but the
output XPaths aren't. More info in comment.

Change-Id: I28acaffadb55d89e508d75d58d365a3523f295bb
5 files changed
tree: 33d159e42faaefc872a99bf7b8a7fa20db5809cd
  1. .clang-format
  2. .gitmodules
  3. .zuul.CzechLight-internal.yaml
  4. .zuul.public.yaml
  5. CMakeLists.txt
  6. Doxyfile.in
  7. LICENSE
  8. LICENSE.md
  9. README.md
  10. ci/
  11. cmake/
  12. docs/
  13. src/
  14. submodules/
  15. tests/
README.md

Console interface to NETCONF servers

This program provides an interactive console for working with YANG data. It can connect to NETCONF servers, and also talk to sysrepo locally.

Installation

For building, one needs:

  • A C++17 compiler
  • Boost version 1.69
  • cmake for managing the build
  • libyang for working with YANG models
  • libnetconf2 for connecting to NETCONF servers
  • sysrepo version 1.4.x for the local sysrepo backend, and for the comprehensive test suite
  • replxx which provides interactive line prompts
  • docopt for CLI option parsing
  • pkg-config for building
  • Doctest as a C++ unit test framework
  • trompeloeil for mock objects in C++

Use an exact commit of any dependencies as specified in submodules/dependencies/*.

The build process uses CMake. A quick-and-dirty build with no fancy options can be as simple as mkdir build && cd build && cmake .. && make && make install.

Bug Reporting

Issue reporting and feature requests are welcome via Taiga.io.

Development

We are using Gerrit for patch submission, code review and Continuous Integration (CI). Development roadmap and planning happens over Taiga.io.

Credits

Copyright © CESNET, https://www.cesnet.cz/ . Portions copyright © Faculty of Information Technology, Czech Technical University in Prague, https://fit.cvut.cz/ . Most of the code was written by Václav Kubernát (CESNET, formerly FIT ČVUT) and Jan Kundrát (CESNET). The project is distributed under the terms of the Apache 2.0 license.