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/cnf-adapter/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 = "http://so-cnf-adapter:8090";
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());
80 @Retryable(value = {HttpServerErrorException.class}, maxAttempts = 3, backoff = @Backoff(delay = 3000))
81 public void deleteVfModule(String heatStackId) throws CnfAdapterClientException {
83 // String uri = env.getRequiredProperty("mso.cnf.adapter.endpoint"); //TODO: This needs to be added as well
85 String uri = "http://so-cnf-adapter:8090";
86 String endpoint = UriBuilder.fromUri(uri).path(INSTANCE_CREATE_PATH + "/" + heatStackId).build().toString();
87 HttpEntity<?> entity = new HttpEntity<>(getHttpHeaders());
88 restTemplate.exchange(endpoint, HttpMethod.DELETE, entity, String.class);
89 } catch (HttpClientErrorException e) {
90 logger.error("Error Calling CNF Adapter, e");
91 if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
92 throw new EntityNotFoundException(e.getResponseBodyAsString());
98 @Retryable(value = {HttpServerErrorException.class}, maxAttempts = 3, backoff = @Backoff(delay = 3000))
99 public InstanceResponse healthcheck() throws CnfAdapterClientException {
101 // String uri = env.getRequiredProperty("mso.cnf.adapter.endpoint"); //TODO: This needs to be added as well
103 String uri = "http://so-cnf-adapter:8090";
104 String endpoint = UriBuilder.fromUri(uri).path("/api/cnf-adapter/v1/healthcheck").build().toString();
105 HttpEntity<?> entity = new HttpEntity<>(getHttpHeaders());
106 ResponseEntity<InstanceResponse> result =
107 restTemplate.exchange(endpoint, HttpMethod.GET, entity, InstanceResponse.class);
108 return result.getBody();
109 } catch (HttpClientErrorException e) {
110 logger.error("Error Calling CNF Adapter, e");
111 if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
112 throw new EntityNotFoundException(e.getResponseBodyAsString());
118 protected HttpHeaders getHttpHeaders() {
119 HttpHeaders headers = new HttpHeaders();
120 List<MediaType> acceptableMediaTypes = new ArrayList<>();
121 acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
122 headers.setAccept(acceptableMediaTypes);
123 headers.setContentType(MediaType.APPLICATION_JSON);
125 * try { String userCredentials = CryptoUtils.decrypt(env.getRequiredProperty("mso.cnf.adapter.auth"),
126 * env.getRequiredProperty("mso.msoKey")); if (userCredentials != null) { headers.add(HttpHeaders.AUTHORIZATION,
127 * "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes())); } } catch
128 * (GeneralSecurityException e) { logger.error("Security exception", e); }
133 protected HttpEntity<?> getHttpEntity(InstanceRequest request) {
134 HttpHeaders headers = getHttpHeaders();
135 return new HttpEntity<>(request, headers);