aboutsummaryrefslogtreecommitdiffstats
path: root/src/sch/asdc_client.clj
blob: b859f0344d756a0990a21ee97951eb67e711010d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
; ============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.asdc-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-asdc-conn
  ([config]
   (let [config-asdc (:asdcDistributionClient config)
         { :keys [asdcUri user password consumerId activateServerTLSAuth] } config-asdc]
     ; The last entry is passed into clj-http's "insecure?" parameter which is
     ; why "activateServerTLSAuth" is negated
     [(uri asdcUri) user password consumerId (not activateServerTLSAuth)]))
  )


(defn get-consumer-id
  [asdc-conn]
  (get asdc-conn 3))

(defn construct-service-path
  [service-uuid]
  (str "/sdc/v1/catalog/services/" service-uuid "/metadata"))


(defn get-artifact!
  [connection artifact-path]
  (let [[asdc-uri user password instance-id insecure?] connection
        target-uri (assoc asdc-uri :path artifact-path)
        resp (client/get (str target-uri) { :basic-auth [user password]
                                            :headers { "X-ECOMP-InstanceID" instance-id }
                                            :insecure? insecure? })]
    (if (= (:status resp) 200)
      ; Response media type is application/octet-stream
      ; TODO: Use X-ECOMP-RequestID?
      (:body resp)
      (error (str "GET asdc artifact failed: " (:status resp) ", " (:body resp))))
    ))

(defn get-service-metadata!
  [connection service-uuid]
  (let [[asdc-uri user password instance-id insecure?] connection
        target-uri (assoc asdc-uri :path (construct-service-path service-uuid))
        resp (client/get (str target-uri) { :basic-auth [user password]
                                            :headers { "X-ECOMP-InstanceID" instance-id }
                                            :insecure? insecure? })]
    (if (= (:status resp) 200)
      ; Response media type is application/octet-stream
      ; TODO: Use X-ECOMP-RequestID?
      (parse-string (:body resp) true)
      (error (str "GET asdc service metadata failed: " (:status resp) ", " (:body resp))))
    ))