Fix component startup
[vfc/nfvo/driver/vnfm/svnfm.git] / nokiav2 / driver / src / main / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / nokia / vnfm / CbamRestApiProvider.java
1 /*
2  * Copyright 2016-2017, Nokia Corporation
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
17
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
27 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.GenericExternalSystemInfoProvider.convert;
28
29 /**
30  * Responsible for providing client to access CBAM REST API
31  */
32 public class CbamRestApiProvider {
33     public static final String NOKIA_LCN_API_VERSION = "3.2";
34     public static final String NOKIA_LCM_API_VERSION = "3.2";
35     public static final String AUTH_NAME = "test";
36     private final CbamTokenProvider tokenProvider;
37     private final VnfmInfoProvider vnfmInfoProvider;
38     private final CbamSecurityProvider cbamSecurityProvider;
39
40     CbamRestApiProvider(CbamTokenProvider cbamTokenProvider, VnfmInfoProvider vnfmInfoProvider, CbamSecurityProvider cbamSecurityProvider) {
41         this.tokenProvider = cbamTokenProvider;
42         this.vnfmInfoProvider = vnfmInfoProvider;
43         this.cbamSecurityProvider = cbamSecurityProvider;
44     }
45
46     /**
47      * @param vnfmId the identifier of the VNFM
48      * @return API to access CBAM LCM API
49      */
50     public VnfsApi getCbamLcmApi(String vnfmId) {
51         return buildLcmApiClient(vnfmId).createService(VnfsApi.class);
52     }
53
54     /**
55      * @param vnfmId the identifier of the VNFM
56      * @return API to access the operation executions
57      */
58     public OperationExecutionsApi getCbamOperationExecutionApi(String vnfmId) {
59         return buildLcmApiClient(vnfmId).createService(OperationExecutionsApi.class);
60     }
61
62     /**
63      * @param vnfmId the identifier of the VNFM
64      * @return API to access CBAM LCN subscription API
65      */
66     public SubscriptionsApi getCbamLcnApi(String vnfmId) {
67         return buildLcnApiClient(vnfmId).createService(SubscriptionsApi.class);
68     }
69
70     /**
71      * @param vnfmId the identifier of the VNFM
72      * @return API to access CBAM catalog API
73      */
74     public DefaultApi getCbamCatalogApi(String vnfmId) {
75         return buildCatalogApiClient(vnfmId).createService(DefaultApi.class);
76     }
77
78     @VisibleForTesting
79     com.nokia.cbam.lcn.v32.ApiClient buildLcnApiClient(String vnfmId) {
80         com.nokia.cbam.lcn.v32.ApiClient apiClient = new com.nokia.cbam.lcn.v32.ApiClient();
81         apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
82         apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
83         apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
84         apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(convert(vnfmInfoProvider.getVnfmInfo(vnfmId)).getLcnUrl()));
85         return apiClient;
86     }
87
88     @VisibleForTesting
89     com.nokia.cbam.catalog.v1.ApiClient buildCatalogApiClient(String vnfmId) {
90         com.nokia.cbam.catalog.v1.ApiClient apiClient = new com.nokia.cbam.catalog.v1.ApiClient();
91         apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
92         apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
93         apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
94         apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(convert(vnfmInfoProvider.getVnfmInfo(vnfmId)).getCatalogUrl()));
95         return apiClient;
96     }
97
98     @VisibleForTesting
99     ApiClient buildLcmApiClient(String vnfmId) {
100         VnfmInfo vnfmInfo = vnfmInfoProvider.getVnfmInfo(vnfmId);
101         ApiClient apiClient = new 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(convert(vnfmInfoProvider.getVnfmInfo(vnfmId)).getLcmUrl()));
106         return apiClient;
107     }
108 }