Kea 2.2.0
isc::yang::TranslatorHost Class Reference

Translation between YANG and JSON for a single host reservation. More...

#include <translator_host.h>

+ Inheritance diagram for isc::yang::TranslatorHost:

Public Member Functions

 TranslatorHost (sysrepo::S_Session session, const std::string &model)
 Constructor. More...
 
virtual ~TranslatorHost ()
 Destructor. More...
 
isc::data::ElementPtr getHost (const std::string &xpath)
 Get and translate a host reservation from YANG to JSON. More...
 
void setHost (const std::string &xpath, isc::data::ConstElementPtr elem)
 Translate and set host reservation from JSON to YANG. More...
 
- Public Member Functions inherited from isc::yang::TranslatorOptionDataList
 TranslatorOptionDataList (sysrepo::S_Session session, const std::string &model)
 Constructor. More...
 
virtual ~TranslatorOptionDataList ()
 Destructor. More...
 
isc::data::ConstElementPtr getOptionDataList (const std::string &xpath)
 Get and translate option data list from YANG to JSON. More...
 
void setOptionDataList (const std::string &xpath, isc::data::ConstElementPtr elem)
 Translate and set option data list from JSON to YANG. More...
 
- Public Member Functions inherited from isc::yang::TranslatorOptionData
 TranslatorOptionData (sysrepo::S_Session session, const std::string &model)
 Constructor. More...
 
virtual ~TranslatorOptionData ()
 Destructor. More...
 
isc::data::ElementPtr getOptionData (const std::string &xpath)
 Get and translate an option data from YANG to JSON. More...
 
void setOptionData (const std::string &xpath, isc::data::ConstElementPtr elem)
 Translate and set option data from JSON to YANG. More...
 
- Public Member Functions inherited from isc::yang::TranslatorBasic
 TranslatorBasic (sysrepo::S_Session session, const std::string &model)
 Constructor. More...
 
virtual ~TranslatorBasic ()
 Destructor. More...
 
void checkAndGetLeaf (isc::data::ElementPtr &storage, const std::string &xpath, const std::string &name)
 Retrieves an item and stores it in the specified storage. More...
 
void checkAndSetLeaf (isc::data::ConstElementPtr const &from, std::string const &xpath, std::string const &name, sr_type_t const type)
 Get an element from given ElementPtr node and set it in sysrepo at given xpath. More...
 
void delItem (const std::string &xpath)
 Delete basic value from YANG. More...
 
template<typename functor_t >
void forAll (std::string const &xpath, functor_t f)
 Run a function for a node and all its children. More...
 
isc::data::ElementPtr getItem (const std::string &xpath)
 Get and translate basic value from YANG to JSON. More...
 
isc::data::ElementPtr getItems (const std::string &xpath)
 Get and translate a list of basic values from YANG to JSON. More...
 
template<typename T >
isc::data::ElementPtr getList (std::string const &xpath, T &t, isc::data::ElementPtr(T::*f)(std::string const &xpath))
 Retrieve a list as ElementPtr from sysrepo from a certain xpath. More...
 
sysrepo::S_Vals getValuesFromItems (std::string const &xpath)
 Get the values of all siblings at a certain xpath. More...
 
void setItem (const std::string &xpath, isc::data::ConstElementPtr elem, sr_type_t type)
 Translate and set basic value from JSON to YANG. More...
 

Protected Member Functions

isc::data::ElementPtr getHostKea (const std::string &xpath)
 getHost for kea-dhcp[46]-server models. More...
 
void setHostKea (const std::string &xpath, isc::data::ConstElementPtr elem)
 setHost for kea-dhcp[46]-server models. More...
 
- Protected Member Functions inherited from isc::yang::TranslatorOptionDataList
isc::data::ConstElementPtr getOptionDataListKea (const std::string &xpath)
 getOptionDataList for kea-dhcp[46]. More...
 
void setOptionDataListKea (const std::string &xpath, isc::data::ConstElementPtr elem)
 setOptionDataList for kea-dhcp[46]. More...
 
- Protected Member Functions inherited from isc::yang::TranslatorOptionData
isc::data::ElementPtr getOptionDataKea (const std::string &xpath)
 getOptionData JSON for kea-dhcp[46]. More...
 
void setOptionDataKea (const std::string &xpath, isc::data::ConstElementPtr elem)
 setOptionData for kea-dhcp[46]. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from isc::yang::TranslatorBasic
static sysrepo::S_Val value (isc::data::ConstElementPtr elem, sr_type_t type)
 Translate basic value from JSON to YANG. More...
 
static isc::data::ElementPtr value (sysrepo::S_Val s_val)
 Translate basic value from YANG to JSON. More...
 
- Protected Attributes inherited from isc::yang::TranslatorBasic
std::string model_
 The model. More...
 
sysrepo::S_Session session_
 The sysrepo session. More...
 

Detailed Description

Translation between YANG and JSON for a single host reservation.

JSON syntax for kea-dhcp4 is:

{
"hw-address": <hardware address>,
"duid": <duid>,
"circuit-id": <circuit id>,
"client-id": <client id>,
"flex-id": <flex id>,
"ip-address": <ipv4 reserved address>,
"hostname": <hostname>,
"next-server": "<next server>",
"server-hostname": "<server hostname>",
"boot-file-name": "<boot file name>",
"client-classes": "<client class names>",
"option-data": [ <list of option data> ],
"user-context": { <json map> },
"comment": "<comment>"
}

