Skip to content

Commit 839098f

Browse files
authored
akeyless: use native httpclient (#194)
1 parent 8113afa commit 839098f

File tree

4 files changed

+46
-70
lines changed

4 files changed

+46
-70
lines changed

tasks/akeyless/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ $ IT_PROPERTIES_FILE=~/my_it_props/akeyless.props mvn -DskipAkeylessITs=false fa
7272
[INFO] ------------------------------------------------------------------------
7373
```
7474

75+
Set custom Concord server and agent images with `TESTCONTAINERS_CONCORD_SERVER_IMAGE`
76+
and `TESTCONTAINERS_CONCORD_AGENT_IMAGE` environment variables. See
77+
[`testcontainers-concord` usage notes](https://github.com/concord-workflow/testcontainers-concord?tab=readme-ov-file#usage)
78+
7579
## Testing via Payload
7680

7781
**This should really only be done against a local Concord dev instance since the

tasks/akeyless/pom.xml

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,9 @@
1919
<skipAkeylessITs>true</skipAkeylessITs>
2020

2121
<swagger-annotations-version>1.5.21</swagger-annotations-version>
22-
<httpclient-version>4.5.13</httpclient-version>
23-
<jackson-version>2.13.3</jackson-version>
24-
<jackson-threetenbp-version>2.9.10</jackson-threetenbp-version>
2522
<jakarta-annotation-version>1.3.5</jakarta-annotation-version>
26-
<maven-plugin-version>1.0.0</maven-plugin-version>
27-
<threetenbp-version>1.4.0</threetenbp-version>
2823

29-
<testcontainers.concord.version>2.0.1</testcontainers.concord.version>
24+
<testcontainers.concord.version>2.0.2</testcontainers.concord.version>
3025
</properties>
3126

3227
<dependencies>
@@ -63,63 +58,46 @@
6358
<groupId>io.swagger</groupId>
6459
<artifactId>swagger-annotations</artifactId>
6560
<version>${swagger-annotations-version}</version>
61+
<scope>provided</scope>
6662
</dependency>
6763

6864
<!-- @Nullable annotation -->
6965
<dependency>
7066
<groupId>com.google.code.findbugs</groupId>
7167
<artifactId>jsr305</artifactId>
72-
<version>3.0.2</version>
73-
</dependency>
74-
75-
76-
<!-- HTTP client: apache client -->
77-
<dependency>
78-
<groupId>org.apache.httpcomponents</groupId>
79-
<artifactId>httpclient</artifactId>
80-
<version>${httpclient-version}</version>
81-
</dependency>
82-
<dependency>
83-
<groupId>org.apache.httpcomponents</groupId>
84-
<artifactId>httpcore</artifactId>
85-
<version>4.4.13</version>
86-
</dependency>
87-
<dependency>
88-
<groupId>org.apache.httpcomponents</groupId>
89-
<artifactId>httpmime</artifactId>
90-
<version>${httpclient-version}</version>
68+
<scope>provided</scope>
9169
</dependency>
9270

9371
<!-- JSON processing: jackson -->
9472
<dependency>
9573
<groupId>com.fasterxml.jackson.core</groupId>
9674
<artifactId>jackson-core</artifactId>
97-
<version>${jackson-version}</version>
75+
<scope>provided</scope>
9876
</dependency>
9977
<dependency>
10078
<groupId>com.fasterxml.jackson.core</groupId>
10179
<artifactId>jackson-annotations</artifactId>
102-
<version>${jackson-version}</version>
80+
<scope>provided</scope>
10381
</dependency>
10482
<dependency>
10583
<groupId>com.fasterxml.jackson.core</groupId>
10684
<artifactId>jackson-databind</artifactId>
107-
<version>${jackson-version}</version>
85+
<scope>provided</scope>
10886
</dependency>
10987
<dependency>
11088
<groupId>com.fasterxml.jackson.jaxrs</groupId>
11189
<artifactId>jackson-jaxrs-json-provider</artifactId>
112-
<version>${jackson-version}</version>
90+
<scope>provided</scope>
11391
</dependency>
11492
<dependency>
11593
<groupId>com.fasterxml.jackson.datatype</groupId>
11694
<artifactId>jackson-datatype-jsr310</artifactId>
117-
<version>${jackson-version}</version>
95+
<scope>provided</scope>
11896
</dependency>
11997
<dependency>
120-
<groupId>com.github.joschi.jackson</groupId>
121-
<artifactId>jackson-datatype-threetenbp</artifactId>
122-
<version>${jackson-threetenbp-version}</version>
98+
<groupId>org.openapitools</groupId>
99+
<artifactId>jackson-databind-nullable</artifactId>
100+
<version>0.2.6</version>
123101
</dependency>
124102
<dependency>
125103
<groupId>jakarta.annotation</groupId>
@@ -128,13 +106,6 @@
128106
<scope>provided</scope>
129107
</dependency>
130108

131-
<dependency>
132-
<groupId>org.threeten</groupId>
133-
<artifactId>threetenbp</artifactId>
134-
<version>${threetenbp-version}</version>
135-
</dependency>
136-
137-
138109
<!-- test dependencies -->
139110
<dependency>
140111
<groupId>org.junit.jupiter</groupId>
@@ -210,8 +181,8 @@
210181

211182
<plugins>
212183
<plugin>
213-
<groupId>org.eclipse.sisu</groupId>
214-
<artifactId>sisu-maven-plugin</artifactId>
184+
<groupId>dev.ybrig.concord</groupId>
185+
<artifactId>concord-maven-plugin</artifactId>
215186
</plugin>
216187
<plugin>
217188
<groupId>org.openapitools</groupId>
@@ -227,7 +198,7 @@
227198
${project.basedir}/akeyless-open-api.yaml
228199
</inputSpec>
229200
<generatorName>java</generatorName>
230-
<library>apache-httpclient</library>
201+
<library>native</library>
231202
<apiPackage>com.walmartlabs.concord.plugins.akeyless.api</apiPackage>
232203
<modelPackage>com.walmartlabs.concord.plugins.akeyless.model</modelPackage>
233204
<generateApiTests>false</generateApiTests>

tasks/akeyless/src/main/java/com/walmartlabs/concord/plugins/akeyless/AkeylessCommon.java

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.slf4j.Logger;
3030
import org.slf4j.LoggerFactory;
3131

32+
import java.net.http.HttpClient;
33+
import java.time.Duration;
3234
import java.util.Collections;
3335
import java.util.HashMap;
3436
import java.util.List;
@@ -68,35 +70,23 @@ public AkeylessTaskResult execute(TaskParams params, SecretExporter secretExport
6870

6971
Util.debug(params.debug(), log, String.format("Action: %s", params.action()));
7072

71-
switch (params.action()) {
72-
case AUTH: {
73-
return auth(params);
74-
}
75-
case GETSECRET: {
76-
return getSecret((TaskParams.GetSecretParams) params);
77-
}
78-
case GETSECRETS: {
79-
return getSecrets((TaskParams.GetSecretsParams) params);
80-
}
81-
case CREATESECRET: {
82-
return createSecret((TaskParams.CreateSecretParams) params);
83-
}
84-
case UPDATESECRET: {
85-
return updateSecretVal((TaskParams.UpdateSecretParams) params);
86-
}
87-
case DELETEITEM: {
88-
return deleteItem((TaskParams.DeleteItemParams) params);
89-
}
90-
default:
91-
throw new IllegalArgumentException("Invalid action: " + params.action());
92-
}
73+
return switch (params.action()) {
74+
case AUTH -> auth(params);
75+
case GETSECRET -> getSecret((TaskParams.GetSecretParams) params);
76+
case GETSECRETS -> getSecrets((TaskParams.GetSecretsParams) params);
77+
case CREATESECRET -> createSecret((TaskParams.CreateSecretParams) params);
78+
case UPDATESECRET -> updateSecretVal((TaskParams.UpdateSecretParams) params);
79+
case DELETEITEM -> deleteItem((TaskParams.DeleteItemParams) params);
80+
};
9381
}
9482

9583
private V2Api getApi(TaskParams params) {
9684
if (apiClient == null) {
97-
apiClient = new ApiClient()
98-
.setBasePath(params.apiBasePath())
99-
.setConnectTimeout(params.connectTimeout());
85+
var clientBuilder = HttpClient.newBuilder()
86+
.connectTimeout(Duration.ofSeconds(params.connectTimeout()));
87+
88+
apiClient = new ApiClient(clientBuilder, JSON.getDefault().getMapper(), params.apiBasePath())
89+
.setReadTimeout(Duration.ofSeconds(params.readTimeout()));
10090
}
10191

10292
return new V2Api(apiClient);

tasks/akeyless/src/test/java/com/walmartlabs/concord/plugins/akeyless/it/TaskIT.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@
2828
import com.walmartlabs.concord.client2.ApiException;
2929
import com.walmartlabs.concord.client2.ProcessEntry;
3030
import com.walmartlabs.concord.common.IOUtils;
31+
import org.junit.jupiter.api.BeforeAll;
3132
import org.junit.jupiter.api.Test;
3233
import org.junit.jupiter.api.extension.RegisterExtension;
34+
import org.slf4j.Logger;
35+
import org.slf4j.LoggerFactory;
3336

3437
import java.io.IOException;
3538
import java.io.InputStream;
@@ -44,11 +47,18 @@ class TaskIT extends AbstractIT {
4447
@RegisterExtension
4548
public static final ConcordRule concord = new ConcordRule()
4649
.mode(Concord.Mode.DOCKER)
47-
.streamServerLogs(true)
48-
.streamAgentLogs(true)
50+
.streamServerLogs(false)
51+
.streamAgentLogs(false)
4952
.useLocalMavenRepository(true);
5053

5154
private static final String CURRENT_VERSION = getCurrentVersion();
55+
private static final Logger log = LoggerFactory.getLogger(TaskIT.class);
56+
57+
@BeforeAll
58+
static void beforeAll() {
59+
log.info("Concord url: {}", concord.apiBaseUrl());
60+
log.info("Admin token: {}", concord.environment().apiToken());
61+
}
5262

5363
@Test
5464
void testWithRuntimeV1() throws Exception {
@@ -115,4 +125,5 @@ private static byte[] readToBytes(String resource) {
115125
throw new RuntimeException(e);
116126
}
117127
}
128+
118129
}

0 commit comments

Comments
 (0)