Skip to content

Commit

Permalink
Migrate to new network modifications endpoints (network root) (#88)
Browse files Browse the repository at this point in the history
Co-authored-by: Slimane AMAR <amarsli@gm0winl104.bureau.si.interne>
  • Loading branch information
SlimaneAmar and Slimane AMAR authored Jan 29, 2025
1 parent a06802e commit 8e55fbe
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
*/
package org.gridsuite.voltageinit.server.dto;

import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import lombok.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -19,12 +19,9 @@
@NoArgsConstructor
@Getter
@Setter
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "type"
)
@JsonTypeName("VOLTAGE_INIT_MODIFICATION")
public class VoltageInitModificationInfos {
private String type = "VOLTAGE_INIT_MODIFICATION";

private List<GeneratorModificationInfos> generators = new ArrayList<>();

private List<TransformerModificationInfos> transformers = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.powsybl.iidm.network.Terminal;
import com.powsybl.iidm.network.TwoWindingsTransformer;
import com.powsybl.openreac.parameters.output.OpenReacResult;
import com.powsybl.ws.commons.computation.service.UuidGeneratorService;
import org.gridsuite.voltageinit.server.dto.BusModificationInfos;
import org.gridsuite.voltageinit.server.dto.GeneratorModificationInfos;
import org.gridsuite.voltageinit.server.dto.ShuntCompensatorModificationInfos;
Expand All @@ -35,10 +36,7 @@
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;

import static com.powsybl.iidm.network.IdentifiableType.TWO_WINDINGS_TRANSFORMER;
Expand All @@ -51,6 +49,8 @@ public class NetworkModificationService {
private static final String NETWORK_MODIFICATION_API_VERSION = "v1";
private static final String DELIMITER = "/";
private static final String GROUP_PATH = "groups" + DELIMITER + "{groupUuid}";
private static final String NETWORK_MODIFICATIONS_PATH = "network-modifications";
private static final String QUERY_PARAM_GROUP_UUID = "groupUuid";
public static final String QUERY_PARAM_ERROR_ON_GROUP_NOT_FOUND = "errorOnGroupNotFound";

private String networkModificationServerBaseUri;
Expand All @@ -59,10 +59,13 @@ public class NetworkModificationService {

private final ObjectMapper objectMapper;

private final UuidGeneratorService uuidGeneratorService;

NetworkModificationService(@Value("${gridsuite.services.network-modification-server.base-uri:http://network-modification-server/}") String networkModificationServerBaseUri,
ObjectMapper objectMapper) {
ObjectMapper objectMapper, UuidGeneratorService uuidGeneratorService) {
this.networkModificationServerBaseUri = networkModificationServerBaseUri;
this.objectMapper = objectMapper;
this.uuidGeneratorService = uuidGeneratorService;
}

public void setNetworkModificationServerBaseUri(String networkModificationServerBaseUri) {
Expand Down Expand Up @@ -92,7 +95,7 @@ private Optional<Bus> getRegulatingBus(Terminal terminal) {
}

public UUID createVoltageInitModificationGroup(Network network, OpenReacResult result, boolean isUpdateBusVoltage) {
UUID modificationsGroupUuid;
UUID modificationsGroupUuid = uuidGeneratorService.generate();

try {
VoltageInitModificationInfos voltageInitModificationInfos = new VoltageInitModificationInfos();
Expand Down Expand Up @@ -193,18 +196,18 @@ public UUID createVoltageInitModificationGroup(Network network, OpenReacResult r
});
}
var uriComponentsBuilder = UriComponentsBuilder
.fromUriString(getNetworkModificationServerURI() + "groups" + DELIMITER + "modification");
.fromUriString(getNetworkModificationServerURI() + NETWORK_MODIFICATIONS_PATH)
.queryParam(QUERY_PARAM_GROUP_UUID, modificationsGroupUuid);
var path = uriComponentsBuilder
.buildAndExpand()
.toUriString();

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<String> httpEntity = new HttpEntity<>(objectMapper.writeValueAsString(voltageInitModificationInfos), headers);
HttpEntity<String> httpEntity = new HttpEntity<>(objectMapper.writeValueAsString(org.springframework.data.util.Pair.of(voltageInitModificationInfos, List.of())), headers);

modificationsGroupUuid = restTemplate.exchange(path, HttpMethod.POST, httpEntity, UUID.class)
.getBody();
restTemplate.exchange(path, HttpMethod.POST, httpEntity, Void.class);
} catch (JsonProcessingException e) {
throw new PowsyblException("Error generating json modifications", e);
} catch (HttpStatusCodeException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,14 @@
@ContextHierarchy({@ContextConfiguration(classes = {VoltageInitApplication.class, TestChannelBinderConfiguration.class})})
class VoltageInitControllerTest {

private static final UUID GENEREATED_RANDOM_UUID = UUID.randomUUID();
private static final UUID NETWORK_UUID = UUID.fromString("7928181c-7977-4592-ba19-88027e4254e4");
private static final UUID OTHER_NETWORK_UUID = UUID.fromString("06824085-db85-4883-9458-8c5c9f1585d6");
private static final UUID RESULT_UUID = UUID.fromString("0c8de370-3e6c-4d72-b292-d355a97e0d5d");
private static final UUID RESULT_UUID = GENEREATED_RANDOM_UUID;
private static final UUID REPORT_UUID = UUID.fromString("0c4de370-3e6a-4d72-b292-d355a97e0d53");
private static final UUID OTHER_RESULT_UUID = UUID.fromString("0c8de370-3e6c-4d72-b292-d355a97e0d5a");
private static final Map<String, String> INDICATORS = Map.of("defaultPmax", "1000.000000", "defaultQmax", "300.000000", "minimalQPrange", "1.000000");
private static final UUID MODIFICATIONS_GROUP_UUID = UUID.fromString("33333333-aaaa-bbbb-cccc-dddddddddddd");
private static final UUID MODIFICATIONS_GROUP_UUID = GENEREATED_RANDOM_UUID;
private static final String FILTER_EQUIPMENT_JSON = "[{\"filterId\":\"cf399ef3-7f14-4884-8c82-1c90300da329\",\"identifiableAttributes\":[{\"id\":\"VL1\",\"type\":\"VOLTAGE_LEVEL\"}],\"notFoundEquipments\":[]}]";
private static final String VARIANT_1_ID = "variant_1";
private static final String VARIANT_2_ID = "variant_2";
Expand Down Expand Up @@ -262,8 +263,8 @@ void setUp(final MockWebServer server) {

completableFutureResultsTask = CompletableFutureTask.runAsync(() -> openReacResult, ForkJoinPool.commonPool());

// UUID service mocking to always generate the same result UUID
given(uuidGeneratorService.generate()).willReturn(RESULT_UUID);
// UUID service mocking to always generate the same result UUID and group UUID
given(uuidGeneratorService.generate()).willReturn(GENEREATED_RANDOM_UUID);

final Dispatcher dispatcher = new Dispatcher() {
@SneakyThrows
Expand All @@ -272,8 +273,8 @@ public MockResponse dispatch(RecordedRequest request) {
String path = Objects.requireNonNull(request.getPath());
if (path.matches("/v1/groups/.*") && request.getMethod().equals("DELETE")) {
return new MockResponse(200);
} else if (path.matches("/v1/groups/modification") && request.getMethod().equals("POST")) {
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), "\"" + MODIFICATIONS_GROUP_UUID + "\"");
} else if (path.matches("/v1/network-modifications\\?groupUuid=.*") && request.getMethod().equals("POST")) {
return new MockResponse(200);
} else if (path.matches("/v1/filters/export\\?networkUuid=" + NETWORK_UUID + "&variantId=" + VARIANT_2_ID + "&ids=.*")) {
return new MockResponse(200, Headers.of(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE), FILTER_EQUIPMENT_JSON);
}
Expand Down

0 comments on commit 8e55fbe

Please sign in to comment.