JSON syntax for kea-dhcp6 is:

{
"hw-address": <hardware address>,
"duid": <duid>,
"flex-id": <flex id>,
"ip-addresses": <ipv6 reserved addresses>,
"prefixes": <ipv6 reserved prefixes>,
"hostname": <hostname>,
"client-classes": "<client class names>",
"option-data": [ <list of option data> ],
"user-context": { <json map> },
"comment": "<comment>"
}

YANG syntax for kea-dhcp[46] is with identifier-type and identifier as the list keys:

+--rw identifier-type host-identifier-type
+--rw identifier string
+--rw hostname? string
+--rw client-classes* string
+--rw option-data* [code space]
+--rw user-context? user-context
DHCPv4 only:
+--rw ip-address? inet:ipv4-address
+--rw next-server? inet:ipv4-address
+--rw server-hostname? string
+--rw boot-file-name? string
DHCPv6 only:
+--rw ip-addresses* inet:ipv6-address
+--rw prefixes* inet:ipv6-prefix

An example in JSON and YANG formats:

[
{
"flex-id": "00:ff",
"ip-address": "10.0.0.1",
"hostname": "foo"
}
]
/kea-dhcp4-server:config (container)
/kea-dhcp4-server:config/subnet4[id='111'] (list instance)
/kea-dhcp4-server:config/subnet4[id='111']/id = 111
/kea-dhcp4-server:config/subnet4[id='111']/subnet = 10.0.0.0/24
/kea-dhcp4-server:config/subnet4[id='111']/
host[identifier-type='flex-id'][identifier='00:ff'] (list instance)
/kea-dhcp4-server:config/subnet4[id='111']/
host[identifier-type='flex-id'][identifier='00:ff']/
identifier-type = flex-id
/kea-dhcp4-server:config/subnet4[id='111']/
host[identifier-type='flex-id'][identifier='00:ff']/
identifier = 00:ff
/kea-dhcp4-server:config/subnet4[id='111']/
host[identifier-type='flex-id'][identifier='00:ff']/
hostname = foo
/kea-dhcp4-server:config/subnet4[id='111']/
host[identifier-type='flex-id'][identifier='00:ff']/
ip-address = 10.0.0.1

A translator class for converting a host reservation between YANG and JSON.

Currently supported models are:

  • kea-dhcp4-server
  • kea-dhcp6-server

ietf-dhcpv6-server is not supported yet.

Definition at line 114 of file translator_host.h.

Constructor & Destructor Documentation

◆ TranslatorHost()

isc::yang::TranslatorHost::TranslatorHost ( sysrepo::S_Session  session,
const std::string &  model 
)

Constructor.

Parameters
sessionSysrepo session.
modelModel name.

Definition at line 21 of file translator_host.cc.

◆ ~TranslatorHost()

isc::yang::TranslatorHost::~TranslatorHost ( )
virtual

Destructor.

Definition at line 27 of file translator_host.cc.

Member Function Documentation

◆ getHost()

ElementPtr isc::yang::TranslatorHost::getHost ( const std::string &  xpath)

Get and translate a host reservation from YANG to JSON.

Parameters
xpathThe xpath of the host reservation.
Returns
JSON representation of the host reservation.
Exceptions
SysrepoErrorwhen sysrepo raises an error.

Definition at line 31 of file translator_host.cc.

References getHostKea(), isc_throw, isc::yang::TranslatorBasic::model_, and isc::Exception::what().

Referenced by isc::yang::TranslatorHosts::getHosts().

+ Here is the call graph for this function:

◆ getHostKea()

ElementPtr isc::yang::TranslatorHost::getHostKea ( const std::string &  xpath)
protected

getHost for kea-dhcp[46]-server models.

Parameters
xpathThe xpath of the host reservation.
Returns
JSON representation of the host reservation.

Definition at line 47 of file translator_host.cc.

References isc::yang::TranslatorBasic::getItem(), isc::yang::TranslatorBasic::getItems(), isc::yang::TranslatorOptionDataList::getOptionDataList(), isc_throw, and isc::yang::TranslatorBasic::model_.

Referenced by getHost().

+ Here is the call graph for this function:

◆ setHost()

void isc::yang::TranslatorHost::setHost ( const std::string &  xpath,
isc::data::ConstElementPtr  elem 
)

Translate and set host reservation from JSON to YANG.

Parameters
xpathThe xpath of the host reservation.
elemThe JSON element.

Definition at line 105 of file translator_host.cc.

References isc_throw, isc::yang::TranslatorBasic::model_, setHostKea(), and isc::Exception::what().

Referenced by isc::yang::TranslatorHosts::setHostsKea().

+ Here is the call graph for this function:

◆ setHostKea()

void isc::yang::TranslatorHost::setHostKea ( const std::string &  xpath,
isc::data::ConstElementPtr  elem 
)
protected

setHost for kea-dhcp[46]-server models.

Parameters
xpathThe xpath of the host reservation.
elemThe JSON element.

Definition at line 122 of file translator_host.cc.

References isc::yang::Adaptor::getContext(), isc::yang::TranslatorBasic::model_, isc::yang::TranslatorBasic::setItem(), and isc::yang::TranslatorOptionDataList::setOptionDataList().

Referenced by setHost().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: