From 16a9c5b8c6b91ea856450d99cdfa6a18c57b7f1b Mon Sep 17 00:00:00 2001 From: Michael Hwang Date: Mon, 17 Oct 2016 17:32:25 -0400 Subject: Make first commit Change-Id: I7dd166e4052d48e2b333cfaadb8a0b64009b2cbc Issue-Id: DCAEGEN2-44 Signed-off-by: Michael Hwang --- src/sch/inventory_client.clj | 82 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/sch/inventory_client.clj (limited to 'src/sch/inventory_client.clj') 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))) + ))) -- cgit 1.2.3-korg