summaryrefslogtreecommitdiff
path: root/Propellor/Types/Attr.hs
blob: 70161725de7ca8fdbed7020d3f4c80c3bde33b67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module Propellor.Types.Attr where

import qualified Data.Set as S

-- | The attributes of a host. For example, its hostname.
data Attr = Attr
	{ _hostname :: HostName
	, _cnames :: S.Set Domain

	, _dockerImage :: Maybe String
	, _dockerRunParams :: [HostName -> String]
	}

instance Eq Attr where
	x == y = and
		[ _hostname x == _hostname y
		, _cnames x == _cnames y

		, _dockerImage x == _dockerImage y
		, let simpl v = map (\a -> a "") (_dockerRunParams v)
		  in simpl x == simpl y
		]

newAttr :: HostName -> Attr
newAttr hn = Attr hn S.empty Nothing []

type HostName = String
type Domain = String