Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Kea
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
416
Issues
416
List
Boards
Labels
Service Desk
Milestones
Merge Requests
66
Merge Requests
66
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
ISC Open Source Projects
Kea
Commits
fa842323
Commit
fa842323
authored
Oct 30, 2018
by
Francis Dupont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[153-netconf-agent] Reviewed changes and addressed last week comments
parent
afb5415a
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
96 additions
and
99 deletions
+96
-99
src/bin/netconf/netconf.cc
src/bin/netconf/netconf.cc
+41
-42
src/bin/netconf/netconf.h
src/bin/netconf/netconf.h
+4
-4
src/bin/netconf/netconf_messages.mes
src/bin/netconf/netconf_messages.mes
+33
-30
src/bin/netconf/netconf_process.cc
src/bin/netconf/netconf_process.cc
+2
-2
src/bin/netconf/netconf_process.h
src/bin/netconf/netconf_process.h
+1
-1
src/bin/netconf/tests/netconf_unittests.cc
src/bin/netconf/tests/netconf_unittests.cc
+14
-19
src/lib/yang/Makefile.am
src/lib/yang/Makefile.am
+1
-1
No files found.
src/bin/netconf/netconf.cc
View file @
fa842323
...
...
@@ -38,10 +38,10 @@ public:
/// @brief Server name and configuration pair.
CfgServersMapPair
service_pair_
;
/// @brief Module change callback.
/// @brief Module c
onfiguration c
hange callback.
///
/// This callback is called by sysrepo when there is a change to
///
configuration data
.
///
module configuration
.
///
/// @param sess The running datastore session.
/// @param module_name The module name.
...
...
@@ -52,7 +52,7 @@ public:
const
char
*
/*module_name*/
,
sr_notif_event_t
event
,
void
*
/*private_ctx*/
)
{
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
(
SR_ERR_DISCONNECT
);
}
ostringstream
event_type
;
...
...
@@ -77,11 +77,11 @@ public:
.
arg
(
event_type
.
str
());
string
xpath
=
"/"
+
service_pair_
.
second
->
getModel
()
+
":"
;
NetconfAgent
::
logChanges
(
sess
,
xpath
+
"config"
);
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
(
SR_ERR_DISCONNECT
);
}
NetconfAgent
::
logChanges
(
sess
,
xpath
+
"logging"
);
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
(
SR_ERR_DISCONNECT
);
}
switch
(
event
)
{
...
...
@@ -109,42 +109,42 @@ NetconfAgent::~NetconfAgent() {
void
NetconfAgent
::
init
(
NetconfCfgMgrPtr
cfg_mgr
)
{
if
(
NetconfProcess
::
global_shut_down_flag
||
!
cfg_mgr
)
{
if
(
NetconfProcess
::
shut_down
||
!
cfg_mgr
)
{
return
;
}
const
CfgServersMapPtr
&
servers
=
cfg_mgr
->
getNetconfConfig
()
->
getCfgServersMap
();
for
(
auto
pair
:
*
servers
)
{
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
// Retrieve configuration from existing running DHCP daemons.
keaConfig
(
pair
);
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
}
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
// Initialize sysrepo interface.
initSysrepo
();
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
for
(
auto
pair
:
*
servers
)
{
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
yangConfig
(
pair
);
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
subscribe
(
pair
);
if
(
NetconfProcess
::
global_shut_down_flag
)
{
subscribe
Config
(
pair
);
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
}
...
...
@@ -153,7 +153,7 @@ NetconfAgent::init(NetconfCfgMgrPtr cfg_mgr) {
void
NetconfAgent
::
clear
()
{
// Should be already set to true but in case...
NetconfProcess
::
global_shut_down_flag
=
true
;
NetconfProcess
::
shut_down
=
true
;
for
(
auto
subs
:
subscriptions_
)
{
subs
.
second
.
reset
();
}
...
...
@@ -199,7 +199,7 @@ NetconfAgent::keaConfig(const CfgServersMapPair& service_pair) {
.
arg
(
msg
.
str
());
return
;
}
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
if
(
rcode
!=
CONTROL_RESULT_SUCCESS
)
{
...
...
@@ -213,7 +213,7 @@ NetconfAgent::keaConfig(const CfgServersMapPair& service_pair) {
if
(
!
config
)
{
LOG_ERROR
(
netconf_logger
,
NETCONF_GET_CONFIG_FAILED
)
.
arg
(
service_pair
.
first
)
.
arg
(
"config-get returned an empty configuration"
);
.
arg
(
"config-get
command
returned an empty configuration"
);
return
;
}
LOG_INFO
(
netconf_logger
,
NETCONF_BOOT_UPDATE_COMPLETE
)
...
...
@@ -247,7 +247,7 @@ void
NetconfAgent
::
yangConfig
(
const
CfgServersMapPair
&
service_pair
)
{
// If we're shutting down, or the boot-update flag is not set or the model
// associated with it is not specified.
if
(
NetconfProcess
::
global_shut_down_flag
||
if
(
NetconfProcess
::
shut_down
||
!
service_pair
.
second
->
getBootUpdate
()
||
service_pair
.
second
->
getModel
().
empty
())
{
return
;
...
...
@@ -263,7 +263,6 @@ NetconfAgent::yangConfig(const CfgServersMapPair& service_pair) {
.
arg
(
service_pair
.
first
);
ConstElementPtr
config
;
try
{
// Retrieve configuration from Sysrepo.
TranslatorConfig
tc
(
startup_sess_
,
service_pair
.
second
->
getModel
());
config
=
tc
.
getConfig
();
...
...
@@ -284,14 +283,14 @@ NetconfAgent::yangConfig(const CfgServersMapPair& service_pair) {
}
}
catch
(
const
std
::
exception
&
ex
)
{
ostringstream
msg
;
msg
<<
"
YANG config-get
for "
<<
service_pair
.
first
msg
<<
"
get YANG configuration
for "
<<
service_pair
.
first
<<
" failed with "
<<
ex
.
what
();
LOG_ERROR
(
netconf_logger
,
NETCONF_SET_CONFIG_FAILED
)
.
arg
(
service_pair
.
first
)
.
arg
(
msg
.
str
());
return
;
}
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
ControlSocketBasePtr
comm
;
...
...
@@ -305,7 +304,7 @@ NetconfAgent::yangConfig(const CfgServersMapPair& service_pair) {
.
arg
(
msg
.
str
());
return
;
}
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
ConstElementPtr
answer
;
...
...
@@ -331,13 +330,13 @@ NetconfAgent::yangConfig(const CfgServersMapPair& service_pair) {
}
void
NetconfAgent
::
subscribe
(
const
CfgServersMapPair
&
service_pair
)
{
if
(
NetconfProcess
::
global_shut_down_flag
||
NetconfAgent
::
subscribe
Config
(
const
CfgServersMapPair
&
service_pair
)
{
if
(
NetconfProcess
::
shut_down
||
!
service_pair
.
second
->
getSubscribeChanges
()
||
service_pair
.
second
->
getModel
().
empty
())
{
return
;
}
LOG_
DEBUG
(
netconf_logger
,
NETCONF_DBG_TRACE
,
NETCONF_SUBSCRIBE
)
LOG_
INFO
(
netconf_logger
,
NETCONF_SUBSCRIBE_CONFIG
)
.
arg
(
service_pair
.
first
)
.
arg
(
service_pair
.
second
->
getModel
());
S_Subscribe
subs
(
new
Subscribe
(
running_sess_
));
...
...
@@ -354,7 +353,7 @@ NetconfAgent::subscribe(const CfgServersMapPair& service_pair) {
}
catch
(
const
std
::
exception
&
ex
)
{
ostringstream
msg
;
msg
<<
"module change subscribe failed with "
<<
ex
.
what
();
LOG_ERROR
(
netconf_logger
,
NETCONF_SUBSCRIBE_FAILED
)
LOG_ERROR
(
netconf_logger
,
NETCONF_SUBSCRIBE_
CONFIG_
FAILED
)
.
arg
(
service_pair
.
first
)
.
arg
(
service_pair
.
second
->
getModel
())
.
arg
(
msg
.
str
());
...
...
@@ -366,7 +365,7 @@ NetconfAgent::subscribe(const CfgServersMapPair& service_pair) {
int
NetconfAgent
::
validate
(
S_Session
sess
,
const
CfgServersMapPair
&
service_pair
)
{
if
(
NetconfProcess
::
global_shut_down_flag
||
if
(
NetconfProcess
::
shut_down
||
!
service_pair
.
second
->
getSubscribeChanges
()
||
!
service_pair
.
second
->
getValidateChanges
())
{
return
(
SR_ERR_OK
);
...
...
@@ -375,7 +374,8 @@ NetconfAgent::validate(S_Session sess, const CfgServersMapPair& service_pair) {
if
(
!
ctrl_sock
)
{
return
(
SR_ERR_OK
);
}
LOG_DEBUG
(
netconf_logger
,
NETCONF_DBG_TRACE
,
NETCONF_VALIDATE_CONFIG
)
LOG_DEBUG
(
netconf_logger
,
NETCONF_DBG_TRACE
,
NETCONF_VALIDATE_CONFIG_STARTED
)
.
arg
(
service_pair
.
first
);
ConstElementPtr
config
;
try
{
...
...
@@ -392,20 +392,20 @@ NetconfAgent::validate(S_Session sess, const CfgServersMapPair& service_pair) {
return
(
SR_ERR_DISCONNECT
);
}
else
{
LOG_DEBUG
(
netconf_logger
,
NETCONF_DBG_TRACE_DETAIL_DATA
,
NETCONF_VALIDATE_CONFIG
_CONFIG
)
NETCONF_VALIDATE_CONFIG
)
.
arg
(
service_pair
.
first
)
.
arg
(
prettyPrint
(
config
));
}
}
catch
(
const
std
::
exception
&
ex
)
{
ostringstream
msg
;
msg
<<
"
YANG config-get
for "
<<
service_pair
.
first
msg
<<
"
get YANG configuration
for "
<<
service_pair
.
first
<<
" failed with "
<<
ex
.
what
();
LOG_ERROR
(
netconf_logger
,
NETCONF_VALIDATE_CONFIG_FAILED
)
.
arg
(
service_pair
.
first
)
.
arg
(
msg
.
str
());
return
(
SR_ERR_VALIDATION_FAILED
);;
}
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
(
SR_ERR_DISCONNECT
);
}
ControlSocketBasePtr
comm
;
...
...
@@ -435,7 +435,7 @@ NetconfAgent::validate(S_Session sess, const CfgServersMapPair& service_pair) {
if
(
rcode
!=
CONTROL_RESULT_SUCCESS
)
{
stringstream
msg
;
msg
<<
"configTest returned "
<<
answerToText
(
answer
);
LOG_ERROR
(
netconf_logger
,
NETCONF_VALIDATE_CONFIG_
FAIL
ED
)
LOG_ERROR
(
netconf_logger
,
NETCONF_VALIDATE_CONFIG_
REJECT
ED
)
.
arg
(
service_pair
.
first
)
.
arg
(
msg
.
str
());
return
(
SR_ERR_VALIDATION_FAILED
);
...
...
@@ -445,9 +445,8 @@ NetconfAgent::validate(S_Session sess, const CfgServersMapPair& service_pair) {
int
NetconfAgent
::
update
(
S_Session
sess
,
const
CfgServersMapPair
&
service_pair
)
{
// Check if we should and can process this update.
if
(
NetconfProcess
::
global_shut_down_flag
||
if
(
NetconfProcess
::
shut_down
||
!
service_pair
.
second
->
getSubscribeChanges
())
{
return
(
SR_ERR_OK
);
}
...
...
@@ -458,7 +457,7 @@ NetconfAgent::update(S_Session sess, const CfgServersMapPair& service_pair) {
// All looks good, let's get started. Print an info that we're about
// to update the configuration.
LOG_
INFO
(
netconf_logger
,
NETCONF_DBG_TRACE
,
NETCONF_UPDATE_CONFIG
)
LOG_
DEBUG
(
netconf_logger
,
NETCONF_DBG_TRACE
,
NETCONF_UPDATE_CONFIG_STARTED
)
.
arg
(
service_pair
.
first
);
// Retrieve the configuration from SYSREPO first.
...
...
@@ -477,20 +476,20 @@ NetconfAgent::update(S_Session sess, const CfgServersMapPair& service_pair) {
return
(
SR_ERR_VALIDATION_FAILED
);
}
else
{
LOG_DEBUG
(
netconf_logger
,
NETCONF_DBG_TRACE_DETAIL_DATA
,
NETCONF_UPDATE_CONFIG
_CONFIG
)
NETCONF_UPDATE_CONFIG
)
.
arg
(
service_pair
.
first
)
.
arg
(
prettyPrint
(
config
));
}
}
catch
(
const
std
::
exception
&
ex
)
{
ostringstream
msg
;
msg
<<
"
YANG config-get
"
<<
service_pair
.
first
msg
<<
"
get YANG configuration for
"
<<
service_pair
.
first
<<
" failed with "
<<
ex
.
what
();
LOG_ERROR
(
netconf_logger
,
NETCONF_UPDATE_CONFIG_FAILED
)
.
arg
(
service_pair
.
first
)
.
arg
(
msg
.
str
());
return
(
SR_ERR_VALIDATION_FAILED
);
}
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
(
SR_ERR_OK
);
}
...
...
@@ -523,7 +522,7 @@ NetconfAgent::update(S_Session sess, const CfgServersMapPair& service_pair) {
return
(
SR_ERR_VALIDATION_FAILED
);
}
// rcode == CONTROL_RESULT_SUCCESS, unless the docs say otherwise :)
// rcode == CONTROL_RESULT_SUCCESS, unless the docs say otherwise :)
.
if
(
rcode
!=
CONTROL_RESULT_SUCCESS
)
{
stringstream
msg
;
msg
<<
"configSet returned "
<<
answerToText
(
answer
);
...
...
@@ -537,7 +536,7 @@ NetconfAgent::update(S_Session sess, const CfgServersMapPair& service_pair) {
void
NetconfAgent
::
logChanges
(
S_Session
sess
,
const
string
&
model
)
{
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
S_Iter_Change
iter
=
sess
->
get_changes_iter
(
model
.
c_str
());
...
...
@@ -547,7 +546,7 @@ NetconfAgent::logChanges(S_Session sess, const string& model) {
return
;
}
for
(;;)
{
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
S_Change
change
;
...
...
@@ -564,7 +563,7 @@ NetconfAgent::logChanges(S_Session sess, const string& model) {
// End of changes, not an error.
return
;
}
if
(
NetconfProcess
::
global_shut_down_flag
)
{
if
(
NetconfProcess
::
shut_down
)
{
return
;
}
S_Val
new_val
=
change
->
new_val
();
...
...
src/bin/netconf/netconf.h
View file @
fa842323
...
...
@@ -51,7 +51,7 @@ public:
///
/// Get and display Kea server configurations.
/// Load Kea server configurations from YANG datastore.
/// Subscribe changes in YANG datastore.
/// Subscribe c
onfiguration c
hanges in YANG datastore.
///
/// If @c NetconfProcess::global_shut_down_flag becomes true
/// returns as soon as possible.
...
...
@@ -101,8 +101,8 @@ protected:
/// @param service_pair The service name and configuration pair.
void
keaConfig
(
const
CfgServersMapPair
&
service_pair
);
/// @brief Retrieve Kea server configuration from
YANG datastore and
/// applies it to servers.
/// @brief Retrieve Kea server configuration from
the YANG startup
///
datastore and
applies it to servers.
///
/// This method retrieves the configuation from sysrepo first, then
/// established control socket connection to Kea servers (currently
...
...
@@ -117,7 +117,7 @@ protected:
/// @brief Subscribe changes for a module in YANG datastore.
///
/// @param service_pair The service name and configuration pair.
void
subscribe
(
const
CfgServersMapPair
&
service_pair
);
void
subscribe
Config
(
const
CfgServersMapPair
&
service_pair
);
/// @brief Sysrepo connection.
S_Connection
conn_
;
...
...
src/bin/netconf/netconf_messages.mes
View file @
fa842323
...
...
@@ -7,8 +7,8 @@
$NAMESPACE isc::netconf
% NETCONF_BOOT_UPDATE_COMPLETE Boot-update configuration completed for server %1
This informational message is issued when the initial configuration
was retrieved
from Netconf and successfully applied to Kea server.
This informational message is issued when the initial configuration
was retrieved
from Netconf and successfully applied to Kea server.
% NETCONF_CONFIG_CHANGE_EVENT Received YANG configuration change %1 event
This informational message is issued when Netconf receives a YANG
...
...
@@ -43,10 +43,10 @@ Kea server. The server name and the retrieved configuration are printed.
% NETCONF_GET_CONFIG_FAILED getting configuration from %1 server failed: %2
The error message indicates that Netconf got an error getting the
configuration from a Kea server. Make sure that the server is up and
running,
has appropriate control socket defined and that the controls socket configuration
on the server matches that of kea-netconf. The name of the server and the error
are printed.
configuration from a Kea server. Make sure that the server is up and
running, has appropriate control socket defined and that the controls
socket configuration on the server matches that of kea-netconf. The
name of the server and the error
are printed.
% NETCONF_LOG_CHANGE_FAIL Netconf configuration change logging failed: %1
The warning message indicates that the configuration change logging
...
...
@@ -66,59 +66,62 @@ Kea server. The server name and the applied configuration are printed.
% NETCONF_SET_CONFIG_FAILED setting configuration to %1 server failed: %2
The error message indicates that Netconf got an error setting the
configuration to a Kea server.
The name of the server and the error
are printed. Make sure that the server is up and running, has appropriate
control socket defined and that the controls socket configuration
on the server matches that of kea-netconf
.
configuration to a Kea server.
Make sure that the server is up and
running, has appropriate control socket defined and that the controls
socket configuration on the server matches that of kea-netconf. The
name of the server and the error are printed
.
% NETCONF_STARTED Netconf (version %1) started
This informational message indicates that Netconf has processed
all configuration information and is ready to begin processing.
The version is also printed.
% NETCONF_SUBSCRIBE subscribing configuration changes for %1 server with %2 module
This
debug
message indicates that Netconf is trying to subscribe
% NETCONF_SUBSCRIBE
_CONFIG
subscribing configuration changes for %1 server with %2 module
This
information
message indicates that Netconf is trying to subscribe
configuration changes for a Kea server. The names of the server and
the module are printed.
% NETCONF_SUBSCRIBE_FAILED subscribe configuration changes for %1 server with %2 module failed: %3
% NETCONF_SUBSCRIBE_
CONFIG_
FAILED subscribe configuration changes for %1 server with %2 module failed: %3
The error message indicates that Netconf got an error subscribing
configuration changes for a Kea server. The names of the server and
the module, and the error are printed.
% NETCONF_VALIDATE_CONFIG validating configuration for %1 server
% NETCONF_VALIDATE_CONFIG
_STARTED started
validating configuration for %1 server
This debug message indicates that Netconf is trying to validate the
configuration with a Kea server.
% NETCONF_VALIDATE_CONFIG
_CONFIG validate
configuration with %1 server: %2
This debug message indicates that Netconf
validate
the configuration
% NETCONF_VALIDATE_CONFIG
validating
configuration with %1 server: %2
This debug message indicates that Netconf
is validating
the configuration
with a Kea server. The server name and the validated configuration are
printed.
% NETCONF_VALIDATE_CONFIG_
ERROR validating configuration errored with %1 serve
r: %2
% NETCONF_VALIDATE_CONFIG_
FAILED validating configuration with %1 server got an erro
r: %2
The error message indicates that Netconf got an error validating the
configuration with a Kea server. The name of the server and the error
are printed. This message is produced when exception is thrown during
an attempt to validate received configuration. Additional explanation may be
provided as a parameter. You may also take a look at earlier log messages.
configuration with a Kea server. This message is produced when
exception is thrown during an attempt to validate received
configuration. Additional explanation may be provided as a
parameter. You may also take a look at earlier log messages. The name
of the server and the error are printed.
% NETCONF_VALIDATE_CONFIG_
FAILED validating configuration with %1 server
: %2
% NETCONF_VALIDATE_CONFIG_
REJECTED validating configuration with %1 server was rejected
: %2
The warning message indicates that Netconf got an error validating the
configuration with a Kea server. The name of the server and the error
are printed. This message is printed when the configuration was rejected
during normal processing. Additional explanation may be provided as
a parameter. You may also take a look at earlier log messages.
configuration with a Kea server. This message is printed when the
configuration was rejected during normal processing. Additional
explanation may be provided as a parameter. You may also take a look
at earlier log messages. The name of the server and the error are
printed.
% NETCONF_UPDATE_CONFIG updating configuration for %1 server
% NETCONF_UPDATE_CONFIG
_STARTED started
updating configuration for %1 server
This debug message indicates that Netconf is trying to update the
configuration of a Kea server.
% NETCONF_UPDATE_CONFIG
_CONFIG update
configuration with %1 server: %2
% NETCONF_UPDATE_CONFIG
updating
configuration with %1 server: %2
This debug message indicates that Netconf update the configuration
of a Kea server. The server name and the updated configuration are
printed.
% NETCONF_UPDATE_CONFIG_FAILED updating configuration with %1 server: %2
The error message indicates that Netconf got an error updating the
configuration of a Kea server. The name of the server and the error
are printed.
configuration of a Kea server. This includes a configuration rejected
by a Kea server when it tried to apply it. The name of the server and
the error are printed.
src/bin/netconf/netconf_process.cc
View file @
fa842323
...
...
@@ -27,7 +27,7 @@ using namespace isc::util::thread;
namespace
isc
{
namespace
netconf
{
bool
NetconfProcess
::
global_shut_down_flag
=
false
;
bool
NetconfProcess
::
shut_down
=
false
;
NetconfProcess
::
NetconfProcess
(
const
char
*
name
,
const
asiolink
::
IOServicePtr
&
io_service
)
...
...
@@ -100,7 +100,7 @@ NetconfProcess::runIO() {
isc
::
data
::
ConstElementPtr
NetconfProcess
::
shutdown
(
isc
::
data
::
ConstElementPtr
/*args*/
)
{
global_shut_down_flag
=
true
;
shut_down
=
true
;
setShutdownFlag
(
true
);
return
(
isc
::
config
::
createAnswer
(
0
,
"Netconf is shutting down"
));
}
...
...
src/bin/netconf/netconf_process.h
View file @
fa842323
...
...
@@ -85,7 +85,7 @@ public:
NetconfCfgMgrPtr
getNetconfCfgMgr
();
/// @brief Global (globally visible) shutdown flag.
static
bool
global_shut_down_flag
;
static
bool
shut_down
;
private:
...
...
src/bin/netconf/tests/netconf_unittests.cc
View file @
fa842323
...
...
@@ -40,9 +40,6 @@ namespace {
/// @brief Test unix socket file name.
const
string
TEST_SOCKET
=
"test-socket"
;
/// @brief Test timeout in ms.
//const long TEST_TIMEOUT = 10000;
/// @brief Type definition for the pointer to Thread objects.
typedef
boost
::
shared_ptr
<
Thread
>
ThreadPtr
;
...
...
@@ -61,7 +58,7 @@ public:
using
NetconfAgent
::
keaConfig
;
using
NetconfAgent
::
initSysrepo
;
using
NetconfAgent
::
yangConfig
;
using
NetconfAgent
::
subscribe
;
using
NetconfAgent
::
subscribe
Config
;
using
NetconfAgent
::
conn_
;
using
NetconfAgent
::
startup_sess_
;
using
NetconfAgent
::
running_sess_
;
...
...
@@ -138,13 +135,13 @@ public:
agent_
(
new
NakedNetconfAgent
),
requests_
(),
responses_
()
{
NetconfProcess
::
global_shut_down_flag
=
false
;
NetconfProcess
::
shut_down
=
false
;
removeUnixSocketFile
();
}
/// @brief Destructor.
virtual
~
NetconfAgentTest
()
{
NetconfProcess
::
global_shut_down_flag
=
true
;
NetconfProcess
::
shut_down
=
true
;
if
(
thread_
)
{
thread_
->
wait
();
thread_
.
reset
();
...
...
@@ -222,12 +219,12 @@ public:
:
io_service_
(
new
IOService
()),
thread_
(),
agent_
(
new
NakedNetconfAgent
)
{
NetconfProcess
::
global_shut_down_flag
=
false
;
NetconfProcess
::
shut_down
=
false
;
}
/// @brief Destructor.
virtual
~
NetconfAgentLogTest
()
{
NetconfProcess
::
global_shut_down_flag
=
true
;
NetconfProcess
::
shut_down
=
true
;
// io_service must be stopped to make the thread to return.
io_service_
->
stop
();
io_service_
.
reset
();
...
...
@@ -409,7 +406,7 @@ TEST_F(NetconfAgentLogTest, logChanges) {
ASSERT_NO_THROW
(
repr
.
set
(
tree0
,
agent_
->
startup_sess_
));
EXPECT_NO_THROW
(
agent_
->
startup_sess_
->
commit
());
// Subscribe changes.
// Subscribe c
onfiguration c
hanges.
S_Subscribe
subs
(
new
Subscribe
(
agent_
->
running_sess_
));
S_Callback
cb
(
new
TestCallback
());
TestCallback
::
finished
=
false
;
...
...
@@ -452,7 +449,6 @@ TEST_F(NetconfAgentLogTest, logChanges) {
}
// Enable this for debugging.
// logCheckVerbose(true);
EXPECT_TRUE
(
checkFile
());
}
...
...
@@ -483,7 +479,7 @@ TEST_F(NetconfAgentLogTest, logChanges2) {
ASSERT_NO_THROW
(
repr
.
set
(
tree0
,
agent_
->
startup_sess_
));
EXPECT_NO_THROW
(
agent_
->
startup_sess_
->
commit
());
// Subscribe changes.
// Subscribe c
onfiguration c
hanges.
S_Subscribe
subs
(
new
Subscribe
(
agent_
->
running_sess_
));
S_Callback
cb
(
new
TestCallback
());
TestCallback
::
finished
=
false
;
...
...
@@ -564,7 +560,6 @@ TEST_F(NetconfAgentLogTest, logChanges2) {
}
// Enable this for debugging.
// logCheckVerbose(true);
EXPECT_TRUE
(
checkFile
());
}
...
...
@@ -765,8 +760,8 @@ TEST_F(NetconfAgentTest, yangConfig) {
EXPECT_TRUE
(
expected
->
equals
(
*
pruned
));
}
/// Verifies the subscribe method works as expected.
TEST_F
(
NetconfAgentTest
,
subscribe
)
{
/// Verifies the subscribe
Config
method works as expected.
TEST_F
(
NetconfAgentTest
,
subscribe
Config
)
{
// Netconf configuration.
string
config_prefix
=
"{
\n
"
"
\"
Netconf
\"
: {
\n
"
...
...
@@ -804,10 +799,10 @@ TEST_F(NetconfAgentTest, subscribe) {
ASSERT_EQ
(
1
,
servers_map
->
size
());
CfgServersMapPair
service_pair
=
*
servers_map
->
begin
();
// Try subscribe.
// Try subscribe
Config
.
EXPECT_EQ
(
0
,
agent_
->
subscriptions_
.
size
());
ASSERT_NO_THROW
(
agent_
->
initSysrepo
());
EXPECT_NO_THROW
(
agent_
->
subscribe
(
service_pair
));
EXPECT_NO_THROW
(
agent_
->
subscribe
Config
(
service_pair
));
EXPECT_EQ
(
1
,
agent_
->
subscriptions_
.
size
());
/// Unsubscribe.
...
...
@@ -881,7 +876,7 @@ TEST_F(NetconfAgentTest, update) {
// Subscribe YANG changes.
EXPECT_EQ
(
0
,
agent_
->
subscriptions_
.
size
());
EXPECT_NO_THROW
(
agent_
->
subscribe
(
service_pair
));
EXPECT_NO_THROW
(
agent_
->
subscribe
Config
(
service_pair
));
EXPECT_EQ
(
1
,
agent_
->
subscriptions_
.
size
());
// Launch server.
...
...
@@ -1019,7 +1014,7 @@ TEST_F(NetconfAgentTest, validate) {
// Subscribe YANG changes.
EXPECT_EQ
(
0
,
agent_
->
subscriptions_
.
size
());
EXPECT_NO_THROW
(
agent_
->
subscribe
(
service_pair
));
EXPECT_NO_THROW
(
agent_
->
subscribe
Config
(
service_pair
));
EXPECT_EQ
(
1
,
agent_
->
subscriptions_
.
size
());
// Launch server twice.
...
...
@@ -1187,7 +1182,7 @@ TEST_F(NetconfAgentTest, noValidate) {
// Subscribe YANG changes.
EXPECT_EQ
(
0
,
agent_
->
subscriptions_
.
size
());
EXPECT_NO_THROW
(
agent_
->
subscribe
(
service_pair
));
EXPECT_NO_THROW
(
agent_
->
subscribe
Config
(
service_pair
));
EXPECT_EQ
(
1
,
agent_
->
subscriptions_
.
size
());
// Change configuration (add invalid user context).
...
...
src/lib/yang/Makefile.am
View file @
fa842323
...
...
@@ -60,8 +60,8 @@ libkea_yang_include_HEADERS = \
translator_logger.h
\
translator_option_data.h
\
translator_option_def.h
\
translator_pool.h
\
translator_pd_pool.h
\
translator_pool.h
\
translator_shared_network.h
\
translator_subnet.h
\
yang_models.h
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment