summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRatan Gupta <ratagupt@in.ibm.com>2017-08-10 09:02:08 +0530
committerPatrick Williams <patrick@stwcx.xyz>2017-08-13 11:32:24 +0000
commit255d514ef2a61125670ed6a5cdf942a287315749 (patch)
tree677a73d5b9ec1b3250984a869845c0f2d2267a8e
parent584df83a0398ee645bb6d0357933b37f7651d0d5 (diff)
downloadphosphor-networkd-255d514ef2a61125670ed6a5cdf942a287315749.tar.gz
phosphor-networkd-255d514ef2a61125670ed6a5cdf942a287315749.zip
Pass the network conf dir to network manager constructor
when the network manager comes up,it should have its conf dir path which caller wants,instead of calling one more function to set the desired conf dir. Change-Id: I282c1d5e1c6edb2b6e77d16518d2204a6ac41a45 Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
-rw-r--r--network_manager.cpp17
-rw-r--r--network_manager.hpp8
-rw-r--r--network_manager_main.cpp2
-rw-r--r--test/test_ethernet_interface.cpp24
-rw-r--r--test/test_network_manager.cpp24
5 files changed, 67 insertions, 8 deletions
diff --git a/network_manager.cpp b/network_manager.cpp
index bce6731..cdbaf45 100644
--- a/network_manager.cpp
+++ b/network_manager.cpp
@@ -27,17 +27,30 @@ namespace network
using namespace phosphor::logging;
using namespace sdbusplus::xyz::openbmc_project::Common::Error;
-Manager::Manager(sdbusplus::bus::bus& bus, const char* objPath):
+Manager::Manager(sdbusplus::bus::bus& bus, const char* objPath,
+ const std::string& path):
details::VLANCreateIface(bus, objPath, true),
bus(bus),
objectPath(objPath)
{
- confDir = NETWORK_CONF_DIR;
+ fs::path confDir(path);
+ setConfDir(confDir);
}
void Manager::setConfDir(const fs::path& dir)
{
confDir = dir;
+
+ if (!fs::exists(confDir))
+ {
+ if (!fs::create_directories(confDir))
+ {
+ log<level::ERR>("Unable to create the network conf dir",
+ entry("DIR=%s", confDir.c_str()));
+ elog<InternalFailure>();
+ }
+ }
+
}
void Manager::createInterfaces()
diff --git a/network_manager.hpp b/network_manager.hpp
index 9324aec..db4db0f 100644
--- a/network_manager.hpp
+++ b/network_manager.hpp
@@ -49,8 +49,10 @@ class Manager : public details::VLANCreateIface
/** @brief Constructor to put object onto bus at a dbus path.
* @param[in] bus - Bus to attach to.
* @param[in] objPath - Path to attach at.
+ * @param[in] dir - Network Configuration directory path.
*/
- Manager(sdbusplus::bus::bus& bus, const char* objPath);
+ Manager(sdbusplus::bus::bus& bus, const char* objPath,
+ const std::string& dir);
void vLAN(IntfName interfaceName, uint32_t id) override;
@@ -73,6 +75,10 @@ class Manager : public details::VLANCreateIface
*/
void setConfDir(const fs::path& dir);
+ /** @brief gets the network conf directory.
+ */
+ fs::path getConfDir() { return confDir; }
+
private:
/** @brief write the dhcp section **/
diff --git a/network_manager_main.cpp b/network_manager_main.cpp
index d98ab0d..47d38a5 100644
--- a/network_manager_main.cpp
+++ b/network_manager_main.cpp
@@ -10,7 +10,7 @@ int main(int argc, char *argv[])
// Add sdbusplus Object Manager for the 'root' path of the network manager.
sdbusplus::server::manager::manager objManager(bus, OBJ_NETWORK);
- phosphor::network::Manager manager(bus, OBJ_NETWORK);
+ phosphor::network::Manager manager(bus, OBJ_NETWORK, NETWORK_CONF_DIR);
manager.createChildObjects();
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index beaa0d4..67a25df 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -4,9 +4,11 @@
#include <gtest/gtest.h>
#include <sdbusplus/bus.hpp>
+#include <arpa/inet.h>
#include <net/if.h>
#include <netinet/in.h>
-#include <arpa/inet.h>
+#include <stdlib.h>
+
#include <exception>
namespace phosphor
@@ -21,15 +23,33 @@ class TestEthernetInterface : public testing::Test
sdbusplus::bus::bus bus;
Manager manager;
EthernetInterface interface;
+ std::string confDir;
TestEthernetInterface()
: bus(sdbusplus::bus::new_default()),
- manager(bus, "/xyz/openbmc_test/network"),
+ manager(bus, "/xyz/openbmc_test/network", "/tmp/"),
interface(bus, "/xyz/openbmc_test/network/test0", false, manager)
{
+ setConfDir();
+
+ }
+
+ void setConfDir()
+ {
+ char tmp[] = "/tmp/EthernetInterface.XXXXXX";
+ confDir = mkdtemp(tmp);
+ manager.setConfDir(confDir);
+ }
+ ~TestEthernetInterface()
+ {
+ if(confDir != "")
+ {
+ fs::remove_all(confDir);
+ }
}
+
int countIPObjects()
{
return interface.getAddresses().size();
diff --git a/test/test_network_manager.cpp b/test/test_network_manager.cpp
index 3382e38..3e1f0e3 100644
--- a/test/test_network_manager.cpp
+++ b/test/test_network_manager.cpp
@@ -10,25 +10,45 @@
#include <net/if.h>
#include <netinet/in.h>
#include <arpa/inet.h>
+#include <stdlib.h>
+
#include <exception>
+#include <experimental/filesystem>
namespace phosphor
{
namespace network
{
+namespace fs = std::experimental::filesystem;
+
class TestNetworkManager : public testing::Test
{
public:
sdbusplus::bus::bus bus;
Manager manager;
-
+ std::string confDir;
TestNetworkManager()
: bus(sdbusplus::bus::new_default()),
- manager(bus, "xyz/openbmc_test/abc")
+ manager(bus, "/xyz/openbmc_test/abc", "/tmp")
+ {
+ setConfDir();
+ }
+
+ ~TestNetworkManager()
{
+ if(confDir != "")
+ {
+ fs::remove_all(confDir);
+ }
+ }
+ void setConfDir()
+ {
+ char tmp[] = "/tmp/NetworkManager.XXXXXX";
+ confDir = mkdtemp(tmp);
+ manager.setConfDir(confDir);
}
void createInterfaces()
OpenPOWER on IntegriCloud