ganeti

Safe HaskellNone

Ganeti.JQueue

Contents

Description

Implementation of the job queue.

Synopsis

Data types

type Timestamp = (Int, Int)Source

The ganeti queue timestamp type

noTimestamp :: TimestampSource

Missing timestamp type.

data InputOpCode Source

An input opcode.

Constructors

ValidOpCode MetaOpCode

OpCode was parsed successfully

InvalidOpCode JSValue

Invalid opcode

Instances

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

Constructors

QueuedOpCode 

Fields

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

Instances

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

data QueuedJob Source

Instances

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.