diff options
author | 2025-03-06 10:58:31 +0100 | |
---|---|---|
committer | 2025-03-06 10:58:31 +0100 | |
commit | db7a546335cf2b8af3f964f46da03fb4bbfb3ff2 (patch) | |
tree | b5f6be5caa75dada0cdc707e30059b9c872ba985 | |
parent | 9f300b075002d9ab6b14cdead2e2a00d12ef9ff2 (diff) |
Directly invoke SO15.0.3
- adjust SO urls
- adjust SDC and SO clients to correctly work with tracing
Issue-ID: USECASEUI-884
Change-Id: Idf0e0319cba66cd976b16ff16f48a3988dc28d12
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
5 files changed, 75 insertions, 62 deletions
diff --git a/server/src/main/java/org/onap/usecaseui/server/config/SDCClientConfig.java b/server/src/main/java/org/onap/usecaseui/server/config/SDCClientConfig.java index 4efad681..32ce0fc6 100644 --- a/server/src/main/java/org/onap/usecaseui/server/config/SDCClientConfig.java +++ b/server/src/main/java/org/onap/usecaseui/server/config/SDCClientConfig.java @@ -20,10 +20,13 @@ import java.io.IOException; import org.onap.usecaseui.server.service.lcm.domain.sdc.SDCCatalogClient; import org.onap.usecaseui.server.service.lcm.domain.vfc.VfcClient; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; +import io.micrometer.core.instrument.binder.okhttp3.OkHttpObservationInterceptor; +import io.micrometer.observation.ObservationRegistry; import lombok.RequiredArgsConstructor; import okhttp3.Credentials; import okhttp3.Interceptor; @@ -38,36 +41,41 @@ public class SDCClientConfig { private final SDCClientProperties clientProperties; - OkHttpClient okHttpClient() { - return new OkHttpClient().newBuilder().addInterceptor(new Interceptor() { - @Override - public okhttp3.Response intercept(Chain chain) throws IOException { - Request originalRequest = chain.request(); - Request.Builder builder = originalRequest.newBuilder() - .header("Authorization", Credentials.basic(clientProperties.getUsername(), clientProperties.getPassword())) - .header(HttpHeaders.ACCEPT, "application/json") - .header("X-ECOMP-InstanceID", "777"); - Request newRequest = builder.build(); - return chain.proceed(newRequest); - } - }).build(); + @Bean("okHttpClientSDC") + OkHttpClient okHttpClient(ObservationRegistry observationRegistry) { + return new OkHttpClient().newBuilder() + .addInterceptor( + OkHttpObservationInterceptor.builder(observationRegistry, "http.client.requests").build()) + .addInterceptor(new Interceptor() { + @Override + public okhttp3.Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + Request.Builder builder = originalRequest.newBuilder() + .header("Authorization", Credentials.basic(clientProperties.getUsername(), clientProperties.getPassword())) + .header(HttpHeaders.ACCEPT, "application/json") + .header("X-ECOMP-InstanceID", "777"); + Request newRequest = builder.build(); + return chain.proceed(newRequest); + } + }).build(); } - Retrofit retrofit() { + @Bean("retrofitSDC") + Retrofit retrofit(@Qualifier("okHttpClientSDC") OkHttpClient okHttpClient) { return new Retrofit.Builder() .baseUrl(clientProperties.getBaseUrl()) .addConverterFactory(JacksonConverterFactory.create()) - .client(okHttpClient()) + .client(okHttpClient) .build(); } @Bean - SDCCatalogClient sdcCatalogClient() { - return retrofit().create(SDCCatalogClient.class); + SDCCatalogClient sdcCatalogClient(@Qualifier("retrofitSDC") Retrofit retrofit) { + return retrofit.create(SDCCatalogClient.class); } @Bean - VfcClient vfcClient() { - return retrofit().create(VfcClient.class); + VfcClient vfcClient(@Qualifier("retrofitSDC") Retrofit retrofit) { + return retrofit.create(VfcClient.class); } } diff --git a/server/src/main/java/org/onap/usecaseui/server/config/SOClientConfig.java b/server/src/main/java/org/onap/usecaseui/server/config/SOClientConfig.java index 9f752b56..f9d3e0e9 100644 --- a/server/src/main/java/org/onap/usecaseui/server/config/SOClientConfig.java +++ b/server/src/main/java/org/onap/usecaseui/server/config/SOClientConfig.java @@ -22,11 +22,14 @@ import org.onap.usecaseui.server.service.intent.IntentSoClient; import org.onap.usecaseui.server.service.lcm.domain.so.SOClient; import org.onap.usecaseui.server.service.slicingdomain.kpi.KpiSliceClient; import org.onap.usecaseui.server.service.slicingdomain.so.SOSliceClient; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; +import io.micrometer.core.instrument.binder.okhttp3.OkHttpObservationInterceptor; +import io.micrometer.observation.ObservationRegistry; import okhttp3.Credentials; import okhttp3.Interceptor; import okhttp3.OkHttpClient; @@ -44,48 +47,53 @@ public class SOClientConfig { @Value("${uui-server.client.so.password}") String password; - OkHttpClient okHttpClient() { - return new OkHttpClient().newBuilder().addInterceptor(new Interceptor() { - @Override - public okhttp3.Response intercept(Chain chain) throws IOException { - Request originalRequest = chain.request(); - Request.Builder builder = originalRequest.newBuilder() - .header("Authorization", Credentials.basic(username, password)) - .header(HttpHeaders.ACCEPT, "application/json") - .header("X-TransactionId", "9999") - .header("X-FromAppId", "onap-cli"); - Request newRequest = builder.build(); - return chain.proceed(newRequest); - } - }).build(); + @Bean("okHttpClientSO") + OkHttpClient okHttpClient(ObservationRegistry observationRegistry) { + return new OkHttpClient().newBuilder() + .addInterceptor( + OkHttpObservationInterceptor.builder(observationRegistry, "http.client.requests").build()) + .addInterceptor(new Interceptor() { + @Override + public okhttp3.Response intercept(Chain chain) throws IOException { + Request originalRequest = chain.request(); + Request.Builder builder = originalRequest.newBuilder() + .header("Authorization", Credentials.basic(username, password)) + .header(HttpHeaders.ACCEPT, "application/json") + .header("X-TransactionId", "9999") + .header("X-FromAppId", "onap-cli"); + Request newRequest = builder.build(); + return chain.proceed(newRequest); + } + }).build(); } - Retrofit retrofit() { + @Bean("retrofitSO") + Retrofit retrofitSo(@Qualifier("okHttpClientSO") OkHttpClient okHttpClient) { return new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(JacksonConverterFactory.create()) - .client(okHttpClient()) + .client(okHttpClient) .build(); } @Bean - SOClient soClient() { - return retrofit().create(SOClient.class); + SOClient soClient(@Qualifier("retrofitSO") Retrofit retrofit) { + return retrofit.create(SOClient.class); } @Bean - SOSliceClient soSliceClient() { - return retrofit().create(SOSliceClient.class); + SOSliceClient soSliceClient(@Qualifier("retrofitSO") Retrofit retrofit) { + return retrofit.create(SOSliceClient.class); } @Bean - IntentSoClient intentSoClient() { - return retrofit().create(IntentSoClient.class); + IntentSoClient intentSoClient(@Qualifier("retrofitSO") Retrofit retrofit) { + return retrofit.create(IntentSoClient.class); } @Bean // not at all clear whether this service should interface with SO - KpiSliceClient kpiSliceClient() { - return retrofit().create(KpiSliceClient.class); + KpiSliceClient kpiSliceClient(@Qualifier("retrofitSO") Retrofit retrofit) { + return retrofit.create(KpiSliceClient.class); } } diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceClient.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceClient.java index a175d751..de642661 100644 --- a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceClient.java +++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceClient.java @@ -35,37 +35,39 @@ import retrofit2.http.Query; public interface SOSliceClient { - @GET("/api/so-serviceInstances/v3/{serviceId}/operations/{operationId}") + @GET("onap/so/infra/e2eServiceInstances/v3/{serviceId}/operations/{operationId}") Call<SOOperation> queryOperationProgress(@Path("serviceId") String serviceId, @Path("operationId") String operationId); - @POST("/api/so-serviceInstances/v3/{serviceInstanceId}/activate") + @POST("onap/so/infra/serviceInstantiation/v3/serviceInstances/{serviceInstanceId}/activate") Call<ActivateService> activeService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body); - @POST("/api/so-serviceInstances/v3/{serviceInstanceId}/deactivate") + @POST("onap/so/infra/serviceInstantiation/v3/serviceInstances/{serviceInstanceId}/deactivate") Call<ActivateService> deactiveService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body); - @HTTP(method = "DELETE",path = "/api/so-serviceInstances/v3/{serviceInstanceId}",hasBody = true) + @HTTP(method = "DELETE",path = "onap/so/infra/serviceInstantiation/v3/serviceInstances/{serviceInstanceId}",hasBody = true) Call<ActivateService> terminateService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body); - @GET("/api/so-orchestrationTasks/v4") + @GET("onap/so/infra/tasks/v4") Call<JSONArray> listTask(); - @GET("/api/so-orchestrationTasks/v4") + @GET("onap/so/infra/tasks/v4") Call<JSONArray> listTaskByStage(@Query("status") String status ); - @GET("/api/so-orchestrationTasks/v4/{taskId}") + @GET("onap/so/infra/tasks/v4/{taskId}") Call<SOTask> getTaskById(@Path("taskId") String taskId); - @GET("/api/so-orchestrationTasks/v4/{taskId}") + @GET("onap/so/infra/tasks/v4/{taskId}") Call<SOTask> getTaskByIdD(@Path("taskId") String taskId); - @PUT("/api/so-orchestrationTasks/v4/{taskId}") + @PUT("onap/so/infra/orchestrationTasks/v4/{taskId}") Call<ResponseBody> updateService(@Path("taskId") String taskId, @Body RequestBody body); - @POST("/api/so-orchestrationTasks/v4/{taskId}/commit") + @POST("onap/so/infra/orchestrationTasks/v4/{taskId}/commit") Call<ResponseBody> commitTask(@Path("taskId") String taskId); - @POST("/api/so-serviceInstances/v3") + // It's not quite clear if this should be + // infra/e2eServiceInstances/{version} or infra/orchestrationTasks/{version} + @POST("onap/so/infra/e2eServiceInstances/v3") Call<CreateResponse> submitOrders(@Body RequestBody body); } diff --git a/server/src/test/java/org/onap/usecaseui/server/service/csmf/impl/SlicingServiceImplIntegrationTest.java b/server/src/test/java/org/onap/usecaseui/server/service/csmf/impl/SlicingServiceImplIntegrationTest.java index 4cda6cbc..345c7ca3 100644 --- a/server/src/test/java/org/onap/usecaseui/server/service/csmf/impl/SlicingServiceImplIntegrationTest.java +++ b/server/src/test/java/org/onap/usecaseui/server/service/csmf/impl/SlicingServiceImplIntegrationTest.java @@ -121,7 +121,7 @@ public class SlicingServiceImplIntegrationTest { byte[] requestBytes = Files.readAllBytes(Paths.get("src/test/resources/__files/requests/submitOrdersRequest.json")); String expectedRequestBody = new String(requestBytes, StandardCharsets.UTF_8); stubFor( - post("/api/so-serviceInstances/v3") + post("/onap/so/infra/e2eServiceInstances/v3") .withBasicAuth(soUsername, soPassword) .withHeader(HttpHeaders.ACCEPT, equalTo("application/json")) .withHeader("X-TransactionId", equalTo("9999")) diff --git a/server/src/test/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImplIntegrationTest.java b/server/src/test/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImplIntegrationTest.java index 701bc39b..107884bd 100644 --- a/server/src/test/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImplIntegrationTest.java +++ b/server/src/test/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImplIntegrationTest.java @@ -19,13 +19,11 @@ package org.onap.usecaseui.server.service.nsmf.impl; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; -import static com.github.tomakehurst.wiremock.client.WireMock.get; import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import java.util.Collections; import java.util.List; import org.junit.jupiter.api.Test; @@ -34,19 +32,16 @@ import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceList; import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceOnlineUserInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceOnlineUserList; -import org.onap.usecaseui.server.config.AAIClientConfig; import org.onap.usecaseui.server.config.SOClientConfig; -import org.onap.usecaseui.server.controller.lcm.CustomerController; -import org.onap.usecaseui.server.service.lcm.CustomerService; -import org.onap.usecaseui.server.service.lcm.domain.aai.bean.AAICustomer; -import org.onap.usecaseui.server.service.lcm.impl.DefaultCustomerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.HttpHeaders; import org.wiremock.spring.EnableWireMock; +@EnableAutoConfiguration @EnableWireMock @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = { SOClientConfig.class, ResourceMonitorServiceImpl.class, ResourceMonitorServiceConvert.class |