Writing a YANG data modelΒΆ
The service structure is described using a YANG data model. All the services intended to work with polycube must derive from a base service definition that defines some common structures across all services (e.g., ports).
Polcyube includes three different base datamodels:
polycube-base: common definitions for all cube types
polycube-standard-base: base datamodel for standard cubes
polycube-transparent-base: base datamodel for transparent cubes
The polycube-base
datamodel must be always present, and polycube-standard-base
or polycube-trasparent-base
depending on the type of cube you are developing.
In order to derive from such base datamodel include the following line:
import polycube-base { prefix "polycube-base"; }
import polycube-standard-base { prefix "polycube-standard-base"; }
// or
import polycube-base { prefix "polycube-base"; }
import polycube-transparent-base { prefix "polycube-transparent-base"; }
In addition, if you are implementing a standard cube and the base definition of a port is not enough for the service, it is possible to use the augment keyword to insert additional nodes, as shown below:
uses "polycube-standard-base:standard-base-yang-module" {
augment ports {
// Put here additional port's fields.
}
}
The easiest way for starting to write a datamodel is to take a look to the existing ones:
Documentation about YANG can be found on RFC6020 and RFC7950.