blob: 935382aacfa9e0c7510a0477c44df54dabd20fa8 [file] [log] [blame]
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -05001#include "activation.hpp"
Adriana Kobylak692b5552017-04-17 14:02:58 -05002#include "config.h"
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -05003
4namespace openpower
5{
6namespace software
7{
8namespace updater
9{
10
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050011namespace softwareServer = sdbusplus::xyz::openbmc_project::Software::server;
12
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050013auto Activation::activation(Activations value) ->
14 Activations
15{
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050016 if (value == softwareServer::Activation::Activations::Activating)
17 {
18 if (!activationBlocksTransition)
19 {
20 activationBlocksTransition =
21 std::make_unique<ActivationBlocksTransition>(
22 bus,
23 path);
24 }
Saqib Khan1e9b7162017-04-18 10:21:59 -050025
26 // Creating a mount point to access squashfs image.
27 constexpr auto squashfsMountService = "obmc-flash-bios-squashfsmount@";
28 auto squashfsMountServiceFile = std::string(squashfsMountService) +
29 versionId + ".service";
30 auto method = bus.new_method_call(
31 SYSTEMD_BUSNAME,
32 SYSTEMD_PATH,
33 SYSTEMD_INTERFACE,
34 "StartUnit");
35 method.append(squashfsMountServiceFile,
36 "replace");
37 bus.call_noreply(method);
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050038 }
39 else
40 {
41 activationBlocksTransition.reset(nullptr);
42 }
43 return softwareServer::Activation::activation(value);
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050044}
45
46auto Activation::requestedActivation(RequestedActivations value) ->
47 RequestedActivations
48{
Adriana Kobylak692b5552017-04-17 14:02:58 -050049 if ((value == softwareServer::Activation::RequestedActivations::Active) &&
50 (softwareServer::Activation::requestedActivation() !=
51 softwareServer::Activation::RequestedActivations::Active))
52 {
53 constexpr auto ubimountService = "obmc-flash-bios-ubimount@";
54 auto ubimountServiceFile = std::string(ubimountService) +
55 versionId +
56 ".service";
57 auto method = bus.new_method_call(
58 SYSTEMD_BUSNAME,
59 SYSTEMD_PATH,
60 SYSTEMD_INTERFACE,
61 "StartUnit");
62 method.append(ubimountServiceFile,
63 "replace");
64 bus.call_noreply(method);
65 }
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050066 return softwareServer::Activation::requestedActivation(value);
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050067}
68
69} // namespace updater
70} // namespace software
71} // namespace openpower
72