diff --git a/htools/Ganeti/Types.hs b/htools/Ganeti/Types.hs index 850114c1a0bf97dc7937016c9c15bb3358d1f974..0297412f7d2d1e29981fabf540975484687d7a63 100644 --- a/htools/Ganeti/Types.hs +++ b/htools/Ganeti/Types.hs @@ -82,10 +82,12 @@ module Ganeti.Types , JobId , fromJobId , makeJobId + , makeJobIdS , RelativeJobId , JobIdDep(..) , JobDependency(..) , OpSubmitPriority(..) + , opSubmitPriorityToRaw , OpStatus(..) , opStatusToRaw , opStatusFromRaw @@ -402,10 +404,13 @@ makeJobId :: (Monad m) => Int -> m JobId makeJobId i | i >= 0 = return $ JobId i | otherwise = fail $ "Invalid value for job ID ' " ++ show i ++ "'" +-- | Builds a job ID from a string. +makeJobIdS :: (Monad m) => String -> m JobId +makeJobIdS s = tryRead "parsing job id" s >>= makeJobId + -- | Parses a job ID. parseJobId :: (Monad m) => JSON.JSValue -> m JobId -parseJobId (JSON.JSString x) = - tryRead "parsing job id" (JSON.fromJSString x) >>= makeJobId +parseJobId (JSON.JSString x) = makeJobIdS $ JSON.fromJSString x parseJobId (JSON.JSRational _ x) = if denominator x /= 1 then fail $ "Got fractional job ID from master daemon?! Value:" ++ show x