diff --git a/debian/changelog b/debian/changelog index 046cf60..5b6cdcb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +propellor (0.7.0) UNRELEASED; urgency=medium + + * combineProperties no longer stops when a property fails; now it continues + trying to satisfy all properties on the list before propigating the + failure. + + -- Joey Hess Sat, 07 Jun 2014 00:12:44 -0400 + propellor (0.6.0) unstable; urgency=medium * Docker containers now propagate DNS attributes out to the host they're diff --git a/propellor.cabal b/propellor.cabal index 350215f..41486dd 100644 --- a/propellor.cabal +++ b/propellor.cabal @@ -1,5 +1,5 @@ Name: propellor -Version: 0.6.0 +Version: 0.7.0 Cabal-Version: >= 1.6 License: BSD3 Maintainer: Joey Hess diff --git a/src/Propellor/Property.hs b/src/Propellor/Property.hs index c7a0376..8e419a6 100644 --- a/src/Propellor/Property.hs +++ b/src/Propellor/Property.hs @@ -26,7 +26,8 @@ propertyList :: Desc -> [Property] -> Property propertyList desc ps = Property desc (ensureProperties ps) (combineAttrs ps) -- | Combines a list of properties, resulting in one property that --- ensures each in turn, stopping on failure. +-- ensures each in turn. Does not stop on failure; does propigate +-- overall success/failure. combineProperties :: Desc -> [Property] -> Property combineProperties desc ps = Property desc (go ps NoChange) (combineAttrs ps) where @@ -37,15 +38,6 @@ combineProperties desc ps = Property desc (go ps NoChange) (combineAttrs ps) FailedChange -> return FailedChange _ -> go ls (r <> rs) --- | Does not stop on failure (but does propigate failure at the end). -combineProperties' :: Desc -> [Property] -> Property -combineProperties' desc ps = Property desc (go ps NoChange) (combineAttrs ps) - where - go [] rs = return rs - go (l:ls) rs = do - r <- ensureProperty l - go ls (r <> rs) - -- | Combines together two properties, resulting in one property -- that ensures the first, and if the first succeeds, ensures the second. -- The property uses the description of the first property. diff --git a/src/Propellor/Property/Ssh.hs b/src/Propellor/Property/Ssh.hs index ba0311c..061f440 100644 --- a/src/Propellor/Property/Ssh.hs +++ b/src/Propellor/Property/Ssh.hs @@ -97,7 +97,7 @@ hostKey keytype = combineProperties desc -- | Sets up a user with a ssh private key and public key pair -- from the site's PrivData. keyImported :: SshKeyType -> UserName -> Property -keyImported keytype user = combineProperties' desc +keyImported keytype user = combineProperties desc [ property desc (install writeFile (SshPubKey keytype user) ".pub") , property desc (install writeFileProtected (SshPrivKey keytype user) "") ]