<div dir="ltr">Hello everyone!<div><br></div><div>My name is Christian Glombek and I am currently a student participant in the Google Summer of Code program,</div><div>working on Fedora IoT & Project Atomic.</div><div><br></div><div>As part of this effort, I was tasked with creating a generic health check framework using systemd.</div><div>We want to use it to determine system boot health (and then direct the system what to do depending on the outcome).</div><div><br></div><div>So, here we go:</div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">https://</span><a href="http://github.com/LorbusChris/greenboot" target="_blank">github.com/<wbr>LorbusChris/greenboot</a></span><br></div><div><br></div><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">The greenboot.service currently binds to multi-user.target, however I can see this becoming even more generic in the future,</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">where one could define a different target to bind to and test.</div></div><div><br></div><div>Each test is defined as a service unit placed in greenboot.service.wants or greenboot.service.requires (non-critical and critical ones, respectively).</div><div>Note: I haven't created any real tests yet, just mock-ups.</div><div><br></div><div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial"><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">This is my first stab at a trivial implementation and I'm sure I did not consider all the implications.</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">I'd love to get your feedback on it!<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">If you're already a member of the Fedora community, you can also post feedback here:</div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial"><a href="https://pagure.io/fedora-iot/issue/2" target="_blank">https://pagure.io/fedora-iot/<wbr>issue/2</a><br></div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">Also please feel free to create an issue on the GitHub project.</div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">Thank you.</div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">Cheers,</div><div style="text-align:start;text-indent:0px;text-decoration-style:initial;text-decoration-color:initial">Chris</div></div><br class="m_-2152254339336903019gmail-Apple-interchange-newline"><br></div><div><br></div><div><br></div></div>