2014-04-11 01:09:20 +00:00
|
|
|
module Propellor.Types.Attr where
|
|
|
|
|
2014-04-13 19:34:01 +00:00
|
|
|
import Propellor.Types.OS
|
2014-04-18 21:19:28 +00:00
|
|
|
import qualified Propellor.Types.Dns as Dns
|
2014-04-13 19:34:01 +00:00
|
|
|
|
2014-04-11 01:09:20 +00:00
|
|
|
import qualified Data.Set as S
|
2014-04-19 05:42:19 +00:00
|
|
|
import qualified Data.Map as M
|
2014-04-11 01:09:20 +00:00
|
|
|
|
|
|
|
-- | The attributes of a host. For example, its hostname.
|
|
|
|
data Attr = Attr
|
|
|
|
{ _hostname :: HostName
|
2014-04-13 19:34:01 +00:00
|
|
|
, _os :: Maybe System
|
2014-04-13 06:28:40 +00:00
|
|
|
, _sshPubKey :: Maybe String
|
2014-04-19 05:26:38 +00:00
|
|
|
, _dns :: S.Set Dns.Record
|
2014-04-19 05:42:19 +00:00
|
|
|
, _namedconf :: M.Map Dns.Domain Dns.NamedConf
|
2014-04-11 03:20:12 +00:00
|
|
|
|
|
|
|
, _dockerImage :: Maybe String
|
|
|
|
, _dockerRunParams :: [HostName -> String]
|
2014-04-11 01:09:20 +00:00
|
|
|
}
|
2014-04-11 03:20:12 +00:00
|
|
|
|
|
|
|
instance Eq Attr where
|
|
|
|
x == y = and
|
|
|
|
[ _hostname x == _hostname y
|
2014-04-13 19:34:01 +00:00
|
|
|
, _os x == _os y
|
2014-04-18 21:19:28 +00:00
|
|
|
, _dns x == _dns y
|
2014-04-19 05:26:38 +00:00
|
|
|
, _namedconf x == _namedconf y
|
2014-04-13 06:28:40 +00:00
|
|
|
, _sshPubKey x == _sshPubKey y
|
2014-04-11 03:20:12 +00:00
|
|
|
|
|
|
|
, _dockerImage x == _dockerImage y
|
|
|
|
, let simpl v = map (\a -> a "") (_dockerRunParams v)
|
|
|
|
in simpl x == simpl y
|
|
|
|
]
|
2014-04-11 01:09:20 +00:00
|
|
|
|
2014-04-11 04:36:33 +00:00
|
|
|
instance Show Attr where
|
|
|
|
show a = unlines
|
|
|
|
[ "hostname " ++ _hostname a
|
2014-04-13 19:34:01 +00:00
|
|
|
, "OS " ++ show (_os a)
|
2014-04-13 06:28:40 +00:00
|
|
|
, "sshPubKey " ++ show (_sshPubKey a)
|
2014-04-19 05:26:38 +00:00
|
|
|
, "dns " ++ show (_dns a)
|
|
|
|
, "namedconf " ++ show (_namedconf a)
|
2014-04-11 04:36:33 +00:00
|
|
|
, "docker image " ++ show (_dockerImage a)
|
2014-04-11 04:40:32 +00:00
|
|
|
, "docker run params " ++ show (map (\mk -> mk "") (_dockerRunParams a))
|
2014-04-11 04:36:33 +00:00
|
|
|
]
|
|
|
|
|
2014-04-11 01:09:20 +00:00
|
|
|
newAttr :: HostName -> Attr
|
2014-04-19 05:42:19 +00:00
|
|
|
newAttr hn = Attr hn Nothing Nothing S.empty M.empty Nothing []
|
2014-04-18 08:48:49 +00:00
|
|
|
|
|
|
|
type SetAttr = Attr -> Attr
|