mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 14:05:33 +00:00
[master] Merge branch 'trac5108'
This commit is contained in:
@@ -93,17 +93,6 @@
|
||||
}</screen>
|
||||
</para>
|
||||
|
||||
<warning>
|
||||
<simpara>
|
||||
In the Kea 1.2 release the Control Agent configuration can't be
|
||||
specified within the same configuration file as DHCPv4, DHCPv6 and D2
|
||||
configuration. The default configuration file for the CA is installed
|
||||
in the <filename>etc/kea/kea-ca.conf</filename>. In the Kea 1.2 final
|
||||
release the CA configuration will be merged into the default
|
||||
<filename>etc/kea/kea.conf.</filename>
|
||||
</simpara>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
The <command>http-host</command> and <command>http-port</command>
|
||||
specify an IP address and port to which HTTP service will be bound.
|
||||
@@ -284,16 +273,8 @@ http {
|
||||
<title>Control Agent Limitations</title>
|
||||
<para>
|
||||
Control Agent is a new component, first released in Kea 1.2. In
|
||||
this release it comes with two notable limitations:
|
||||
this release it comes with one notable limitation:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
CA configuration must be specified in a separate configuration file
|
||||
from the configurations of other components. The default confirguation
|
||||
file for CA is located in <filename>etc/kea/kea-ca.conf</filename>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<simpara>
|
||||
keactrl hasn't been updated to manage the Control Agent (start, stop
|
||||
@@ -311,7 +292,7 @@ http {
|
||||
The CA is started by running its binary and specifying the configuration file
|
||||
it should use. For example:
|
||||
<screen>
|
||||
$ ./kea-ctrl-agent -c /usr/local/etc/kea/kea-ca.conf
|
||||
$ ./kea-ctrl-agent -c /usr/local/etc/kea/kea.conf
|
||||
</screen>
|
||||
</para>
|
||||
</section>
|
||||
|
@@ -11,9 +11,10 @@
|
||||
<title>Overview</title>
|
||||
<para>keactrl is a shell script which controls the startup, shutdown
|
||||
and reconfiguration of the Kea servers (<command>kea-dhcp4</command>,
|
||||
<command>kea-dhcp6</command> and <command>kea-dhcp-ddns</command>). It
|
||||
also provides the means for checking the current status of the servers
|
||||
and determining the configuration files in use.
|
||||
<command>kea-dhcp6</command>, <command>kea-dhcp-ddns</command> and
|
||||
<command>kea-ctrl-agent</command>). It also provides the means for
|
||||
checking the current status of the servers and determining the
|
||||
configuration files in use.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
@@ -66,19 +67,20 @@ keactrl <command> [-c keactrl-config-file] [-s server[,server,..]]
|
||||
<screen>
|
||||
# This is a configuration file for keactrl script which controls
|
||||
# the startup, shutdown, reconfiguration and gathering the status
|
||||
# of the Kea servers.
|
||||
# of the Kea's processes.
|
||||
|
||||
# prefix holds the location where the Kea is installed.
|
||||
prefix=/usr/local
|
||||
prefix=@prefix@
|
||||
|
||||
# Location of Kea configuration file.
|
||||
kea_config_file=${prefix}/etc/kea/kea.conf
|
||||
kea_config_file=@sysconfdir@/@PACKAGE@/kea.conf
|
||||
|
||||
# Location of Kea binaries.
|
||||
exec_prefix=${prefix}
|
||||
dhcp4_srv=${exec_prefix}/sbin/kea/kea-dhcp4
|
||||
dhcp6_srv=${exec_prefix}/sbin/kea/kea-dhcp6
|
||||
dhcp_ddns_srv=${exec_prefix}/sbin/kea/kea-dhcp-ddns
|
||||
exec_prefix=@exec_prefix@
|
||||
dhcp4_srv=@sbindir@/kea-dhcp4
|
||||
dhcp6_srv=@sbindir@/kea-dhcp6
|
||||
dhcp_ddns_srv=@sbindir@/kea-dhcp-ddns
|
||||
ctrl_agent_srv=@sbindir@/kea-ctrl-agent
|
||||
|
||||
# Start DHCPv4 server?
|
||||
dhcp4=yes
|
||||
@@ -87,7 +89,10 @@ dhcp4=yes
|
||||
dhcp6=yes
|
||||
|
||||
# Start DHCP DDNS server?
|
||||
dhcp_ddns=yes
|
||||
dhcp_ddns=no
|
||||
|
||||
# Start Control Agent?
|
||||
ctrl_agent=yes
|
||||
|
||||
# Be verbose?
|
||||
kea_verbose=no
|
||||
@@ -95,12 +100,13 @@ kea_verbose=no
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <parameter>dhcp4</parameter>, <parameter>dhcp6</parameter> and
|
||||
<parameter>dhcp_ddns</parameter> parameters set to "yes" configure
|
||||
<command>keactrl</command> to manage (start, reconfigure) all servers,
|
||||
i.e. <command>kea-dhcp4</command>, <command>kea-dhcp6</command> and
|
||||
<command>kea-dhcp-ddns</command>. When any of these parameters is set to
|
||||
"no" the <command>keactrl</command> will ignore
|
||||
The <parameter>dhcp4</parameter>, <parameter>dhcp6</parameter>,
|
||||
<parameter>dhcp_ddns</parameter> and <parameter>ctrl_agent</parameter>
|
||||
parameters set to "yes" configure <command>keactrl</command> to manage
|
||||
(start, reconfigure) all servers, i.e. <command>kea-dhcp4</command>,
|
||||
<command>kea-dhcp6</command>, <command>kea-dhcp-ddns</command> and
|
||||
<command>kea-ctrl-agent</command>. When any of these parameters is set
|
||||
to "no" the <command>keactrl</command> will ignore
|
||||
the corresponding server when starting or reconfiguring Kea.
|
||||
</para>
|
||||
|
||||
@@ -110,8 +116,8 @@ kea_verbose=no
|
||||
should work for most installations. If the default
|
||||
location needs to be altered for any reason, the paths
|
||||
specified with the <parameter>dhcp4_srv</parameter>,
|
||||
<parameter>dhcp6_srv</parameter> and <parameter>dhcp_ddns_srv</parameter>
|
||||
parameters should be modified.
|
||||
<parameter>dhcp6_srv</parameter>, <parameter>dhcp_ddns_srv</parameter>
|
||||
and <parameter>ctrl_agent_srv</parameter> parameters should be modified.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@@ -165,6 +171,7 @@ kea_verbose=no
|
||||
INFO/keactrl: Starting kea-dhcp4 -c /usr/local/etc/kea/kea.conf -d
|
||||
INFO/keactrl: Starting kea-dhcp6 -c /usr/local/etc/kea/kea.conf -d
|
||||
INFO/keactrl: Starting kea-dhcp-ddns -c /usr/local/etc/kea/kea.conf -d
|
||||
INFO/keactrl: Starting kea-ctrl-agent -c /usr/local/etc/kea/kea.conf -d
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
@@ -177,6 +184,7 @@ INFO/keactrl: Starting kea-dhcp-ddns -c /usr/local/etc/kea/kea.conf -d
|
||||
INFO/keactrl: kea-dhcp4 appears to be running, see: PID 10918, PID file: /usr/local/var/kea/kea.kea-dhcp4.pid.
|
||||
INFO/keactrl: kea-dhcp6 appears to be running, see: PID 10924, PID file: /usr/local/var/kea/kea.kea-dhcp6.pid.
|
||||
INFO/keactrl: kea-dhcp-ddns appears to be running, see: PID 10930, PID file: /usr/local/var/kea/kea.kea-dhcp-ddns.pid.
|
||||
INFO/keactrl: kea-ctrl-agent appears to be running, see: PID 10931, PID file: /usr/local/var/kea/kea.kea-ctrl-agent.pid.
|
||||
</screen>
|
||||
During normal shutdowns these PID files are deleted. They may, however,
|
||||
be left over as remnants following a system crash. It is possible,
|
||||
@@ -193,6 +201,7 @@ INFO/keactrl: kea-dhcp-ddns appears to be running, see: PID 10930, PID file: /us
|
||||
INFO/keactrl: Stopping kea-dhcp4...
|
||||
INFO/keactrl: Stopping kea-dhcp6...
|
||||
INFO/keactrl: Stopping kea-dhcp-ddns...
|
||||
INFO/keactrl: Stopping kea-ctrl-agent...
|
||||
</screen>
|
||||
Note that the <command>stop</command> will attempt to stop all servers
|
||||
regardless of whether they are "enabled" in the <filename>keactrl.conf</filename>.
|
||||
@@ -203,6 +212,7 @@ INFO/keactrl: Stopping kea-dhcp-ddns...
|
||||
INFO/keactrl: kea-dhcp4 isn't running.
|
||||
INFO/keactrl: kea-dhcp6 isn't running.
|
||||
INFO/keactrl: kea-dhcp-ddns isn't running.
|
||||
INFO/keactrl: kea-ctrl-agent isn't running.
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
@@ -219,6 +229,7 @@ INFO/keactrl: kea-dhcp-ddns isn't running.
|
||||
INFO/keactrl: Reloading kea-dhcp4...
|
||||
INFO/keactrl: Reloading kea-dhcp6...
|
||||
INFO/keactrl: Reloading kea-dhcp-ddns...
|
||||
INFO/keactrl: Reloading kea-ctrl-agent...
|
||||
</screen>
|
||||
If any of the servers are not running, an informational message
|
||||
is displayed as in the <command>reload</command> command output below.
|
||||
@@ -227,6 +238,7 @@ INFO/keactrl: Reloading kea-dhcp-ddns...
|
||||
INFO/keactrl: kea-dhcp4 isn't running.
|
||||
INFO/keactrl: kea-dhcp6 isn't running.
|
||||
INFO/keactrl: kea-dhcp-ddns isn't running.
|
||||
INFO/keactrl: kea-ctrl-agent isn't running.
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
@@ -247,6 +259,7 @@ INFO/keactrl: kea-dhcp-ddns isn't running.
|
||||
DHCPv4 server: active
|
||||
DHCPv6 server: inactive
|
||||
DHCP DDNS: active
|
||||
Control Agent: active
|
||||
Kea configuration file: /usr/local/etc/kea/kea.conf
|
||||
keactrl configuration file: /usr/local/etc/kea/keactrl.conf
|
||||
</screen>
|
||||
@@ -261,7 +274,8 @@ keactrl configuration file: /usr/local/etc/kea/keactrl.conf
|
||||
command is issued. For example, the following
|
||||
instructs <command>keactrl</command> to stop the
|
||||
<command>kea-dhcp4</command> and <command>kea-dhcp6</command> servers
|
||||
and leave the <command>kea-dhcp-ddns</command> server running:
|
||||
and leave the <command>kea-dhcp-ddns</command> and
|
||||
<command>kea-ctrl-agent</command> running:
|
||||
<screen>
|
||||
<userinput>$ keactrl stop -s dhcp4,dhcp6</userinput>
|
||||
</screen>
|
||||
@@ -270,8 +284,8 @@ keactrl configuration file: /usr/local/etc/kea/keactrl.conf
|
||||
<para>
|
||||
Similarly, the following
|
||||
will only start the <command>kea-dhcp4</command> and
|
||||
<command>kea-dhcp-ddns</command> servers and not
|
||||
<command>kea-dhcp6</command>.
|
||||
<command>kea-dhcp-ddns</command> servers and not:
|
||||
<command>kea-dhcp6</command>, <command>kea-ctrl-agent</command>.
|
||||
<screen>
|
||||
<userinput>$ keactrl start -s dhcp4,dhcp_ddns</userinput>
|
||||
</screen>
|
||||
@@ -302,6 +316,9 @@ keactrl configuration file: /usr/local/etc/kea/keactrl.conf
|
||||
<listitem><simpara>
|
||||
<command>dhcp_ddns</command> for <command>kea-dhcp-ddns.</command>
|
||||
</simpara></listitem>
|
||||
<listitem><simpara>
|
||||
<command>ctrl_agent</command> for <command>kea-ctrl-agent.</command>
|
||||
</simpara></listitem>
|
||||
<listitem><simpara>
|
||||
<command>all</command> for all servers (default).
|
||||
</simpara></listitem>
|
||||
|
@@ -117,6 +117,54 @@ TEST(ParserTest, keywordJSON) {
|
||||
testParser(txt, ParserContext::PARSER_JSON);
|
||||
}
|
||||
|
||||
// This test checks that the DhcpDdns configuration is accepted
|
||||
// by the parser.
|
||||
TEST(ParserTest, keywordDhcpDdns) {
|
||||
string txt =
|
||||
"{ \"DhcpDdns\" : \n"
|
||||
"{ \n"
|
||||
" \"ip-address\": \"192.168.77.1\", \n"
|
||||
" \"port\": 777 , \n "
|
||||
" \"ncr-protocol\": \"UDP\", \n"
|
||||
"\"tsig-keys\": [], \n"
|
||||
"\"forward-ddns\" : {}, \n"
|
||||
"\"reverse-ddns\" : {} \n"
|
||||
"} \n"
|
||||
"} \n";
|
||||
testParser(txt, ParserContext::PARSER_AGENT);
|
||||
}
|
||||
|
||||
// This test checks that the Dhcp6 configuration is accepted
|
||||
// by the parser.
|
||||
TEST(ParserTest, keywordDhcp6) {
|
||||
string txt = "{ \"Dhcp6\": { \"interfaces-config\": {"
|
||||
" \"interfaces\": [ \"type\", \"htype\" ] },\n"
|
||||
"\"preferred-lifetime\": 3000,\n"
|
||||
"\"rebind-timer\": 2000, \n"
|
||||
"\"renew-timer\": 1000, \n"
|
||||
"\"subnet6\": [ { "
|
||||
" \"pools\": [ { \"pool\": \"2001:db8:1::/64\" } ],"
|
||||
" \"subnet\": \"2001:db8:1::/48\", "
|
||||
" \"interface\": \"test\" } ],\n"
|
||||
"\"valid-lifetime\": 4000 } }";
|
||||
testParser(txt, ParserContext::PARSER_AGENT);
|
||||
}
|
||||
|
||||
// This test checks that the Dhcp4 configuration is accepted
|
||||
// by the parser.
|
||||
TEST(ParserTest, keywordDhcp4) {
|
||||
string txt = "{ \"Dhcp4\": { \"interfaces-config\": {"
|
||||
" \"interfaces\": [ \"type\", \"htype\" ] },\n"
|
||||
"\"rebind-timer\": 2000, \n"
|
||||
"\"renew-timer\": 1000, \n"
|
||||
"\"subnet4\": [ { "
|
||||
" \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
|
||||
" \"subnet\": \"192.0.2.0/24\", "
|
||||
" \"interface\": \"test\" } ],\n"
|
||||
"\"valid-lifetime\": 4000 } }";
|
||||
testParser(txt, ParserContext::PARSER_AGENT);
|
||||
}
|
||||
|
||||
// This test checks if full config (with top level and Control-agent objects) can
|
||||
// be parsed with syntactic checking (and as pure JSON).
|
||||
TEST(ParserTest, keywordAgent) {
|
||||
|
@@ -467,6 +467,15 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
|
||||
}
|
||||
}
|
||||
|
||||
\"Control-agent\" {
|
||||
switch(driver.ctx_) {
|
||||
case isc::d2::D2ParserContext::CONFIG:
|
||||
return isc::d2::D2Parser::make_CONTROL_AGENT(driver.loc_);
|
||||
default:
|
||||
return isc::d2::D2Parser::make_STRING("Control-agent", driver.loc_);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{JSONString} {
|
||||
/* A string has been matched. It contains the actual string and single quotes.
|
||||
|
@@ -51,6 +51,7 @@ using namespace std;
|
||||
|
||||
DHCP6 "Dhcp6"
|
||||
DHCP4 "Dhcp4"
|
||||
CONTROL_AGENT "Control-agent"
|
||||
|
||||
DHCPDDNS "DhcpDdns"
|
||||
IP_ADDRESS "ip-address"
|
||||
@@ -204,8 +205,8 @@ unknown_map_entry: STRING COLON {
|
||||
};
|
||||
|
||||
|
||||
// This defines the top-level { } that holds Dhcp6, Dhcp4, DhcpDdns or Logging
|
||||
// objects.
|
||||
// This defines the top-level { } that holds Control-agent, Dhcp6, Dhcp4,
|
||||
// DhcpDdns or Logging objects.
|
||||
syntax_map: LCURLY_BRACKET {
|
||||
// This code is executed when we're about to start parsing
|
||||
// the content of the map
|
||||
@@ -227,6 +228,7 @@ global_object: dhcp6_json_object
|
||||
| logging_object
|
||||
| dhcp4_json_object
|
||||
| dhcpddns_object
|
||||
| control_agent_json_object
|
||||
| unknown_map_entry
|
||||
;
|
||||
|
||||
@@ -613,6 +615,13 @@ dhcp4_json_object: DHCP4 {
|
||||
ctx.leave();
|
||||
};
|
||||
|
||||
control_agent_json_object: CONTROL_AGENT {
|
||||
ctx.enter(ctx.NO_KEYWORD);
|
||||
} COLON value {
|
||||
ctx.stack_.back()->set("Control-agent", $4);
|
||||
ctx.leave();
|
||||
};
|
||||
|
||||
// --- logging entry -----------------------------------------
|
||||
|
||||
// This defines the top level "Logging" object. It parses
|
||||
|
@@ -159,6 +159,11 @@ TEST(ParserTest, keywordDhcp4) {
|
||||
testParser(txt, D2ParserContext::PARSER_DHCPDDNS);
|
||||
}
|
||||
|
||||
TEST(ParserTest, keywordControlAgent) {
|
||||
string txt = "{ \"Control-agent\": { } }";
|
||||
testParser(txt, D2ParserContext::PARSER_DHCPDDNS);
|
||||
}
|
||||
|
||||
TEST(ParserTest, Logging) {
|
||||
string txt = "{ \"Logging\": { \n"
|
||||
" \"loggers\": [ \n"
|
||||
|
@@ -1246,6 +1246,15 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
|
||||
}
|
||||
}
|
||||
|
||||
\"Control-agent\" {
|
||||
switch(driver.ctx_) {
|
||||
case isc::dhcp::Parser4Context::CONFIG:
|
||||
return isc::dhcp::Dhcp4Parser::make_CONTROL_AGENT(driver.loc_);
|
||||
default:
|
||||
return isc::dhcp::Dhcp4Parser::make_STRING("Control-agent", driver.loc_);
|
||||
}
|
||||
}
|
||||
|
||||
\"4o6-interface\" {
|
||||
switch(driver.ctx_) {
|
||||
case isc::dhcp::Parser4Context::SUBNET4:
|
||||
|
@@ -183,6 +183,7 @@ using namespace std;
|
||||
|
||||
DHCP6 "Dhcp6"
|
||||
DHCPDDNS "DhcpDdns"
|
||||
CONTROL_AGENT "Control-agent"
|
||||
|
||||
// Not real tokens, just a way to signal what the parser is expected to
|
||||
// parse.
|
||||
@@ -338,8 +339,8 @@ unknown_map_entry: STRING COLON {
|
||||
};
|
||||
|
||||
|
||||
// This defines the top-level { } that holds Dhcp6, Dhcp4, DhcpDdns or Logging
|
||||
// objects.
|
||||
// This defines the top-level { } that holds Control-agent, Dhcp6, Dhcp4,
|
||||
// DhcpDdns or Logging objects.
|
||||
syntax_map: LCURLY_BRACKET {
|
||||
// This code is executed when we're about to start parsing
|
||||
// the content of the map
|
||||
@@ -351,7 +352,8 @@ syntax_map: LCURLY_BRACKET {
|
||||
// for it.
|
||||
};
|
||||
|
||||
// This represents top-level entries: Dhcp6, Dhcp4, DhcpDdns, Logging
|
||||
// This represents top-level entries: Control-agent, Dhcp6, Dhcp4,
|
||||
// DhcpDdns, Logging
|
||||
global_objects: global_object
|
||||
| global_objects COMMA global_object
|
||||
;
|
||||
@@ -361,6 +363,7 @@ global_object: dhcp4_object
|
||||
| logging_object
|
||||
| dhcp6_json_object
|
||||
| dhcpddns_json_object
|
||||
| control_agent_json_object
|
||||
| unknown_map_entry
|
||||
;
|
||||
|
||||
@@ -1656,6 +1659,13 @@ dhcpddns_json_object: DHCPDDNS {
|
||||
ctx.leave();
|
||||
};
|
||||
|
||||
control_agent_json_object: CONTROL_AGENT {
|
||||
ctx.enter(ctx.NO_KEYWORD);
|
||||
} COLON value {
|
||||
ctx.stack_.back()->set("Control-agent", $4);
|
||||
ctx.leave();
|
||||
};
|
||||
|
||||
// --- logging entry -----------------------------------------
|
||||
|
||||
// This defines the top level "Logging" object. It parses
|
||||
|
@@ -183,6 +183,31 @@ TEST_F(JSONFileBackendTest, jsonFile) {
|
||||
EXPECT_EQ(Lease::TYPE_V4, pools3.at(0)->getType());
|
||||
}
|
||||
|
||||
// This test verifies that the configurations for various servers
|
||||
// can coexist and that the DHCPv4 configuration parsers will simply
|
||||
// ignore them.
|
||||
TEST_F(JSONFileBackendTest, serverConfigurationsCoexistence) {
|
||||
std::string config = "{ \"Dhcp4\": {"
|
||||
"\"rebind-timer\": 2000, "
|
||||
"\"renew-timer\": 1000, \n"
|
||||
"\"valid-lifetime\": 4000 }, "
|
||||
"\"Dhcp6\": { },"
|
||||
"\"DhcpDdns\": { },"
|
||||
"\"Control-agent\": { }"
|
||||
"}";
|
||||
|
||||
writeFile(TEST_FILE, config);
|
||||
|
||||
// Now initialize the server
|
||||
boost::scoped_ptr<ControlledDhcpv4Srv> srv;
|
||||
ASSERT_NO_THROW(
|
||||
srv.reset(new ControlledDhcpv4Srv(0))
|
||||
);
|
||||
|
||||
// And configure it using the config file.
|
||||
EXPECT_NO_THROW(srv->init(TEST_FILE));
|
||||
}
|
||||
|
||||
// This test checks if configuration can be read from a JSON file
|
||||
// using hash (#) line comments
|
||||
TEST_F(JSONFileBackendTest, hashComments) {
|
||||
|
@@ -1377,6 +1377,16 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
|
||||
}
|
||||
}
|
||||
|
||||
\"Control-agent\" {
|
||||
switch(driver.ctx_) {
|
||||
case isc::dhcp::Parser6Context::CONFIG:
|
||||
return isc::dhcp::Dhcp6Parser::make_CONTROL_AGENT(driver.loc_);
|
||||
default:
|
||||
return isc::dhcp::Dhcp6Parser::make_STRING("Control-agent", driver.loc_);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{JSONString} {
|
||||
/* A string has been matched. It contains the actual string and single quotes.
|
||||
We need to get those quotes out of the way and just use its content, e.g.
|
||||
|
@@ -190,6 +190,7 @@ using namespace std;
|
||||
|
||||
DHCP4 "Dhcp4"
|
||||
DHCPDDNS "DhcpDdns"
|
||||
CONTROL_AGENT "Control-agent"
|
||||
|
||||
// Not real tokens, just a way to signal what the parser is expected to
|
||||
// parse.
|
||||
@@ -347,8 +348,8 @@ unknown_map_entry: STRING COLON {
|
||||
};
|
||||
|
||||
|
||||
// This defines the top-level { } that holds Dhcp6, Dhcp4, DhcpDdns or Logging
|
||||
// objects.
|
||||
// This defines the top-level { } that holds Control-agent, Dhcp6, Dhcp4,
|
||||
// DhcpDdns or Logging objects.
|
||||
syntax_map: LCURLY_BRACKET {
|
||||
// This code is executed when we're about to start parsing
|
||||
// the content of the map
|
||||
@@ -370,6 +371,7 @@ global_object: dhcp6_object
|
||||
| logging_object
|
||||
| dhcp4_json_object
|
||||
| dhcpddns_json_object
|
||||
| control_agent_json_object
|
||||
| unknown_map_entry
|
||||
;
|
||||
|
||||
@@ -1752,6 +1754,14 @@ dhcpddns_json_object: DHCPDDNS {
|
||||
ctx.leave();
|
||||
};
|
||||
|
||||
control_agent_json_object: CONTROL_AGENT {
|
||||
ctx.enter(ctx.NO_KEYWORD);
|
||||
} COLON value {
|
||||
ctx.stack_.back()->set("Control-agent", $4);
|
||||
ctx.leave();
|
||||
};
|
||||
|
||||
|
||||
// --- logging entry -----------------------------------------
|
||||
|
||||
// This defines the top level "Logging" object. It parses
|
||||
|
@@ -169,6 +169,32 @@ TEST_F(JSONFileBackendTest, jsonFile) {
|
||||
EXPECT_EQ(Lease::TYPE_NA, pools3.at(0)->getType());
|
||||
}
|
||||
|
||||
// This test verifies that the configurations for various servers
|
||||
// can coexist and that the DHCPv6 configuration parsers will simply
|
||||
// ignore them.
|
||||
TEST_F(JSONFileBackendTest, serverConfigurationsCoexistence) {
|
||||
std::string config = "{ \"Dhcp6\": {"
|
||||
"\"rebind-timer\": 2000, "
|
||||
"\"renew-timer\": 1000, \n"
|
||||
"\"preferred-lifetime\": 1000, \n"
|
||||
"\"valid-lifetime\": 4000 }, "
|
||||
"\"Dhcp4\": { },"
|
||||
"\"DhcpDdns\": { },"
|
||||
"\"Control-agent\": { }"
|
||||
"}";
|
||||
|
||||
writeFile(TEST_FILE, config);
|
||||
|
||||
// Now initialize the server
|
||||
boost::scoped_ptr<ControlledDhcpv6Srv> srv;
|
||||
ASSERT_NO_THROW(
|
||||
srv.reset(new ControlledDhcpv6Srv(0))
|
||||
);
|
||||
|
||||
// And configure it using the config file.
|
||||
EXPECT_NO_THROW(srv->init(TEST_FILE));
|
||||
}
|
||||
|
||||
// This test checks if configuration can be read from a JSON file
|
||||
// using hash (#) line comments
|
||||
TEST_F(JSONFileBackendTest, hashComments) {
|
||||
|
1
src/bin/keactrl/.gitignore
vendored
1
src/bin/keactrl/.gitignore
vendored
@@ -1,5 +1,4 @@
|
||||
/keactrl
|
||||
/kea.conf
|
||||
/kea-ca.conf
|
||||
/keactrl.conf
|
||||
/keactrl.8
|
||||
|
@@ -5,16 +5,16 @@ SUBDIRS = . tests
|
||||
# If the default location needs to be changed it may be achieved by
|
||||
# setting KEACTRL_CONF environment variable.
|
||||
sbin_SCRIPTS = keactrl
|
||||
CONFIGFILES = keactrl.conf kea.conf kea-ca.conf
|
||||
CONFIGFILES = keactrl.conf kea.conf
|
||||
|
||||
man_MANS = keactrl.8
|
||||
DISTCLEANFILES = keactrl keactrl.conf $(man_MANS)
|
||||
CLEANFILES = kea.conf kea-ca.conf
|
||||
EXTRA_DIST = keactrl.in keactrl.conf.in kea.conf.pre kea-ca.conf.pre $(man_MANS) keactrl.xml
|
||||
CLEANFILES = kea.conf
|
||||
EXTRA_DIST = keactrl.in keactrl.conf.in kea.conf.pre $(man_MANS) keactrl.xml
|
||||
|
||||
# kea.conf and kea-ca.conf are not really sources used for building other targets, but we need
|
||||
# these files to be generated before make install is called.
|
||||
BUILT_SOURCES = kea.conf kea-ca.conf
|
||||
# kea.conf is not really a source used for building other targets, but we need
|
||||
# this file to be generated before make install is called.
|
||||
BUILT_SOURCES = kea.conf
|
||||
|
||||
if GENERATE_DOCS
|
||||
|
||||
@@ -32,10 +32,6 @@ endif
|
||||
kea.conf: kea.conf.pre
|
||||
$(top_builddir)/tools/path_replacer.sh $(top_srcdir)/src/bin/keactrl/kea.conf.pre $@
|
||||
|
||||
kea-ca.conf: kea-ca.conf.pre
|
||||
$(top_builddir)/tools/path_replacer.sh $(top_srcdir)/src/bin/keactrl/kea-ca.conf.pre $@
|
||||
|
||||
|
||||
if INSTALL_CONFIGURATIONS
|
||||
|
||||
install-data-local:
|
||||
|
@@ -1,44 +0,0 @@
|
||||
// This is a basic configuraton for the Kea Control Agent.
|
||||
{
|
||||
// RESTful interface to be available at http://127.0.0.1:8080/
|
||||
"Control-agent": {
|
||||
"http-host": "127.0.0.1",
|
||||
"http-port": 8080,
|
||||
|
||||
// Specify location of the files to which the Control Agent
|
||||
// should connect to forward commands to the DHCPv4 and DHCPv6
|
||||
// server via unix domain socket.
|
||||
"control-sockets": {
|
||||
"dhcp4": {
|
||||
"socket-type": "unix",
|
||||
"socket-name": "/tmp/kea-dhcp4-ctrl.sock"
|
||||
},
|
||||
"dhcp6": {
|
||||
"socket-type": "unix",
|
||||
"socket-name": "/tmp/kea-dhcp6-ctrl.sock"
|
||||
}
|
||||
},
|
||||
|
||||
// Specify hooks libraries that are attached to the Control Agent.
|
||||
// Such hooks libraries should support 'control_command_receive'
|
||||
// hook point. This is currently commented out because it has to
|
||||
// point to the existing hooks library. Otherwise the Control
|
||||
// Agent will fail to start.
|
||||
"hooks-libraries": [
|
||||
// {
|
||||
// "library": "/opt/local/control-agent-commands.so",
|
||||
// "parameters": {
|
||||
// "param1": "foo"
|
||||
// }
|
||||
// }
|
||||
]
|
||||
},
|
||||
|
||||
// Basic logging configuration for the Control Agent.
|
||||
"Logging": {
|
||||
"loggers": [ {
|
||||
"name": "kea-ctrl-agent",
|
||||
"severity": "INFO"
|
||||
} ]
|
||||
}
|
||||
}
|
@@ -1,10 +1,10 @@
|
||||
// This is a basic configuration for the Kea DHCPv4 and DHCPv6 servers. Subnet
|
||||
// declarations are mostly commented out and no interfaces are listed.
|
||||
// Therefore, the servers will not listen or respond to any queries. The basic
|
||||
// configuration must be extended to specify interfaces on which the servers
|
||||
// should listen. There are a number of example options defined. These probably
|
||||
// don't make any sense in your network. Make sure you at least update the
|
||||
// following, before running this example in your network:
|
||||
// This is a basic configuration for the Kea DHCP servers and Kea Control
|
||||
// Agent. Subnet declarations are mostly commented out and no interfaces are
|
||||
// listed. Therefore, the servers will not listen or respond to any queries.
|
||||
// The basic configuration must be extended to specify interfaces on which
|
||||
// the servers should listen. There are a number of example options defined.
|
||||
// These probably don't make any sense in your network. Make sure you at least
|
||||
// update the following, before running this example in your network:
|
||||
// - change the network interface names
|
||||
// - change the subnets to match your actual network
|
||||
// - change the option values to match your network
|
||||
@@ -734,6 +734,41 @@
|
||||
"reverse-ddns" : {}
|
||||
},
|
||||
|
||||
// This is a basic configuraton for the Kea Control Agent.
|
||||
// RESTful interface to be available at http://127.0.0.1:8080/
|
||||
"Control-agent": {
|
||||
"http-host": "127.0.0.1",
|
||||
"http-port": 8080,
|
||||
|
||||
// Specify location of the files to which the Control Agent
|
||||
// should connect to forward commands to the DHCPv4 and DHCPv6
|
||||
// server via unix domain socket.
|
||||
"control-sockets": {
|
||||
"dhcp4": {
|
||||
"socket-type": "unix",
|
||||
"socket-name": "/tmp/kea-dhcp4-ctrl.sock"
|
||||
},
|
||||
"dhcp6": {
|
||||
"socket-type": "unix",
|
||||
"socket-name": "/tmp/kea-dhcp6-ctrl.sock"
|
||||
}
|
||||
},
|
||||
|
||||
// Specify hooks libraries that are attached to the Control Agent.
|
||||
// Such hooks libraries should support 'control_command_receive'
|
||||
// hook point. This is currently commented out because it has to
|
||||
// point to the existing hooks library. Otherwise the Control
|
||||
// Agent will fail to start.
|
||||
"hooks-libraries": [
|
||||
// {
|
||||
// "library": "/opt/local/control-agent-commands.so",
|
||||
// "parameters": {
|
||||
// "param1": "foo"
|
||||
// }
|
||||
// }
|
||||
]
|
||||
},
|
||||
|
||||
// Logging configuration starts here. Kea uses different loggers to log various
|
||||
// activities. For details (e.g. names of loggers), see Chapter 18.
|
||||
"Logging":
|
||||
@@ -776,32 +811,39 @@
|
||||
// of logs if told to do so.
|
||||
"debuglevel": 0
|
||||
},
|
||||
{
|
||||
// This specifies the logging for kea-dhcp6 logger, i.e. all logs
|
||||
// generated by Kea DHCPv6 server.
|
||||
"name": "kea-dhcp6",
|
||||
"output_options": [
|
||||
{
|
||||
"output": "@localstatedir@/log/kea-dhcp6.log"
|
||||
}
|
||||
],
|
||||
"severity": "INFO",
|
||||
"debuglevel": 0
|
||||
},
|
||||
{
|
||||
// This specifies the logging for D2 (DHCP-DDNS) daemon.
|
||||
"name": "kea-dhcp-ddns",
|
||||
"output_options": [
|
||||
{
|
||||
"output": "@localstatedir@/log/kea-ddns.log"
|
||||
}
|
||||
],
|
||||
"severity": "INFO",
|
||||
"debuglevel": 0
|
||||
}
|
||||
{
|
||||
// This specifies the logging for kea-dhcp6 logger, i.e. all logs
|
||||
// generated by Kea DHCPv6 server.
|
||||
"name": "kea-dhcp6",
|
||||
"output_options": [
|
||||
{
|
||||
"output": "@localstatedir@/log/kea-dhcp6.log"
|
||||
}
|
||||
],
|
||||
"severity": "INFO",
|
||||
"debuglevel": 0
|
||||
},
|
||||
{
|
||||
// This specifies the logging for D2 (DHCP-DDNS) daemon.
|
||||
"name": "kea-dhcp-ddns",
|
||||
"output_options": [
|
||||
{
|
||||
"output": "@localstatedir@/log/kea-ddns.log"
|
||||
}
|
||||
],
|
||||
"severity": "INFO",
|
||||
"debuglevel": 0
|
||||
},
|
||||
{
|
||||
"name": "kea-ctrl-agent",
|
||||
"output_options": [
|
||||
{
|
||||
"output": "@localstatedir@/log/kea-ctrl-agent.log"
|
||||
}
|
||||
],
|
||||
"severity": "INFO",
|
||||
"debuglevel": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
// In the future releases, also Control Agent configuration will be kept here.
|
||||
// However, for the time being, it is kept in a separate file.
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ exec_prefix=@exec_prefix@
|
||||
dhcp4_srv=@sbindir@/kea-dhcp4
|
||||
dhcp6_srv=@sbindir@/kea-dhcp6
|
||||
dhcp_ddns_srv=@sbindir@/kea-dhcp-ddns
|
||||
ctrl_agent_srv=@sbindir@/kea-ctrl-agent
|
||||
|
||||
# Start DHCPv4 server?
|
||||
dhcp4=yes
|
||||
@@ -23,5 +24,8 @@ dhcp6=yes
|
||||
# Start DHCP DDNS server?
|
||||
dhcp_ddns=no
|
||||
|
||||
# Start Control Agent?
|
||||
ctrl_agent=yes
|
||||
|
||||
# Be verbose?
|
||||
kea_verbose=no
|
||||
|
@@ -202,7 +202,7 @@ to process ${proc_name}, PID ${_pid}.\n"
|
||||
# and be set to yes, e.g. ${dhcp4} should be equal to yes if server name
|
||||
# is dhcp4
|
||||
run_conditional() {
|
||||
local server=${1} # Server name: dhcp4, dhcp6, dhcp_ddns
|
||||
local server=${1} # Server name: dhcp4, dhcp6, dhcp_ddns, ctrl_agent
|
||||
local command="${2}" # Command to execute
|
||||
local check_file_cfg=${3} # Check if server enabled in the configuration file
|
||||
|
||||
@@ -301,7 +301,7 @@ do
|
||||
# Validate that the specified server names are correct.
|
||||
for s in ${servers}
|
||||
do
|
||||
is_in_list "${s}" "all dhcp4 dhcp6 dhcp_ddns"
|
||||
is_in_list "${s}" "all dhcp4 dhcp6 dhcp_ddns ctrl_agent"
|
||||
if [ ${_inlist} -eq 0 ]; then
|
||||
log_error "invalid server name: ${s}"
|
||||
exit 1
|
||||
@@ -343,11 +343,19 @@ if [ -z ${dhcp_ddns} ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get location of the Control Agent binary.
|
||||
if [ -z ${ctrl_agent_srv} ]; then
|
||||
log_error "ctrl_agent_srv parameter not specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# dhcp4 and dhcp6 (=yes) indicate if we should start DHCPv4 and DHCPv6 server
|
||||
# respectively.
|
||||
dhcp4=$( printf "%s" ${dhcp4} | tr [:upper:] [:lower:] )
|
||||
dhcp6=$( printf "%s" ${dhcp6} | tr [:upper:] [:lower:] )
|
||||
dhcp_ddns=$( printf "%s" ${dhcp_ddns} | tr [:upper:] [:lower:] )
|
||||
ctrl_agent=$( printf "%s" ${ctrl_agent} | tr [:upper:] [:lower:] )
|
||||
|
||||
|
||||
case ${command} in
|
||||
# Start the servers.
|
||||
@@ -365,6 +373,7 @@ case ${command} in
|
||||
run_conditional "dhcp4" "start_server ${dhcp4_srv} \"${args}\"" 1
|
||||
run_conditional "dhcp6" "start_server ${dhcp6_srv} \"${args}\"" 1
|
||||
run_conditional "dhcp_ddns" "start_server ${dhcp_ddns_srv} \"${args}\"" 1
|
||||
run_conditional "ctrl_agent" "start_server ${ctrl_agent_srv} \"${args}\"" 1
|
||||
|
||||
exit 0 ;;
|
||||
|
||||
@@ -376,6 +385,7 @@ case ${command} in
|
||||
run_conditional "dhcp4" "stop_server ${dhcp4_srv}" 0
|
||||
run_conditional "dhcp6" "stop_server ${dhcp6_srv}" 0
|
||||
run_conditional "dhcp_ddns" "stop_server ${dhcp_ddns_srv}" 0
|
||||
run_conditional "ctrl_agent" "stop_server ${ctrl_agent_srv}" 0
|
||||
|
||||
exit 0 ;;
|
||||
|
||||
@@ -387,6 +397,7 @@ case ${command} in
|
||||
run_conditional "dhcp4" "reload_server ${dhcp4_srv}" 0
|
||||
run_conditional "dhcp6" "reload_server ${dhcp6_srv}" 0
|
||||
run_conditional "dhcp_ddns" "reload_server ${dhcp_ddns_srv}" 0
|
||||
run_conditional "ctrl_agent" "reload_server ${ctrl_agent_srv}" 0
|
||||
|
||||
exit 0 ;;
|
||||
|
||||
@@ -411,6 +422,13 @@ case ${command} in
|
||||
d2_status="active"
|
||||
fi
|
||||
printf "DHCP DDNS: %s\n" ${d2_status}
|
||||
|
||||
agent_status="inactive"
|
||||
check_running $(basename ${ctrl_agent_srv})
|
||||
if [ ${_running} -eq 1 ]; then
|
||||
agent_status="active"
|
||||
fi
|
||||
printf "Control Agent: %s\n" ${agent_status}
|
||||
printf "Kea configuration file: %s\n" ${kea_config_file}
|
||||
printf "keactrl configuration file: %s\n" ${keactrl_conf}
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||||
[<!ENTITY mdash "—">]>
|
||||
<!--
|
||||
- Copyright (C) 2014-2016 Internet Systems Consortium, Inc. ("ISC")
|
||||
- Copyright (C) 2014-2017 Internet Systems Consortium, Inc. ("ISC")
|
||||
-
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
@@ -58,9 +58,10 @@
|
||||
<para>
|
||||
keactrl is a shell script which controls the startup, shutdown
|
||||
and reconfiguration of the Kea servers (<command>kea-dhcp4</command>,
|
||||
<command>kea-dhcp6</command> and <command>kea-dhcp-ddns</command>). It
|
||||
also provides the means for checking the current status of the servers
|
||||
and determining the configuration files in use.
|
||||
<command>kea-dhcp6</command>, <command>kea-dhcp-ddns</command> and
|
||||
<command>kea-ctrl-agent</command>). It also provides the means for
|
||||
checking the current status of the servers and determining the
|
||||
configuration files in use.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -165,6 +166,13 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>ctrl_agent</term>
|
||||
<listitem>
|
||||
<para>Control Agent (<command>kea-ctrl-agent</command>).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>all</term>
|
||||
<listitem>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2014-2016 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2014-2017 Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
@@ -21,10 +21,11 @@ KEACTRL_CFG_FILE=@abs_top_builddir@/src/bin/keactrl/tests/keactrl_test.conf
|
||||
# Path to the Kea log file.
|
||||
LOG_FILE=@abs_top_builddir@/src/bin/keactrl/tests/test.log
|
||||
# Binaries' names
|
||||
wildcard_name="kea-dhcp"
|
||||
kea4_name="${wildcard_name}4"
|
||||
kea6_name="${wildcard_name}6"
|
||||
d2_name="${wildcard_name}-ddns"
|
||||
wildcard_name="kea-"
|
||||
kea4_name="${wildcard_name}dhcp4"
|
||||
kea6_name="${wildcard_name}dhcp6"
|
||||
d2_name="${wildcard_name}dhcp-ddns"
|
||||
agent_name="${wildcard_name}ctrl-agent"
|
||||
# Kea configuration
|
||||
config="{
|
||||
\"Dhcp4\":
|
||||
@@ -78,7 +79,10 @@ config="{
|
||||
\"forward-ddns\" : {},
|
||||
\"reverse-ddns\" : {}
|
||||
},
|
||||
|
||||
\"Control-agent\": {
|
||||
\"http-host\": \"127.0.0.1\",
|
||||
\"http-port\": 18080
|
||||
},
|
||||
\"Logging\":
|
||||
{
|
||||
\"loggers\": [
|
||||
@@ -108,6 +112,15 @@ config="{
|
||||
}
|
||||
],
|
||||
\"severity\": \"INFO\"
|
||||
},
|
||||
{
|
||||
\"name\": \"kea-ctrl-agent\",
|
||||
\"output_options\": [
|
||||
{
|
||||
\"output\": \"$LOG_FILE\"
|
||||
}
|
||||
],
|
||||
\"severity\": \"INFO\"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -116,15 +129,16 @@ config="{
|
||||
# Fixed part of the keactrl configuration file.
|
||||
keactrl_fixed_config="dhcp4_srv=${KEACTRL_BUILD_DIR}/src/bin/dhcp4/kea-dhcp4\n\
|
||||
dhcp6_srv=${KEACTRL_BUILD_DIR}/src/bin/dhcp6/kea-dhcp6\n\
|
||||
dhcp_ddns_srv=${KEACTRL_BUILD_DIR}/src/bin/d2/kea-dhcp-ddns\n"
|
||||
dhcp_ddns_srv=${KEACTRL_BUILD_DIR}/src/bin/d2/kea-dhcp-ddns\n\
|
||||
ctrl_agent_srv=${KEACTRL_BUILD_DIR}/src/bin/agent/kea-ctrl-agent\n"
|
||||
|
||||
# This test checks that DHCPv4, DHCPv6 and D2 server can be started and
|
||||
# shut down.
|
||||
start_all_servers_no_verbose_test() {
|
||||
# Create configuration file for keactrl. This configuration enables
|
||||
# DHCPv4, DHCPv6 and D2 server.
|
||||
# DHCPv4, DHCPv6, D2 and CA.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=yes\ndhcp6=yes\n\
|
||||
dhcp_ddns=yes\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=yes\nctrl_agent=yes\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
|
||||
test_start "keactrl.start_all_servers_no_verbose_test"
|
||||
|
||||
@@ -156,11 +170,22 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Timeout waiting for ${kea4_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 1
|
||||
# Wait for D2 and CA to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for CPL daemons to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
wait_for_message 20 "DHCP_DDNS_STARTED" 1
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
wait_for_message 20 "CTRL_AGENT_HTTP_SERVICE_STARTED" 1
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${agent_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Make sure that debug messages are logged for neither
|
||||
# server (non-verbose mode).
|
||||
get_log_messages "DHCP6_START_INFO"
|
||||
@@ -192,6 +217,10 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Use keactrl stop to shutdown the servers.
|
||||
printf "Stopping Kea: ${keactrl} stop -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} stop -c ${KEACTRL_CFG_FILE}
|
||||
@@ -210,8 +239,8 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Timeout waiting for ${kea4_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 10s for the D2 server to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 1
|
||||
# Wait up to 10s for the D2 and CA to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
@@ -230,7 +259,7 @@ start_all_servers_verbose_test() {
|
||||
# Create configuration file for keactrl. This configuration enables
|
||||
# all servers.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=yes\ndhcp6=yes\n\
|
||||
dhcp_ddns=yes\nkea_verbose=yes\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=yes\nctrl_agent=yes\nkea_verbose=yes\n${keactrl_fixed_config}"
|
||||
|
||||
test_start "keactrl.start_all_servers_verbose_test"
|
||||
|
||||
@@ -259,12 +288,21 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Timeout waiting for ${kea4_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 20s for the D2 server to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 1
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for CPL daemons to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
wait_for_message 20 "DHCP_DDNS_STARTED" 1
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
wait_for_message 20 "CTRL_AGENT_HTTP_SERVICE_STARTED" 1
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${agent_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Check if the debug messages are present, which should only be
|
||||
# the case if the verbose mode is on.
|
||||
get_log_messages "DHCP6_START_INFO" 1
|
||||
@@ -275,8 +313,8 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_LOG_MESSAGES} \
|
||||
"Expected get_log_messages for DHCP4_START_INFO return %d, returned %d."
|
||||
|
||||
get_log_messages "DCTL_STANDALONE" 1
|
||||
assert_eq 1 ${_GET_LOG_MESSAGES} \
|
||||
get_log_messages "DCTL_STANDALONE" 2
|
||||
assert_eq 2 ${_GET_LOG_MESSAGES} \
|
||||
"Expected get_log_messages for DCT_STANDALONE return %d, returned %d."
|
||||
|
||||
# Server may shut down imediatelly after configuration has competed.
|
||||
@@ -296,6 +334,10 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Use keactrl stop to shutdown the servers.
|
||||
printf "Stopping Kea: ${keactrl} stop -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} stop -c ${KEACTRL_CFG_FILE}
|
||||
@@ -314,10 +356,10 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Timeout waiting for ${kea4_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 10s for the D2 server to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 1
|
||||
# Wait up to 10s for the D2 and CA to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to shutdown. \
|
||||
"Timeout waiting for ${d2_name} and ${agent_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Make sure that all servers are down.
|
||||
@@ -335,7 +377,7 @@ start_v4_server_test() {
|
||||
# Create configuration file for keactrl. This configuration enables
|
||||
# DHCPv4 server but disables other servers.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=yes\ndhcp6=no\n\
|
||||
dhcp_ddns=no\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=no\nctrl_agent=no\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
|
||||
test_start "keactrl.start_v4_server_test"
|
||||
|
||||
@@ -377,6 +419,11 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that CA is not running.
|
||||
get_pid ${agent_name}
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that the status command returns appropriate status.
|
||||
printf "Getting status of Kea modules: %s\n" "${keactrl} status \
|
||||
-c ${KEACTRL_CFG_FILE}"
|
||||
@@ -389,6 +436,8 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Expected keactrl status command return %s"
|
||||
assert_string_contains "DHCP DDNS: inactive" "${output}" \
|
||||
"Expected keactrl status command return %s"
|
||||
assert_string_contains "Control Agent: inactive" "${output}" \
|
||||
"Expected keactrl status command return %s"
|
||||
|
||||
# Use keactrl stop to shutdown the servers.
|
||||
printf "Stopping Kea: ${keactrl} stop -c ${KEACTRL_CFG_FILE}\n"
|
||||
@@ -416,7 +465,7 @@ start_v6_server_test() {
|
||||
# Create configuration file for keactrl. This configuration enables
|
||||
# DHCPv6 server but disables other servers..
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=no\ndhcp6=yes\n\
|
||||
dhcp_ddns=no\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=no\nctrl_agent=no\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
|
||||
test_start "keactrl.start_v6_server_test"
|
||||
|
||||
@@ -458,6 +507,11 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that CA is not running.
|
||||
get_pid ${agent_name}
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that the status command returns appropriate status.
|
||||
printf "Getting status of Kea modules: %s\n" "${keactrl} status -c ${KEACTRL_CFG_FILE}"
|
||||
output=$( ${keactrl} status -c ${KEACTRL_CFG_FILE} )
|
||||
@@ -469,7 +523,8 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Expected keactrl status command return %s"
|
||||
assert_string_contains "DHCP DDNS: inactive" "${output}" \
|
||||
"Expected keactrl status command return %s"
|
||||
|
||||
assert_string_contains "Control Agent: inactive" "${output}" \
|
||||
"Expected keactrl status command return %s"
|
||||
|
||||
# Use keactrl stop to shutdown the servers.
|
||||
printf "Stopping Kea: ${keactrl} stop -c ${KEACTRL_CFG_FILE}\n"
|
||||
@@ -498,7 +553,7 @@ late_start_v4_server_test() {
|
||||
# Create configuration file for keactrl. This configuration enables
|
||||
# DHCPv6 server but disables other servers.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=no\ndhcp6=yes\n\
|
||||
dhcp_ddns=no\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=no\nctrl_agent=no\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
|
||||
test_start "keactrl.late_start_v4_server_test"
|
||||
|
||||
@@ -535,6 +590,16 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${kea4_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that D2 server is not running.
|
||||
get_pid ${d2_name}
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that CA is not running.
|
||||
get_pid ${agent_name}
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Trigger reconfiguration, make sure that the DHCPv6 server reconfigured.
|
||||
printf "Reconfiguring the DHCPv6 server: ${keactrl} reload -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} reload -c ${KEACTRL_CFG_FILE}
|
||||
@@ -548,7 +613,7 @@ Expected wait_for_message to return %d, returned %d."
|
||||
|
||||
# Update keactrl config to enable other servers.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=yes\ndhcp6=yes\n\
|
||||
dhcp_ddns=yes\nkea_verbose=yes\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=yes\nctrl_agent=yes\nkea_verbose=yes\n${keactrl_fixed_config}"
|
||||
create_keactrl_config "${keactrl_config}"
|
||||
|
||||
# Start other servers using keactrl script.
|
||||
@@ -563,13 +628,12 @@ dhcp_ddns=yes\nkea_verbose=yes\n${keactrl_fixed_config}"
|
||||
"Timeout waiting for ${kea4_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 20s for the D2 server to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 1
|
||||
# Wait up to 20s for the D2 and CA to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${kea4_name} to start. \
|
||||
"Timeout waiting for ${d2_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
|
||||
# Make sure that DHCPv6 server is running.
|
||||
get_pid ${kea6_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
@@ -585,6 +649,10 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that CA is running.
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Trigger reconfiguration, make sure that servers are reconfigured.
|
||||
printf "Reconfiguring all servers: ${keactrl} reload \
|
||||
@@ -603,10 +671,11 @@ Expected wait_for_message to return %d, returned %d."
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} "Timeout waiting for ${kea4_name} to reconfigure. \
|
||||
Expected wait_for_message to return %d, returned %d."
|
||||
|
||||
# There should be two completed configurations of D2 server.
|
||||
wait_for_message 10 "DCTL_CONFIG_COMPLETE" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} "Timeout waiting for ${d2_name} to reconfigure. \
|
||||
Expected wait_for_message to return %d, returned %d."
|
||||
# There should be two completed configurations of D2 and two
|
||||
# configurations of CA.
|
||||
wait_for_message 10 "DCTL_CONFIG_COMPLETE" 4
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} "Timeout waiting for ${d2_name} or ${ca_name} \
|
||||
to reconfigure. Expected wait_for_message to return %d, returned %d."
|
||||
|
||||
# Use keactrl stop to shutdown the servers.
|
||||
printf "Stopping Kea: ${keactrl} stop -c ${KEACTRL_CFG_FILE}\n"
|
||||
@@ -626,10 +695,10 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Timeout waiting for ${kea4_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 10s for the D2 server to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 1
|
||||
# Wait up to 10s for the D2 and CA to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to shutdown. \
|
||||
"Timeout waiting for ${d2_name} and ${ca_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Make sure that all servers are down.
|
||||
@@ -647,7 +716,7 @@ late_start_v6_server_test() {
|
||||
# Create configuration file for keactrl. This configuration enables
|
||||
# DHCPv4 server but disables DHCPv6 server.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=yes\ndhcp6=no\n\
|
||||
dhcp_ddns=no\nkea_verbose=yes\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=no\nctrl_agent=yes\nkea_verbose=yes\n${keactrl_fixed_config}"
|
||||
|
||||
test_start "keactrl.late_start_v6_server_test"
|
||||
|
||||
@@ -689,6 +758,11 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that CA is not running.
|
||||
get_pid ${d2_name}
|
||||
assert_eq 0 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Trigger reconfiguration, make sure that the DHCPv4 server is reconfigured.
|
||||
printf "Reconfiguring the DHCPv4 server: ${keactrl} reload -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} reload -c ${KEACTRL_CFG_FILE}
|
||||
@@ -702,7 +776,7 @@ Expected wait_for_message to return %d, returned %d."
|
||||
|
||||
# Update keactrl config to enable other servers.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=yes\ndhcp6=yes\n\
|
||||
dhcp_ddns=yes\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=yes\nctrl_agent=yes\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
create_keactrl_config "${keactrl_config}"
|
||||
|
||||
# Start other servers using keactrl script.
|
||||
@@ -717,8 +791,8 @@ dhcp_ddns=yes\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
"Timeout waiting for ${kea4_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 20s for the D2 server to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 1
|
||||
# Wait up to 20s for the D2 and CA to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
@@ -739,6 +813,11 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure that CA is running.
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Trigger reconfiguration, make sure that servers are reconfigured.
|
||||
printf "Reconfiguring DHCPv6 and DHCPv4 servers: ${keactrl} reload \
|
||||
-c ${KEACTRL_CFG_FILE}\n"
|
||||
@@ -756,12 +835,12 @@ Expected wait_for_message to return %d, returned %d."
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} "Timeout waiting for ${kea6_name} to reconfigure. \
|
||||
Expected wait_for_message to return %d, returned %d."
|
||||
|
||||
# There should be two completed configurations of Dd2 server.
|
||||
wait_for_message 10 "DCTL_CONFIG_COMPLETE" 2
|
||||
# There should be two completed configurations of D2 and two
|
||||
# configurations of the CA.
|
||||
wait_for_message 10 "DCTL_CONFIG_COMPLETE" 4
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} "Timeout waiting for ${d2_name} to reconfigure. \
|
||||
Expected wait_for_message to return %d, returned %d."
|
||||
|
||||
|
||||
# Use keactrl stop to shutdown the servers.
|
||||
printf "Stopping Kea: ${keactrl} stop -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} stop -c ${KEACTRL_CFG_FILE}
|
||||
@@ -780,8 +859,8 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Timeout waiting for ${kea4_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 10s for the d2 server to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 1
|
||||
# Wait up to 10s for the D2 and CA to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
@@ -799,7 +878,7 @@ stop_selected_server_test() {
|
||||
# Create configuration file for keactrl. This configuration enables
|
||||
# all servers.
|
||||
keactrl_config="kea_config_file=${CFG_FILE}\ndhcp4=yes\ndhcp6=yes\n\
|
||||
dhcp_ddns=yes\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
dhcp_ddns=yes\nctrl_agent=yes\nkea_verbose=no\n${keactrl_fixed_config}"
|
||||
|
||||
test_start "keactrl.stop_selected_server_test"
|
||||
|
||||
@@ -828,8 +907,8 @@ Expected wait_for_message return %d, returned %d."
|
||||
"Timeout waiting for ${kea4_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Wait up to 20s for the D2 server to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 1
|
||||
# Wait up to 20s for the D2 and CA to configure.
|
||||
wait_for_message 20 "DCTL_CONFIG_COMPLETE" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${d2_name} to start. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
@@ -851,7 +930,7 @@ Expected wait_for_message return %d, returned %d."
|
||||
# Give it some time to shutdown.
|
||||
sleep 3
|
||||
|
||||
# Make sure that both servers are running.
|
||||
# Make sure that all servers are running.
|
||||
get_pid ${kea4_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${kea4_name} process running, found %d processes running"
|
||||
@@ -864,6 +943,10 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Use keactrl stop to shutdown DHCPv4 server.
|
||||
printf "Stopping DHCPv4 server: ${keactrl} stop -s dhcp4 -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} stop -s dhcp4 -c ${KEACTRL_CFG_FILE}
|
||||
@@ -891,6 +974,11 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure CA is still running
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Use keactrl stop to shutdown DHCPv6 server.
|
||||
printf "Stopping DHCPv6 server: ${keactrl} stop -s dhcp6 -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} stop -s dhcp6 -c ${KEACTRL_CFG_FILE}
|
||||
@@ -913,6 +1001,11 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${d2_name} process running, found %d processes running"
|
||||
|
||||
# Make sure CA is still running
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Use keactrl stop to shutdown D2 server.
|
||||
printf "Stopping DHCP DDNS server: ${keactrl} stop -s dhcp_ddns -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} stop -s dhcp_ddns -c ${KEACTRL_CFG_FILE}
|
||||
@@ -930,6 +1023,28 @@ Expected wait_for_message return %d, returned %d."
|
||||
assert_eq 1 ${_WAIT_FOR_SERVER_DOWN} \
|
||||
"Expected wait_for_server_down return %d, returned %d"
|
||||
|
||||
# Make sure CA is still running
|
||||
get_pid ${agent_name}
|
||||
assert_eq 1 ${_GET_PIDS_NUM} \
|
||||
"Expected %d ${agent_name} process running, found %d processes running"
|
||||
|
||||
# Use keactrl stop to shutdown CA.
|
||||
printf "Stopping DHCP DDNS server: ${keactrl} stop -s ctrl_agent -c ${KEACTRL_CFG_FILE}\n"
|
||||
${keactrl} stop -s ctrl_agent -c ${KEACTRL_CFG_FILE}
|
||||
ret=${?}
|
||||
assert_eq 0 ${ret} "Expected keactrl to return %d, returned value was %d."
|
||||
|
||||
# Wait up to 10s for the CA to stop.
|
||||
wait_for_message 10 "DCTL_SHUTDOWN" 2
|
||||
assert_eq 1 ${_WAIT_FOR_MESSAGE} \
|
||||
"Timeout waiting for ${agent_name} to shutdown. \
|
||||
Expected wait_for_message return %d, returned %d."
|
||||
|
||||
# Make sure that the CA is down.
|
||||
wait_for_server_down 5 ${agent_name}
|
||||
assert_eq 1 ${_WAIT_FOR_SERVER_DOWN} \
|
||||
"Expected wait_for_server_down return %d, returned %d"
|
||||
|
||||
test_finish 0
|
||||
}
|
||||
|
||||
@@ -957,6 +1072,8 @@ status_no_config_test() {
|
||||
"Expected keactrl status command return %s"
|
||||
assert_string_contains "DHCP DDNS: inactive" "${output}" \
|
||||
"Expected keactrl status command return %s"
|
||||
assert_string_contains "Control Agent: inactive" "${output}" \
|
||||
"Expected keactrl status command return %s"
|
||||
assert_string_contains "Configuration file for Kea does not exist" \
|
||||
"${output}" "Expected keactrl status command return %s"
|
||||
|
||||
|
Reference in New Issue
Block a user