split out info types

This commit is contained in:
Joey Hess 2014-11-21 18:55:33 -04:00
parent 04ea987075
commit 6c92f1034f
6 changed files with 49 additions and 37 deletions

View File

@ -113,8 +113,10 @@ Library
Propellor.Engine Propellor.Engine
Propellor.Exception Propellor.Exception
Propellor.Types Propellor.Types
Propellor.Types.OS Propellor.Types.Chroot
Propellor.Types.Docker
Propellor.Types.Dns Propellor.Types.Dns
Propellor.Types.OS
Propellor.Types.PrivData Propellor.Types.PrivData
Other-Modules: Other-Modules:
Propellor.Git Propellor.Git

View File

@ -10,6 +10,7 @@ module Propellor.Property.Chroot (
) where ) where
import Propellor import Propellor
import Propellor.Types.Chroot
import qualified Propellor.Property.Debootstrap as Debootstrap import qualified Propellor.Property.Debootstrap as Debootstrap
import qualified Propellor.Property.Systemd.Core as Systemd import qualified Propellor.Property.Systemd.Core as Systemd
import qualified Propellor.Shim as Shim import qualified Propellor.Shim as Shim

View File

@ -39,6 +39,7 @@ module Propellor.Property.Docker (
) where ) where
import Propellor hiding (init) import Propellor hiding (init)
import Propellor.Types.Docker
import qualified Propellor.Property.File as File import qualified Propellor.Property.File as File
import qualified Propellor.Property.Apt as Apt import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Shim as Shim import qualified Propellor.Shim as Shim
@ -523,7 +524,7 @@ genProp :: String -> (HostName -> RunParam) -> Property
genProp field mkval = pureInfoProperty field $ dockerInfo $ genProp field mkval = pureInfoProperty field $ dockerInfo $
mempty { _dockerRunParams = [DockerRunParam (\hn -> "--"++field++"=" ++ mkval hn)] } mempty { _dockerRunParams = [DockerRunParam (\hn -> "--"++field++"=" ++ mkval hn)] }
dockerInfo :: DockerInfo -> Info dockerInfo :: DockerInfo Host -> Info
dockerInfo i = mempty { _dockerinfo = i } dockerInfo i = mempty { _dockerinfo = i }
-- | The ContainerIdent of a container is written to -- | The ContainerIdent of a container is written to

View File

@ -23,9 +23,6 @@ module Propellor.Types
, SshKeyType(..) , SshKeyType(..)
, Val(..) , Val(..)
, fromVal , fromVal
, DockerInfo(..)
, DockerRunParam(..)
, ChrootInfo(..)
, module Propellor.Types.OS , module Propellor.Types.OS
, module Propellor.Types.Dns , module Propellor.Types.Dns
) where ) where
@ -37,11 +34,12 @@ import System.Posix.Types
import "mtl" Control.Monad.Reader import "mtl" Control.Monad.Reader
import "MonadCatchIO-transformers" Control.Monad.CatchIO import "MonadCatchIO-transformers" Control.Monad.CatchIO
import qualified Data.Set as S import qualified Data.Set as S
import qualified Data.Map as M
import qualified Propellor.Types.Dns as Dns import qualified Propellor.Types.Dns as Dns
import Propellor.Types.OS import Propellor.Types.OS
import Propellor.Types.Chroot
import Propellor.Types.Dns import Propellor.Types.Dns
import Propellor.Types.Docker
import Propellor.Types.PrivData import Propellor.Types.PrivData
-- | Everything Propellor knows about a system: Its hostname, -- | Everything Propellor knows about a system: Its hostname,
@ -167,8 +165,8 @@ data Info = Info
, _aliases :: S.Set HostName , _aliases :: S.Set HostName
, _dns :: S.Set Dns.Record , _dns :: S.Set Dns.Record
, _namedconf :: Dns.NamedConfMap , _namedconf :: Dns.NamedConfMap
, _dockerinfo :: DockerInfo , _dockerinfo :: DockerInfo Host
, _chrootinfo :: ChrootInfo , _chrootinfo :: ChrootInfo Host
} }
deriving (Show) deriving (Show)
@ -197,32 +195,3 @@ instance Monoid (Val a) where
fromVal :: Val a -> Maybe a fromVal :: Val a -> Maybe a
fromVal (Val a) = Just a fromVal (Val a) = Just a
fromVal NoVal = Nothing fromVal NoVal = Nothing
data DockerInfo = DockerInfo
{ _dockerRunParams :: [DockerRunParam]
, _dockerContainers :: M.Map String Host
}
deriving (Show)
instance Monoid DockerInfo where
mempty = DockerInfo mempty mempty
mappend old new = DockerInfo
{ _dockerRunParams = _dockerRunParams old <> _dockerRunParams new
, _dockerContainers = M.union (_dockerContainers old) (_dockerContainers new)
}
newtype DockerRunParam = DockerRunParam (HostName -> String)
instance Show DockerRunParam where
show (DockerRunParam a) = a ""
data ChrootInfo = ChrootInfo
{ _chroots :: M.Map FilePath Host
}
deriving (Show)
instance Monoid ChrootInfo where
mempty = ChrootInfo mempty
mappend old new = ChrootInfo
{ _chroots = M.union (_chroots old) (_chroots new)
}

View File

@ -0,0 +1,15 @@
module Propellor.Types.Chroot where
import Data.Monoid
import qualified Data.Map as M
data ChrootInfo h = ChrootInfo
{ _chroots :: M.Map FilePath h
}
deriving (Show)
instance Monoid (ChrootInfo h) where
mempty = ChrootInfo mempty
mappend old new = ChrootInfo
{ _chroots = M.union (_chroots old) (_chroots new)
}

View File

@ -0,0 +1,24 @@
module Propellor.Types.Docker where
import Propellor.Types.OS
import Data.Monoid
import qualified Data.Map as M
data DockerInfo h = DockerInfo
{ _dockerRunParams :: [DockerRunParam]
, _dockerContainers :: M.Map String h
}
deriving (Show)
instance Monoid (DockerInfo h) where
mempty = DockerInfo mempty mempty
mappend old new = DockerInfo
{ _dockerRunParams = _dockerRunParams old <> _dockerRunParams new
, _dockerContainers = M.union (_dockerContainers old) (_dockerContainers new)
}
newtype DockerRunParam = DockerRunParam (HostName -> String)
instance Show DockerRunParam where
show (DockerRunParam a) = a ""