Management Plane API
The management API is made up of different libraries.
Vyatta Config Perl API
This is the original Vyatta management API. A fairly large portion of the system still uses this API to get access to configuration data.
The API is built as a compatibility layer on top of the newer Configd API with the original behavior retained. Changes to this layer must be checked as some of the actions have subtle implications that scripts may be relying on. These scripts are considered legacy and are currently being replaced by VCI components.
The API has remained backwards compatible since 2011, only extensions in functionality have been made in ways that were compatible with the old APIs.
Configd is a more recent API for interfacing with the configuration infrastructure. This API can manipulate configuration, access configuration, and manage configuration sessions. It is available in several languages, including Go, C, C++, Perl 5, Python 3, Ruby and bash. Each language has the same semantics as its peers with minor additions to provide language native helpers.
The CLI, NETCONF, and RestAPI are all built on top of the configd API.
The Vyatta Component Infrastructure (VCI) is the latest mechanism for integrating features with the management plane. It consists of a very small API and may only be extended in a backwards compatible way.
The components each expose a data-model consisting of the YANG modules they manage. Configuration data in this model is transformed by the component into a form that will be understood by the service implementing the functionality. Likewise, operational data is retrieved from a service and transformed into a data-model by the component. Components also implement RPCs and react to notifications from other components.
VCI is the API that the majority of extensions will interact with, it allows an extension to have integration with the management infrastructure layer and consequently all of the northbound interfaces.
The opd API provides access to the operational command tree.
It allows building of operational command interfaces on top of the opd infrastructure. The VNOS operational CLI and REST API both use this API to run operational commands.
AAA Plugin API
The AAA API allows creation of a plugin to integrate with the AAA system of choice, it can either implement command based accounting, path based accounting or both.
VNOS uses the YANG data modeling language for all user visible information.
This includes configuration data, operational information, RPCs and notifications. Strictly following Section 10 (https://tools.ietf.org/html/rfc6020#section-10) rules to ensure releases are backwards compatible with each other. This applies even when something may have been modeled sub-optimally in the past.