Skip to content

Commit d821b5a

Browse files
committed
DMP-5252-ARM-5-2-Upgrade
Started to move the ARM clients into a service so the current version and new version can be enabled accordingly
1 parent 27ffb6e commit d821b5a

File tree

10 files changed

+415
-17
lines changed

10 files changed

+415
-17
lines changed

docker-compose-local.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ services:
5757
- DARTS_UNSTRUCTURED_STORAGE_SAS_URL
5858
- ARM_SERVICE_ENTITLEMENT
5959
- ARM_STORAGE_ACCOUNT_NAME
60+
- ARM_AUTH_URL
61+
- ARM_API_URL
6062
build:
6163
context: .
6264
dockerfile: Dockerfile

src/functionalTest/resources/application-functionalTest.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,10 @@ darts:
4545
url: ${ARM_URL:http://localhost:4551}
4646
arm-service-entitlement: some-entitlement
4747
arm-storage-account-name: some-account-name
48+
version5-2:
49+
authentication:
50+
auth-base-url: ${ARM_AUTH_URL:http://localhost:4551}
51+
api:
52+
api-base-url: ${ARM_API_URL:http://localhost:4551}
4853
automated-tasks-pod: true
4954
api-pod: true

src/main/java/uk/gov/hmcts/darts/arm/client/ArmApiBaseClient.java renamed to src/main/java/uk/gov/hmcts/darts/arm/client/version/fivetwo/ArmApiBaseClient.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
package uk.gov.hmcts.darts.arm.client;
1+
package uk.gov.hmcts.darts.arm.client.version.fivetwo;
22

33
import org.springframework.cloud.openfeign.FeignClient;
44
import org.springframework.web.bind.annotation.GetMapping;
55
import org.springframework.web.bind.annotation.PathVariable;
66
import org.springframework.web.bind.annotation.PostMapping;
77
import org.springframework.web.bind.annotation.RequestBody;
88
import org.springframework.web.bind.annotation.RequestHeader;
9+
import uk.gov.hmcts.darts.arm.client.model.ArmTokenResponse;
10+
import uk.gov.hmcts.darts.arm.client.model.AvailableEntitlementProfile;
911
import uk.gov.hmcts.darts.arm.client.model.UpdateMetadataRequest;
1012
import uk.gov.hmcts.darts.arm.client.model.UpdateMetadataResponse;
1113
import uk.gov.hmcts.darts.arm.client.model.rpo.ArmAsyncSearchResponse;
@@ -144,7 +146,6 @@ ExtendedProductionsByMatterResponse getExtendedProductionsByMatter(@RequestHeade
144146
feign.Response downloadProduction(@RequestHeader(AUTHORIZATION) String bearerAuth,
145147
@PathVariable("productionExportFileID") String productionExportFileId);
146148

147-
148149
/**
149150
* Download production that should only be used in lower environments for testing purposes.
150151
*/
@@ -153,4 +154,18 @@ feign.Response downloadProduction(@RequestHeader(AUTHORIZATION) String bearerAut
153154
feign.Response downloadProduction(@RequestHeader(AUTHORIZATION) String bearerAuth,
154155
@RequestHeader("EOD_IDS") String eodIds,
155156
@PathVariable("productionExportFileID") String productionExportFileId);
157+
158+
@PostMapping(value = "${darts.storage.arm-api.version5-2.api.available-entitlement-profiles-path}",
159+
consumes = APPLICATION_JSON_VALUE,
160+
produces = APPLICATION_JSON_VALUE)
161+
AvailableEntitlementProfile availableEntitlementProfiles(@RequestHeader(AUTHORIZATION) String bearerAuth,
162+
@RequestBody EmptyRpoRequest emptyRpoRequest);
163+
164+
@PostMapping(value = "${darts.storage.arm-api.version5-2.api.select-entitlement-profile-path}",
165+
consumes = APPLICATION_JSON_VALUE,
166+
produces = APPLICATION_JSON_VALUE)
167+
ArmTokenResponse selectEntitlementProfile(@RequestHeader(AUTHORIZATION) String bearerAuth,
168+
@PathVariable("profile_id") String profileId,
169+
@RequestBody EmptyRpoRequest emptyRpoRequest);
170+
156171
}

src/main/java/uk/gov/hmcts/darts/arm/client/ArmAuthClient.java renamed to src/main/java/uk/gov/hmcts/darts/arm/client/version/fivetwo/ArmAuthClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package uk.gov.hmcts.darts.arm.client;
1+
package uk.gov.hmcts.darts.arm.client.version.fivetwo;
22

33
import org.springframework.cloud.openfeign.FeignClient;
44
import org.springframework.web.bind.annotation.PostMapping;
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package uk.gov.hmcts.darts.arm.service;
2+
3+
import uk.gov.hmcts.darts.arm.client.model.ArmTokenRequest;
4+
import uk.gov.hmcts.darts.arm.client.model.ArmTokenResponse;
5+
import uk.gov.hmcts.darts.arm.client.model.AvailableEntitlementProfile;
6+
import uk.gov.hmcts.darts.arm.client.model.UpdateMetadataRequest;
7+
import uk.gov.hmcts.darts.arm.client.model.UpdateMetadataResponse;
8+
import uk.gov.hmcts.darts.arm.client.model.rpo.ArmAsyncSearchResponse;
9+
import uk.gov.hmcts.darts.arm.client.model.rpo.CreateExportBasedOnSearchResultsTableRequest;
10+
import uk.gov.hmcts.darts.arm.client.model.rpo.CreateExportBasedOnSearchResultsTableResponse;
11+
import uk.gov.hmcts.darts.arm.client.model.rpo.EmptyRpoRequest;
12+
import uk.gov.hmcts.darts.arm.client.model.rpo.ExtendedProductionsByMatterResponse;
13+
import uk.gov.hmcts.darts.arm.client.model.rpo.ExtendedSearchesByMatterResponse;
14+
import uk.gov.hmcts.darts.arm.client.model.rpo.IndexesByMatterIdRequest;
15+
import uk.gov.hmcts.darts.arm.client.model.rpo.IndexesByMatterIdResponse;
16+
import uk.gov.hmcts.darts.arm.client.model.rpo.MasterIndexFieldByRecordClassSchemaRequest;
17+
import uk.gov.hmcts.darts.arm.client.model.rpo.MasterIndexFieldByRecordClassSchemaResponse;
18+
import uk.gov.hmcts.darts.arm.client.model.rpo.ProductionOutputFilesRequest;
19+
import uk.gov.hmcts.darts.arm.client.model.rpo.ProductionOutputFilesResponse;
20+
import uk.gov.hmcts.darts.arm.client.model.rpo.ProfileEntitlementResponse;
21+
import uk.gov.hmcts.darts.arm.client.model.rpo.RecordManagementMatterResponse;
22+
import uk.gov.hmcts.darts.arm.client.model.rpo.RemoveProductionRequest;
23+
import uk.gov.hmcts.darts.arm.client.model.rpo.RemoveProductionResponse;
24+
import uk.gov.hmcts.darts.arm.client.model.rpo.SaveBackgroundSearchRequest;
25+
import uk.gov.hmcts.darts.arm.client.model.rpo.SaveBackgroundSearchResponse;
26+
import uk.gov.hmcts.darts.arm.client.model.rpo.StorageAccountRequest;
27+
import uk.gov.hmcts.darts.arm.client.model.rpo.StorageAccountResponse;
28+
29+
public interface ArmClientService {
30+
31+
ArmTokenResponse getToken(ArmTokenRequest armTokenRequest);
32+
33+
UpdateMetadataResponse updateMetadata(String bearerAuth, UpdateMetadataRequest updateMetadataRequest);
34+
35+
@SuppressWarnings({"PMD.UseObjectForClearerAPI"})
36+
feign.Response downloadArmData(String bearerAuth, String cabinetId, String externalRecordId, String externalFileId);
37+
38+
RecordManagementMatterResponse getRecordManagementMatter(String bearerAuth, EmptyRpoRequest emptyRpoRequest);
39+
40+
StorageAccountResponse getStorageAccounts(String bearerToken, StorageAccountRequest storageAccountRequest);
41+
42+
MasterIndexFieldByRecordClassSchemaResponse getMasterIndexFieldByRecordClassSchema(
43+
String bearerAuth,
44+
MasterIndexFieldByRecordClassSchemaRequest masterIndexFieldByRecordClassSchemaRequest);
45+
46+
ProfileEntitlementResponse getProfileEntitlementResponse(String bearerAuth, EmptyRpoRequest emptyRpoRequest);
47+
48+
ArmAsyncSearchResponse addAsyncSearch(String bearerAuth, String body);
49+
50+
IndexesByMatterIdResponse getIndexesByMatterId(String bearerToken, IndexesByMatterIdRequest indexesByMatterIdRequest);
51+
52+
SaveBackgroundSearchResponse saveBackgroundSearch(String bearerToken,
53+
SaveBackgroundSearchRequest saveBackgroundSearchRequest);
54+
55+
ExtendedSearchesByMatterResponse getExtendedSearchesByMatter(String bearerToken,
56+
String body);
57+
58+
ProductionOutputFilesResponse getProductionOutputFiles(String bearerToken,
59+
ProductionOutputFilesRequest productionOutputFilesRequest);
60+
61+
CreateExportBasedOnSearchResultsTableResponse createExportBasedOnSearchResultsTable(
62+
String bearerToken, CreateExportBasedOnSearchResultsTableRequest request);
63+
64+
RemoveProductionResponse removeProduction(String bearerToken,
65+
RemoveProductionRequest removeProductionRequest);
66+
67+
ExtendedProductionsByMatterResponse getExtendedProductionsByMatter(String bearerToken,
68+
String body);
69+
70+
feign.Response downloadProduction(String bearerAuth, String productionExportFileId);
71+
72+
feign.Response downloadProduction(String bearerAuth, String eodIds, String productionExportFileId);
73+
74+
AvailableEntitlementProfile availableEntitlementProfiles(String bearerAuth, EmptyRpoRequest emptyRpoRequest);
75+
76+
ArmTokenResponse selectEntitlementProfile(String bearerAuth, String profileId, EmptyRpoRequest emptyRpoRequest);
77+
}

src/main/java/uk/gov/hmcts/darts/arm/service/impl/ArmApiServiceImpl.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import org.apache.commons.lang3.StringUtils;
77
import org.springframework.http.HttpStatus;
88
import org.springframework.stereotype.Service;
9-
import uk.gov.hmcts.darts.arm.client.ArmApiClient;
10-
import uk.gov.hmcts.darts.arm.client.ArmTokenClient;
119
import uk.gov.hmcts.darts.arm.client.model.ArmTokenRequest;
1210
import uk.gov.hmcts.darts.arm.client.model.ArmTokenResponse;
1311
import uk.gov.hmcts.darts.arm.client.model.AvailableEntitlementProfile;
@@ -17,6 +15,7 @@
1715
import uk.gov.hmcts.darts.arm.config.ArmApiConfigurationProperties;
1816
import uk.gov.hmcts.darts.arm.config.ArmDataManagementConfiguration;
1917
import uk.gov.hmcts.darts.arm.service.ArmApiService;
18+
import uk.gov.hmcts.darts.arm.service.ArmClientService;
2019
import uk.gov.hmcts.darts.common.datamanagement.component.impl.DownloadResponseMetaData;
2120
import uk.gov.hmcts.darts.common.datamanagement.component.impl.FileBasedDownloadResponseMetaData;
2221
import uk.gov.hmcts.darts.common.datamanagement.enums.DatastoreContainerType;
@@ -36,9 +35,8 @@
3635
public class ArmApiServiceImpl implements ArmApiService {
3736

3837
private final ArmApiConfigurationProperties armApiConfigurationProperties;
39-
private final ArmTokenClient armTokenClient;
40-
private final ArmApiClient armApiClient;
4138
private final ArmDataManagementConfiguration armDataManagementConfiguration;
39+
private final ArmClientService armClientService;
4240

4341
@Override
4442
public UpdateMetadataResponse updateMetadata(String externalRecordId,
@@ -59,7 +57,7 @@ public UpdateMetadataResponse updateMetadata(String externalRecordId,
5957
.build();
6058

6159
try {
62-
return armApiClient.updateMetadata(getArmBearerToken(), armUpdateMetadataRequest);
60+
return armClientService.updateMetadata(getArmBearerToken(), armUpdateMetadataRequest);
6361
} catch (FeignException e) {
6462
// this ensures the full error body containing the ARM error detail is logged rather than a truncated version
6563
log.error("Error during ARM update metadata: Detail: {}", e.contentUTF8(), e);
@@ -72,7 +70,7 @@ public UpdateMetadataResponse updateMetadata(String externalRecordId,
7270
public DownloadResponseMetaData downloadArmData(String externalRecordId, String externalFileId) throws FileNotDownloadedException {
7371
FileBasedDownloadResponseMetaData responseMetaData = new FileBasedDownloadResponseMetaData();
7472

75-
feign.Response response = armApiClient.downloadArmData(
73+
feign.Response response = armClientService.downloadArmData(
7674
getArmBearerToken(),
7775
armApiConfigurationProperties.getCabinetId(),
7876
externalRecordId,
@@ -105,7 +103,7 @@ public DownloadResponseMetaData downloadArmData(String externalRecordId, String
105103
}
106104

107105
@Override
108-
@SuppressWarnings("PMD.AvoidDeeplyNestedIfStmts")//TODO - refactor to avoid deeply nested if statements when this class is next edited
106+
@SuppressWarnings("PMD.AvoidDeeplyNestedIfStmts")
109107
public String getArmBearerToken() {
110108
log.debug("Get ARM Bearer Token with Username: {}, Password: {}", armApiConfigurationProperties.getArmUsername(),
111109
armApiConfigurationProperties.getArmPassword());
@@ -116,21 +114,21 @@ public String getArmBearerToken() {
116114
.password(armApiConfigurationProperties.getArmPassword())
117115
.build();
118116

119-
ArmTokenResponse armTokenResponse = armTokenClient.getToken(armTokenRequest);
117+
ArmTokenResponse armTokenResponse = armClientService.getToken(armTokenRequest);
120118

121119
if (StringUtils.isNotEmpty(armTokenResponse.getAccessToken())) {
122120
String bearerToken = String.format("Bearer %s", armTokenResponse.getAccessToken());
123121
log.debug("Fetched ARM Bearer Token from /token: {}", bearerToken);
124122
EmptyRpoRequest emptyRpoRequest = EmptyRpoRequest.builder().build();
125-
AvailableEntitlementProfile availableEntitlementProfile = armTokenClient.availableEntitlementProfiles(bearerToken, emptyRpoRequest);
123+
AvailableEntitlementProfile availableEntitlementProfile = armClientService.availableEntitlementProfiles(bearerToken, emptyRpoRequest);
126124
if (!availableEntitlementProfile.isError()) {
127125
Optional<String> profileId = availableEntitlementProfile.getProfiles().stream()
128126
.filter(p -> armApiConfigurationProperties.getArmServiceProfile().equalsIgnoreCase(p.getProfileName()))
129127
.map(AvailableEntitlementProfile.Profiles::getProfileId)
130128
.findAny();
131129
if (profileId.isPresent()) {
132130
log.debug("Found DARTS ARM Service Profile Id: {}", profileId.get());
133-
ArmTokenResponse tokenResponse = armTokenClient.selectEntitlementProfile(bearerToken, profileId.get(), emptyRpoRequest);
131+
ArmTokenResponse tokenResponse = armClientService.selectEntitlementProfile(bearerToken, profileId.get(), emptyRpoRequest);
134132
accessToken = tokenResponse.getAccessToken();
135133
}
136134
}

0 commit comments

Comments
 (0)