diff --git a/src/main/java/org/gridsuite/gateway/GatewayConfig.java b/src/main/java/org/gridsuite/gateway/GatewayConfig.java index f971aa9..9e3d53f 100644 --- a/src/main/java/org/gridsuite/gateway/GatewayConfig.java +++ b/src/main/java/org/gridsuite/gateway/GatewayConfig.java @@ -50,6 +50,7 @@ public RouteLocator myRoutes(RouteLocatorBuilder builder, ApplicationContext con .route(p -> context.getBean(LoadFlowServer.class).getRoute(p)) .route(p -> context.getBean(SecurityAnalysisServer.class).getRoute(p)) .route(p -> context.getBean(DynamicSimulationServer.class).getRoute(p)) + .route(p -> context.getBean(DynamicSecurityAnalysisServer.class).getRoute(p)) .route(p -> context.getBean(VoltageInitServer.class).getRoute(p)) .route(p -> context.getBean(ShortCircuitServer.class).getRoute(p)) .route(p -> context.getBean(StateEstimationOrchestratorServer.class).getRoute(p)) diff --git a/src/main/java/org/gridsuite/gateway/ServiceURIsConfig.java b/src/main/java/org/gridsuite/gateway/ServiceURIsConfig.java index 6ef0dfe..5affddd 100644 --- a/src/main/java/org/gridsuite/gateway/ServiceURIsConfig.java +++ b/src/main/java/org/gridsuite/gateway/ServiceURIsConfig.java @@ -96,6 +96,9 @@ public class ServiceURIsConfig { @Value("${gridsuite.services.dynamic-simulation-server.base-uri:http://dynamic-simulation-server/}") String dynamicSimulationServerBaseUri; + @Value("${gridsuite.services.dynamic-security-analysis-server.base-uri:http://dynamic-security-analysis-server/}") + String dynamicSecurityAnalysisServerBaseUri; + @Value("${gridsuite.services.case-import-server.base-uri:http://case-import-server/}") String caseImportServerBaseUri; diff --git a/src/main/java/org/gridsuite/gateway/endpoints/DynamicSecurityAnalysisServer.java b/src/main/java/org/gridsuite/gateway/endpoints/DynamicSecurityAnalysisServer.java new file mode 100644 index 0000000..3257125 --- /dev/null +++ b/src/main/java/org/gridsuite/gateway/endpoints/DynamicSecurityAnalysisServer.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2025, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package org.gridsuite.gateway.endpoints; + +import org.gridsuite.gateway.ServiceURIsConfig; +import org.springframework.stereotype.Component; + +/** + * @author Thang PHAM + */ +@Component(value = DynamicSecurityAnalysisServer.ENDPOINT_NAME) +public class DynamicSecurityAnalysisServer implements EndPointServer { + + public static final String ENDPOINT_NAME = "dynamic-security-analysis"; + + private final ServiceURIsConfig servicesURIsConfig; + + public DynamicSecurityAnalysisServer(ServiceURIsConfig servicesURIsConfig) { + this.servicesURIsConfig = servicesURIsConfig; + } + + @Override + public String getEndpointBaseUri() { + return servicesURIsConfig.getDynamicSecurityAnalysisServerBaseUri(); + } + + @Override + public String getEndpointName() { + return ENDPOINT_NAME; + } +} diff --git a/src/main/java/org/gridsuite/gateway/endpoints/StudyServer.java b/src/main/java/org/gridsuite/gateway/endpoints/StudyServer.java index 2d0ec2d..0bd0c04 100644 --- a/src/main/java/org/gridsuite/gateway/endpoints/StudyServer.java +++ b/src/main/java/org/gridsuite/gateway/endpoints/StudyServer.java @@ -39,6 +39,6 @@ public String getEndpointName() { public Set getUncontrolledRootPaths() { return Set.of("search", "svg-component-libraries", "export-network-formats", "loadflow-default-provider", "security-analysis-default-provider", "sensitivity-analysis-default-provider", "non-evacuated-energy-default-provider", - "dynamic-simulation-default-provider", "optional-services", "servers"); + "dynamic-simulation-default-provider", "dynamic-security-analysis-default-provider", "optional-services", "servers"); } } diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 3707f37..2cbeeb5 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -56,6 +56,8 @@ gridsuite: base-uri: http://localhost:5023 dynamic-simulation-server: base-uri: http://localhost:5032 + dynamic-security-analysis-server: + base-uri: http://localhost:5040 case-import-server: base-uri: http://localhost:5039 voltage-init-server: diff --git a/src/test/java/org/gridsuite/gateway/ElementAccessControlTest.java b/src/test/java/org/gridsuite/gateway/ElementAccessControlTest.java index 9b0511f..63d8421 100644 --- a/src/test/java/org/gridsuite/gateway/ElementAccessControlTest.java +++ b/src/test/java/org/gridsuite/gateway/ElementAccessControlTest.java @@ -130,6 +130,7 @@ void testWithNoControl() { stubFor(get(urlEqualTo("/v1/sensitivity-analysis-default-provider")).withHeader("userId", equalTo("user1")).willReturn(aResponse())); stubFor(get(urlEqualTo("/v1/non-evacuated-energy-default-provider")).withHeader("userId", equalTo("user1")).willReturn(aResponse())); stubFor(get(urlEqualTo("/v1/dynamic-simulation-default-provider")).withHeader("userId", equalTo("user1")).willReturn(aResponse())); + stubFor(get(urlEqualTo("/v1/dynamic-security-analysis-default-provider")).withHeader("userId", equalTo("user1")).willReturn(aResponse())); webClient .get().uri("study/v1/search") .header(HttpHeaders.AUTHORIZATION, "Bearer " + tokenUser1) @@ -170,6 +171,11 @@ void testWithNoControl() { .header(HttpHeaders.AUTHORIZATION, "Bearer " + tokenUser1) .exchange() .expectStatus().isOk(); + webClient + .get().uri("study/v1/dynamic-security-analysis-default-provider") + .header(HttpHeaders.AUTHORIZATION, "Bearer " + tokenUser1) + .exchange() + .expectStatus().isOk(); } @Test