diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Propellor/Property/Reboot.hs | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/Propellor/Property/Reboot.hs b/src/Propellor/Property/Reboot.hs index 2d4319d9..aa762629 100644 --- a/src/Propellor/Property/Reboot.hs +++ b/src/Propellor/Property/Reboot.hs @@ -14,7 +14,6 @@ import Data.Version import Text.ParserCombinators.ReadP type KernelVersion = String -data KernelAvailable = Running | Installed | Unavailable now :: Property Linux now = tightenTargets $ cmdProperty "reboot" [] @@ -65,21 +64,15 @@ toDistroKernel = check (not <$> runningInstalledKernel) now toKernelNewerThan :: KernelVersion -> Property DebianLike toKernelNewerThan ver = property' ("reboot to kernel newer than " ++ ver) $ \w -> do - available <- liftIO $ newerKernelAvailable (readVersion ver) - case available of - Running -> noChange - Installed -> ensureProperty w now - Unavailable -> return FailedChange - -newerKernelAvailable :: Version -> IO KernelAvailable -newerKernelAvailable wantV = do - runningV <- readVersion <$> runningKernelVersion - installedV <- maximum . map readVersion <$> installedKernelVersions - if runningV >= wantV - then return Running - else if installedV >= wantV && runningV < wantV - then return Installed - else return Unavailable + let wantV = readVersion ver + runningV <- readVersion <$> liftIO runningKernelVersion + installedV <- maximum . map readVersion <$> + liftIO installedKernelVersions + if runningV >= wantV then noChange + else if installedV >= wantV && runningV < wantV + then ensureProperty w now + else error "newer kernel not installed" + >> return FailedChange runningInstalledKernel :: IO Bool runningInstalledKernel = do |
