From 304008106621fbad64f8e1a19b727738e3a07a16 Mon Sep 17 00:00:00 2001 From: John Bellone Date: Mon, 10 Aug 2015 19:28:12 -0400 Subject: [PATCH] Updates the Chef Server data bag & item support. --- src/spoon/data.clj | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/spoon/data.clj b/src/spoon/data.clj index cfc66c9..1c99bf7 100644 --- a/src/spoon/data.clj +++ b/src/spoon/data.clj @@ -1,10 +1,31 @@ (ns spoon.data (:require [spoon.core :as client])) -(defn get-data [org bag & [options]] - (if bag - (client/api-request :get "/organizations/%s/data/%s" [org bag] options) - (client/api-request :get "/organizations/%s/data" [org] options))) +(defn get-data [org & [options]] + (let [data (client/api-request :get "/organizations/%s/data" [org] options)] + (map name (keys data)))) -(defn get-data-item [org bag item & [options]] - (client/api-request :get "/organizations/%s/data/%s/%s" [org bag item] options)) +(defn get-data-bag [org bag-name & [options]] + (client/api-request :get "/organizations/%s/data/%s" [org bag-name] options)) + +(defn create-data-bag [org bag-name & [options]] + (client/api-request :post "/organizations/%s/data" [org] (assoc options :body {:name bag-name}))) + +(defn delete-data-bag [org bag-name & [options]] + (client/api-request :delete "/organizations/%s/data/%s" [org bag-name])) + +(defn get-data-bag-item [org bag-name item-name & [options]] + (client/api-request :get "/organizations/%s/data/%s/%s" [org bag-name item-name] options)) + +(defn create-data-bag-item [org bag item-name item-data & [options]] + (let [data (merge {} {:id item-name} + (when-let [item-data (or item-data false)] + item-data))] + (client/api-request :post "/organizations/%s/data/%s" [org bag-name] (assoc options :body data)))) + +(defn update-data-bag-item [org bag item-name item-data & [options]] + (when-let [data (or item-data false)] + (client/api-request :put "/organizations/%s/data/%s/%s" [org bag-name item-name] (assoc options :body data)))) + +(defn delete-data-bag-item [org bag item-name & [options]] + (client/api-request :delete "/organizations/%s/data/%s/%s" [org bag item] options))