-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Common Haskell types and encoding for OpenStack Ceilometer
--
@package ceilometer-common
@version 0.2.3
-- | Copyright 2013-2015 Anchor Systems, Pty Ltd and Others
--
-- The code in this file, and the program it is a part of, is made
-- available to you by its authors as open source software: you can
-- redistribute it and/or modify it under the terms of the 3-clause BSD
-- licence.
--
-- Description This module defines the hard-coded tags and values
-- used by the Ceilometer collector as well as clients of Ceilometer.
module Ceilometer.Tags
keyMetricName :: Text
keyTenancyID :: Text
keyResourceID :: Text
keyEvent :: Text
keyCompound :: Text
keyVolumeType :: Text
valTrue :: Text
valFalse :: Text
valCPU :: Text
valDiskWrites :: Text
valDiskReads :: Text
valIP :: Text
valImage :: Text
valInstanceFlavor :: Text
valInstanceRAM :: Text
valInstanceVCPU :: Text
valNeutronIn :: Text
valNeutronOut :: Text
valSnapshot :: Text
valVolume :: Text
valVolumeBlock :: Text
valVolumeFast :: Text
lookupMetricName :: SourceDict -> Maybe Text
lookupEvent :: SourceDict -> Maybe Text
lookupVolumeType :: SourceDict -> Maybe Text
lookupCompound :: SourceDict -> Maybe Text
isEvent :: SourceDict -> Bool
module Ceilometer.Types
-- | Payload Raw Simple
newtype PRSimple
PRSimple :: Word64 -> PRSimple
prSimple :: Iso' Word64 PRSimple
-- | Payload Raw Compound Event
data PRCompoundEvent
PRCompoundEvent :: {-# UNPACK #-} !Word32 -> {-# UNPACK #-} !Word8 -> {-# UNPACK #-} !Word8 -> {-# UNPACK #-} !Word8 -> PRCompoundEvent
-- | An "improper" iso to convert between a Word64 and the raw compound.
--
-- It is improper because the reserved 8 bytes are ignored on
-- parsing/printing. So it doesn't satisfy a "roundtrip" between the
-- serialised Word64 and the decoded Compound raw. This is fine since we
-- don't care about the reserved bytes.
prCompoundEvent :: Iso' Word64 PRCompoundEvent
data PRCompoundPollster
PRCompoundPollster :: {-# UNPACK #-} !Word32 -> {-# UNPACK #-} !Word8 -> PRCompoundPollster
-- | An "improper" iso to convert between a Word64 and the raw compound.
--
-- It is improper because we only preserve the value and status in a
-- "roundtrip". This is fine for pollster since that's all we care about.
prCompoundPollster :: Iso' Word64 PRCompoundPollster
type PFValue64 = Word64
type PFValue32 = Word32
type PFValueText = Text
data PFEndpoint
Instant :: PFEndpoint
Start :: PFEndpoint
End :: PFEndpoint
pfEndpoint :: Prism' Word8 PFEndpoint
data PFVolumeStatus
VolumeError :: PFVolumeStatus
VolumeAvailable :: PFVolumeStatus
VolumeCreating :: PFVolumeStatus
VolumeExtending :: PFVolumeStatus
VolumeDeleting :: PFVolumeStatus
VolumeAttaching :: PFVolumeStatus
VolumeDetaching :: PFVolumeStatus
VolumeInUse :: PFVolumeStatus
VolumeRetyping :: PFVolumeStatus
VolumeUploading :: PFVolumeStatus
pfVolumeStatus :: Prism' Word8 PFVolumeStatus
data PFVolumeVerb
VolumeCreate :: PFVolumeVerb
VolumeResize :: PFVolumeVerb
VolumeDelete :: PFVolumeVerb
VolumeAttach :: PFVolumeVerb
VolumeDetach :: PFVolumeVerb
VolumeUpdate :: PFVolumeVerb
pfVolumeVerb :: Prism' Word8 PFVolumeVerb
data PFInstanceStatus
InstanceError :: PFInstanceStatus
InstanceActive :: PFInstanceStatus
InstanceShutoff :: PFInstanceStatus
InstanceBuild :: PFInstanceStatus
InstanceRebuild :: PFInstanceStatus
InstanceDeleted :: PFInstanceStatus
InstanceSoftDeleted :: PFInstanceStatus
InstanceShelved :: PFInstanceStatus
InstanceShelvedOffloaded :: PFInstanceStatus
InstanceReboot :: PFInstanceStatus
InstanceHardReboot :: PFInstanceStatus
InstancePassword :: PFInstanceStatus
InstanceResize :: PFInstanceStatus
InstanceVerifyResize :: PFInstanceStatus
InstanceRevertResize :: PFInstanceStatus
InstancePaused :: PFInstanceStatus
InstanceSuspended :: PFInstanceStatus
InstanceRescue :: PFInstanceStatus
InstanceMigrating :: PFInstanceStatus
pfInstanceStatus :: Prism' Word8 PFInstanceStatus
data PFImageStatus
ImageActive :: PFImageStatus
ImageSaving :: PFImageStatus
ImageDeleted :: PFImageStatus
ImageQueued :: PFImageStatus
ImagePendingDelete :: PFImageStatus
ImageKilled :: PFImageStatus
pfImageStatus :: Prism' Word8 PFImageStatus
data PFImageVerb
ImageServe :: PFImageVerb
ImageUpdate :: PFImageVerb
ImageUpload :: PFImageVerb
ImageDownload :: PFImageVerb
ImageDelete :: PFImageVerb
pfImageVerb :: Prism' Word8 PFImageVerb
data PFSnapshotStatus
SnapshotError :: PFSnapshotStatus
SnapshotAvailable :: PFSnapshotStatus
SnapshotCreating :: PFSnapshotStatus
SnapshotDeleting :: PFSnapshotStatus
pfSnapshotStatus :: Prism' Word8 PFSnapshotStatus
data PFSnapshotVerb
SnapshotCreate :: PFSnapshotVerb
SnapshotUpdate :: PFSnapshotVerb
SnapshotDelete :: PFSnapshotVerb
pfSnapshotVerb :: Prism' Word8 PFSnapshotVerb
data PFIPStatus
IPNone :: PFIPStatus
IPActive :: PFIPStatus
IPDown :: PFIPStatus
pfIPStatus :: Prism' Word8 PFIPStatus
data PFIPVerb
IPCreate :: PFIPVerb
IPUpdate :: PFIPVerb
IPDelete :: PFIPVerb
pfIPVerb :: Prism' Word8 PFIPVerb
data PFIPAlloc
IPAlloc :: PFIPAlloc
pfIPAlloc :: Prism' Word32 PFIPAlloc
data PDVolume
PDVolume :: PFVolumeStatus -> PFVolumeVerb -> PFEndpoint -> PFValue32 -> PDVolume
pdVolume :: Prism' PRCompoundEvent PDVolume
data PDSSD
PDSSD :: PFVolumeStatus -> PFVolumeVerb -> PFEndpoint -> PFValue32 -> PDSSD
pdSSD :: Prism' PRCompoundEvent PDSSD
newtype PDCPU
PDCPU :: PFValue64 -> PDCPU
pdCPU :: Iso' PRSimple PDCPU
newtype PDDiskRead
PDDiskRead :: PFValue64 -> PDDiskRead
_pdDiskReadVal :: PDDiskRead -> PFValue64
pdDiskRead :: Iso' PRSimple PDDiskRead
newtype PDDiskWrite
PDDiskWrite :: PFValue64 -> PDDiskWrite
_pdDiskWriteVal :: PDDiskWrite -> PFValue64
pdDiskWrite :: Iso' PRSimple PDDiskWrite
newtype PDNeutronTx
PDNeutronTx :: PFValue64 -> PDNeutronTx
_pdNeutronTxVal :: PDNeutronTx -> PFValue64
pdNeutronTx :: Iso' PRSimple PDNeutronTx
newtype PDNeutronRx
PDNeutronRx :: PFValue64 -> PDNeutronRx
_pdNeutronRxVal :: PDNeutronRx -> PFValue64
pdNeutronRx :: Iso' PRSimple PDNeutronRx
data PDInstanceVCPU
PDInstanceVCPU :: PFInstanceStatus -> PFValue32 -> PDInstanceVCPU
pdInstanceVCPU :: Prism' PRCompoundPollster PDInstanceVCPU
data PDInstanceRAM
PDInstanceRAM :: PFInstanceStatus -> PFValue32 -> PDInstanceRAM
pdInstanceRAM :: Prism' PRCompoundPollster PDInstanceRAM
data PDInstanceDisk
PDInstanceDisk :: PFInstanceStatus -> PFValue32 -> PDInstanceDisk
pdInstanceDisk :: Prism' PRCompoundPollster PDInstanceDisk
data PDInstanceFlavor
PDInstanceFlavor :: PFInstanceStatus -> PFValueText -> PDInstanceFlavor
pdInstanceFlavor :: FlavorMap -> Prism' PRCompoundPollster PDInstanceFlavor
data PDImage
PDImage :: PFImageStatus -> PFImageVerb -> PFEndpoint -> PFValue32 -> PDImage
pdImage :: Prism' PRCompoundEvent PDImage
newtype PDImagePollster
PDImagePollster :: PFValue64 -> PDImagePollster
pdImagePollster :: Iso' PRSimple PDImagePollster
data PDSnapshot
PDSnapshot :: PFSnapshotStatus -> PFSnapshotVerb -> PFEndpoint -> PFValue32 -> PDSnapshot
pdSnapshot :: Prism' PRCompoundEvent PDSnapshot
data PDIP
PDIP :: PFIPStatus -> PFIPVerb -> PFEndpoint -> PFIPAlloc -> PDIP
pdIP :: Prism' PRCompoundEvent PDIP
-- | A family of lens that allows viewing/updating the payload value of
-- decoded Ceilometer points.
--
-- note: this is a Lens and not just a Getter since we wish to reuse the
-- logic for collector (making the points) and user (reading the points).
class Valued a where type family PFValue a
value :: Valued a => Lens' a (PFValue a)
-- | Values with a TimeStamp.
data Timed value
Timed :: !Word64 -> value -> Timed value
time :: Lens' (Timed value_atc7) Word64
-- | Information needed to parse/fold Ceilometer types, supplied by users.
data Env
Env :: FlavorMap -> SourceDict -> Filters -> TimeStamp -> TimeStamp -> Env
_flavormap :: Env -> FlavorMap
_sourcedict :: Env -> SourceDict
_filters :: Env -> Filters
_start :: Env -> TimeStamp
_end :: Env -> TimeStamp
data Filters
Filters :: (PFInstanceStatus -> Bool) -> Filters
instanceStatusFilter :: Filters -> PFInstanceStatus -> Bool
type Flavor = Text
type FlavorMap = Bimap Flavor Word32
siphashID :: PFValueText -> Word32
filterByInstanceStatus :: Filters -> (a -> PFInstanceStatus) -> a -> Bool
instance Valued PDIP
instance Valued PDSnapshot
instance Valued PDImagePollster
instance Valued PDImage
instance Valued PDInstanceDisk
instance Valued PDInstanceRAM
instance Valued PDInstanceVCPU
instance Valued PDInstanceFlavor
instance Valued PDSSD
instance Valued PDVolume
instance Valued PDNeutronRx
instance Valued PDNeutronTx
instance Valued PDDiskWrite
instance Valued PDDiskRead
instance Valued PDCPU
instance Valued a => Valued (Timed a)
instance Show value => Show (Timed value)
instance Functor Timed
instance Foldable Timed
instance Traversable Timed
module Ceilometer.Fold
-- | An OpenStack measured known to Ceilometer. We can determine how to
-- decode and aggregate Vaultaire data for it.
class Known a
mkPrism :: Known a => Env -> APrism' Word64 a
mkFold :: Known a => Env -> Fold (Timed a) FoldResult
-- | A universial wrapper of fold results to expose to the user.
--
-- For simplicity, it's not associated with the Known class. If
-- the need to do that arises, use Typeable and Constraint tricks to
-- pattern match.
data FoldResult
RSingle :: !Word64 -> FoldResult
RMapNum32 :: !(Map PFValue32 Word64) -> FoldResult
RMapNum64 :: !(Map PFValue64 Word64) -> FoldResult
RMapText :: !(Map PFValueText Word64) -> FoldResult
foldCPU :: Fold PDCPU Word64
foldDiskRead :: Fold PDDiskRead Word64
foldDiskWrite :: Fold PDDiskWrite Word64
foldNeutronRx :: Fold PDNeutronRx Word64
foldNeutronTx :: Fold PDNeutronTx Word64
foldVolume :: Window -> Fold (Timed PDVolume) Word64
foldSSD :: Window -> Fold (Timed PDSSD) Word64
foldImage :: Window -> Fold (Timed PDImage) Word64
foldImagePollster :: Fold (Timed PDImagePollster) (Map PFValue64 Word64)
foldInstanceFlavor :: (PDInstanceFlavor -> Bool) -> Fold (Timed PDInstanceFlavor) (Map PFValueText Word64)
foldInstanceVCPU :: (PDInstanceVCPU -> Bool) -> Fold (Timed PDInstanceVCPU) (Map PFValue32 Word64)
foldInstanceRAM :: (PDInstanceRAM -> Bool) -> Fold (Timed PDInstanceRAM) (Map PFValue32 Word64)
foldInstanceDisk :: (PDInstanceDisk -> Bool) -> Fold (Timed PDInstanceDisk) (Map PFValue32 Word64)
foldIP :: Window -> Fold (Timed PDIP) Word64
foldSnapshot :: Window -> Fold (Timed PDSnapshot) Word64
-- | Wrap a fold that doens't depend on time.
timewrapFold :: Fold x y -> Fold (Timed x) y
instance Known PDInstanceFlavor
instance Known PDInstanceDisk
instance Known PDInstanceRAM
instance Known PDInstanceVCPU
instance Known PDIP
instance Known PDSnapshot
instance Known PDImage
instance Known PDSSD
instance Known PDVolume
instance Known PDImagePollster
instance Known PDNeutronRx
instance Known PDNeutronTx
instance Known PDDiskWrite
instance Known PDDiskRead
instance Known PDCPU
module Ceilometer.Client
decodeFold :: (Monad m, Applicative m) => Env -> Producer SimplePoint m () -> m (Maybe FoldResult)
decodeFold_ :: (Known a, Applicative m, Monad m) => proxy a -> Env -> Producer SimplePoint m () -> m FoldResult