Create IBM ConfigFile base directory
The ConfigFile upload fails when the /var/lib/obmc directory is not
available at BMC
This commit changes the base directory to /var/lib/bmcweb
The subdirectories for the configfiles and locks
are created under this new path
Migration strategy of this directory and files:
This is IBM only feature, compiled under the IBM_MANAGEMENT_CONSOLE flag
There is no system out yet which is running this code
Internal IBM stake holders are in agreement with the changes
Tested by :
1. Tested configfile upload on a BMC where the base directory is not
available
2. Tested the configfile upload on a factory BMC. Verified it creates
the base directories and the upload is successful
3. Tested the configfile usecases for delete and delete-all
4. Tested the acquire-lock functionality
5. Ran lock unit test successfully
Signed-off-by: Sunitha Harish <sunharis@in.ibm.com>
Change-Id: Ic3f5f5d0ba0b37950fd397ec835b4fa7babdaa9b
diff --git a/include/ibm/utils.hpp b/include/ibm/utils.hpp
new file mode 100644
index 0000000..217b2f4
--- /dev/null
+++ b/include/ibm/utils.hpp
@@ -0,0 +1,43 @@
+#pragma once
+
+#include <logging.hpp>
+
+#include <filesystem>
+#include <fstream>
+
+namespace crow
+{
+namespace ibm_utils
+{
+
+inline bool createDirectory(const std::string_view path)
+{
+ // Create persistent directory
+ std::error_code ec;
+
+ BMCWEB_LOG_DEBUG << "Creating persistent directory : " << path;
+
+ bool dirCreated = std::filesystem::create_directories(path, ec);
+
+ if (ec)
+ {
+ BMCWEB_LOG_ERROR << "Failed to create persistent directory : " << path;
+ return false;
+ }
+
+ if (dirCreated)
+ {
+ // set the permission of the directory to 700
+ BMCWEB_LOG_DEBUG << "Setting the permission to 700";
+ std::filesystem::perms permission = std::filesystem::perms::owner_all;
+ std::filesystem::permissions(path, permission);
+ }
+ else
+ {
+ BMCWEB_LOG_DEBUG << path << " already exists";
+ }
+ return true;
+}
+
+} // namespace ibm_utils
+} // namespace crow