-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Common Haskell types and encoding for ceilometer -- @package ceilometer-common @version 0.2.2 -- | 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_atbj) 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