summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess2014-06-07 00:07:08 -0400
committerJoey Hess2014-06-07 00:07:19 -0400
commit969db1ed56157aa202359c0f47fff783baba6eac (patch)
treebd62764ae149804b64dd7e8bde21560344847bf3
parenta4dd315d3c3bcf4fdd18f39592676de19b221815 (diff)
when ssh key data is missing, allow both error messages to be printed
-rw-r--r--config-joey.hs1
-rw-r--r--src/Propellor/Property.hs9
-rw-r--r--src/Propellor/Property/Ssh.hs2
3 files changed, 11 insertions, 1 deletions
diff --git a/config-joey.hs b/config-joey.hs
index 74ad9e9a..63768eeb 100644
--- a/config-joey.hs
+++ b/config-joey.hs
@@ -196,6 +196,7 @@ hosts = -- (o) `
& Apt.installed ["obnam", "sshfs", "rsync"]
& JoeySites.githubBackup
& JoeySites.obnamRepos ["wren", "pell"]
+ & Ssh.knownHost hosts "usw-s002.rsync.net" "joey"
& alias "podcatcher.kitenet.net"
& Apt.installed ["git-annex"]
diff --git a/src/Propellor/Property.hs b/src/Propellor/Property.hs
index e3d46eae..c7a03765 100644
--- a/src/Propellor/Property.hs
+++ b/src/Propellor/Property.hs
@@ -37,6 +37,15 @@ 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 061f440c..ba0311cc 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) "")
]