Differences between revisions 69 and 70
Revision 69 as of 2019-03-20 08:25:10
Size: 5785
Editor: sartura
Comment:
Revision 70 as of 2019-03-26 09:26:56
Size: 5760
Editor: sartura
Comment: sysrepo consistent naming & minor style tweaks
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
Software applications and daemons almost always provide some sort of configuration mechanism. This is usually done via flat files which are often located somewhere in the /etc/ directory structure on Unix machines. There have been no successful approaches in the past to improve the current situation in which every application uses a different configuration style. A similar situation can be found with Inter-process communication (IPC) mechanisms which are often used for fetching the operational data and triggering arbitrary remote procedure call (RPC). The Sysrepo project aims to improve the current diverse situation and finally resolve the open questions on configuration and operational data management such as addressing various cofiguration file formats and glue code. Sysrepo enables the developers to write code and focus on the important functionality while Sysrepo takes care of configuration and operational data. Software applications and daemons almost always provide some sort of configuration mechanism. This is usually done via flat files which are often located somewhere in the /etc/ directory structure on Unix machines. There have been no successful approaches in the past to improve the current situation in which every application uses a different configuration style. A similar situation can be found with Inter-process communication (IPC) mechanisms which are often used for fetching the operational data and triggering arbitrary remote procedure call (RPC). The Sysrepo project aims to improve the current diverse situation and finally resolve the open questions on configuration and operational data management such as addressing various configuration file formats and glue code. Sysrepo enables developers to write code and focus on the important functionality while Sysrepo takes care of configuration and operational data.
Line 6: Line 6:
The main parts of Sysrepo project are '''Sysrepo Datastore''' and '''Netopeer 2 NETCONF Server''', both described below. The possible ways of application integration are shown on the [[Integration|integration page]]. The main components in Sysrepo are the '''Sysrepo Datastore''' and the '''Netopeer 2 NETCONF Server''', both described below. Possible ways of application integration are shown on the [[Integration|integration page]].
Line 11: Line 11:
Sysrepo is a[[http://tools.ietf.org/html/rfc6020|YANG]]-based configuration and operational datastore for Unix/Linux applications. Applications can use sysrepo to store their configuration modeled by provided YANG model instead of using e.g. flat configuration files. Sysrepo will ensure data consistency of the data stored in the datastore  and enforce data constraints defined by the YANG model. With the help of Netopeer 2 NETCONF server, the applications also automatically become remotely manageable via NETCONF. Sysrepo is a[[http://tools.ietf.org/html/rfc6020|YANG]]-based configuration and operational datastore for Unix/Linux applications. Applications can use Sysrepo to store their configuration modeled by the provided YANG model instead of using e.g. flat configuration files. Sysrepo will ensure data consistency of the data stored in the datastore and enforce data constraints defined by the YANG model. With the help of Netopeer 2 NETCONF server, the applications also automatically become remotely manageable via NETCONF.
Line 13: Line 13:
A high-level overview of Sysrepo can be seen in the image below A high-level overview of Sysrepo is shown in the image below
Line 17: Line 17:
Find out more about sysrepo datastore [[sysrepo-datastore|on this page]] or [[https://github.com/sysrepo/sysrepo|on GitHub]]. Find out more about Sysrepo datastore [[sysrepo-datastore|on this page]] or [[https://github.com/sysrepo/sysrepo|on GitHub]].
Line 20: Line 20:
Netopeer 2 is the 2nd generation of the well-known open-source NETCONF server, that uses sysrepo as the datastore implementation. Together they provide a complete NETCONF management framework for Linux. Netopeer 2 is the 2nd generation of the well-known open-source NETCONF server that uses Sysrepo as the datastore implementation. Together they provide a complete NETCONF management framework for Linux.
Line 28: Line 28:
== Other utilities used by the sysrepo project ==
The sysrepo project uses or is used by other projects in the ecosystem. At the moment we are keeping these tools available here with more information available on their respective pages.
== Other utilities used by the Sysrepo project ==
The Sysrepo project uses or is used by other projects in the ecosystem. At the moment we are keeping these tools available here with more information available on their respective pages.
Line 36: Line 36:
 * test new features.
 * find out if there are any regressions.
 * experiment with NETCONF in general.
 * Test new features
 * Find out if there are any regressions
 * Experiment with NETCONF in general
Line 42: Line 42:
Extending testconf with your custom defined tests shortens the time spent on repetitive tasks and helps to pinpoint bugs. This way developers can focus more on the implementation of new features. Extending testconf with your custom defined tests shortens the time spent on repetitive tasks and helps to pinpoint bugs. This way developers can focus more on implementing new features.
Line 46: Line 46:
Make testconf automatically run tests for data leafs of existing configuration data on the server. Check out more about autotesting feature [[http://www.sysrepo.org/autotests|here]]. testconf can automatically run tests for data leafs of existing configuration data on the server. Check out more about autotesting feature [[http://www.sysrepo.org/autotests|here]].
Line 64: Line 64:
The Sysrepo project has performance tests written in C and in Python2, the C performance tests are [[http://www.sysrepo.org/sysrepo-performance|here]] and the Python2 performance tests are [[http://www.sysrepo.org/python2/sysrepo-performance|here]]. The Sysrepo project has performance tests written in C and in Python2. The C performance tests are [[http://www.sysrepo.org/sysrepo-performance|here]] and the Python2 performance tests are [[http://www.sysrepo.org/python2/sysrepo-performance|here]].
Line 69: Line 69:
It's easy to get in touch with the team. You can reach us via public [email protected] or [email protected] mailing list. For non-public communication feel free to reach us at [email protected] . One can subscribe to the mailing lists [[http://lists.sysrepo.org/|here]]. We can also be reached via [[https://github.com/sysrepo/sysrepo/issues|GitHub]]. It's easy to get in touch with the team. You can reach us via public [email protected] or [email protected] mailing list. For non-public communication feel free to reach us at [email protected] . You can also subscribe to the mailing lists [[http://lists.sysrepo.org/|here]] or reach us on [[https://github.com/sysrepo/sysrepo/issues|GitHub]].

Sysrepo

Software applications and daemons almost always provide some sort of configuration mechanism. This is usually done via flat files which are often located somewhere in the /etc/ directory structure on Unix machines. There have been no successful approaches in the past to improve the current situation in which every application uses a different configuration style. A similar situation can be found with Inter-process communication (IPC) mechanisms which are often used for fetching the operational data and triggering arbitrary remote procedure call (RPC). The Sysrepo project aims to improve the current diverse situation and finally resolve the open questions on configuration and operational data management such as addressing various configuration file formats and glue code. Sysrepo enables developers to write code and focus on the important functionality while Sysrepo takes care of configuration and operational data.

The main components in Sysrepo are the Sysrepo Datastore and the Netopeer 2 NETCONF Server, both described below. Possible ways of application integration are shown on the integration page.

Sysrepo team members participated in the IETF96 Hackathon. Find out more.

Sysrepo Datastore

Sysrepo is aYANG-based configuration and operational datastore for Unix/Linux applications. Applications can use Sysrepo to store their configuration modeled by the provided YANG model instead of using e.g. flat configuration files. Sysrepo will ensure data consistency of the data stored in the datastore and enforce data constraints defined by the YANG model. With the help of Netopeer 2 NETCONF server, the applications also automatically become remotely manageable via NETCONF.

A high-level overview of Sysrepo is shown in the image below

Sysrepo high-level architecture

Find out more about Sysrepo datastore on this page or on GitHub.

Netopeer 2 NETCONF Server

Netopeer 2 is the 2nd generation of the well-known open-source NETCONF server that uses Sysrepo as the datastore implementation. Together they provide a complete NETCONF management framework for Linux.

Find out more about Netopeer 2 on the github.

To see how Sysrepo & Netopeer 2 can be used to make an existing Linux application remotely manageable via NETCONF in a few hours, see our dnsmasq demo, snabb demo or openssh demo.

For an existing Lua Linux application see snabb demo.

Other utilities used by the Sysrepo project

The Sysrepo project uses or is used by other projects in the ecosystem. At the moment we are keeping these tools available here with more information available on their respective pages.

testconf

The aim of this project is to provide a NETCONF testing suite.

testconf is implemented in Node.js and supports fast prototyping through testing of both NETCONF clients and NETCONF servers. That way developers can easily:

  • Test new features
  • Find out if there are any regressions
  • Experiment with NETCONF in general

testconf can be used to run interoperability tests as well which testifies to Sysrepo's cross-use functionality. Additionally, it can be used to generate template code from YANG models.

Extending testconf with your custom defined tests shortens the time spent on repetitive tasks and helps to pinpoint bugs. This way developers can focus more on implementing new features.

More info on the NETCONF testing suite can be found here.

testconf can automatically run tests for data leafs of existing configuration data on the server. Check out more about autotesting feature here.

The configuration management feature uses an ncurses-like interface for getting existing nodes from the device and editing them to your liking. Find out more about it here.

Similarly to snmp, testconf uses get, set and walk commands. All of these commands use XPATH to manipulate data nodes in NETCONF. Read more about it here.

Language bindings

Sysrepo supports Python 2, Python 3, Lua 5.1, Lua 5.2 and Java.

If you want to find out how to build and use the Python 3 bindings take a look at here.

If you want to find out how to build and use the Lua 5.2 bindings take a look at here.

If you want to find out how to build and use the Java bindings take a look at here.

If you want to find out how to use the Go bindings take a look at here.

Performance

The Sysrepo project has performance tests written in C and in Python2. The C performance tests are here and the Python2 performance tests are here.

Network performance tests via testconf are available here.

Contact

It's easy to get in touch with the team. You can reach us via public [email protected] or [email protected] mailing list. For non-public communication feel free to reach us at [email protected] . You can also subscribe to the mailing lists here or reach us on GitHub.

Sysrepo (last edited 2019-03-26 09:26:56 by sartura)