ganeti

Safe HaskellSafe-Infered

Ganeti.BasicTypes

Contents

Synopsis

Documentation

data GenericResult a b Source

Generic monad for our error handling mechanisms.

Constructors

Bad a 
Ok b 

Instances

FromString a => Monad (GenericResult a)

Monad instance for GenericResult.

Functor (GenericResult a) 
MonadPlus (GenericResult String) 
Applicative (GenericResult a) 
Arbitrary a => Arbitrary (Result a) 
Arbitrary a => Arbitrary (OpResult a) 
(Eq a, Eq b) => Eq (GenericResult a b) 
(Show a, Show b) => Show (GenericResult a b) 

genericResult :: (a -> c) -> (b -> c) -> GenericResult a b -> cSource

Sum type structure of GenericResult.

type Result = GenericResult StringSource

Type alias for a string Result.

class FromString a whereSource

Type class for things that can be built from strings.

Methods

mkFromString :: String -> aSource

Instances

FromString GanetiException 
FromString FailMode

FromString instance for FailMode designed to catch unintended use as a general monad.

FromString [Char]

Trivial String instance; requires FlexibleInstances extension though.

newtype ResultT a m b Source

This is a monad transformation for Result. It's implementation is based on the implementations of MaybeT and ErrorT.

Constructors

ResultT 

Fields

runResultT :: m (GenericResult a b)
 

Instances

MonadTrans (ResultT a) 
(Monad m, FromString a) => Monad (ResultT a m) 
(MonadIO m, FromString a) => MonadIO (ResultT a m) 

resultT :: Monad m => GenericResult a b -> ResultT a m bSource

Lift a Result value to a ResultT.

isOk :: GenericResult a b -> BoolSource

Simple checker for whether a GenericResult is OK.

isBad :: GenericResult a b -> BoolSource

Simple checker for whether a GenericResult is a failure.

eitherToResult :: Either a b -> GenericResult a bSource

Converter from Either to GenericResult.

annotateResult :: String -> Result a -> Result aSource

Annotate a Result with an ownership information.

iterateOk :: (a -> GenericResult b a) -> a -> [a]Source

Iterate while Ok.

Misc functionality

selectSource

Arguments

:: a

default result

-> [(Bool, a)]

list of "condition, result"

-> a

first result which has a True condition, or default

Return the first result with a True condition, or the default otherwise.

Lookup of partial names functionality

data MatchPriority Source

The priority of a match in a lookup result.

data LookupResult Source

The result of a name lookup in a list.

Constructors

LookupResult 

Fields

lrMatchPriority :: MatchPriority

The result type | Matching value (for ExactMatch, PartialMatch), Lookup string otherwise

lrContent :: String
 

Instances

Eq LookupResult

Lookup results have an absolute preference ordering.

Ord LookupResult 
Show LookupResult 

prefixMatchSource

Arguments

:: String

Lookup

-> String

Full name

-> Bool

Whether there is a prefix match

Check for prefix matches in names. Implemented in Ganeti core utils.text.MatchNameComponent as the regexp r^%s(..*)?$ % re.escape(key)

goodMatchPriority :: MatchPriority -> BoolSource

Is the lookup priority a good one?

goodLookupResult :: LookupResult -> BoolSource

Is the lookup result an actual match?

compareNameComponentSource

Arguments

:: String

Canonical (target) name

-> String

Partial (lookup) name

-> LookupResult

Result of the lookup

Compares a canonical name and a lookup string.

lookupNameSource

Arguments

:: [String]

List of keys

-> String

Lookup string

-> LookupResult

Result of the lookup

Find the canonical name for a lookup string in a list of names.