From d0aadad41036770dcdb8f1a262de70d071aa2795 Mon Sep 17 00:00:00 2001 From: GDLMadushanka Date: Thu, 10 Aug 2023 09:31:04 +0530 Subject: [PATCH] Enable configuring service-catalog version Add a system property to configure the service catalog version. This enables MI to connect different APIM versions other than its parallel version. Fixes wso2/api-manager/issues/2084 --- .../initializer/utils/Constants.java | 9 +++---- .../utils/ServiceCatalogUtils.java | 24 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/Constants.java b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/Constants.java index 8f40854531..3a22eea641 100644 --- a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/Constants.java +++ b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/Constants.java @@ -42,10 +42,11 @@ public class Constants { public static final String USER_NAME = "username"; public static final String PASSWORD = "password"; public static final String SERVICE_CATALOG_EXECUTOR_THREADS = "executor_threads"; - - public static final String SERVICE_CATALOG_PUBLISH_ENDPOINT = "api/am/service-catalog/v1/services/import?overwrite" + - "=true"; - public static final String SERVICE_CATALOG_GET_SERVICES_ENDPOINT = "api/am/service-catalog/v1/services"; + public static final String SERVICE_CATALOG_API_VERSION_PROPERTY = "service-catalog.api.version"; + public static final String SERVICE_CATALOG_DEFAULT_API_VERSION = "v1"; + public static final String SERVICE_CATALOG_ENDPOINT_PREFIX = "api/am/service-catalog/"; + public static final String SERVICE_CATALOG_PUBLISH_ENDPOINT = "/services/import?overwrite=true"; + public static final String SERVICE_CATALOG_GET_SERVICES_ENDPOINT = "/services"; // creating the payload.zip related constants public static final String SERVICE_CATALOG = "ServiceCatalog"; diff --git a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/ServiceCatalogUtils.java b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/ServiceCatalogUtils.java index 295e8748ab..1a49bb3731 100644 --- a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/ServiceCatalogUtils.java +++ b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/utils/ServiceCatalogUtils.java @@ -36,7 +36,6 @@ import org.wso2.micro.application.deployer.CarbonApplication; import org.wso2.micro.core.util.CarbonException; import org.wso2.micro.core.util.StringUtils; -import org.wso2.micro.integrator.core.util.MicroIntegratorBaseUtils; import org.wso2.micro.integrator.initializer.deployment.application.deployer.CappDeployer; import org.wso2.securevault.SecretResolver; import org.wso2.securevault.SecretResolverFactory; @@ -83,6 +82,15 @@ public class ServiceCatalogUtils { private static String resolvedUrl; private static String lineSeparator; private static Map parsedConfigs; + private static final String API_VERSION; + + static { + String apiVersion = System.getProperty(SERVICE_CATALOG_API_VERSION_PROPERTY); + if (apiVersion == null) { + apiVersion = SERVICE_CATALOG_DEFAULT_API_VERSION; + } + API_VERSION = apiVersion; + } /** * Update the service url by injecting env variables. @@ -241,11 +249,10 @@ public static Map getAllServices(Map apimConfigs (apimConfigs.get(USER_NAME) + ":" + apimConfigs.get(PASSWORD)).getBytes()); // create get all services url - if (APIMHost.endsWith("/")) { - APIMHost = APIMHost + SERVICE_CATALOG_GET_SERVICES_ENDPOINT; - } else { - APIMHost = APIMHost + "/" + SERVICE_CATALOG_GET_SERVICES_ENDPOINT; + if (!APIMHost.endsWith("/")) { + APIMHost = APIMHost + "/"; } + APIMHost = APIMHost + SERVICE_CATALOG_ENDPOINT_PREFIX + API_VERSION + SERVICE_CATALOG_GET_SERVICES_ENDPOINT; try { HttpsURLConnection connection = (HttpsURLConnection) new URL(APIMHost).openConnection(); @@ -303,11 +310,10 @@ private static int uploadZip(Map apimConfigs, String attachmentF String APIMHost = apimConfigs.get(APIM_HOST); // create POST URL - if (APIMHost.endsWith("/")) { - APIMHost = APIMHost + SERVICE_CATALOG_PUBLISH_ENDPOINT; - } else { - APIMHost = APIMHost + "/" + SERVICE_CATALOG_PUBLISH_ENDPOINT; + if (!APIMHost.endsWith("/")) { + APIMHost = APIMHost + "/"; } + APIMHost = APIMHost + SERVICE_CATALOG_ENDPOINT_PREFIX + API_VERSION + SERVICE_CATALOG_PUBLISH_ENDPOINT; String encodeBytes = Base64.getEncoder().encodeToString(