main.cpp (e6ffe7040eb28d8ea2a242177d2780516b6f5cf0) main.cpp (82897c35761f505c2b881f72c61f726f7d562692)
1
2#include "estoraged.hpp"
3
4#include <unistd.h>
5
6#include <phosphor-logging/lg2.hpp>
7#include <sdbusplus/bus.hpp>
8

--- 12 unchanged lines hidden (view full) ---

21 " If omitted, default is luks-<devName>";
22}
23
24int main(int argc, char** argv)
25{
26
27 std::string physicalBlockDev = "/dev/mmcblk0";
28 std::string containerBlockDev;
1
2#include "estoraged.hpp"
3
4#include <unistd.h>
5
6#include <phosphor-logging/lg2.hpp>
7#include <sdbusplus/bus.hpp>
8

--- 12 unchanged lines hidden (view full) ---

21 " If omitted, default is luks-<devName>";
22}
23
24int main(int argc, char** argv)
25{
26
27 std::string physicalBlockDev = "/dev/mmcblk0";
28 std::string containerBlockDev;
29 int opt;
29 int opt = 0;
30 while ((opt = getopt(argc, argv, "b:c:")) != -1)
31 {
32 switch (opt)
33 {
34 case 'b':
35 physicalBlockDev = optarg;
36 break;
37 case 'c':
38 containerBlockDev = optarg;
39 break;
40 default:
30 while ((opt = getopt(argc, argv, "b:c:")) != -1)
31 {
32 switch (opt)
33 {
34 case 'b':
35 physicalBlockDev = optarg;
36 break;
37 case 'c':
38 containerBlockDev = optarg;
39 break;
40 default:
41 usage(argv[0]);
41 usage(*argv);
42 exit(EXIT_FAILURE);
43 }
44 }
42 exit(EXIT_FAILURE);
43 }
44 }
45
46 /* Get the filename of the device (without "/dev/"). */
47 auto deviceName =
48 std::filesystem::path(physicalBlockDev).filename().string();
49
50 /* If containerName arg wasn't provided, create one based on deviceName. */
51 if (containerBlockDev.empty())
45 try
52 {
46 {
53 containerBlockDev = "luks-" + deviceName;
54 }
47 /* Get the filename of the device (without "/dev/"). */
48 std::string deviceName =
49 std::filesystem::path(physicalBlockDev).filename().string();
50 /* If containerName arg wasn't provided, create one based on deviceName.
51 */
52 if (containerBlockDev.empty())
53 {
54 containerBlockDev = "luks-" + deviceName;
55 }
55
56
56 /* DBus path location to place the object. */
57 std::string path = "/xyz/openbmc_project/storage/" + deviceName;
57 /* DBus path location to place the object. */
58 std::string path = "/xyz/openbmc_project/storage/" + deviceName;
58
59
59 /*
60 * Create a new bus and affix an object manager for the subtree path we
61 * intend to place objects at.
62 */
63 auto b = sdbusplus::bus::new_default();
64 sdbusplus::server::manager_t m{b, path.c_str()};
60 /*
61 * Create a new bus and affix an object manager for the subtree path we
62 * intend to place objects at.
63 */
64 auto b = sdbusplus::bus::new_default();
65 sdbusplus::server::manager_t m{b, path.c_str()};
65
66
66 /* Reserve the dbus service name. */
67 std::string busName = "xyz.openbmc_project.eStoraged." + deviceName;
68 b.request_name(busName.c_str());
67 /* Reserve the dbus service name. */
68 std::string busName = "xyz.openbmc_project.eStoraged." + deviceName;
69 b.request_name(busName.c_str());
69
70
70 /* Create an eStoraged object. */
71 estoraged::eStoraged esObject{b, path.c_str(), physicalBlockDev,
72 containerBlockDev};
73 lg2::info("Storage management service is running", "REDFISH_MESSAGE_ID",
74 std::string("OpenBMC.1.0.ServiceStarted"));
71 /* Create an eStoraged object. */
72 estoraged::EStoraged esObject{b, path.c_str(), physicalBlockDev,
73 containerBlockDev};
74 lg2::info("Storage management service is running", "REDFISH_MESSAGE_ID",
75 std::string("OpenBMC.1.0.ServiceStarted"));
75
76
76 while (true)
77 {
78 b.wait();
79 b.process_discard();
77 while (true)
78 {
79 b.wait();
80 b.process_discard();
81 }
80 }
82 }
83 catch (const std::exception& e)
84 {
85 lg2::error(e.what(), "REDFISH_MESSAGE_ID",
86 std::string("OpenBMC.1.0.ServiceException"));
81
87
88 return 2;
89 }
82 return 1;
83}
90 return 1;
91}