Safe HaskellNone




Implementation of the job queue.


Data types

type Timestamp = (Int, Int)Source

The ganeti queue timestamp type

noTimestamp :: TimestampSource

Missing timestamp type.

data InputOpCode Source

An input opcode.


ValidOpCode MetaOpCode

OpCode was parsed successfully

InvalidOpCode JSValue

Invalid opcode


Eq InputOpCode 
Show InputOpCode 
JSON InputOpCode

JSON instance for InputOpCode, trying to parse it and if failing, keeping the original JSValue.

invalidOp :: StringSource

extractOpSummary :: InputOpCode -> StringSource

Tries to extract the opcode summary from an InputOpCode. This duplicates some functionality from the opSummary function in Ganeti.OpCodes.

data QueuedOpCode Source




qoInput :: InputOpCode
qoStatus :: OpStatus
qoResult :: JSValue
qoLog :: [(Int, Timestamp, ELogType, JSValue)]
qoPriority :: Int
qoStartTimestamp :: Maybe Timestamp
qoExecTimestamp :: Maybe Timestamp
qoEndTimestamp :: Maybe Timestamp


toDictQueuedOpCode :: QueuedOpCode -> [(String, JSValue)]Source

data QueuedJob Source


Eq QueuedJob 
Show QueuedJob 
JSON QueuedJob 

loadQueuedJob :: JSValue -> Result QueuedJobSource

toDictQueuedJob :: QueuedJob -> [(String, JSValue)]Source

jobFileName :: JobId -> FilePathSource

Computes the filename for a given job ID.

parseJobFileId :: Monad m => FilePath -> m JobIdSource

liveJobFile :: FilePath -> JobId -> FilePathSource

Computes the full path to a live job.

archivedJobFile :: FilePath -> JobId -> FilePathSource

Computes the full path to an archives job. BROKEN.

calcJobStatus :: QueuedJob -> JobStatusSource

Computes a queued job's status.

opStatusFinalized :: OpStatus -> BoolSource

Determine whether an opcode status is finalized.

calcJobPriority :: QueuedJob -> IntSource

Compute a job's priority.

ignoreIOError :: a -> Bool -> String -> IOError -> IO aSource

allArchiveDirs :: FilePath -> IO [FilePath]Source

determineJobDirectories :: FilePath -> Bool -> IO [FilePath]Source

Build list of directories containing job files. Note: compared to the Python version, this doesn't ignore a potential lost+found file.

sequencer :: [Either IOError [JobId]] -> Either IOError [[JobId]]Source

seqFolder :: Either IOError [[JobId]] -> Either IOError [JobId] -> Either IOError [[JobId]]Source

getJobIDs :: [FilePath] -> IO (Either IOError [JobId])Source

Computes the list of all jobs in the given directories.

sortJobIDs :: [JobId] -> [JobId]Source

Sorts the a list of job IDs.

getDirJobIDs :: FilePath -> IO (Either IOError [JobId])Source

readJobDataFromDisk :: FilePath -> Bool -> JobId -> IO (Maybe (String, Bool))Source

noSuchJob :: Result (QueuedJob, Bool)Source

Failed to load job error.

loadJobFromDisk :: FilePath -> Bool -> JobId -> IO (Result (QueuedJob, Bool))Source

Loads a job from disk.