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 FailMode

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

FromString GanetiException 
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.

runListHead :: a -> (b -> a) -> [b] -> aSource

Apply a function to the first element of a list, return the default value, if the list is empty. This is just a convenient combination of maybe and listToMaybe.

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.

newtype ListSet a Source

Wrapper for a Haskell Set

This type wraps a Set and it is used in the Haskell to Python opcode generation to transform a Haskell Set into a Python list without duplicate elements.

Constructors

ListSet 

Fields

unListSet :: Set a
 

Instances

Eq a => Eq (ListSet a) 
Show a => Show (ListSet a) 
(Ord a, JSON a) => JSON (ListSet a) 
PyValue a => PyValue (ListSet a)