2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.client.adapter.cnf;
23 import java.util.ArrayList;
24 import java.util.List;
25 import javax.persistence.EntityNotFoundException;
26 import javax.ws.rs.core.UriBuilder;
27 import org.apache.http.HttpStatus;
28 import org.onap.so.client.adapter.cnf.entities.InstanceRequest;
29 import org.onap.so.client.adapter.cnf.entities.InstanceResponse;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32 import org.springframework.beans.factory.annotation.Autowired;
33 import org.springframework.core.env.Environment;
34 import org.springframework.http.HttpEntity;
35 import org.springframework.http.HttpHeaders;
36 import org.springframework.http.HttpMethod;
37 import org.springframework.http.MediaType;
38 import org.springframework.http.ResponseEntity;
39 import org.springframework.retry.annotation.Backoff;
40 import org.springframework.retry.annotation.Retryable;
41 import org.springframework.stereotype.Component;
42 import org.springframework.web.client.HttpClientErrorException;
43 import org.springframework.web.client.HttpServerErrorException;
44 import org.springframework.web.client.RestTemplate;
47 public class CnfAdapterClient {
49 private static final Logger logger = LoggerFactory.getLogger(CnfAdapterClient.class);
52 private RestTemplate restTemplate;
55 private Environment env;
57 private static final String INSTANCE_CREATE_PATH = "/api/multicloud-k8s/v1/v1/instance";
59 @Retryable(value = {HttpServerErrorException.class}, maxAttempts = 3, backoff = @Backoff(delay = 3000))
60 public InstanceResponse createVfModule(InstanceRequest request) throws CnfAdapterClientException {
62 // String uri = env.getRequiredProperty("mso.cnf.adapter.endpoint"); //TODO: This needs to be added as well
64 String uri = "https://localhost:32780"; // TODO: What is the correct uri?
65 String endpoint = UriBuilder.fromUri(uri).path(INSTANCE_CREATE_PATH).build().toString();
66 HttpEntity<?> entity = getHttpEntity(request);
67 ResponseEntity<InstanceResponse> result =
68 restTemplate.exchange(endpoint, HttpMethod.POST, entity, InstanceResponse.class);
69 return result.getBody();
70 } catch (HttpClientErrorException e) {
71 logger.error("Error Calling CNF Adapter, e");
72 if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
73 throw new EntityNotFoundException(e.getResponseBodyAsString());
79 @Retryable(value = {HttpServerErrorException.class}, maxAttempts = 3, backoff = @Backoff(delay = 3000))
80 public InstanceResponse healthcheck() throws CnfAdapterClientException {
82 // String uri = env.getRequiredProperty("mso.cnf.adapter.endpoint"); //TODO: This needs to be added as well
84 String uri = "https://localhost:32780"; // TODO: What is the correct uri?
85 String endpoint = UriBuilder.fromUri(uri).path("/api/cnf-adapter/v1/healthcheck").build().toString();
86 HttpEntity<?> entity = new HttpEntity<>(getHttpHeaders());
87 ResponseEntity<InstanceResponse> result =
88 restTemplate.exchange(endpoint, HttpMethod.GET, entity, InstanceResponse.class);
89 return result.getBody();
90 } catch (HttpClientErrorException e) {
91 logger.error("Error Calling CNF Adapter, e");
92 if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
93 throw new EntityNotFoundException(e.getResponseBodyAsString());
99 protected HttpHeaders getHttpHeaders() {
100 HttpHeaders headers = new HttpHeaders();
101 List<MediaType> acceptableMediaTypes = new ArrayList<>();
102 acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
103 headers.setAccept(acceptableMediaTypes);
104 headers.setContentType(MediaType.APPLICATION_JSON);
106 * try { String userCredentials = CryptoUtils.decrypt(env.getRequiredProperty("mso.cnf.adapter.auth"),
107 * env.getRequiredProperty("mso.msoKey")); if (userCredentials != null) { headers.add(HttpHeaders.AUTHORIZATION,
108 * "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes())); } } catch
109 * (GeneralSecurityException e) { logger.error("Security exception", e); }
114 protected HttpEntity<?> getHttpEntity(InstanceRequest request) {
115 HttpHeaders headers = getHttpHeaders();
116 return new HttpEntity<>(request, headers);