This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch netris-integration-upstream
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit c3d7e8195bf16c5bc983be33ec8e3b15bc5fdf51
Author: Nicolas Vazquez <nicovazque...@gmail.com>
AuthorDate: Tue Oct 15 12:23:03 2024 -0300

    Delegate API classes creation to the SDK and simply invoke the desired API 
class through CloudStack (#7)
    
    * Delegate API classes creation to the SDK and simply invoke the desired 
API class through CloudStack
    
    * Pass default auth scheme for now
---
 .../cloudstack/service/NetrisApiClientImpl.java    | 75 +++++++++-------------
 1 file changed, 31 insertions(+), 44 deletions(-)

diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
index 233e1115826..e2e4c9a90f1 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java
@@ -24,7 +24,6 @@ import io.netris.api.v1.AuthenticationApi;
 import io.netris.api.v1.SitesApi;
 import io.netris.api.v1.TenantsApi;
 import io.netris.api.v2.VpcApi;
-import io.netris.model.AuthSchema;
 import io.netris.model.GetSiteBody;
 import io.netris.model.SitesResponseOK;
 import io.netris.model.VPCListing;
@@ -35,85 +34,73 @@ import io.netris.model.response.TenantsResponse;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.math.BigDecimal;
 import java.util.List;
 
 public class NetrisApiClientImpl implements NetrisApiClient {
 
     private final Logger logger = LogManager.getLogger(getClass());
 
-    private static final ApiClient apiClient = new ApiClient();
+    private static ApiClient apiClient;
 
     public NetrisApiClientImpl(String endpointBaseUrl, String username, String 
password) {
-        apiClient.setBasePath(endpointBaseUrl);
-        authenticate(username, password);
-    }
-
-    private void authenticate(String username, String password) {
-        AuthSchema authSchema = createAuthSchema(username, password);
-        AuthenticationApi authenticationApi = new AuthenticationApi(apiClient);
         try {
-            ApiResponse<AuthResponse> authResponse = 
authenticationApi.apiAuthPost(authSchema);
-            if (authResponse.getStatusCode() == 200) {
-                String cookie = 
authResponse.getHeaders().get("Set-Cookie").get(0).split(";")[0];
-                apiClient.addDefaultHeader("Cookie", cookie);
-            } else {
-                String msg = String.format("Authentication to the Netris 
Controller %s failed, please check the credentials provided", 
apiClient.getBasePath());
-                logger.error(msg);
-                throw new CloudRuntimeException(msg);
-            }
+            apiClient = new ApiClient(endpointBaseUrl, username, password, 1L);
         } catch (ApiException e) {
-            String msg = String.format("Error authenticating to the Netris 
Controller %s: Code %s - Message: %s", apiClient.getBasePath(), e.getCode(), 
e.getResponseBody());
-            logger.error(msg, e);
-            throw new CloudRuntimeException(msg);
+            logAndThrowException(String.format("Error creating the Netris API 
Client for %s", endpointBaseUrl), e);
         }
     }
 
-    private AuthSchema createAuthSchema(String username, String password) {
-        AuthSchema authSchema = new AuthSchema();
-        authSchema.setUser(username);
-        authSchema.setPassword(password);
-        authSchema.setAuthSchemeID(new BigDecimal(1));
-        return authSchema;
+    protected void logAndThrowException(String prefix, ApiException e) throws 
CloudRuntimeException {
+        String msg = String.format("%s: (%s, %s, %s)", prefix, e.getCode(), 
e.getMessage(), e.getResponseBody());
+        logger.error(msg);
+        throw new CloudRuntimeException(msg);
     }
 
     @Override
     public boolean isSessionAlive() {
-        AuthenticationApi api = new AuthenticationApi(apiClient);
+        ApiResponse<AuthResponse> response = null;
         try {
-            ApiResponse<AuthResponse> response = api.apiAuthGet();
-            return response.getStatusCode() == 200;
+            AuthenticationApi api = 
apiClient.getApiStubForMethod(AuthenticationApi.class);
+            response = api.apiAuthGet();
         } catch (ApiException e) {
-            throw new CloudRuntimeException(e);
+            logAndThrowException("Error checking the Netris API session is 
alive", e);
         }
+        return response != null && response.getStatusCode() == 200;
     }
 
     @Override
     public List<GetSiteBody> listSites() {
-        SitesApi api = new SitesApi(apiClient);
+        SitesResponseOK response = null;
         try {
-            SitesResponseOK response = api.apiSitesGet();
-            return response.getData();
+            SitesApi api = apiClient.getApiStubForMethod(SitesApi.class);
+            response = api.apiSitesGet();
         } catch (ApiException e) {
-            throw new CloudRuntimeException(e);
+            logAndThrowException("Error listing Netris Sites", e);
         }
+        return response != null ? response.getData() : null;
     }
 
     @Override
     public List<VPCListing> listVPCs() {
-        VpcApi api = new VpcApi(apiClient);
+        VPCResponseOK response = null;
         try {
-            VPCResponseOK response = api.apiV2VpcGet();
-            return response.getData();
+            VpcApi api = apiClient.getApiStubForMethod(VpcApi.class);
+            response = api.apiV2VpcGet();
         } catch (ApiException e) {
-            throw new CloudRuntimeException(e);
+            logAndThrowException("Error listing Netris VPCs", e);
         }
+        return response != null ? response.getData() : null;
     }
 
     @Override
-    public List<TenantResponse> listTenants() throws ApiException {
-        TenantsApi api = new TenantsApi(apiClient);
-        ApiResponse<TenantsResponse> response = api.apiTenantsGet();
-        return response.getData().getData();
+    public List<TenantResponse> listTenants() {
+        ApiResponse<TenantsResponse> response = null;
+        try {
+            TenantsApi api = apiClient.getApiStubForMethod(TenantsApi.class);
+            response = api.apiTenantsGet();
+        } catch (ApiException e) {
+            logAndThrowException("Error listing Netris Tenants", e);
+        }
+        return (response != null && response.getData() != null) ? 
response.getData().getData() : null;
     }
 }

Reply via email to