ganeti

Safe HaskellSafe-Infered

Ganeti.Query.Common

Contents

Description

Implementation of the Ganeti Query2 common objects.

Synopsis

Generic functions

Result helpers

rsNoData :: ResultEntrySource

Helper for a result with no data.

rsUnavail :: ResultEntrySource

Helper for result for an entity which supports no such field.

rsNormal :: JSON a => a -> ResultEntrySource

Helper to declare a normal result.

rsMaybeNoData :: JSON a => Maybe a -> ResultEntrySource

Helper to declare a result from a Maybe (the item might be missing, in which case we return no data). Note that there's some ambiguity here: in some cases, we mean RSNoData, but in other RSUnavail; this is easy to solve in simple cases, but not in nested dicts. If you want to return RSUnavail in case of Nothing use the function rsMaybeUnavail.

rsMaybeUnavail :: JSON a => Maybe a -> ResultEntrySource

Helper to declare a result from a Maybe. This version returns a RSUnavail in case of Nothing. It should be used for optional fields that are not set. For cases where Nothing means that there was an error, consider using rsMaybe instead.

rsUnknown :: ResultEntrySource

Helper for unknown field result.

missingRuntime :: FieldGetter a bSource

Helper for a missing runtime parameter.

Error conversion

rpcErrorToStatus :: RpcError -> ResultStatusSource

Convert RpcError to ResultStatus

Common fields

timeStampFields :: TimeStampObject a => FieldList a bSource

The list of timestamp fields.

uuidFields :: UuidObject a => String -> FieldList a bSource

The list of UUID fields.

serialFields :: SerialNoObject a => String -> FieldList a bSource

The list of serial number fields.

tagsFields :: TagsObject a => FieldList a bSource

The list of tag fields.

Generic parameter functions

dictFieldGetter :: DictObject a => String -> Maybe a -> ResultEntrySource

Returns a field from a (possibly missing) DictObject. This is used by parameter dictionaries, usually. Note that we have two levels of maybe: the top level dict might be missing, or one key in the dictionary might be.

buildQFTLookup :: [(String, String)] -> Map String FieldTypeSource

Build an optimised lookup map from a Python _PARAMETER_TYPES association list.

buildNdParamField :: NdParamObject a => String -> FieldData a bSource

Builds the ndparam fields for an object.