From e89d2a268612fc42cd4ba7baef7ddda987746895 Mon Sep 17 00:00:00 2001 From: Miguel Prieto Date: Thu, 2 Jan 2025 18:53:38 -0300 Subject: [PATCH 1/2] Clients use standard CONDUCTOR env variables. --- .../client/http/ConductorClient.java | 23 +++++++++++ .../sdk/examples/util/ClientUtil.java | 39 +++++-------------- .../io/orkes/conductor/client/ApiClient.java | 17 ++++++++ .../conductor/client/util/ClientTestUtil.java | 35 ++++------------- 4 files changed, 56 insertions(+), 58 deletions(-) diff --git a/conductor-clients/java/conductor-java-sdk/conductor-client/src/main/java/com/netflix/conductor/client/http/ConductorClient.java b/conductor-clients/java/conductor-java-sdk/conductor-client/src/main/java/com/netflix/conductor/client/http/ConductorClient.java index 127a55ae2..993ba598f 100644 --- a/conductor-clients/java/conductor-java-sdk/conductor-client/src/main/java/com/netflix/conductor/client/http/ConductorClient.java +++ b/conductor-clients/java/conductor-java-sdk/conductor-client/src/main/java/com/netflix/conductor/client/http/ConductorClient.java @@ -452,6 +452,8 @@ public static class Builder> { private Supplier objectMapperSupplier = () -> new ObjectMapperProvider().getObjectMapper(); private final List headerSuppliers = new ArrayList<>(); + private boolean useEnvVariables = false; + protected T self() { //noinspection unchecked return (T) this; @@ -538,7 +540,19 @@ protected List headerSupplier() { return headerSuppliers; } + public T useEnvVariables(boolean useEnvVariables) { + this.useEnvVariables = useEnvVariables; + return self(); + } + + protected boolean isUseEnvVariables() { + return this.useEnvVariables; + } + public ConductorClient build() { + if (useEnvVariables) { + applyEnvVariables(); + } return new ConductorClient(this); } @@ -551,5 +565,14 @@ protected void validateAndAssignDefaults() { basePath = basePath.substring(0, basePath.length() - 1); } } + + protected void applyEnvVariables() { + String conductorServerUrl = System.getenv("CONDUCTOR_SERVER_URL"); + if (conductorServerUrl != null) { + this.basePath(conductorServerUrl); + } else { + throw new RuntimeException("env variable CONDUCTOR_SERVER_URL is not set"); + } + } } } diff --git a/conductor-clients/java/conductor-java-sdk/examples/src/main/java/io/orkes/conductor/sdk/examples/util/ClientUtil.java b/conductor-clients/java/conductor-java-sdk/examples/src/main/java/io/orkes/conductor/sdk/examples/util/ClientUtil.java index 23285f431..26dbb8bc1 100644 --- a/conductor-clients/java/conductor-java-sdk/examples/src/main/java/io/orkes/conductor/sdk/examples/util/ClientUtil.java +++ b/conductor-clients/java/conductor-java-sdk/examples/src/main/java/io/orkes/conductor/sdk/examples/util/ClientUtil.java @@ -14,44 +14,23 @@ import com.netflix.conductor.client.http.ConductorClient; +import io.orkes.conductor.client.ApiClient; import io.orkes.conductor.client.OrkesClients; -import io.orkes.conductor.client.http.OrkesAuthentication; - -import com.google.common.base.Preconditions; - -import static java.lang.System.getenv; public class ClientUtil { - private static final String ENV_ROOT_URI = "CONDUCTOR_SERVER_URL"; - private static final String ENV_KEY_ID = "CONDUCTOR_SERVER_AUTH_KEY"; - private static final String ENV_SECRET = "CONDUCTOR_SERVER_AUTH_SECRET"; - private static final ConductorClient CLIENT = getClient(); + + private static final ConductorClient CLIENT = ApiClient.builder() + .useEnvVariables(true) + .readTimeout(10_000) + .connectTimeout(10_000) + .writeTimeout(10_000) + .build();; public static OrkesClients getOrkesClients() { return new OrkesClients(CLIENT); } public static ConductorClient getClient() { - if (CLIENT != null) { - return CLIENT; - } - - var basePath = getenv(ENV_ROOT_URI); - Preconditions.checkNotNull(basePath, ENV_ROOT_URI + " env not set"); - - ConductorClient.Builder builder = ConductorClient.builder() - .basePath(basePath) - .readTimeout(10_000) - .connectTimeout(10_000) - .writeTimeout(10_000); - - var keyId = getenv(ENV_KEY_ID); - var keySecret = getenv(ENV_SECRET); - - if (keyId != null && keySecret != null) { - builder.addHeaderSupplier(new OrkesAuthentication(keyId, keySecret)); - } - - return builder.build(); + return CLIENT; } } diff --git a/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java b/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java index 94f5a736a..76e9e6e05 100644 --- a/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java +++ b/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java @@ -52,6 +52,10 @@ public ApiClient(String rootUri) { super(rootUri); } + public ApiClient() { + this(builder().useEnvVariables(true)); + } + private ApiClient(ApiClientBuilder builder) { super(builder); } @@ -161,8 +165,21 @@ public ApiClientBuilder credentials(String key, String secret) { @Override public ApiClient build() { + if (isUseEnvVariables()) { + applyEnvVariables(); + } + return new ApiClient(this); } + + protected void applyEnvVariables() { + super.applyEnvVariables(); + String conductorAuthKey = System.getenv("CONDUCTOR_AUTH_KEY"); + String conductorAuthSecret = System.getenv("CONDUCTOR_AUTH_SECRET"); + if (conductorAuthKey != null && conductorAuthSecret != null) { + this.credentials(conductorAuthKey, conductorAuthSecret); + } + } } } diff --git a/conductor-clients/java/conductor-java-sdk/tests/src/test/java/io/orkes/conductor/client/util/ClientTestUtil.java b/conductor-clients/java/conductor-java-sdk/tests/src/test/java/io/orkes/conductor/client/util/ClientTestUtil.java index 3eed57749..e94cfe011 100644 --- a/conductor-clients/java/conductor-java-sdk/tests/src/test/java/io/orkes/conductor/client/util/ClientTestUtil.java +++ b/conductor-clients/java/conductor-java-sdk/tests/src/test/java/io/orkes/conductor/client/util/ClientTestUtil.java @@ -12,45 +12,24 @@ */ package io.orkes.conductor.client.util; -import org.junit.jupiter.api.Assertions; - import com.netflix.conductor.client.http.ConductorClient; import io.orkes.conductor.client.ApiClient; import io.orkes.conductor.client.OrkesClients; public class ClientTestUtil { - private static final String ENV_ROOT_URI = "CONDUCTOR_SERVER_URL"; - private static final String ENV_KEY_ID = "CONDUCTOR_SERVER_AUTH_KEY"; - private static final String ENV_SECRET = "CONDUCTOR_SERVER_AUTH_SECRET"; - private static final ConductorClient CLIENT = getClient(); + private static final ConductorClient CLIENT = ApiClient.builder() + .useEnvVariables(true) + .readTimeout(30_000) + .connectTimeout(30_000) + .writeTimeout(30_000) + .build(); public static OrkesClients getOrkesClients() { return new OrkesClients(CLIENT); } public static ConductorClient getClient() { - if (CLIENT != null) { - return CLIENT; - } - - String basePath = getEnv(ENV_ROOT_URI); - Assertions.assertNotNull(basePath, ENV_ROOT_URI + " env not set"); - String keyId = getEnv(ENV_KEY_ID); - Assertions.assertNotNull(keyId, ENV_KEY_ID + " env not set"); - String keySecret = getEnv(ENV_SECRET); - Assertions.assertNotNull(keySecret, ENV_SECRET + " env not set"); - - return ApiClient.builder() - .basePath(basePath) - .credentials(keyId, keySecret) - .readTimeout(30_000) - .connectTimeout(30_000) - .writeTimeout(30_000) - .build(); - } - - private static String getEnv(String key) { - return System.getenv(key); + return CLIENT; } } From aabce3755d2cbc3d9fac89b5440a6744f6c20e92 Mon Sep 17 00:00:00 2001 From: Miguel Prieto Date: Mon, 6 Jan 2025 16:30:21 -0300 Subject: [PATCH 2/2] - Changes in integration test env variables to use the standard vars. - Make ApiClient env variable support backwards compatible --- .github/workflows/java-client-v4-integration-tests.yml | 4 ++-- .../main/java/io/orkes/conductor/client/ApiClient.java | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/java-client-v4-integration-tests.yml b/.github/workflows/java-client-v4-integration-tests.yml index 65d84e310..94eda77d7 100644 --- a/.github/workflows/java-client-v4-integration-tests.yml +++ b/.github/workflows/java-client-v4-integration-tests.yml @@ -33,8 +33,8 @@ jobs: ./gradlew -p tests test env: CONDUCTOR_SERVER_URL: ${{ secrets.CONDUCTOR_SERVER_URL }} - CONDUCTOR_SERVER_AUTH_KEY: ${{ secrets.CONDUCTOR_SERVER_AUTH_KEY }} - CONDUCTOR_SERVER_AUTH_SECRET: ${{ secrets.CONDUCTOR_SERVER_AUTH_SECRET }} + CONDUCTOR_AUTH_KEY: ${{ secrets.CONDUCTOR_AUTH_KEY }} + CONDUCTOR_AUTH_SECRET: ${{ secrets.CONDUCTOR_AUTH_SECRET }} - name: Publish Test Report uses: mikepenz/action-junit-report@v3 if: always() diff --git a/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java b/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java index 76e9e6e05..26a3495ea 100644 --- a/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java +++ b/conductor-clients/java/conductor-java-sdk/orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java @@ -174,8 +174,17 @@ public ApiClient build() { protected void applyEnvVariables() { super.applyEnvVariables(); + String conductorAuthKey = System.getenv("CONDUCTOR_AUTH_KEY"); + if (conductorAuthKey == null) { + conductorAuthKey = System.getenv("CONDUCTOR_SERVER_AUTH_KEY"); // for backwards compatibility + } + String conductorAuthSecret = System.getenv("CONDUCTOR_AUTH_SECRET"); + if (conductorAuthSecret == null) { + conductorAuthSecret = System.getenv("CONDUCTOR_SERVER_AUTH_SECRET"); // for backwards compatibility + } + if (conductorAuthKey != null && conductorAuthSecret != null) { this.credentials(conductorAuthKey, conductorAuthSecret); }