aboutsummaryrefslogtreecommitdiffstats
path: root/src/sch/inventory_client.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/sch/inventory_client.clj')
-rw-r--r--src/sch/inventory_client.clj82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/sch/inventory_client.clj b/src/sch/inventory_client.clj
new file mode 100644
index 0000000..a38b693
--- /dev/null
+++ b/src/sch/inventory_client.clj
@@ -0,0 +1,82 @@
+; ============LICENSE_START=======================================================
+; org.onap.dcae
+; ================================================================================
+; Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
+; ================================================================================
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+; http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+; ============LICENSE_END=========================================================
+;
+; ECOMP is a trademark and service mark of AT&T Intellectual Property.
+
+(ns sch.inventory-client
+ (:require [clj-http.client :as client]
+ [taoensso.timbre :as timbre :refer [error]]
+ [cheshire.core :refer [parse-string]]
+ [org.bovinegenius.exploding-fish :refer [uri param]])
+ (:gen-class))
+
+
+(defn create-inventory-conn
+ [config]
+ (uri (get-in config [:dcaeInventoryClient :uri])))
+
+; HTTP client to DCAE inventory
+
+(defn- append-params
+ "Appends arbitrary list of parameter pairs to a URI
+
+ `params` must be in the form [*field name* *value* ...]
+
+ Returns the updated URI"
+ [uri params]
+ (let [[field value & more-params] params
+ uri-updated (param uri field value)]
+ (if more-params
+ (append-params uri-updated more-params)
+ uri-updated)))
+
+
+(defn get-service-types!
+ "GET DCAE service types from inventory
+
+ TODO: Now its generic, how to put checks?"
+ [inventory-uri query-params]
+ (let [path "/dcae-service-types"
+ inventory-uri (append-params (assoc inventory-uri :path path)
+ query-params)
+ resp (client/get (str inventory-uri) { :content-type :json })]
+ (if (= (:status resp) 200)
+ (:items (parse-string (:body resp) true))
+ (error (str "GET dcae-service-types failed: " (:status resp) ", " (:body resp)))
+ )))
+
+
+(defn post-service-type!
+ [inventory-uri dcae-service-type]
+ (let [resp (client/post (str (assoc inventory-uri :path "/dcae-service-types"))
+ { :content-type :json
+ :form-params dcae-service-type })]
+ (if (= (:status resp) 200)
+ (parse-string (:body resp) true)
+ (error (str "POST dcae-service-types failed: " (:status resp) ", " (:body resp)))
+ )))
+
+
+(defn delete-service-type!
+ [inventory-uri service-type-id]
+ (let [path (str "/dcae-service-types/" service-type-id)
+ resp (client/delete (str (assoc inventory-uri :path path)))]
+ (if (or (= (:status resp) 200) (= (:status resp) 410))
+ service-type-id
+ (error (str "DELETE dcae-service-types failed: " (:status resp) ", " (:body resp)))
+ )))