fix info propigation
Need to propigate the full container info, not the subset used in chroot deployment.
This commit is contained in:
parent
5e1a47552a
commit
7d4d3e4451
|
@ -3,6 +3,8 @@ module Propellor.Property.Chroot (
|
|||
chroot,
|
||||
provisioned,
|
||||
-- * Internal use
|
||||
provisioned',
|
||||
propigateChrootInfo,
|
||||
propellChroot,
|
||||
chain,
|
||||
) where
|
||||
|
@ -38,8 +40,11 @@ chroot location system = Chroot location system (Host location [] mempty)
|
|||
-- Reverting this property removes the chroot. Note that it does not ensure
|
||||
-- that any processes that might be running inside the chroot are stopped.
|
||||
provisioned :: Chroot -> RevertableProperty
|
||||
provisioned c@(Chroot loc system _) = RevertableProperty
|
||||
(propigateChrootInfo c (go "exists" setup))
|
||||
provisioned c = provisioned' (propigateChrootInfo c) c
|
||||
|
||||
provisioned' :: (Property -> Property) -> Chroot -> RevertableProperty
|
||||
provisioned' propigator c@(Chroot loc system _) = RevertableProperty
|
||||
(propigator $ go "exists" setup)
|
||||
(go "removed" teardown)
|
||||
where
|
||||
go desc a = property (chrootDesc c desc) $ ensureProperties [a]
|
||||
|
|
|
@ -88,9 +88,9 @@ container name system ps = Container name system ps (Host name [] mempty)
|
|||
nspawned :: Container -> RevertableProperty
|
||||
nspawned c@(Container name system _ h) = RevertableProperty setup teardown
|
||||
where
|
||||
setup = propertyList ("nspawned " ++ name) $
|
||||
setup = combineProperties ("nspawned " ++ name) $
|
||||
map toProp steps ++ [containerprovisioned]
|
||||
teardown = propertyList ("not nspawned " ++ name) $
|
||||
teardown = combineProperties ("not nspawned " ++ name) $
|
||||
map (toProp . revert) (reverse steps)
|
||||
steps =
|
||||
[ enterScript c
|
||||
|
@ -102,16 +102,16 @@ nspawned c@(Container name system _ h) = RevertableProperty setup teardown
|
|||
-- that only has the Property of systemd being installed.
|
||||
-- This is to avoid starting any daemons in the chroot,
|
||||
-- which would not run in the container's namespace.
|
||||
chrootprovisioned = Chroot.provisioned $
|
||||
chrootprovisioned = Chroot.provisioned' (Chroot.propigateChrootInfo chroot) $
|
||||
mkChroot $ h { hostProperties = [installed] }
|
||||
|
||||
-- Use nsenter to enter container and and run propellor to
|
||||
-- finish provisioning.
|
||||
containerprovisioned = Chroot.propellChroot
|
||||
(mkChroot h)
|
||||
containerprovisioned = Chroot.propellChroot chroot
|
||||
(enterContainerProcess c)
|
||||
|
||||
mkChroot = Chroot.Chroot (containerDir name) system
|
||||
chroot = mkChroot h
|
||||
|
||||
nspawnService :: Container -> RevertableProperty
|
||||
nspawnService (Container name _ ps _) = RevertableProperty setup teardown
|
||||
|
|
Loading…
Reference in New Issue