Skip to content

Commit edb5d26

Browse files
author
Luke Sikina
committed
[ALS-7716] Userless pushes for AVL role
1 parent d7cc028 commit edb5d26

File tree

3 files changed

+22
-14
lines changed

3 files changed

+22
-14
lines changed

uploader/src/main/java/edu/harvard/dbmi/avillach/dataupload/aws/AWSClientBuilder.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
55
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.beans.factory.annotation.Value;
67
import org.springframework.context.annotation.Profile;
78
import org.springframework.stereotype.Service;
89
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
10+
import software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider;
911
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
1012
import software.amazon.awssdk.http.SdkHttpClient;
1113
import software.amazon.awssdk.services.s3.S3Client;
@@ -27,18 +29,21 @@ public class AWSClientBuilder {
2729
private final StsClientProvider stsClientProvider;
2830
private final S3ClientBuilder s3ClientBuilder;
2931
private final SdkHttpClient sdkHttpClient;
32+
private final boolean retainRole;
3033

3134
@Autowired
3235
public AWSClientBuilder(
3336
Map<String, SiteAWSInfo> sites,
3437
StsClientProvider stsClientProvider,
3538
S3ClientBuilder s3ClientBuilder,
36-
@Autowired(required = false) SdkHttpClient sdkHttpClient
39+
@Autowired(required = false) SdkHttpClient sdkHttpClient,
40+
@Value("${s3.retain_role:false}") boolean retainRole
3741
) {
3842
this.sites = sites;
3943
this.stsClientProvider = stsClientProvider;
4044
this.s3ClientBuilder = s3ClientBuilder;
4145
this.sdkHttpClient = sdkHttpClient;
46+
this.retainRole = false;
4247
}
4348

4449
public Optional<S3Client> buildClientForSite(String siteName) {
@@ -48,6 +53,14 @@ public Optional<S3Client> buildClientForSite(String siteName) {
4853
return Optional.empty();
4954
}
5055

56+
if (retainRole) {
57+
log.info("s3.retain_role set to true. Will retain current role rather than assuming one for site");
58+
S3Client client = s3ClientBuilder
59+
.credentialsProvider(InstanceProfileCredentialsProvider.create())
60+
.build();
61+
return Optional.of(client);
62+
}
63+
5164
log.info("Found site, making assume role request");
5265
SiteAWSInfo site = sites.get(siteName);
5366
AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()

uploader/src/test/java/edu/harvard/dbmi/avillach/dataupload/aws/AWSClientBuilderTest.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
import org.mockito.Mockito;
77
import org.springframework.beans.factory.annotation.Autowired;
88
import org.springframework.boot.test.context.SpringBootTest;
9-
import org.springframework.boot.test.mock.mockito.MockBean;
10-
import org.springframework.boot.test.mock.mockito.SpyBean;
11-
import org.springframework.context.annotation.Profile;
129
import org.springframework.test.context.ActiveProfiles;
10+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1311
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
1412
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
1513
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
@@ -28,16 +26,16 @@
2826
@SpringBootTest
2927
class AWSClientBuilderTest {
3028

31-
@MockBean
29+
@MockitoBean
3230
Map<String, SiteAWSInfo> sites;
3331

34-
@MockBean
32+
@MockitoBean
3533
StsClient stsClient;
3634

37-
@MockBean
35+
@MockitoBean
3836
StsClientProvider stsClientProvider;
3937

40-
@MockBean
38+
@MockitoBean
4139
S3ClientBuilder s3ClientBuilder;
4240

4341
@Autowired

uploader/src/test/java/edu/harvard/dbmi/avillach/dataupload/hpds/HPDSConnectionVerifierTest.java

+3-6
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,22 @@
55
import org.junit.jupiter.api.Assertions;
66
import org.junit.jupiter.api.Test;
77
import org.junit.jupiter.api.io.TempDir;
8-
import org.mockito.ArgumentMatcher;
98
import org.mockito.Mockito;
109
import org.springframework.boot.test.context.SpringBootTest;
11-
import org.springframework.boot.test.mock.mockito.MockBean;
10+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1211

1312
import java.io.IOException;
1413
import java.nio.file.Files;
1514
import java.nio.file.Path;
1615
import java.util.UUID;
1716

18-
import static org.junit.jupiter.api.Assertions.*;
19-
2017
@SpringBootTest
2118
class HPDSConnectionVerifierTest {
2219

23-
@MockBean
20+
@MockitoBean
2421
private HPDSClient client;
2522

26-
@MockBean
23+
@MockitoBean
2724
private UUIDGenerator generator;
2825

2926
private final Query query = new Query();

0 commit comments

Comments
 (0)