fix info propigation

Need to propigate the full container info, not the subset used in chroot
deployment.
This commit is contained in:
Joey Hess 2014-11-21 14:11:02 -04:00
parent 5e1a47552a
commit 7d4d3e4451
2 changed files with 12 additions and 7 deletions

View File

@ -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]

View File

@ -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