mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-01 14:35:29 +00:00
[#1077] model => module
This commit is contained in:
@@ -26,7 +26,7 @@ Note that although the initial focus is on translation from YANG to JSON (so
|
|||||||
Kea can retrieve its configuration), the opposite translation direction -
|
Kea can retrieve its configuration), the opposite translation direction -
|
||||||
from JSON to YANG - is also very useful, for at least three reasons. First,
|
from JSON to YANG - is also very useful, for at least three reasons. First,
|
||||||
in many cases we can use it in tests to check that conversion back and forth
|
in many cases we can use it in tests to check that conversion back and forth
|
||||||
doesn't lose anything: yang = toYang(toJson(yang)). Second, YANG models
|
doesn't lose anything: yang = toYang(toJson(yang)). Second, YANG modules
|
||||||
cover two major types of data: configuration and run-time state. While
|
cover two major types of data: configuration and run-time state. While
|
||||||
we're initially focusing on getting the configuration, the run-time state
|
we're initially focusing on getting the configuration, the run-time state
|
||||||
is something that Kea is expected to provide. Kea uses JSON internally in many
|
is something that Kea is expected to provide. Kea uses JSON internally in many
|
||||||
@@ -53,13 +53,13 @@ the basic / base class and recursively from translators for embedded parts.
|
|||||||
@section yangTranslatorPool Pool translator
|
@section yangTranslatorPool Pool translator
|
||||||
|
|
||||||
@c isc::yang::TranslatorPool is the standard example of a translator
|
@c isc::yang::TranslatorPool is the standard example of a translator
|
||||||
for a structured value. Its constructor takes a model name: the code
|
for a structured value. Its constructor takes a module name: the code
|
||||||
implements some variants to accommodate the model with shared code
|
implements some variants to accommodate the module with shared code
|
||||||
moved into a common private routine. When called with an unsupported
|
moved into a common private routine. When called with an unsupported
|
||||||
model, generic methods of all structure translators throw
|
module, generic methods of all structure translators throw
|
||||||
@c isc::NotImplemented.
|
@c isc::NotImplemented.
|
||||||
|
|
||||||
Note pools show two shortcomings in IETF models:
|
Note pools show two shortcomings in IETF modules:
|
||||||
- option sets make to track changes nearly impossible: the only easy
|
- option sets make to track changes nearly impossible: the only easy
|
||||||
code is to translate the whole configuration.
|
code is to translate the whole configuration.
|
||||||
- prefix and start - end forms of pool ranges are both mandatory.
|
- prefix and start - end forms of pool ranges are both mandatory.
|
||||||
@@ -86,7 +86,7 @@ to pools and back.
|
|||||||
Adaptors are tools which adapts JSON complete or partial configuration
|
Adaptors are tools which adapts JSON complete or partial configuration
|
||||||
before translation to YANG to ease this translation or after translation
|
before translation to YANG to ease this translation or after translation
|
||||||
from YANG to follow the Kea syntax, for instance by adding static
|
from YANG to follow the Kea syntax, for instance by adding static
|
||||||
components which are not in the model.
|
components which are not in the module.
|
||||||
|
|
||||||
Methods provided by adaptors are class methods (i.e. declared static).
|
Methods provided by adaptors are class methods (i.e. declared static).
|
||||||
Specific adaptors can be derived from the isc::yang::Adaptor base class.
|
Specific adaptors can be derived from the isc::yang::Adaptor base class.
|
||||||
@@ -95,16 +95,16 @@ There are a few basic adaptors and per structure adaptors. The second
|
|||||||
category of adaptors are divided into:
|
category of adaptors are divided into:
|
||||||
- from JSON to YANG adaptors or pre-processing which adapt a JSON
|
- from JSON to YANG adaptors or pre-processing which adapt a JSON
|
||||||
configuration to make it acceptable by a from JSON to YANG (setXXX)
|
configuration to make it acceptable by a from JSON to YANG (setXXX)
|
||||||
translators. For a Kea model this kind of adaptors fill some required
|
translators. For a Kea module this kind of adaptors fill some required
|
||||||
but missing fields, or only transform a configuration into a canonical
|
but missing fields, or only transform a configuration into a canonical
|
||||||
form. Note for a Kea model and a configuration taken from config-get
|
form. Note for a Kea module and a configuration taken from config-get
|
||||||
or config-write it likely does nearly nothing but the code must
|
or config-write it likely does nearly nothing but the code must
|
||||||
handle any hand written configuration so these adaptors are always
|
handle any hand written configuration so these adaptors are always
|
||||||
applied.
|
applied.
|
||||||
|
|
||||||
- from YANG to JSON adaptors or post-processing which adapt translated
|
- from YANG to JSON adaptors or post-processing which adapt translated
|
||||||
YANG configuration (by getXXX) to make it acceptable by a Kea server.
|
YANG configuration (by getXXX) to make it acceptable by a Kea server.
|
||||||
By definition they are not defined for Kea models.
|
By definition, they are not defined for Kea modules.
|
||||||
|
|
||||||
@section unitTestsSysrepo Running unit tests with Sysrepo
|
@section unitTestsSysrepo Running unit tests with Sysrepo
|
||||||
|
|
||||||
@@ -117,24 +117,24 @@ To run YANG/NETCONF/Sysrepo tests you need to compile Kea with Sysrepo support:
|
|||||||
For details, see Section "YANG/NETCONF support" in the Kea Administrator
|
For details, see Section "YANG/NETCONF support" in the Kea Administrator
|
||||||
Reference Manual: https://kea.readthedocs.io/en/latest/arm/netconf.html.
|
Reference Manual: https://kea.readthedocs.io/en/latest/arm/netconf.html.
|
||||||
|
|
||||||
You also need to install YANG models, so the unit tests are able to
|
You also need to install YANG modules, so the unit tests are able to
|
||||||
retrieve, add, update and generally interact with the sysrepo information.
|
retrieve, add, update and generally interact with the sysrepo information.
|
||||||
There are several Kea models (src/share/yang/modules/*.yang), mostly usable in
|
There are several Kea modules (src/share/yang/modules/*.yang), mostly usable in
|
||||||
production, but one called keatest-module is only used in unit tests. To be able
|
production, but one called keatest-module is only used in unit tests. To be able
|
||||||
to run unit tests as a non-root user, which is the recommended way, make sure
|
to run unit tests as a non-root user, which is the recommended way, make sure
|
||||||
the sysrepo repository and /dev/shm/sr* are owned by said user. One way to
|
the sysrepo repository and /dev/shm/sr* are owned by said user. One way to
|
||||||
prevent sporadic chown-ing is to install sysrepo and the Kea models as non-root.
|
prevent sporadic chown-ing is to install sysrepo and the Kea modules as non-root.
|
||||||
|
|
||||||
To install all the models, run the following script:
|
To install all the modules, run the following script:
|
||||||
|
|
||||||
@verbatim
|
@verbatim
|
||||||
./src/share/yang/modules/utils/reinstall.sh
|
./src/share/yang/modules/utils/reinstall.sh
|
||||||
@endverbatim
|
@endverbatim
|
||||||
|
|
||||||
Alternatively to install each model, issue the following command:
|
Alternatively to install each module, issue the following command:
|
||||||
|
|
||||||
@verbatim
|
@verbatim
|
||||||
sysrepoctl -i "src/share/yang/modules/${model}.yang"
|
sysrepoctl -i "src/share/yang/modules/${module}.yang"
|
||||||
@endverbatim
|
@endverbatim
|
||||||
|
|
||||||
To verify that you have the schemas installed, do this:
|
To verify that you have the schemas installed, do this:
|
||||||
@@ -160,7 +160,7 @@ of keatest-module:
|
|||||||
- kea-dhcp4-server
|
- kea-dhcp4-server
|
||||||
- kea-dhcp6-server
|
- kea-dhcp6-server
|
||||||
|
|
||||||
Those models depend on the following modules:
|
Those modules depend on the following modules:
|
||||||
- ietf-inet-types
|
- ietf-inet-types
|
||||||
- ietf-yang-types
|
- ietf-yang-types
|
||||||
- ietf-interfaces
|
- ietf-interfaces
|
||||||
|
Reference in New Issue
Block a user