adds notification for successful OS update, as well as failure

This commit is contained in:
Keagan McClelland
2021-04-28 12:23:33 -06:00
committed by Aiden McClelland
parent db13407294
commit 82df17d854
3 changed files with 21 additions and 3 deletions

View File

@@ -43,6 +43,8 @@ data AgentNotification =
| RestartFailed S9Error
| DockerFuckening
| CertRenewFailed ExitCode String String
| OsUpdateSucceeded
| OsUpdateFailed Text
-- CODES
-- RULES:
@@ -73,6 +75,7 @@ toCode :: AgentNotification -> Text
toCode InstallSuccess = "100"
toCode BackupSucceeded = "101"
toCode RestoreSucceeded = "102"
toCode OsUpdateSucceeded = "103"
toCode InstallFailedGetApp = "300"
toCode (InstallFailedAppMgrExitCode _) = "301"
toCode DockerFuckening = "302"
@@ -86,6 +89,7 @@ toTitle :: AgentNotification -> Text
toTitle InstallSuccess = "Install succeeded"
toTitle BackupSucceeded = "Backup succeeded"
toTitle RestoreSucceeded = "Restore succeeded"
toTitle OsUpdateSucceeded = "EmbassyOS Update Succeeded"
toTitle InstallFailedGetApp = "Install failed"
toTitle (InstallFailedAppMgrExitCode _) = "Install failed"
toTitle (InstallFailedS9Error _) = "Install failed"
@@ -118,3 +122,4 @@ Stdout:
Stderr:
#{e}
|]
toMessage _ version OsUpdateSucceeded = [i|The update to EmbassyOS #{version} succeeded.|]

View File

@@ -20,14 +20,17 @@ import System.Posix.Files
import System.Process
import Constants
import Database.Persist.Sqlite ( runSqlPool )
import Foundation
import Handler.Types.V0.Base
import Lib.Algebra.State.RegistryUrl
import Lib.Error
import Lib.External.Registry
import qualified Lib.Notifications as Notifications
import Lib.Sound as Sound
import Lib.Synchronizers
import Lib.SystemPaths
import Lib.Types.Core
import Lib.Types.Emver
import Lib.WebServer
import Settings
@@ -214,7 +217,10 @@ synchronizeSystemState ctx _version = handle @_ @SomeException cleanup $ flip ru
Nothing -> pure ()
Just tid -> liftIO $ killThread tid
setUpdate False
when (any snd restartsAndRuns) $ liftIO $ playSong 400 marioPowerUp
when (any snd restartsAndRuns) $ liftIO $ do
_ <- flip runSqlPool (appConnPool ctx)
$ Notifications.emit (AppId "embassy-os") agentVersion Notifications.OsUpdateSucceeded
playSong 400 marioPowerUp
when (any (uncurry (&&)) restartsAndRuns) $ liftIO do
callCommand "/bin/sync"
callCommand "/sbin/reboot"

View File

@@ -55,6 +55,7 @@ import Data.ByteString.Char8 ( split )
import qualified Data.ByteString.Char8 as C8
import Data.Conduit.List ( consume )
import qualified Data.Text as T
import Database.Persist.Sqlite ( runSqlPool )
import Foundation
import Handler.Network
import qualified Lib.Algebra.Domain.AppMgr as AppMgr2
@@ -62,6 +63,7 @@ import Lib.ClientManifest
import Lib.Error
import qualified Lib.External.AppMgr as AppMgr
import Lib.External.Registry
import qualified Lib.Notifications as Notifications
import Lib.Sound
import Lib.Ssl
import Lib.SystemCtl
@@ -651,8 +653,13 @@ syncRemoveDefaultNginxCfg = SyncOp "Remove Default Nginx Configuration" check mi
failUpdate :: S9Error -> ExceptT Void (ReaderT AgentCtx IO) ()
failUpdate e = do
ref <- asks appIsUpdateFailed
putStrLn $ "UPDATE FAILED: " <> errorMessage (toError e)
ref <- asks appIsUpdateFailed
pool <- asks appConnPool
let msg = errorMessage (toError e)
putStrLn $ "UPDATE FAILED: " <> msg
_ <- liftIO . flip runSqlPool pool $ Notifications.emit (AppId "embassy-os")
agentVersion
(Notifications.OsUpdateFailed msg)
liftIO $ playSong 216 beethoven
liftIO $ writeIORef ref (Just e)