2 * Copyright 2016-2017, Nokia Corporation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
18 import com.google.common.annotations.VisibleForTesting;
19 import com.nokia.cbam.catalog.v1.api.DefaultApi;
20 import com.nokia.cbam.lcm.v32.ApiClient;
21 import com.nokia.cbam.lcm.v32.api.OperationExecutionsApi;
22 import com.nokia.cbam.lcm.v32.api.VnfsApi;
23 import com.nokia.cbam.lcn.v32.api.SubscriptionsApi;
24 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VnfmInfoProvider;
25 import org.onap.vnfmdriver.model.VnfmInfo;
26 import org.springframework.beans.factory.annotation.Autowired;
27 import org.springframework.beans.factory.annotation.Value;
28 import org.springframework.stereotype.Component;
31 * Responsible for providing client to access CBAM REST API
34 public class CbamRestApiProvider {
35 public static final String NOKIA_LCN_API_VERSION = "3.2";
36 public static final String NOKIA_LCM_API_VERSION = "3.2";
37 public static final String AUTH_NAME = "test";
38 private final DriverProperties driverProperties;
39 private final CbamTokenProvider tokenProvider;
40 private final VnfmInfoProvider vnfmInfoProvider;
41 private final CbamSecurityProvider cbamSecurityProvider;
42 @Value("${cbamKeyCloakBaseUrl}")
43 private String cbamKeyCloakBaseUrl;
44 @Value("${cbamUsername}")
45 private String username;
46 @Value("${cbamPassword}")
47 private String password;
50 public CbamRestApiProvider(DriverProperties driverProperties, CbamTokenProvider cbamTokenProvider, VnfmInfoProvider vnfmInfoProvider, CbamSecurityProvider cbamSecurityProvider) {
51 this.driverProperties = driverProperties;
52 this.tokenProvider = cbamTokenProvider;
53 this.vnfmInfoProvider = vnfmInfoProvider;
54 this.cbamSecurityProvider = cbamSecurityProvider;
58 * @param vnfmId the identifier of the VNFM
59 * @return API to access CBAM LCM API
61 public VnfsApi getCbamLcmApi(String vnfmId) {
62 return buildLcmApiClient(vnfmId).createService(VnfsApi.class);
66 * @param vnfmId the identifier of the VNFM
67 * @return API to access the operation executions
69 public OperationExecutionsApi getCbamOperationExecutionApi(String vnfmId) {
70 return buildLcmApiClient(vnfmId).createService(OperationExecutionsApi.class);
74 * @param vnfmId the identifier of the VNFM
75 * @return API to access CBAM LCN subscription API
77 public SubscriptionsApi getCbamLcnApi(String vnfmId) {
78 return buildLcnApiClient(vnfmId).createService(SubscriptionsApi.class);
82 * @param vnfmId the identifier of the VNFM
83 * @return API to access CBAM catalog API
85 public DefaultApi getCbamCatalogApi(String vnfmId) {
86 return buildCatalogApiClient(vnfmId).createService(DefaultApi.class);
90 com.nokia.cbam.lcn.v32.ApiClient buildLcnApiClient(String vnfmId) {
91 com.nokia.cbam.lcn.v32.ApiClient apiClient = new com.nokia.cbam.lcn.v32.ApiClient();
92 apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
93 apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
94 apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
95 apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(driverProperties.getCbamLcnUrl()));
100 com.nokia.cbam.catalog.v1.ApiClient buildCatalogApiClient(String vnfmId) {
101 com.nokia.cbam.catalog.v1.ApiClient apiClient = new com.nokia.cbam.catalog.v1.ApiClient();
102 apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
103 apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
104 apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
105 apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(driverProperties.getCbamCatalogUrl()));
110 ApiClient buildLcmApiClient(String vnfmId) {
111 VnfmInfo vnfmInfo = vnfmInfoProvider.getVnfmInfo(vnfmId);
112 ApiClient apiClient = new ApiClient();
113 apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
114 apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
115 apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
116 apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(vnfmInfo.getUrl()));