Kea  1.9.9-git
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 delItem (const std::string &xpath)
 Delete basic value from YANG. 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...
 
sysrepo::S_Iter_Value getIter (const std::string &xpath)
 List iterator methods keeping the session private. More...
 
std::string getNext (sysrepo::S_Iter_Value iter)
 Get xpath of the next YANG list item. 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 isc::data::ElementPtr value (sysrepo::S_Val s_val)
 Translate basic value from YANG to JSON. More...
 
static sysrepo::S_Val value (isc::data::ConstElementPtr elem, sr_type_t type)
 Translate basic value from JSON to YANG. 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 enumeration
+--rw identifier string
+--rw hostname? string
+--rw option-data*
+--rw client-classes* string
+--rw user-context? string
(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 112 of file translator_host.h.

Constructor & Destructor Documentation

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

Constructor.

Parameters
sessionSysrepo session.
modelModel name.

Definition at line 23 of file translator_host.cc.

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

Destructor.

Definition at line 29 of file translator_host.cc.

Member Function Documentation

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 33 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:

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 49 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:

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 107 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:

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 124 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: