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
index 5fdc919..cda091c 100644 (file)
@@ -15,7 +15,7 @@
  */
 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm;
 
-import com.google.common.io.BaseEncoding;
+import com.google.common.annotations.VisibleForTesting;
 import com.nokia.cbam.catalog.v1.api.DefaultApi;
 import com.nokia.cbam.lcm.v32.ApiClient;
 import com.nokia.cbam.lcm.v32.api.OperationExecutionsApi;
@@ -23,33 +23,24 @@ import com.nokia.cbam.lcm.v32.api.VnfsApi;
 import com.nokia.cbam.lcn.v32.api.SubscriptionsApi;
 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VnfmInfoProvider;
 import org.onap.vnfmdriver.model.VnfmInfo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 
-import java.io.ByteArrayInputStream;
+import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.GenericExternalSystemInfoProvider.convert;
 
 /**
  * Responsible for providing client to access CBAM REST API
  */
-@Component
 public class CbamRestApiProvider {
     public static final String NOKIA_LCN_API_VERSION = "3.2";
     public static final String NOKIA_LCM_API_VERSION = "3.2";
-    private final DriverProperties driverProperties;
+    public static final String AUTH_NAME = "test";
     private final CbamTokenProvider tokenProvider;
     private final VnfmInfoProvider vnfmInfoProvider;
+    private final CbamSecurityProvider cbamSecurityProvider;
 
-    @Value("${trustedCertificates}")
-    private String trustedCertificates;
-    @Value("${skipCertificateVerification}")
-    private boolean skipCertificateVerification;
-
-    @Autowired
-    public CbamRestApiProvider(DriverProperties driverProperties, CbamTokenProvider cbamTokenProvider, VnfmInfoProvider vnfmInfoProvider) {
-        this.driverProperties = driverProperties;
+    CbamRestApiProvider(CbamTokenProvider cbamTokenProvider, VnfmInfoProvider vnfmInfoProvider, CbamSecurityProvider cbamSecurityProvider) {
         this.tokenProvider = cbamTokenProvider;
         this.vnfmInfoProvider = vnfmInfoProvider;
+        this.cbamSecurityProvider = cbamSecurityProvider;
     }
 
     /**
@@ -57,7 +48,7 @@ public class CbamRestApiProvider {
      * @return API to access CBAM LCM API
      */
     public VnfsApi getCbamLcmApi(String vnfmId) {
-        return new VnfsApi(getLcmApiClient(vnfmId));
+        return buildLcmApiClient(vnfmId).createService(VnfsApi.class);
     }
 
     /**
@@ -65,7 +56,7 @@ public class CbamRestApiProvider {
      * @return API to access the operation executions
      */
     public OperationExecutionsApi getCbamOperationExecutionApi(String vnfmId) {
-        return new OperationExecutionsApi(getLcmApiClient(vnfmId));
+        return buildLcmApiClient(vnfmId).createService(OperationExecutionsApi.class);
     }
 
     /**
@@ -73,15 +64,7 @@ public class CbamRestApiProvider {
      * @return API to access CBAM LCN subscription API
      */
     public SubscriptionsApi getCbamLcnApi(String vnfmId) {
-        com.nokia.cbam.lcn.v32.ApiClient apiClient = new com.nokia.cbam.lcn.v32.ApiClient();
-        if (!skipCertificateVerification) {
-            apiClient.setSslCaCert(new ByteArrayInputStream(BaseEncoding.base64().decode(trustedCertificates)));
-        } else {
-            apiClient.setVerifyingSsl(false);
-        }
-        apiClient.setBasePath(driverProperties.getCbamLcnUrl());
-        apiClient.setAccessToken(tokenProvider.getToken(vnfmId));
-        return new SubscriptionsApi(apiClient);
+        return buildLcnApiClient(vnfmId).createService(SubscriptionsApi.class);
     }
 
     /**
@@ -89,27 +72,37 @@ public class CbamRestApiProvider {
      * @return API to access CBAM catalog API
      */
     public DefaultApi getCbamCatalogApi(String vnfmId) {
+        return buildCatalogApiClient(vnfmId).createService(DefaultApi.class);
+    }
+
+    @VisibleForTesting
+    com.nokia.cbam.lcn.v32.ApiClient buildLcnApiClient(String vnfmId) {
+        com.nokia.cbam.lcn.v32.ApiClient apiClient = new com.nokia.cbam.lcn.v32.ApiClient();
+        apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
+        apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
+        apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
+        apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(convert(vnfmInfoProvider.getVnfmInfo(vnfmId)).getLcnUrl()));
+        return apiClient;
+    }
+
+    @VisibleForTesting
+    com.nokia.cbam.catalog.v1.ApiClient buildCatalogApiClient(String vnfmId) {
         com.nokia.cbam.catalog.v1.ApiClient apiClient = new com.nokia.cbam.catalog.v1.ApiClient();
-        if (!skipCertificateVerification) {
-            apiClient.setSslCaCert(new ByteArrayInputStream(BaseEncoding.base64().decode(trustedCertificates)));
-        } else {
-            apiClient.setVerifyingSsl(false);
-        }
-        apiClient.setBasePath(driverProperties.getCbamCatalogUrl());
-        apiClient.setAccessToken(tokenProvider.getToken(vnfmId));
-        return new DefaultApi(apiClient);
+        apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
+        apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
+        apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
+        apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(convert(vnfmInfoProvider.getVnfmInfo(vnfmId)).getCatalogUrl()));
+        return apiClient;
     }
 
-    private ApiClient getLcmApiClient(String vnfmId) {
+    @VisibleForTesting
+    ApiClient buildLcmApiClient(String vnfmId) {
         VnfmInfo vnfmInfo = vnfmInfoProvider.getVnfmInfo(vnfmId);
         ApiClient apiClient = new ApiClient();
-        if (!skipCertificateVerification) {
-            apiClient.setSslCaCert(new ByteArrayInputStream(BaseEncoding.base64().decode(trustedCertificates)));
-        } else {
-            apiClient.setVerifyingSsl(false);
-        }
-        apiClient.setAccessToken(tokenProvider.getToken(vnfmId));
-        apiClient.setBasePath(vnfmInfo.getUrl());
+        apiClient.getOkBuilder().sslSocketFactory(cbamSecurityProvider.buildSSLSocketFactory(), cbamSecurityProvider.buildTrustManager());
+        apiClient.getOkBuilder().hostnameVerifier(cbamSecurityProvider.buildHostnameVerifier());
+        apiClient.addAuthorization(AUTH_NAME, tokenProvider.getToken(vnfmId));
+        apiClient.setAdapterBuilder(apiClient.getAdapterBuilder().baseUrl(convert(vnfmInfoProvider.getVnfmInfo(vnfmId)).getLcmUrl()));
         return apiClient;
     }
 }