Kea  1.5.0
ca_controller.cc
Go to the documentation of this file.
1 // Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
2 //
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 
7 #include <config.h>
8 
9 #include <agent/ca_controller.h>
10 #include <agent/ca_process.h>
11 #include <agent/ca_command_mgr.h>
12 #include <agent/parser_context.h>
13 #include <boost/bind.hpp>
14 
15 using namespace isc::process;
16 
17 namespace isc {
18 namespace agent {
19 
22 const char* CtrlAgentController::agent_app_name_ = "Control-agent";
23 
25 const char* CtrlAgentController::agent_bin_name_ = "kea-ctrl-agent";
26 
28 CtrlAgentController::instance() {
29  // If the instance hasn't been created yet, create it. Note this method
30  // must use the base class singleton instance methods.
31  if (!getController()) {
32  DControllerBasePtr controller_ptr(new CtrlAgentController());
33  setController(controller_ptr);
34  }
35 
36  return (getController());
37 }
38 
40 CtrlAgentController::createProcess() {
41  // Instantiate and return an instance of the D2 application process. Note
42  // that the process is passed the controller's io_service.
43  return (new CtrlAgentProcess(getAppName().c_str(), getIOService()));
44 }
45 
47 CtrlAgentController::parseFile(const std::string& name) {
48  ParserContext parser;
49  return (parser.parseFile(name, ParserContext::PARSER_AGENT));
50 }
51 
52 void
53 CtrlAgentController::registerCommands() {
54  CtrlAgentCommandMgr::instance().registerCommand(BUILD_REPORT_COMMAND,
55  boost::bind(&DControllerBase::buildReportHandler, this, _1, _2));
56 
57  CtrlAgentCommandMgr::instance().registerCommand(CONFIG_GET_COMMAND,
58  boost::bind(&DControllerBase::configGetHandler, this, _1, _2));
59 
60  CtrlAgentCommandMgr::instance().registerCommand(CONFIG_TEST_COMMAND,
61  boost::bind(&DControllerBase::configTestHandler, this, _1, _2));
62 
63  CtrlAgentCommandMgr::instance().registerCommand(CONFIG_WRITE_COMMAND,
64  boost::bind(&DControllerBase::configWriteHandler, this, _1, _2));
65 
66  CtrlAgentCommandMgr::instance().registerCommand(SHUT_DOWN_COMMAND,
67  boost::bind(&DControllerBase::shutdownHandler, this, _1, _2));
68 
69  CtrlAgentCommandMgr::instance().registerCommand(VERSION_GET_COMMAND,
70  boost::bind(&DControllerBase::versionGetHandler, this, _1, _2));
71 }
72 
73 void
74 CtrlAgentController::deregisterCommands() {
75  CtrlAgentCommandMgr::instance().deregisterCommand(BUILD_REPORT_COMMAND);
76  CtrlAgentCommandMgr::instance().deregisterCommand(CONFIG_GET_COMMAND);
77  CtrlAgentCommandMgr::instance().deregisterCommand(CONFIG_TEST_COMMAND);
78  CtrlAgentCommandMgr::instance().deregisterCommand(CONFIG_WRITE_COMMAND);
79  CtrlAgentCommandMgr::instance().deregisterCommand(SHUT_DOWN_COMMAND);
80  CtrlAgentCommandMgr::instance().deregisterCommand(VERSION_GET_COMMAND);
81 }
82 
83 CtrlAgentController::CtrlAgentController()
84  : DControllerBase(agent_app_name_, agent_bin_name_) {
85 }
86 
88 }
89 
92  return (boost::dynamic_pointer_cast<CtrlAgentProcess>(getProcess()));
93 }
94 
95 } // namespace isc::agent
96 } // namespace isc
isc::process::DControllerBase
Application Controller.
Definition: d_controller.h:104
isc::agent::ParserContext::parseFile
isc::data::ElementPtr parseFile(const std::string &filename, ParserType parser_type)
Run the parser on the file specified.
Definition: agent/parser_context.cc:37
ca_process.h
isc::agent::CtrlAgentController::~CtrlAgentController
virtual ~CtrlAgentController()
Destructor.
Definition: ca_controller.cc:87
isc::process::DControllerBase::getProcess
DProcessBasePtr getProcess()
Fetches the current process.
Definition: d_controller.h:565
isc::process::DControllerBase::configTestHandler
isc::data::ConstElementPtr configTestHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for config-test command
Definition: d_controller.cc:505
isc
Defines the logger used by the top-level component of kea-dhcp-ddns.
Definition: agent_parser.cc:144
isc::agent::CtrlAgentController::getCtrlAgentProcess
CtrlAgentProcessPtr getCtrlAgentProcess()
Returns pointer to an instance of the underlying process object.
Definition: ca_controller.cc:91
isc::process::DControllerBase::shutdownHandler
isc::data::ConstElementPtr shutdownHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for 'shutdown' command
Definition: d_controller.cc:561
isc::process::DControllerBase::versionGetHandler
isc::data::ConstElementPtr versionGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for version-get command
Definition: d_controller.cc:544
isc::process::DControllerBasePtr
boost::shared_ptr< DControllerBase > DControllerBasePtr
Definition: d_controller.h:78
isc::process::DProcessBase
Application Process Interface.
Definition: d_process.h:67
isc::agent::CtrlAgentProcessPtr
boost::shared_ptr< CtrlAgentProcess > CtrlAgentProcessPtr
Defines a shared pointer to CtrlAgentProcess.
Definition: ca_process.h:147
isc::process::DControllerBase::configWriteHandler
isc::data::ConstElementPtr configWriteHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for config-write command
Definition: d_controller.cc:424
isc::process
Definition: config_base.cc:16
isc::agent::CtrlAgentProcess
Kea Control Agent Application Process.
Definition: ca_process.h:32
isc::process::DControllerBase::configGetHandler
isc::data::ConstElementPtr configGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for config-get command
Definition: d_controller.cc:416
ca_controller.h
parser_context.h
isc::data::ConstElementPtr
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:23
isc::agent::ParserContext
Parser context is a wrapper around flex/bison instances dedicated to Control-agent config file parser...
Definition: agent/parser_context.h:37
ca_command_mgr.h
isc::agent::CtrlAgentController
Process Controller for Control Agent Process.
Definition: ca_controller.h:21
isc::process::DControllerBase::buildReportHandler
isc::data::ConstElementPtr buildReportHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for 'build-report' command
Definition: d_controller.cc:556