summaryrefslogtreecommitdiff
path: root/src/Propellor
diff options
context:
space:
mode:
authorJoey Hess2015-01-19 14:15:49 -0400
committerJoey Hess2015-01-19 14:15:49 -0400
commit1ae21965aaba0303088052e873fea39708e331ed (patch)
tree918a8e0575e6369e3d94598d675b089c54579cf2 /src/Propellor
parentdb93c41f90e9ad68854b6b219fc9fe6d12085600 (diff)
rename HostLike to PropAccum
This is more general; it doesn't need to contain a Host. It would, for example, be possible to make Property itself be an instance of PropAccum.
Diffstat (limited to 'src/Propellor')
-rw-r--r--src/Propellor/PropAccum.hs (renamed from src/Propellor/Host.hs)24
-rw-r--r--src/Propellor/Property/Chroot.hs6
-rw-r--r--src/Propellor/Property/Docker.hs6
-rw-r--r--src/Propellor/Property/Systemd.hs8
4 files changed, 22 insertions, 22 deletions
diff --git a/src/Propellor/Host.hs b/src/Propellor/PropAccum.hs
index cfe90949..4cbb057e 100644
--- a/src/Propellor/Host.hs
+++ b/src/Propellor/PropAccum.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE PackageImports #-}
-module Propellor.Host where
+module Propellor.PropAccum where
import Data.Monoid
@@ -17,7 +17,7 @@ host :: HostName -> Host
host hn = Host hn [] mempty
-- | Something that can accumulate properties.
-class Hostlike h where
+class PropAccum h where
-- | Adds a property.
--
-- Can add Properties and RevertableProperties
@@ -29,17 +29,17 @@ class Hostlike h where
-- when it does.
(&^) :: IsProp p => h -> p -> h
- getHost :: h -> Host
+ getProperties :: h -> [Property]
-instance Hostlike Host where
+instance PropAccum Host where
(Host hn ps is) & p = Host hn (ps ++ [toProp p])
(is <> getInfoRecursive p)
(Host hn ps is) &^ p = Host hn ([toProp p] ++ ps)
(getInfoRecursive p <> is)
- getHost h = h
+ getProperties = hostProperties
-- | Adds a property in reverted form.
-(!) :: Hostlike h => h -> RevertableProperty -> h
+(!) :: PropAccum h => h -> RevertableProperty -> h
h ! p = h & revert p
infixl 1 &^
@@ -47,22 +47,22 @@ infixl 1 &
infixl 1 !
-- | Adjust the provided Property, adding to its
--- propertyChidren the properties of the Hostlike.
+-- propertyChidren the properties of the provided container.
-- The Info of the propertyChildren is adjusted to only include
-- info that should be propigated out to the Property.
--
--- DNS Info is propigated, so that eg, aliases of a Hostlike
+-- DNS Info is propigated, so that eg, aliases of a PropAccum
-- are reflected in the dns for the host where it runs.
--
-- PrivData Info is propigated, so that properties used inside a
--- Hostlike will have the necessary PrivData available.
-propigateHostLike :: Hostlike hl => hl -> Property -> Property
-propigateHostLike hl prop = prop
+-- PropAccum will have the necessary PrivData available.
+propigateContainer :: PropAccum container => container -> Property -> Property
+propigateContainer c prop = prop
{ propertyChildren = propertyChildren prop ++ hostprops
}
where
- hostprops = map go $ hostProperties $ getHost hl
+ hostprops = map go $ getProperties c
go p =
let i = propertyInfo p
in p
diff --git a/src/Propellor/Property/Chroot.hs b/src/Propellor/Property/Chroot.hs
index de99e6c4..395ec74c 100644
--- a/src/Propellor/Property/Chroot.hs
+++ b/src/Propellor/Property/Chroot.hs
@@ -28,10 +28,10 @@ data BuilderConf
= UsingDeboostrap Debootstrap.DebootstrapConfig
deriving (Show)
-instance Hostlike Chroot where
+instance PropAccum Chroot where
(Chroot l s c h) & p = Chroot l s c (h & p)
(Chroot l s c h) &^ p = Chroot l s c (h &^ p)
- getHost (Chroot _ _ _ h) = h
+ getProperties (Chroot _ _ _ h) = hostProperties h
-- | Defines a Chroot at the given location, built with debootstrap.
--
@@ -76,7 +76,7 @@ provisioned' propigator c@(Chroot loc system builderconf _) systemdonly = Revert
teardown = toProp (revert built)
propigateChrootInfo :: Chroot -> Property -> Property
-propigateChrootInfo c p = propigateHostLike c p'
+propigateChrootInfo c p = propigateContainer c p'
where
p' = p { propertyInfo = propertyInfo p <> chrootInfo c }
diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs
index 3e2fbaf3..e65d6bb7 100644
--- a/src/Propellor/Property/Docker.hs
+++ b/src/Propellor/Property/Docker.hs
@@ -77,10 +77,10 @@ type ContainerName = String
-- | A docker container.
data Container = Container Image Host
-instance Hostlike Container where
+instance PropAccum Container where
(Container i h) & p = Container i (h & p)
(Container i h) &^ p = Container i (h &^ p)
- getHost (Container _ h) = h
+ getProperties (Container _ h) = hostProperties h
-- | Defines a Container with a given name, image, and properties.
-- Properties can be added to configure the Container.
@@ -134,7 +134,7 @@ docked ctr@(Container _ h) = RevertableProperty
]
propigateContainerInfo :: Container -> Property -> Property
-propigateContainerInfo ctr@(Container _ h) p = propigateHostLike ctr p'
+propigateContainerInfo ctr@(Container _ h) p = propigateContainer ctr p'
where
p' = p { propertyInfo = propertyInfo p <> dockerinfo }
dockerinfo = dockerInfo $
diff --git a/src/Propellor/Property/Systemd.hs b/src/Propellor/Property/Systemd.hs
index e80c32be..7fe600a0 100644
--- a/src/Propellor/Property/Systemd.hs
+++ b/src/Propellor/Property/Systemd.hs
@@ -33,10 +33,10 @@ type MachineName = String
data Container = Container MachineName Chroot.Chroot Host
deriving (Show)
-instance Hostlike Container where
- (Container n c h) & p = Container n c (h & p)
- (Container n c h) &^ p = Container n c (h &^ p)
- getHost (Container _ _ h) = h
+instance PropAccum Container where
+ (Container n c h) & p = Container n c (h & p)
+ (Container n c h) &^ p = Container n c (h &^ p)
+ getProperties (Container _ _ h) = hostProperties h
-- | Starts a systemd service.
started :: ServiceName -> Property