Kea  1.5.0
cfg_db_access.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>
9 #include <dhcpsrv/db_type.h>
11 #include <dhcpsrv/host_mgr.h>
13 #include <boost/algorithm/string.hpp>
14 #include <boost/foreach.hpp>
15 #include <boost/lexical_cast.hpp>
16 #include <sstream>
17 #include <vector>
18 
19 using namespace isc::data;
20 
21 namespace isc {
22 namespace dhcp {
23 
24 CfgDbAccess::CfgDbAccess()
25  : appended_parameters_(), lease_db_access_("type=memfile"),
26  host_db_access_() {
27 }
28 
29 std::string
32 }
33 
34 
35 std::string
37  if (host_db_access_.empty()) {
38  return ("");
39  } else {
40  return (getAccessString(host_db_access_.front()));
41  }
42 }
43 
44 std::list<std::string>
46  std::list<std::string> ret;
47  for (const std::string& dbaccess : host_db_access_) {
48  if (!dbaccess.empty()) {
49  ret.push_back(getAccessString(dbaccess));
50  }
51  }
52  return (ret);
53 }
54 
55 void
57  // Recreate lease manager.
60 
61  // Recreate host data source.
63  std::list<std::string> host_db_access_list = getHostDbAccessStringList();
64  for (std::string& hds : host_db_access_list) {
66  }
67 
68  // Check for a host cache.
70 }
71 
72 std::string
73 CfgDbAccess::getAccessString(const std::string& access_string) const {
74  std::ostringstream s;
75  s << access_string;
76  // Only append additional parameters if any parameters are specified
77  // in a configuration. For host database, no parameters mean that
78  // database access is disabled and thus we don't want to append any
79  // parameters.
80  if ((s.tellp() != std::streampos(0)) && (!appended_parameters_.empty())) {
81  s << " " << appended_parameters_;
82  }
83 
84  return (s.str());
85 }
86 
87 } // end of isc::dhcp namespace
88 } // end of isc namespace
std::list< std::string > host_db_access_
Holds host database access strings.
Definition: cfg_db_access.h:96
std::string getHostDbAccessString() const
Retrieves host database access string.
static void destroy()
Destroy lease manager.
void createManagers() const
Creates instance of lease manager and host data sources according to the configuration specified.
std::string getAccessString(const std::string &access_string) const
Returns lease or host database access string.
static void create()
Creates new instance of the HostMgr.
Definition: host_mgr.cc:40
std::string lease_db_access_
Holds lease database access string.
Definition: cfg_db_access.h:93
Defines the logger used by the top-level component of kea-dhcp-ddns.
std::string getLeaseDbAccessString() const
Retrieves lease database access string.
static void create(const std::string &dbaccess)
Create an instance of a lease manager.
std::list< std::string > getHostDbAccessStringList() const
Retrieves host database access string.
static void addBackend(const std::string &access)
Add an alternate host backend (aka host data source).
Definition: host_mgr.cc:45
static bool checkCacheBackend(bool logging=false)
Check for the cache host backend.
Definition: host_mgr.cc:68
std::string appended_parameters_
Parameters to be appended to the database access strings.
Definition: cfg_db_access.h:90