{-
-Copyright (C) 2012 Google Inc.
+Copyright (C) 2012, 2013 Google Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
, JobDependency(..)
, OpSubmitPriority(..)
, opSubmitPriorityToRaw
+ , parseSubmitPriority
+ , fmtSubmitPriority
, OpStatus(..)
, opStatusToRaw
, opStatusFromRaw
, ELogType(..)
+ , InstReasonSrc(..)
) where
import Control.Monad (liftM)
])
$(THH.makeJSONInstance ''IAllocatorMode)
--- | Netork mode.
+-- | Network mode.
$(THH.declareSADT "NICMode"
[ ("NMBridged", 'C.nicModeBridged)
, ("NMRouted", 'C.nicModeRouted)
])
$(THH.makeJSONInstance ''OpSubmitPriority)
+-- | Parse submit priorities from a string.
+parseSubmitPriority :: (Monad m) => String -> m OpSubmitPriority
+parseSubmitPriority "low" = return OpPrioLow
+parseSubmitPriority "normal" = return OpPrioNormal
+parseSubmitPriority "high" = return OpPrioHigh
+parseSubmitPriority str = fail $ "Unknown priority '" ++ str ++ "'"
+
+-- | Format a submit priority as string.
+fmtSubmitPriority :: OpSubmitPriority -> String
+fmtSubmitPriority OpPrioLow = "low"
+fmtSubmitPriority OpPrioNormal = "normal"
+fmtSubmitPriority OpPrioHigh = "high"
+
-- | Our ADT for the OpCode status at runtime (while in a job).
$(THH.declareSADT "OpStatus"
[ ("OP_STATUS_QUEUED", 'C.opStatusQueued)
, ("ELogJqueueTest", 'C.elogJqueueTest)
])
$(THH.makeJSONInstance ''ELogType)
+
+-- | Type for the source of the state change of instances.
+$(THH.declareSADT "InstReasonSrc"
+ [ ("IRSCli", 'C.instanceReasonSourceCli)
+ , ("IRSRapi", 'C.instanceReasonSourceRapi)
+ ])
+$(THH.makeJSONInstance ''InstReasonSrc)
+
+