2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (c) 2020 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.dcaegen2.platform.mod.util;
23 import io.netty.handler.ssl.SslContext;
24 import io.netty.handler.ssl.SslContextBuilder;
25 import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
26 import org.onap.dcaegen2.platform.mod.model.exceptions.policymodel.PolicyModelDistributionEnvNotFoundException;
27 import org.onap.dcaegen2.platform.mod.model.policymodel.PolicyModelDistributionEnv;
28 import org.springframework.beans.factory.annotation.Value;
29 import org.springframework.http.HttpHeaders;
30 import org.springframework.http.client.reactive.ReactorClientHttpConnector;
31 import org.springframework.stereotype.Component;
32 import org.springframework.web.reactive.function.client.ExchangeFilterFunctions;
33 import org.springframework.web.reactive.function.client.WebClient;
34 import reactor.netty.http.client.HttpClient;
36 import javax.annotation.PostConstruct;
37 import javax.net.ssl.SSLException;
38 import java.util.HashMap;
42 * Policy Model Service Utils to get URL, Username, Password, Webclient
46 public class PolicyModelUtils {
49 private String urlpath;
51 @Value("${dev.server}")
52 private String devServer;
55 private String devServerPort;
58 private String devServerUser;
60 @Value("${dev.password}")
61 private String devServerUserPassword;
63 @Value("${pst.server}")
64 private String pstServer;
67 private String pstServerPort;
70 private String pstServerUser;
72 @Value("${pst.password}")
73 private String pstServerUserPassword;
75 @Value("${ete.server}")
76 private String eteServer;
79 private String eteServerPort;
82 private String eteServerUser;
84 @Value("${ete.password}")
85 private String eteServerUserPassword;
87 @Value("${prod.server}")
88 private String prodServer;
90 @Value("${prod.port}")
91 private String prodServerPort;
93 @Value("${prod.user}")
94 private String prodServerUser;
96 @Value("${prod.password}")
97 private String prodServerUserPassword;
99 Map<String, String> envToUrlMap,envToUserNameMap,envToPasswordMap;
102 * Creates a Policy Model Distribution Engine URL for the Environment requested
106 envToUrlMap = new HashMap<>();
107 envToUserNameMap = new HashMap();
108 envToPasswordMap = new HashMap();
110 envToUrlMap.put(PolicyModelDistributionEnv.DEV.name(), "https://"+ devServer + ":" + devServerPort + urlpath);
111 envToUrlMap.put(PolicyModelDistributionEnv.PST.name(), "https://"+ pstServer + ":" + pstServerPort + urlpath);
112 envToUrlMap.put(PolicyModelDistributionEnv.ETE.name(), "https://"+ eteServer + ":" + eteServerPort + urlpath);
113 envToUrlMap.put(PolicyModelDistributionEnv.PROD.name(), "https://"+ prodServer + ":" + prodServerPort + urlpath);
115 envToUserNameMap.put(PolicyModelDistributionEnv.DEV.name(), devServerUser);
116 envToUserNameMap.put(PolicyModelDistributionEnv.PST.name(), pstServerUser);
117 envToUserNameMap.put(PolicyModelDistributionEnv.ETE.name(), eteServerUser);
118 envToUserNameMap.put(PolicyModelDistributionEnv.PROD.name(), prodServerUser);
120 envToPasswordMap.put(PolicyModelDistributionEnv.DEV.name(), devServerUserPassword);
121 envToPasswordMap.put(PolicyModelDistributionEnv.PST.name(), pstServerUserPassword);
122 envToPasswordMap.put(PolicyModelDistributionEnv.ETE.name(), eteServerUserPassword);
123 envToPasswordMap.put(PolicyModelDistributionEnv.PROD.name(), prodServerUserPassword);
127 * Generates a Policy Model Distribution Engine URL for the Environment
132 public String getPolicyEngineURL(String env) {
133 if(!envToUrlMap.containsKey(env)) throw new PolicyModelDistributionEnvNotFoundException(String.format("Policy Model Environment with env %s invalid", env));
134 return envToUrlMap.get(env);
140 * Generates a Policy Model Distribution Engine UserName for the Environment
146 public String getUserName(String env) {
147 if(!envToUserNameMap.containsKey(env)) throw new PolicyModelDistributionEnvNotFoundException(String.format("Policy Model Environment with env %s invalid", env));
148 return envToUserNameMap.get(env);
153 * Generates a Policy Model Distribution Engine Password for the Environment
159 public String getPassword(String env) {
160 if(!envToPasswordMap.containsKey(env)) throw new PolicyModelDistributionEnvNotFoundException(String.format("Policy Model Environment with env %s invalid", env));
161 return envToPasswordMap.get(env);
165 * Generates a Policy Model Distribution Engine Webclient for the Environment
170 public WebClient getWebClient(String env) throws SSLException {
171 String userName = getUserName(env);
172 String password = getPassword(env);
174 SslContext sslContext = SslContextBuilder.forClient()
175 .trustManager(InsecureTrustManagerFactory.INSTANCE)
177 HttpClient httpClient = HttpClient.create().secure(t -> t.sslContext(sslContext));
178 return WebClient.builder().clientConnector(new ReactorClientHttpConnector(httpClient))
179 .defaultHeader(HttpHeaders.CONTENT_TYPE, "application/yaml")
180 .filter(ExchangeFilterFunctions.basicAuthentication(userName, password))