diff options
| author | Joey Hess <joeyh@joeyh.name> | 2015-01-19 14:15:49 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2015-01-19 14:15:49 -0400 |
| commit | 1ae21965aaba0303088052e873fea39708e331ed (patch) | |
| tree | 918a8e0575e6369e3d94598d675b089c54579cf2 /src/Propellor | |
| parent | db93c41f90e9ad68854b6b219fc9fe6d12085600 (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.hs | 6 | ||||
| -rw-r--r-- | src/Propellor/Property/Docker.hs | 6 | ||||
| -rw-r--r-- | src/Propellor/Property/Systemd.hs | 8 |
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 |
