From 2abff16a82a5ab2cfa67f7c7ee1f1743ea1cd619 Mon Sep 17 00:00:00 2001 From: Fernando Dobladez Date: Thu, 26 Dec 2013 15:54:36 -0300 Subject: [PATCH] Add support for multiple values for a config param (e.g. 'setParameter') Conflicts: test/pallet/crate/mongodb_test.clj --- src/pallet/crate/mongodb.clj | 15 +++++++++++---- test/pallet/crate/mongodb_test.clj | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/pallet/crate/mongodb.clj b/src/pallet/crate/mongodb.clj index 0dad1a7..ffb46ea 100644 --- a/src/pallet/crate/mongodb.clj +++ b/src/pallet/crate/mongodb.clj @@ -98,10 +98,17 @@ (defn to-config-file "Generate the .config file contents out of a map of config option, value" [config] - (apply str - (map (fn [[k v]] - (format "%s=%s\n" (name k) v)) - config))) + (letfn [(format-simple-kv [k v] + (format "%s=%s\n" (name k) v)) + (format-mutivalue-kvs [k vs] + (map (fn [v] (format-simple-kv k v) ) vs))] + (apply str + (mapcat (fn [[k v]] + (if (vector? v) + (format-mutivalue-kvs k v) + (format-simple-kv k v))) + config)))) + (defplan settings "Build the configuration settings by merging the user supplied ones diff --git a/test/pallet/crate/mongodb_test.clj b/test/pallet/crate/mongodb_test.clj index 1477167..0a5d243 100644 --- a/test/pallet/crate/mongodb_test.clj +++ b/test/pallet/crate/mongodb_test.clj @@ -62,3 +62,25 @@ ("service" networking restart)))) :test (plan-fn (wait-for-port-listen 30000))} :phases-meta {:install (execute-and-flag-metadata :install)})) + + +(deftest config-file + + (test/are [mapconfig expected-text] + + (= (mongodb/to-config-file mapconfig) expected-text) + + {:name "value"} + "name=value\n" + + (sorted-map :name "value" :setParameter "logLevel=4") + (str "name=value\n" + "setParameter=logLevel=4\n") + + + ;; Vector values expand to multiple lines of the same configuration key + (sorted-map :name "value" :setParameter ["logLevel=4" "textSearchEnabled=true"]) + (str "name=value\n" + "setParameter=logLevel=4\n" + "setParameter=textSearchEnabled=true\n")) ) +