Kea  2.1.7-git
isc::yang::TranslatorOptionData Class Reference

Option data translation between YANG and JSON. More...

#include <translator_option_data.h>

+ Inheritance diagram for isc::yang::TranslatorOptionData:

Public Member Functions

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

Option data translation between YANG and JSON.

JSON syntax for Kea DHCP with command channel is:

{
"code": <code>,
"name": <name>,
"space": <space>,
"csv-format": <csv format flag>,
"data": <value>,
"always-send": <always send flag>,
"user-context": { <json map> },
"comment": "<comment>"
}

YANG syntax for kea-dhcp[46] with code and space as keys is:

+--rw option-data* [code space]
+--rw code uint8
+--rw space string
+--rw name? string
+--rw data? string
+--rw csv-format? boolean
+--rw always-send? boolean
+--rw user-context? user-context

An example in JSON and YANG formats:

[
{
"code": 100,
"space": "dns",
"csv-format": false,
"data": "12121212",
"always-send": false
}
]
/kea-dhcp6-server:config (container)
/kea-dhcp6-server:config/
option-data[code='100'][space='dns'] (list instance)
/kea-dhcp6-server:config/
option-data[code='100'][space='dns']/code = 100
/kea-dhcp6-server:config/
option-data[code='100'][space='dns']/space = dns
/kea-dhcp6-server:config/
option-data[code='100'][space='dns']/data = 12121212
/kea-dhcp6-server:config/
option-data[code='100'][space='dns']/csv-format = false
/kea-dhcp6-server:config/
option-data[code='100'][space='dns']/always-send = false

A translator class for converting an option data between YANG and JSON.

Currently supports on kea-dhcp[46]-server, not yet ietf-dhcpv6-server.

Definition at line 76 of file translator_option_data.h.

Constructor & Destructor Documentation

◆ TranslatorOptionData()

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

Constructor.

Parameters
sessionSysrepo session.
modelModel name.

Definition at line 21 of file translator_option_data.cc.

◆ ~TranslatorOptionData()

isc::yang::TranslatorOptionData::~TranslatorOptionData ( )
virtual

Destructor.

Definition at line 26 of file translator_option_data.cc.

Member Function Documentation

◆ getOptionData()

ElementPtr isc::yang::TranslatorOptionData::getOptionData ( const std::string &  xpath)

Get and translate an option data from YANG to JSON.

Parameters
xpathThe xpath of the option data.
Returns
JSON representation of the option data.
Exceptions
SysrepoErrorwhen sysrepo raises an error.

Definition at line 30 of file translator_option_data.cc.

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

Referenced by isc::yang::TranslatorOptionDataList::getOptionDataListKea().

+ Here is the call graph for this function:

◆ getOptionDataKea()

ElementPtr isc::yang::TranslatorOptionData::getOptionDataKea ( const std::string &  xpath)
protected

getOptionData JSON for kea-dhcp[46].

Parameters
xpathThe xpath of the option data.
Returns
JSON representation of the option data.
Exceptions
SysrepoErrorwhen sysrepo raises an error.

Definition at line 46 of file translator_option_data.cc.

References isc::util::str::format(), isc::yang::TranslatorBasic::getItem(), and isc_throw.

Referenced by getOptionData().

+ Here is the call graph for this function:

◆ setOptionData()

void isc::yang::TranslatorOptionData::setOptionData ( const std::string &  xpath,
isc::data::ConstElementPtr  elem 
)

Translate and set option data from JSON to YANG.

Parameters
xpathThe xpath of the option data.
elemThe JSON element.

Definition at line 81 of file translator_option_data.cc.

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

Referenced by isc::yang::TranslatorOptionDataList::setOptionDataListKea().

+ Here is the call graph for this function:

◆ setOptionDataKea()

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

setOptionData for kea-dhcp[46].

Parameters
xpathThe xpath of the option data.
elemThe JSON element.

Definition at line 100 of file translator_option_data.cc.

References isc::util::str::format(), isc::yang::Adaptor::getContext(), and isc::yang::TranslatorBasic::setItem().

Referenced by setOptionData().

+ Here is the call graph for this function:

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