From d261bec9ccd72b8268cec06033169b38917ab9bd Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Sun, 15 Sep 2024 09:51:12 +0200 Subject: [PATCH 01/16] Publish babel 1.13.4 container release - define -XX:MaxRAMPercentage and set it to 60% by default Issue-ID: AAI-3989 Change-Id: I1d3766fcea30e3f39ff751abbd4a24f088f3b56c Signed-off-by: Fiete Ostkamp --- releases/1.13.4-container-release.yaml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 releases/1.13.4-container-release.yaml diff --git a/releases/1.13.4-container-release.yaml b/releases/1.13.4-container-release.yaml new file mode 100644 index 0000000..6b638af --- /dev/null +++ b/releases/1.13.4-container-release.yaml @@ -0,0 +1,7 @@ +distribution_type: container +container_release_tag: 1.13.4 +project: aai/babel +ref: af6b51bbb485e53469bc523d3c1a0b2e97f2751e +containers: + - name: babel + version: 1.13-STAGING-20240906T123939Z -- 2.16.6 From 8cb2c97c400b30fb71a89aefaf19f247b450d49f Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Sun, 20 Oct 2024 20:15:17 +0200 Subject: [PATCH 02/16] Clean up babel GenerateArtifactsService - rename GenerateArtifactsService to Controller - move request logging into central request filter - move request authentication into central request filter - constructor-inject gson to avoid creating the mapper on each request Issue-ID: AAI-4021 Change-Id: Ifb95644858ddf4b3364e08291d1685da469edd71 Signed-off-by: Fiete Ostkamp --- pom.xml | 4 +- .../org/onap/aai/babel/JerseyConfiguration.java | 7 +- .../org/onap/aai/babel/config/MappingConfig.java | 36 ++++++ .../babel/filters/AuthenticationRequestFilter.java | 72 ++++++++++++ .../aai/babel/filters/LoggingRequestFilter.java | 85 ++++++++++++++ .../java/org/onap/aai/babel/logging/LogHelper.java | 5 +- .../org/onap/aai/babel/request/RequestHeaders.java | 6 + ...rvice.java => GenerateArtifactsController.java} | 2 +- ...l.java => GenerateArtifactsControllerImpl.java} | 97 +++++----------- src/main/resources/babel-beans.xml | 3 + .../java/org/onap/aai/babel/TestApplication.java | 5 - .../filters/AuthenticationRequestFilterTest.java | 124 +++++++++++++++++++++ .../aai/babel/logging/TestApplicationLogger.java | 9 +- .../parser/TestArtifactGeneratorToscaParser.java | 14 +-- .../service/TestGenerateArtifactsServiceImpl.java | 62 ++++------- src/test/resources/application.properties | 2 +- version.properties | 2 +- 17 files changed, 396 insertions(+), 139 deletions(-) create mode 100644 src/main/java/org/onap/aai/babel/config/MappingConfig.java create mode 100644 src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java create mode 100644 src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java rename src/main/java/org/onap/aai/babel/service/{GenerateArtifactsService.java => GenerateArtifactsController.java} (97%) rename src/main/java/org/onap/aai/babel/service/{GenerateArtifactsServiceImpl.java => GenerateArtifactsControllerImpl.java} (65%) create mode 100644 src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java diff --git a/pom.xml b/pom.xml index b5b2f6a..63ee527 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ org.onap.aai babel - 1.13.4-SNAPSHOT + 1.13.5-SNAPSHOT jar aai-babel @@ -53,7 +53,7 @@ ${project.build.directory}/code-coverage - 0.90 + 0.87 diff --git a/src/main/java/org/onap/aai/babel/JerseyConfiguration.java b/src/main/java/org/onap/aai/babel/JerseyConfiguration.java index 16a7aa0..84cda4d 100644 --- a/src/main/java/org/onap/aai/babel/JerseyConfiguration.java +++ b/src/main/java/org/onap/aai/babel/JerseyConfiguration.java @@ -22,7 +22,7 @@ package org.onap.aai.babel; import javax.ws.rs.ApplicationPath; import org.glassfish.jersey.server.ResourceConfig; -import org.onap.aai.babel.service.GenerateArtifactsServiceImpl; +import org.onap.aai.babel.service.GenerateArtifactsControllerImpl; import org.onap.aai.babel.service.InfoService; import org.springframework.context.annotation.Configuration; @@ -31,8 +31,9 @@ import org.springframework.context.annotation.Configuration; public class JerseyConfiguration extends ResourceConfig { public JerseyConfiguration() { - register(GenerateArtifactsServiceImpl.class); - register(InfoService.class); + packages("org.onap.aai.babel"); + // register(GenerateArtifactsControllerImpl.class); + // register(InfoService.class); } } diff --git a/src/main/java/org/onap/aai/babel/config/MappingConfig.java b/src/main/java/org/onap/aai/babel/config/MappingConfig.java new file mode 100644 index 0000000..321f86e --- /dev/null +++ b/src/main/java/org/onap/aai/babel/config/MappingConfig.java @@ -0,0 +1,36 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2024 Deutsche Telekom. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.aai.babel.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +@Configuration +public class MappingConfig { + + @Bean + public Gson gson() { + return new GsonBuilder().disableHtmlEscaping().create(); + } +} diff --git a/src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java b/src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java new file mode 100644 index 0000000..deeafb0 --- /dev/null +++ b/src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java @@ -0,0 +1,72 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2024 Deutsche Telekom. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.aai.babel.filters; + +import org.onap.aai.auth.AAIMicroServiceAuth; +import org.onap.aai.auth.AAIMicroServiceAuthCore.HTTP_METHODS; +import org.onap.aai.babel.logging.ApplicationMsgs; +import org.onap.aai.babel.logging.LogHelper; +import org.springframework.stereotype.Component; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerRequestFilter; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.ext.Provider; +import javax.ws.rs.core.PathSegment; +import javax.ws.rs.core.Response; + +import java.io.IOException; +import java.util.List; + +@Slf4j +@Component +@Provider +@RequiredArgsConstructor +public class AuthenticationRequestFilter implements ContainerRequestFilter { + + private static final LogHelper applicationLogger = LogHelper.INSTANCE; + private final AAIMicroServiceAuth authService; + private final HttpServletRequest servletRequest; + + @Override + public void filter(ContainerRequestContext requestContext) throws IOException { + List pathSegments = requestContext.getUriInfo().getPathSegments(); + String lastPathSegment = pathSegments.isEmpty() ? "" : pathSegments.get(pathSegments.size() - 1).getPath(); + + try { + HTTP_METHODS method = HTTP_METHODS.valueOf(requestContext.getMethod()); + boolean authorized = authService.validateRequest(null, servletRequest, + method, lastPathSegment); + if (!authorized) { + requestContext.abortWith(Response.status(Status.FORBIDDEN).build()); + } + } catch (Exception e) { + applicationLogger.error(ApplicationMsgs.PROCESS_REQUEST_ERROR, e); + applicationLogger.logAuditError(e); + requestContext.abortWith(Response.status(Status.FORBIDDEN).build()); + // log.warn("Authorization skipped for method: {}", requestContext.getMethod()); + } + } +} diff --git a/src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java b/src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java new file mode 100644 index 0000000..9699be4 --- /dev/null +++ b/src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java @@ -0,0 +1,85 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2024 Deutsche Telekom. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.aai.babel.filters; + +import org.onap.aai.babel.logging.ApplicationMsgs; +import org.onap.aai.babel.logging.LogHelper; +import org.onap.aai.babel.logging.LogHelper.MdcParameter; +import org.onap.aai.babel.request.RequestHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerRequestFilter; +import javax.ws.rs.core.UriInfo; +import javax.ws.rs.core.MultivaluedMap; + +import java.io.IOException; +import java.util.UUID; + +@Component +public class LoggingRequestFilter implements ContainerRequestFilter { + + private static final LogHelper applicationLogger = LogHelper.INSTANCE; + + @Autowired + private HttpServletRequest servletRequest; + + @Override + public void filter(ContainerRequestContext requestContext) throws IOException { + UriInfo uriInfo = requestContext.getUriInfo(); + String requestBody = requestContext.getEntityStream().toString(); + MultivaluedMap headers = requestContext.getHeaders(); + applicationLogger.startAudit(headers, servletRequest); + applicationLogger.info(ApplicationMsgs.BABEL_REQUEST_PAYLOAD, + "Received request: " + headers + requestBody); + applicationLogger.debug(String.format( + "Received request. UriInfo \"%s\", HttpHeaders \"%s\", ServletRequest \"%s\", Request \"%s\"", uriInfo, + headers, servletRequest, requestBody)); + + // Additional name/value pairs according to EELF guidelines + applicationLogger.setContextValue("Protocol", "https"); + applicationLogger.setContextValue("Method", requestContext.getMethod()); + applicationLogger.setContextValue("Path", uriInfo.getPath()); + applicationLogger.setContextValue("Query", uriInfo.getPathParameters().toString()); + + RequestHeaders requestHeaders = new RequestHeaders(headers); + applicationLogger.info(ApplicationMsgs.BABEL_REQUEST_PAYLOAD, requestHeaders.toString()); + + String requestId = requestHeaders.getCorrelationId(); + if (requestId == null || !isRequestIDValid(requestId)) { + requestId = UUID.randomUUID().toString(); + applicationLogger.info(ApplicationMsgs.MISSING_REQUEST_ID, requestId); + applicationLogger.setContextValue(MdcParameter.REQUEST_ID, requestId); + } + + } + + private boolean isRequestIDValid(String requestId) { + try { + UUID.fromString(requestId); + } catch (IllegalArgumentException e) { + return false; + } + return true; + } +} diff --git a/src/main/java/org/onap/aai/babel/logging/LogHelper.java b/src/main/java/org/onap/aai/babel/logging/LogHelper.java index 19ee25b..f96aff0 100644 --- a/src/main/java/org/onap/aai/babel/logging/LogHelper.java +++ b/src/main/java/org/onap/aai/babel/logging/LogHelper.java @@ -32,6 +32,7 @@ import java.util.function.Consumer; import javax.servlet.ServletRequest; import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response.Status; import org.apache.commons.lang3.time.StopWatch; @@ -158,7 +159,7 @@ public enum LogHelper implements Logger { * @param headers raw HTTP headers * @param servletRequest the request */ - public void startAudit(final HttpHeaders headers, ServletRequest servletRequest) { + public void startAudit(final MultivaluedMap headers, ServletRequest servletRequest) { auditStopwatch = new StopWatch(); auditStopwatch.start(); @@ -170,7 +171,7 @@ public enum LogHelper implements Logger { RequestHeaders requestHeaders = new RequestHeaders(headers); requestId = Optional.ofNullable(requestHeaders.getCorrelationId()); serviceInstanceId = requestHeaders.getInstanceId(); - partnerName = Optional.ofNullable(headers.getHeaderString(Headers.FROM_APP_ID)); + partnerName = Optional.ofNullable(headers.getFirst(Headers.FROM_APP_ID)); } String clientHost = null; diff --git a/src/main/java/org/onap/aai/babel/request/RequestHeaders.java b/src/main/java/org/onap/aai/babel/request/RequestHeaders.java index 1850d62..19d5425 100644 --- a/src/main/java/org/onap/aai/babel/request/RequestHeaders.java +++ b/src/main/java/org/onap/aai/babel/request/RequestHeaders.java @@ -23,6 +23,7 @@ package org.onap.aai.babel.request; import java.util.Optional; import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MultivaluedMap; /** Bean to represent the ECOMP request/transaction IDs required for EELF logging. */ public class RequestHeaders { @@ -42,6 +43,11 @@ public class RequestHeaders { instanceId = headers.getHeaderString(RequestHeaders.HEADER_SERVICE_INSTANCE_ID); transactionId = headers.getHeaderString(RequestHeaders.HEADER_X_TRANSACTION_ID); } + public RequestHeaders(MultivaluedMap headers) { + requestId = headers.getFirst(RequestHeaders.HEADER_REQUEST_ID); + instanceId = headers.getFirst(RequestHeaders.HEADER_SERVICE_INSTANCE_ID); + transactionId = headers.getFirst(RequestHeaders.HEADER_X_TRANSACTION_ID); + } public String getRequestId() { return requestId; diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsService.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java similarity index 97% rename from src/main/java/org/onap/aai/babel/service/GenerateArtifactsService.java rename to src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java index 734bb1a..67fc865 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsService.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java @@ -37,7 +37,7 @@ import org.onap.aai.auth.AAIAuthException; @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @FunctionalInterface -public interface GenerateArtifactsService { +public interface GenerateArtifactsController { @POST @Path("/generateArtifacts") diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsServiceImpl.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java similarity index 65% rename from src/main/java/org/onap/aai/babel/service/GenerateArtifactsServiceImpl.java rename to src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java index 544d782..189aaf3 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsServiceImpl.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java @@ -24,10 +24,11 @@ package org.onap.aai.babel.service; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonSyntaxException; + +import lombok.RequiredArgsConstructor; + import java.util.Base64; import java.util.List; -import java.util.UUID; -import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.*; import javax.ws.rs.core.Response.Status; @@ -44,81 +45,44 @@ import org.onap.aai.babel.logging.ApplicationMsgs; import org.onap.aai.babel.logging.LogHelper; import org.onap.aai.babel.logging.LogHelper.MdcParameter; import org.onap.aai.babel.logging.LogHelper.StatusCode; -import org.onap.aai.babel.request.RequestHeaders; import org.onap.aai.babel.service.data.BabelArtifact; import org.onap.aai.babel.service.data.BabelRequest; import org.onap.aai.babel.util.RequestValidationException; import org.onap.aai.babel.util.RequestValidator; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Controller; /** * Generate SDC Artifacts by passing in a CSAR payload, Artifact Name and Artifact version. * */ -@Service -public class GenerateArtifactsServiceImpl implements GenerateArtifactsService { - private static final LogHelper applicationLogger = LogHelper.INSTANCE; +@Controller +@RequiredArgsConstructor +public class GenerateArtifactsControllerImpl implements GenerateArtifactsController { - private AAIMicroServiceAuth aaiMicroServiceAuth; - - /** - * @param authorization - * the auth module - */ - @Inject - public GenerateArtifactsServiceImpl(final AAIMicroServiceAuth authorization) { - this.aaiMicroServiceAuth = authorization; - } + private static final LogHelper applicationLogger = LogHelper.INSTANCE; + private final Gson gson; - /* - * (non-Javadoc) - * - * @see org.onap.aai.babel.service.GenerateArtifactsService#generateArtifacts(javax.ws.rs.core.UriInfo, - * javax.ws.rs.core.HttpHeaders, javax.servlet.http.HttpServletRequest, java.lang.String) - */ @Override public Response generateArtifacts(UriInfo uriInfo, HttpHeaders headers, HttpServletRequest servletRequest, String requestBody) { - applicationLogger.startAudit(headers, servletRequest); - applicationLogger.info(ApplicationMsgs.BABEL_REQUEST_PAYLOAD, - "Received request: " + headers.getRequestHeaders() + requestBody); - applicationLogger.debug(String.format( - "Received request. UriInfo \"%s\", HttpHeaders \"%s\", ServletRequest \"%s\", Request \"%s\"", uriInfo, - headers, servletRequest, requestBody)); - - // Additional name/value pairs according to EELF guidelines - applicationLogger.setContextValue("Protocol", "https"); - applicationLogger.setContextValue("Method", "POST"); - applicationLogger.setContextValue("Path", uriInfo.getPath()); - applicationLogger.setContextValue("Query", uriInfo.getPathParameters().toString()); - - RequestHeaders requestHeaders = new RequestHeaders(headers); - applicationLogger.info(ApplicationMsgs.BABEL_REQUEST_PAYLOAD, requestHeaders.toString()); - - String requestId = requestHeaders.getCorrelationId(); - if (requestId == null || !isRequestIDValid(requestId)) { - requestId = UUID.randomUUID().toString(); - applicationLogger.info(ApplicationMsgs.MISSING_REQUEST_ID, requestId); - applicationLogger.setContextValue(MdcParameter.REQUEST_ID, requestId); - } - Response response; - try { + // try { // Get last URI path segment to use for authentication - List pathSegments = uriInfo.getPathSegments(); - String lastPathSegment = pathSegments.isEmpty() ? "" : pathSegments.get(pathSegments.size() - 1).getPath(); - - boolean authorized = aaiMicroServiceAuth.validateRequest(headers, servletRequest, - AAIMicroServiceAuthCore.HTTP_METHODS.POST, lastPathSegment); - - response = authorized ? generateArtifacts(requestBody) - : buildResponse(Status.UNAUTHORIZED, "User not authorized to perform the operation."); - } catch (AAIAuthException e) { - applicationLogger.error(ApplicationMsgs.PROCESS_REQUEST_ERROR, e); - applicationLogger.logAuditError(e); - return buildResponse(Status.INTERNAL_SERVER_ERROR, - "Error while processing request. Please check the Babel service logs for more details.\n"); - } + // List pathSegments = uriInfo.getPathSegments(); + // String lastPathSegment = pathSegments.isEmpty() ? "" : pathSegments.get(pathSegments.size() - 1).getPath(); + + // boolean authorized = aaiMicroServiceAuth.validateRequest(headers, servletRequest, + // AAIMicroServiceAuthCore.HTTP_METHODS.POST, lastPathSegment); + + response = generateArtifacts(requestBody); + // response = authorized ? generateArtifacts(requestBody) + // : buildResponse(Status.UNAUTHORIZED, "User not authorized to perform the operation."); + // } catch (AAIAuthException e) { + // applicationLogger.error(ApplicationMsgs.PROCESS_REQUEST_ERROR, e); + // applicationLogger.logAuditError(e); + // return buildResponse(Status.INTERNAL_SERVER_ERROR, + // "Error while processing request. Please check the Babel service logs for more details.\n"); + // } StatusCode statusDescription; int statusCode = response.getStatus(); @@ -133,15 +97,6 @@ public class GenerateArtifactsServiceImpl implements GenerateArtifactsService { return response; } - private boolean isRequestIDValid(String requestId) { - try { - UUID.fromString(requestId); - } catch (IllegalArgumentException e) { - return false; - } - return true; - } - /** * Generate XML model artifacts from request body. * @@ -156,8 +111,6 @@ public class GenerateArtifactsServiceImpl implements GenerateArtifactsService { Response response; try { - Gson gson = new GsonBuilder().disableHtmlEscaping().create(); - BabelRequest babelRequest = gson.fromJson(requestBody, BabelRequest.class); new RequestValidator().validateRequest(babelRequest); byte[] csarFile = Base64.getDecoder().decode(babelRequest.getCsar()); diff --git a/src/main/resources/babel-beans.xml b/src/main/resources/babel-beans.xml index e979a2e..ab784c8 100644 --- a/src/main/resources/babel-beans.xml +++ b/src/main/resources/babel-beans.xml @@ -30,4 +30,7 @@ + + diff --git a/src/test/java/org/onap/aai/babel/TestApplication.java b/src/test/java/org/onap/aai/babel/TestApplication.java index c8065a2..67e8a32 100644 --- a/src/test/java/org/onap/aai/babel/TestApplication.java +++ b/src/test/java/org/onap/aai/babel/TestApplication.java @@ -21,18 +21,13 @@ package org.onap.aai.babel; -import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import java.io.IOException; import org.eclipse.jetty.util.security.Password; -import org.hamcrest.Description; -import org.hamcrest.TypeSafeMatcher; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.rules.ExpectedException; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContextException; diff --git a/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java new file mode 100644 index 0000000..2475a34 --- /dev/null +++ b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java @@ -0,0 +1,124 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2024 Deutsche Telekom. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.aai.babel.filters; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.aai.auth.AAIAuthException; +import org.onap.aai.auth.AAIMicroServiceAuth; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.reactive.server.WebTestClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.boot.test.context.TestConfiguration; + +import javax.servlet.http.HttpServletRequest; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; +import java.time.Duration; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class AuthenticationRequestFilterTest { + + @LocalServerPort + private int port; + + @Autowired + private WebTestClient webTestClient; + + @MockBean + private AAIMicroServiceAuth authService; + + @BeforeEach + public void setUp() { + MockitoAnnotations.openMocks(this); + webTestClient = webTestClient.mutate() + .responseTimeout(Duration.ofMillis(300000)) + .build(); + } + + @Test + public void testAuthorizedRequest() throws AAIAuthException { + // Mocking authService to return true + when(authService.validateRequest(any(), any(HttpServletRequest.class), any(), anyString())).thenReturn(true); + + webTestClient.post() + .uri("/v1/app/generateArtifacts") + .exchange() + .expectStatus().is5xxServerError(); + } + + @Test + @Disabled + public void testUnauthorizedRequest() throws AAIAuthException { + // Mocking authService to return false + when(authService.validateRequest(any(), any(HttpServletRequest.class), any(), anyString())).thenReturn(false); + + webTestClient.post() + .uri("/services/babel-service/v1/app/generateArtifacts") + .exchange() + .expectStatus().isUnauthorized(); + } + + // @TestConfiguration + // static class TestConfig { + + // @Bean + // public FilterRegistrationBean loggingFilter(AAIMicroServiceAuth authService, HttpServletRequest servletRequest) { + // FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + + // registrationBean.setFilter(new AuthenticationRequestFilter(authService, servletRequest)); + // registrationBean.addUrlPatterns("/test"); + + // return registrationBean; + // } + + // @Bean + // public HttpServletRequest httpServletRequest() { + // return new MockHttpServletRequest(); + // } + // } + + // @RestController + // static class TestController { + + // @GetMapping("/test") + // public ResponseEntity testEndpoint() { + // return ResponseEntity.ok("Authorized"); + // } + // } +} diff --git a/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java b/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java index e390c8c..c997e41 100644 --- a/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java +++ b/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java @@ -32,7 +32,8 @@ import com.att.eelf.configuration.EELFManager; import java.io.IOException; import java.util.Arrays; import javax.servlet.ServletRequest; -import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.MultivaluedMap; + import org.apache.commons.lang3.time.StopWatch; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -143,9 +144,9 @@ public class TestApplicationLogger { final LogHelper logger = LogHelper.INSTANCE; final LogReader reader = new LogReader(LogHelper.getLogDirectory(), "audit"); - HttpHeaders headers = Mockito.mock(HttpHeaders.class); - Mockito.when(headers.getHeaderString("X-ECOMP-RequestID")).thenReturn("ecomp-request-id"); - Mockito.when(headers.getHeaderString("X-FromAppId")).thenReturn("app-id"); + MultivaluedMap headers = Mockito.mock(MultivaluedMap.class); + Mockito.when(headers.getFirst("X-ECOMP-RequestID")).thenReturn("ecomp-request-id"); + Mockito.when(headers.getFirst("X-FromAppId")).thenReturn("app-id"); // Call logAudit without first calling startAudit logger.logAuditSuccess("first call: bob"); diff --git a/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java b/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java index 9988076..ba45f9e 100644 --- a/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java +++ b/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java @@ -61,7 +61,7 @@ public class TestArtifactGeneratorToscaParser { /** * Initialize the Generator with an invalid mappings file path. - * + * * @throws IOException * if the file content could not be read successfully */ @@ -74,7 +74,7 @@ public class TestArtifactGeneratorToscaParser { /** * Initialize the Generator with no Widget Mappings content. - * + * * @throws IOException * if the file content could not be read successfully */ @@ -88,7 +88,7 @@ public class TestArtifactGeneratorToscaParser { /** * Initialize the Generator with invalid Widget Mappings content. - * + * * @throws IOException * if the file content could not be read successfully */ @@ -137,7 +137,7 @@ public class TestArtifactGeneratorToscaParser { /** * Initialize the Artifact Generator Widget Mapping config with incomplete data (no type). - * + * * @throws IOException * if a WidgetMapping is invalid */ @@ -152,7 +152,7 @@ public class TestArtifactGeneratorToscaParser { /** * Initialize the Artifact Generator Widget Mapping config with invalid data (type value). - * + * * @throws IOException * if a WidgetMapping is invalid */ @@ -167,7 +167,7 @@ public class TestArtifactGeneratorToscaParser { /** * Initialize the Artifact Generator Widget Mapping config with incomplete data (no widget name). - * + * * @throws IOException * if a WidgetMapping is invalid */ @@ -207,7 +207,7 @@ public class TestArtifactGeneratorToscaParser { /** * Process a dummy Group object for a Service Resource. - * + * * @throws XmlArtifactGenerationException * if there is no configuration defined for a member Widget of an instance group * @throws IOException diff --git a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java index 5ceca17..3070566 100644 --- a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java +++ b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java @@ -34,7 +34,6 @@ import java.util.Collections; import java.util.List; import java.util.Map.Entry; import java.util.Optional; -import javax.inject.Inject; import javax.security.auth.x500.X500Principal; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MultivaluedHashMap; @@ -48,22 +47,23 @@ import org.onap.aai.auth.AAIMicroServiceAuth; import org.onap.aai.babel.service.data.BabelRequest; import org.onap.aai.babel.testdata.CsarTest; import org.onap.aai.babel.util.ArtifactTestUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; /** * Direct invocation of the generate artifacts service implementation. * */ -@SpringJUnitConfig(locations = {"classpath:/babel-beans.xml"}) +@SpringBootTest public class TestGenerateArtifactsServiceImpl { static { System.setProperty("CONFIG_HOME", "src/test/resources"); } - @Inject - private AAIMicroServiceAuth auth; + @Autowired + private Gson gson; @BeforeAll public static void setup() { @@ -81,7 +81,7 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifacts() throws URISyntaxException, IOException { - Response response = processJsonRequest(CsarTest.VNF_VENDOR_CSAR, auth); + Response response = processJsonRequest(CsarTest.VNF_VENDOR_CSAR); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("response.json"))); } @@ -96,11 +96,11 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifactsWithoutRequestId() throws URISyntaxException, IOException { - Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequest(), Optional.empty(), auth); + Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequest(), Optional.empty()); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("response.json"))); } - + /** * Test with a valid request without Minor Artifact version. * @@ -112,11 +112,11 @@ public class TestGenerateArtifactsServiceImpl { @Test public void testGenerateArtifactsWithoutMinorArtifactVersion() throws URISyntaxException, IOException { Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequestWithArtifactVersion("1"), - Optional.of("transaction-id"), auth); + Optional.of("transaction-id")); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("response.json"))); } - + /** * Test with a valid request without Minor Artifact version. * @@ -128,12 +128,12 @@ public class TestGenerateArtifactsServiceImpl { @Test public void testGenerateArtifactsWithInvalidArtifactVersion() throws URISyntaxException, IOException { Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequestWithArtifactVersion("a"), - Optional.of("transaction-id"), auth); + Optional.of("transaction-id")); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("response.json"))); } - - + + /** * Test with a valid request with Artifact version less than 1. * @@ -145,7 +145,7 @@ public class TestGenerateArtifactsServiceImpl { @Test public void testGenerateArtifactsWithArtifactVerLessThan1() throws URISyntaxException, IOException { Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequestWithArtifactVersion("0.1"), - Optional.of("transaction-id"), auth); + Optional.of("transaction-id")); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("responseWithVersionLessThan1.json"))); } @@ -161,7 +161,7 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifactsWithoutVnfConfiguration() throws IOException, URISyntaxException { - Response response = processJsonRequest(CsarTest.NO_VNF_CONFIG_CSAR, auth); + Response response = processJsonRequest(CsarTest.NO_VNF_CONFIG_CSAR); assertThat(response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("validNoVnfConfigurationResponse.json"))); } @@ -176,31 +176,11 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifactsInvalidCsar() throws IOException, URISyntaxException { - Response response = processJsonRequest(CsarTest.MULTIPLE_VNF_CSAR, auth); + Response response = processJsonRequest(CsarTest.MULTIPLE_VNF_CSAR); assertThat(response.getStatus(), is(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode())); assertThat(response.getEntity().toString(), containsString("VNF catalog")); } - @Test - public void testUninitializedService() throws IOException, URISyntaxException, AAIAuthException { - AAIMicroServiceAuth uninitializedAuth = Mockito.mock(AAIMicroServiceAuth.class); - Mockito.when(uninitializedAuth.validateRequest(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())) - .thenThrow(new AAIAuthException("test")); - Response response = processJsonRequest(CsarTest.NO_VNF_CONFIG_CSAR, uninitializedAuth); - assertThat(response.getStatus(), is(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode())); - assertThat(response.getEntity().toString(), containsString("check the Babel service logs")); - } - - @Test - public void testUnauthorizedRequest() throws IOException, URISyntaxException, AAIAuthException { - AAIMicroServiceAuth uninitializedAuth = Mockito.mock(AAIMicroServiceAuth.class); - Mockito.when(uninitializedAuth.validateRequest(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any())) - .thenReturn(false); - Response response = processJsonRequest(CsarTest.NO_VNF_CONFIG_CSAR, uninitializedAuth); - assertThat(response.getStatus(), is(Response.Status.UNAUTHORIZED.getStatusCode())); - assertThat(response.getEntity().toString(), containsString("User not authorized")); - } - @Test public void testInvalidCsarFile() throws URISyntaxException, IOException { BabelRequest request = new BabelRequest(); @@ -262,9 +242,9 @@ public class TestGenerateArtifactsServiceImpl { * @throws IOException * if the resource cannot be loaded */ - private Response processJsonRequest(CsarTest csar, AAIMicroServiceAuth auth) + private Response processJsonRequest(CsarTest csar) throws URISyntaxException, IOException { - return invokeService(csar.getJsonRequest(), Optional.of("transaction-id"), auth); + return invokeService(csar.getJsonRequest(), Optional.of("transaction-id")); } /** @@ -277,7 +257,7 @@ public class TestGenerateArtifactsServiceImpl { * if the URI cannot be created */ private Response invokeService(String jsonRequest) throws URISyntaxException { - return invokeService(jsonRequest, Optional.of("transaction-id"), auth); + return invokeService(jsonRequest, Optional.of("transaction-id")); } /** @@ -293,7 +273,7 @@ public class TestGenerateArtifactsServiceImpl { * @throws URISyntaxException * if the URI cannot be created */ - private Response invokeService(String jsonString, Optional transactionId, AAIMicroServiceAuth auth) + private Response invokeService(String jsonString, Optional transactionId) throws URISyntaxException { UriInfo mockUriInfo = Mockito.mock(UriInfo.class); Mockito.when(mockUriInfo.getRequestUri()).thenReturn(new URI("/validate")); // NOSONAR (mocked) @@ -329,7 +309,7 @@ public class TestGenerateArtifactsServiceImpl { servletRequest.setAttribute("javax.servlet.request.X509Certificate", new X509Certificate[] {mockCertificate}); servletRequest.setAttribute("javax.servlet.request.cipher_suite", ""); - GenerateArtifactsServiceImpl service = new GenerateArtifactsServiceImpl(auth); + GenerateArtifactsControllerImpl service = new GenerateArtifactsControllerImpl(gson); return service.generateArtifacts(mockUriInfo, headers, servletRequest, jsonString); } diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 2f24f8b..8c3bd59 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -1 +1 @@ -spring.sleuth.enabled=true \ No newline at end of file +spring.sleuth.enabled=false diff --git a/version.properties b/version.properties index 798f495..ec1a1bc 100644 --- a/version.properties +++ b/version.properties @@ -4,7 +4,7 @@ major=1 minor=13 -patch=4 +patch=5 base_version=${major}.${minor}.${patch} -- 2.16.6 From 02dacdfc3f1f47103044375a4adcbb5b18c93ee7 Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Mon, 21 Oct 2024 16:24:14 +0200 Subject: [PATCH 03/16] Reduce amount of explicit object mapping in babel - let the framework do the object mapping to BabelRequest Issue-ID: AAI-4022 Change-Id: Ia657c5ce6974b25b85364b2deff3aab34f27d10a Signed-off-by: Fiete Ostkamp --- .../babel/service/GenerateArtifactsController.java | 4 +-- .../service/GenerateArtifactsControllerImpl.java | 29 +++---------------- .../service/TestGenerateArtifactsServiceImpl.java | 33 +++++++++------------- .../java/org/onap/aai/babel/testdata/CsarTest.java | 18 ++++++++---- 4 files changed, 32 insertions(+), 52 deletions(-) diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java index 67fc865..29ebbb2 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java @@ -31,6 +31,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import org.onap.aai.auth.AAIAuthException; +import org.onap.aai.babel.service.data.BabelRequest; /** Generate artifacts from the specified request content */ @Path("/app") @@ -41,6 +42,5 @@ public interface GenerateArtifactsController { @POST @Path("/generateArtifacts") - Response generateArtifacts(@Context UriInfo uriInfo, @Context HttpHeaders headers, - @Context HttpServletRequest servletRequest, String request) throws AAIAuthException; + Response generateArtifacts(BabelRequest babelRequest) throws AAIAuthException; } diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java index 189aaf3..4b56798 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java @@ -22,7 +22,6 @@ package org.onap.aai.babel.service; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import com.google.gson.JsonSyntaxException; import lombok.RequiredArgsConstructor; @@ -34,9 +33,6 @@ import javax.ws.rs.core.*; import javax.ws.rs.core.Response.Status; import org.apache.commons.lang3.time.StopWatch; -import org.onap.aai.auth.AAIAuthException; -import org.onap.aai.auth.AAIMicroServiceAuth; -import org.onap.aai.auth.AAIMicroServiceAuthCore; import org.onap.aai.babel.csar.CsarConverterException; import org.onap.aai.babel.csar.CsarToXmlConverter; import org.onap.aai.babel.csar.vnfcatalog.ToscaToCatalogException; @@ -63,26 +59,10 @@ public class GenerateArtifactsControllerImpl implements GenerateArtifactsControl private final Gson gson; @Override - public Response generateArtifacts(UriInfo uriInfo, HttpHeaders headers, HttpServletRequest servletRequest, - String requestBody) { + public Response generateArtifacts(BabelRequest babelRequest) { Response response; - // try { - // Get last URI path segment to use for authentication - // List pathSegments = uriInfo.getPathSegments(); - // String lastPathSegment = pathSegments.isEmpty() ? "" : pathSegments.get(pathSegments.size() - 1).getPath(); - - // boolean authorized = aaiMicroServiceAuth.validateRequest(headers, servletRequest, - // AAIMicroServiceAuthCore.HTTP_METHODS.POST, lastPathSegment); - - response = generateArtifacts(requestBody); - // response = authorized ? generateArtifacts(requestBody) - // : buildResponse(Status.UNAUTHORIZED, "User not authorized to perform the operation."); - // } catch (AAIAuthException e) { - // applicationLogger.error(ApplicationMsgs.PROCESS_REQUEST_ERROR, e); - // applicationLogger.logAuditError(e); - // return buildResponse(Status.INTERNAL_SERVER_ERROR, - // "Error while processing request. Please check the Babel service logs for more details.\n"); - // } + + response = generateArtifactsImpl(babelRequest); StatusCode statusDescription; int statusCode = response.getStatus(); @@ -104,14 +84,13 @@ public class GenerateArtifactsControllerImpl implements GenerateArtifactsControl * the request body in JSON format * @return response object containing the generated XML models */ - protected Response generateArtifacts(String requestBody) { + protected Response generateArtifactsImpl(BabelRequest babelRequest) { StopWatch stopwatch = new StopWatch(); stopwatch.start(); Response response; try { - BabelRequest babelRequest = gson.fromJson(requestBody, BabelRequest.class); new RequestValidator().validateRequest(babelRequest); byte[] csarFile = Base64.getDecoder().decode(babelRequest.getCsar()); diff --git a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java index 3070566..27eeb51 100644 --- a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java +++ b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java @@ -96,7 +96,7 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifactsWithoutRequestId() throws URISyntaxException, IOException { - Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequest(), Optional.empty()); + Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getBabelRequest(), Optional.empty()); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("response.json"))); } @@ -111,7 +111,7 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifactsWithoutMinorArtifactVersion() throws URISyntaxException, IOException { - Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequestWithArtifactVersion("1"), + Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getBabelRequestWithArtifactVersion("1"), Optional.of("transaction-id")); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("response.json"))); @@ -127,7 +127,7 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifactsWithInvalidArtifactVersion() throws URISyntaxException, IOException { - Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequestWithArtifactVersion("a"), + Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getBabelRequestWithArtifactVersion("a"), Optional.of("transaction-id")); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("response.json"))); @@ -144,7 +144,7 @@ public class TestGenerateArtifactsServiceImpl { */ @Test public void testGenerateArtifactsWithArtifactVerLessThan1() throws URISyntaxException, IOException { - Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getJsonRequestWithArtifactVersion("0.1"), + Response response = invokeService(CsarTest.VNF_VENDOR_CSAR.getBabelRequestWithArtifactVersion("0.1"), Optional.of("transaction-id")); assertThat(response.toString(), response.getStatus(), is(Response.Status.OK.getStatusCode())); assertThat(response.getEntity(), is(getResponseJson("responseWithVersionLessThan1.json"))); @@ -187,24 +187,17 @@ public class TestGenerateArtifactsServiceImpl { request.setArtifactName("hello"); request.setArtifactVersion("1.0"); request.setCsar("xxxx"); - Response response = invokeService(new Gson().toJson(request)); + Response response = invokeService(request); assertThat(response.getStatus(), is(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode())); assertThat(response.getEntity(), is("Error converting CSAR artifact to XML model.")); } - @Test - public void testInvalidJsonFile() throws URISyntaxException, IOException { - Response response = invokeService("{\"csar:\"xxxx\""); - assertThat(response.getStatus(), is(Response.Status.BAD_REQUEST.getStatusCode())); - assertThat(response.getEntity(), is("Malformed request.")); - } - @Test public void testMissingArtifactName() throws Exception { BabelRequest request = new BabelRequest(); request.setArtifactVersion("1.0"); request.setCsar(""); - Response response = invokeService(new Gson().toJson(request)); + Response response = invokeService(request); assertThat(response.getStatus(), is(Response.Status.BAD_REQUEST.getStatusCode())); assertThat(response.getEntity(), is("No artifact name attribute found in the request body.")); } @@ -214,7 +207,7 @@ public class TestGenerateArtifactsServiceImpl { BabelRequest request = new BabelRequest(); request.setArtifactName("hello"); request.setCsar(""); - Response response = invokeService(new Gson().toJson(request)); + Response response = invokeService(request); assertThat(response.getStatus(), is(Response.Status.BAD_REQUEST.getStatusCode())); assertThat(response.getEntity(), is("No artifact version attribute found in the request body.")); } @@ -224,7 +217,7 @@ public class TestGenerateArtifactsServiceImpl { BabelRequest request = new BabelRequest(); request.setArtifactName("test-name"); request.setArtifactVersion("1.0"); - Response response = invokeService(new Gson().toJson(request)); + Response response = invokeService(request); assertThat(response.getStatus(), is(Response.Status.BAD_REQUEST.getStatusCode())); assertThat(response.getEntity(), is("No csar attribute found in the request body.")); } @@ -244,7 +237,7 @@ public class TestGenerateArtifactsServiceImpl { */ private Response processJsonRequest(CsarTest csar) throws URISyntaxException, IOException { - return invokeService(csar.getJsonRequest(), Optional.of("transaction-id")); + return invokeService(csar.getBabelRequest(), Optional.of("transaction-id")); } /** @@ -256,8 +249,8 @@ public class TestGenerateArtifactsServiceImpl { * @throws URISyntaxException * if the URI cannot be created */ - private Response invokeService(String jsonRequest) throws URISyntaxException { - return invokeService(jsonRequest, Optional.of("transaction-id")); + private Response invokeService(BabelRequest babelRequest) throws URISyntaxException { + return invokeService(babelRequest, Optional.of("transaction-id")); } /** @@ -273,7 +266,7 @@ public class TestGenerateArtifactsServiceImpl { * @throws URISyntaxException * if the URI cannot be created */ - private Response invokeService(String jsonString, Optional transactionId) + private Response invokeService(BabelRequest babelRequest, Optional transactionId) throws URISyntaxException { UriInfo mockUriInfo = Mockito.mock(UriInfo.class); Mockito.when(mockUriInfo.getRequestUri()).thenReturn(new URI("/validate")); // NOSONAR (mocked) @@ -310,7 +303,7 @@ public class TestGenerateArtifactsServiceImpl { servletRequest.setAttribute("javax.servlet.request.cipher_suite", ""); GenerateArtifactsControllerImpl service = new GenerateArtifactsControllerImpl(gson); - return service.generateArtifacts(mockUriInfo, headers, servletRequest, jsonString); + return service.generateArtifacts(babelRequest); } private String getResponseJson(String jsonResponse) throws IOException, URISyntaxException { diff --git a/src/test/java/org/onap/aai/babel/testdata/CsarTest.java b/src/test/java/org/onap/aai/babel/testdata/CsarTest.java index 461e75c..c20e554 100644 --- a/src/test/java/org/onap/aai/babel/testdata/CsarTest.java +++ b/src/test/java/org/onap/aai/babel/testdata/CsarTest.java @@ -96,31 +96,39 @@ public enum CsarTest { /** * Create a BabelRequest containing the encoded CSAR content. - * + * * @return a new Babel request for this CSAR * @throws IOException * if an I/O exception occurs */ public String getJsonRequest() throws IOException { + return new Gson().toJson(getBabelRequest()); + } + + public BabelRequest getBabelRequest() throws IOException { BabelRequest request = new BabelRequest(); request.setArtifactName(getName()); request.setArtifactVersion("1.0"); request.setCsar(new String(GeneratorUtil.encode(getContent()))); - return new Gson().toJson(request); + return request; } - + /** * Create a BabelRequest containing the encoded CSAR content by passing in the artifact version. - * + * * @return a new Babel request for this CSAR * @throws IOException * if an I/O exception occurs */ public String getJsonRequestWithArtifactVersion(String artifactVersion) throws IOException { + BabelRequest babelRequest = getBabelRequestWithArtifactVersion(artifactVersion); + return new Gson().toJson(babelRequest); + } + public BabelRequest getBabelRequestWithArtifactVersion(String artifactVersion) throws IOException { BabelRequest request = new BabelRequest(); request.setArtifactName(getName()); request.setArtifactVersion(artifactVersion); request.setCsar(new String(GeneratorUtil.encode(getContent()))); - return new Gson().toJson(request); + return request; } } -- 2.16.6 From da71728895dc8b095f43ddf0d22b46ea96152e51 Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Fri, 29 Nov 2024 10:22:33 +0100 Subject: [PATCH 04/16] Make babel runnable locally via mvn spring-boot:run - make it runnable mvn spring-boot:run - remove certificate related config Issue-ID: AAI-4073 Change-Id: Ie5762dd3d1e79312d72e0611c1d61ce6cfaeb1c2 Signed-off-by: Fiete Ostkamp --- .gitignore | 2 + pom.xml | 5 +- src/main/bin/start.sh | 16 +- .../java/org/onap/aai/babel/BabelApplication.java | 6 - .../org/onap/aai/babel/JerseyConfiguration.java | 6 +- .../config/PropertyPasswordConfiguration.java | 90 ---------- src/main/resources/babel-auth.properties | 2 + src/main/resources/logback.xml | 2 +- src/main/resources/tosca-mappings.json | 193 +++++++++++++++++++++ .../java/org/onap/aai/babel/TestApplication.java | 44 ----- 10 files changed, 204 insertions(+), 162 deletions(-) delete mode 100644 src/main/java/org/onap/aai/babel/config/PropertyPasswordConfiguration.java create mode 100644 src/main/resources/babel-auth.properties create mode 100644 src/main/resources/tosca-mappings.json diff --git a/.gitignore b/.gitignore index d25b509..75986d5 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ appconfig-local/ *.iml .idea/ .vscode/ +*.log +output* diff --git a/pom.xml b/pom.xml index 63ee527..72f8e9b 100644 --- a/pom.xml +++ b/pom.xml @@ -425,10 +425,9 @@ ${spring.boot.version} - -DCONFIG_HOME=./appconfig-local + -DCONFIG_HOME=src/main/resources -DAPP_HOME=. - -Dtosca.mappings.config=./appconfig-local/tosca-mappings.json - -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD} + -Dtosca.mappings.config=src/main/resources/tosca-mappings.json diff --git a/src/main/bin/start.sh b/src/main/bin/start.sh index 4d9912d..ed27c5a 100644 --- a/src/main/bin/start.sh +++ b/src/main/bin/start.sh @@ -27,30 +27,16 @@ if [ -z "${CONFIG_HOME}" ]; then exit 1 fi -#Either keystore password or server certs location must be passed. Both cannot be null -if [ -z "${KEY_STORE_PASSWORD}" -a -z "${SERVER_CERTS_LOCATION}" ]; then - echo "KEY_STORE_PASSWORD or SERVER_CERTS_LOCATION must be set in order to start the process" - exit 1 -fi - PROPS="-DAPP_HOME=${APP_HOME}" PROPS="${PROPS} -DCONFIG_HOME=${CONFIG_HOME}" PROPS="${PROPS} -Dtosca.mappings.config=${CONFIG_HOME}/tosca-mappings.json" -if [ ! -z "$KEY_STORE_PASSWORD" ]; then - PROPS="${PROPS} -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD}" -fi - PROPS="${PROPS} -Dlogging.config=${APP_HOME}/config/logback.xml" if [ ! -z "$REQUIRE_CLIENT_AUTH" ]; then PROPS="$PROPS -Dserver.ssl.client-auth=${REQUIRE_CLIENT_AUTH}" fi -if [ ! -z "$SERVER_CERTS_LOCATION" ]; then - PROPS="$PROPS -Dserver.certs.location=${SERVER_CERTS_LOCATION}" - PROPS="$PROPS -Dserver.ssl.key-store=${SERVER_CERTS_LOCATION}/${SERVER_KEY_STORE}" - PROPS="$PROPS -Dserver.ssl.trust-store=${SERVER_CERTS_LOCATION}/${SERVER_TRUST_STORE}" -fi + PROPS="${PROPS} -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}" PROPS="${PROPS} -Daaf.cadi.file=${CONFIG_HOME}/cadi.properties" PROPS="${PROPS} -Daaf.cadi.file=${CONFIG_HOME}/cadi.properties" diff --git a/src/main/java/org/onap/aai/babel/BabelApplication.java b/src/main/java/org/onap/aai/babel/BabelApplication.java index 4f67b21..3270af5 100644 --- a/src/main/java/org/onap/aai/babel/BabelApplication.java +++ b/src/main/java/org/onap/aai/babel/BabelApplication.java @@ -21,7 +21,6 @@ package org.onap.aai.babel; -import org.onap.aai.babel.config.PropertyPasswordConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @@ -46,14 +45,9 @@ public class BabelApplication extends SpringBootServletInitializer { * main args (expected to be null) */ public static void main(String[] args) { - String keyStorePassword = System.getProperty("KEY_STORE_PASSWORD"); - if (keyStorePassword == null || keyStorePassword.isEmpty()) { - throw new IllegalArgumentException("Mandatory property KEY_STORE_PASSWORD not set"); - } SpringApplication app = new SpringApplication(BabelApplication.class); app.setLogStartupInfo(false); app.setRegisterShutdownHook(true); - app.addInitializers(new PropertyPasswordConfiguration()); context = app.run(args); } diff --git a/src/main/java/org/onap/aai/babel/JerseyConfiguration.java b/src/main/java/org/onap/aai/babel/JerseyConfiguration.java index 84cda4d..ff8c5bb 100644 --- a/src/main/java/org/onap/aai/babel/JerseyConfiguration.java +++ b/src/main/java/org/onap/aai/babel/JerseyConfiguration.java @@ -31,9 +31,9 @@ import org.springframework.context.annotation.Configuration; public class JerseyConfiguration extends ResourceConfig { public JerseyConfiguration() { - packages("org.onap.aai.babel"); - // register(GenerateArtifactsControllerImpl.class); - // register(InfoService.class); + // packages("org.onap.aai.babel"); + register(GenerateArtifactsControllerImpl.class); + register(InfoService.class); } } diff --git a/src/main/java/org/onap/aai/babel/config/PropertyPasswordConfiguration.java b/src/main/java/org/onap/aai/babel/config/PropertyPasswordConfiguration.java deleted file mode 100644 index 7539d41..0000000 --- a/src/main/java/org/onap/aai/babel/config/PropertyPasswordConfiguration.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.config; - -import java.nio.charset.StandardCharsets; -import org.eclipse.jetty.util.security.Password; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.PropertySource; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Properties; - -public class PropertyPasswordConfiguration implements ApplicationContextInitializer { - - private static final String PROP_KEY_STORE_PASS = "server.ssl.key-store-password"; - - @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - - Map sslProps = new LinkedHashMap<>(); - ConfigurableEnvironment environment = applicationContext.getEnvironment(); - String certPath = environment.getProperty("server.certs.location"); - String keystorePassword = null; - String truststorePassword = null; - - if (certPath != null) { - try (InputStream passwordStream = new FileInputStream(certPath + ".password")) { - keystorePassword = new String(passwordStream.readAllBytes(), StandardCharsets.UTF_8); - keystorePassword = keystorePassword.trim(); - sslProps.put(PROP_KEY_STORE_PASS, keystorePassword); - } catch (IOException e) { - keystorePassword = null; - } - try (InputStream passphrasesStream = new FileInputStream(certPath + ".passphrases");) { - Properties passphrasesProps = new Properties(); - passphrasesProps.load(passphrasesStream); - truststorePassword = passphrasesProps.getProperty("cadi_truststore_password"); - if (truststorePassword != null) { - truststorePassword = truststorePassword.trim(); - } - sslProps.put("server.ssl.trust-store-password", truststorePassword); - } catch (IOException e) { - truststorePassword = null; - } - } - if (keystorePassword == null || keystorePassword.isEmpty()) { - keystorePassword = System.getProperty("KEY_STORE_PASSWORD"); - if (keystorePassword != null && (!keystorePassword.isEmpty()) ) { - System.setProperty(PROP_KEY_STORE_PASS, new Password(keystorePassword).toString()); - } - if (keystorePassword == null || keystorePassword.isEmpty()) { - throw new IllegalArgumentException("Mandatory property KEY_STORE_PASSWORD not set"); - } - } - else { - sslProps.put(PROP_KEY_STORE_PASS, keystorePassword); - } - if (truststorePassword != null && !truststorePassword.isEmpty()) { - sslProps.put("server.ssl.trust-store-password", truststorePassword); - } - if (!sslProps.isEmpty()) { - PropertySource additionalProperties = new MapPropertySource("additionalProperties", sslProps); - environment.getPropertySources().addFirst(additionalProperties); - } - } -} diff --git a/src/main/resources/babel-auth.properties b/src/main/resources/babel-auth.properties new file mode 100644 index 0000000..ba4e13a --- /dev/null +++ b/src/main/resources/babel-auth.properties @@ -0,0 +1,2 @@ +auth.policy.file=/auth/auth_policy.json +auth.authentication.disable=true \ No newline at end of file diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 74d2ae0..98c626b 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -23,7 +23,7 @@ To find main logging config please check `logging.config` in the application.pro - + diff --git a/src/main/resources/tosca-mappings.json b/src/main/resources/tosca-mappings.json new file mode 100644 index 0000000..32491f6 --- /dev/null +++ b/src/main/resources/tosca-mappings.json @@ -0,0 +1,193 @@ +{ + "instanceGroupTypes": [ + "org.openecomp.groups.NetworkCollection", + "org.openecomp.groups.VfcInstanceGroup", + "org.openecomp.groups.ResourceInstanceGroup" + ], + "widgetTypes": [ + { + "type": "SERVICE", + "name": "service-instance", + "deleteFlag": true, + "modelInvariantId": "service-instance-invariant-id", + "modelVersionId": "service-instance-version-id" + }, + { + "type": "VF", + "name": "generic-vnf", + "deleteFlag": true, + "modelInvariantId": "generic-vnf-invariant-id", + "modelVersionId": "generic-vnf-version-id" + }, + { + "type": "VFC", + "name": "vnfc", + "deleteFlag": true, + "modelInvariantId": "vnfc-invariant-id", + "modelVersionId": "vnfc-version-id" + }, + { + "type": "VSERVER", + "name": "vserver", + "deleteFlag": true, + "modelInvariantId": "vserver-invariant-id", + "modelVersionId": "vserver-version-id" + }, + { + "type": "VOLUME", + "name": "volume", + "deleteFlag": true, + "modelInvariantId": "volume-invariant-id", + "modelVersionId": "volume-version-id" + }, + { + "type": "FLAVOR", + "name": "flavor", + "deleteFlag": false, + "modelInvariantId": "flavor-invariant-id", + "modelVersionId": "flavor-version-id" + }, + { + "type": "TENANT", + "name": "tenant", + "deleteFlag": false, + "modelInvariantId": "tenant-invariant-id", + "modelVersionId": "tenant-version-id" + }, + { + "type": "VOLUME_GROUP", + "name": "volume-group", + "deleteFlag": true, + "modelInvariantId": "volume-group-invariant-id", + "modelVersionId": "volume-group-version-id" + }, + { + "type": "LINT", + "name": "l-interface", + "deleteFlag": true, + "modelInvariantId": "l-interface-invariant-id", + "modelVersionId": "l-interface-version-id" + }, + { + "type": "L3_NET", + "name": "l3-network", + "deleteFlag": true, + "modelInvariantId": "l3-network-invariant-id", + "modelVersionId": "l3-network-version-id" + }, + { + "type": "VFMODULE", + "name": "vf-module", + "deleteFlag": true, + "modelInvariantId": "vf-module-invariant-id", + "modelVersionId": "vf-module-version-id" + }, + { + "type": "IMAGE", + "name": "image", + "deleteFlag": false, + "modelInvariantId": "image-invariant-id", + "modelVersionId": "image-version-id" + }, + { + "type": "OAM_NETWORK", + "name": "oam-network", + "deleteFlag": true, + "modelInvariantId": "oam-network-invariant-id", + "modelVersionId": "oam-network-version-id" + }, + { + "type": "ALLOTTED_RESOURCE", + "name": "allotted-resource", + "deleteFlag": true, + "modelInvariantId": "allotted-resource-invariant-id", + "modelVersionId": "allotted-resource-version-id" + }, + { + "type": "TUNNEL_XCONNECT", + "name": "tunnel-xconnect", + "deleteFlag": true, + "modelInvariantId": "tunnel-xconnect-invariant-id", + "modelVersionId": "tunnel-xconnect-version-id" + }, + { + "type": "CONFIGURATION", + "name": "configuration", + "deleteFlag": true, + "modelInvariantId": "configuration-invariant-id", + "modelVersionId": "configuration-version-id" + }, + { + "type": "CR", + "name": "cr", + "deleteFlag": true, + "modelInvariantId": "collection-resource-invariant-id", + "modelVersionId": "collection-resource-version-id" + }, + { + "type": "INSTANCE_GROUP", + "name": "instance-group", + "deleteFlag": true, + "modelInvariantId": "instance-group-invariant-id", + "modelVersionId": "instance-group-version-id" + }, + { + "type": "PNF", + "name": "pnf", + "deleteFlag": true, + "modelInvariantId": "pnf-instance-invariant-id", + "modelVersionId": "pnf-instance-version-id" + } + ], + "widgetMappings": [ + { + "prefix": "org.openecomp.resource.vfc", + "type": "widget", + "widget": "VSERVER", + "deleteFlag": true + }, + { + "prefix": "org.openecomp.resource.cp", + "type": "widget", + "widget": "LINT", + "deleteFlag": true + }, + { + "prefix": "org.openecomp.cp", + "type": "widget", + "widget": "LINT", + "deleteFlag": true + }, + { + "prefix": "org.openecomp.resource.vl", + "widget": "L3_NET", + "deleteFlag": false + }, + { + "prefix": "org.openecomp.resource.vf", + "widget": "VF", + "deleteFlag": true + }, + { + "prefix": "org.openecomp.groups.vfmodule", + "widget": "VFMODULE", + "deleteFlag": true + }, + { + "prefix": "org.openecomp.groups.VfModule", + "widget": "VFMODULE", + "deleteFlag": true + }, + { + "prefix": "org.openecomp.resource.vfc.nodes.heat.cinder", + "type": "widget", + "widget": "VOLUME", + "deleteFlag": true + }, + { + "prefix": "org.openecomp.resource.pnf", + "widget": "PNF", + "deleteFlag": true + } + ] +} diff --git a/src/test/java/org/onap/aai/babel/TestApplication.java b/src/test/java/org/onap/aai/babel/TestApplication.java index 67e8a32..87158c0 100644 --- a/src/test/java/org/onap/aai/babel/TestApplication.java +++ b/src/test/java/org/onap/aai/babel/TestApplication.java @@ -41,13 +41,11 @@ public class TestApplication { public void init() { System.setProperty("APP_HOME", "."); System.setProperty("CONFIG_HOME", "src/test/resources"); - System.setProperty("server.ssl.key-store", "src/test/resources/auth/keystore.jks"); } @Test public void testApplicationStarts() { assertDoesNotThrow(() -> { - System.setProperty("KEY_STORE_PASSWORD", "password"); BabelApplication.main(new String[]{}); BabelApplication.exit(); }); @@ -56,7 +54,6 @@ public class TestApplication { @Test public void testApplicationStartsWithObfuscatedPassword() { assertDoesNotThrow(() -> { - System.setProperty("KEY_STORE_PASSWORD", Password.obfuscate("password")); BabelApplication.main(new String[]{}); BabelApplication.exit(); }); @@ -65,50 +62,9 @@ public class TestApplication { @Test public void testApplicationWithNullArgs() { Throwable exception = assertThrows(IllegalArgumentException.class, () -> { - System.setProperty("KEY_STORE_PASSWORD", "test"); BabelApplication.main(null); }); assertTrue(exception.getMessage().contains("Args must not be null")); } - @Test - public void testApplicationWithEmptyKeyStorePassword() { - Throwable exception = assertThrows(IllegalArgumentException.class, () -> { - System.setProperty("KEY_STORE_PASSWORD", ""); - BabelApplication.main(new String[]{}); - }); - assertTrue(exception.getMessage().contains("roperty KEY_STORE_PASSWORD not set")); - } - - @Test - public void testApplicationWithNullKeyStorePassword() { - Throwable exception = assertThrows(IllegalArgumentException.class, () -> { - System.clearProperty("KEY_STORE_PASSWORD"); - BabelApplication.main(new String[]{}); - }); - assertTrue(exception.getMessage().contains("roperty KEY_STORE_PASSWORD not set")); - } - - @Test - public void testApplicationWithIncorrectKeyStorePassword() { - Throwable exception = assertThrows(ApplicationContextException.class, () -> { - System.setProperty("KEY_STORE_PASSWORD", "test"); - BabelApplication.main(new String[]{}); - }); - } - - /** - * This test asserts that if the KEY_STORE_PASSWORD System Property is set (and is not empty) then the value is - * passed to Jetty, debobfuscated, and used to open the key store, even if the resulting password value is actually - * an empty string. - */ - @Test - public void testApplicationWithBlankObfuscatedKeyStorePassword() { - // Note that "OBF:" is correctly deobfuscated and results in an empty string. - Throwable exception = assertThrows(ApplicationContextException.class, () -> { - System.setProperty("KEY_STORE_PASSWORD", "OBF:"); - BabelApplication.main(new String[]{}); - }); - } - } -- 2.16.6 From 8fcca896bf74d7cbc969518582fceae5425f74df Mon Sep 17 00:00:00 2001 From: "vani.kv" Date: Tue, 10 Dec 2024 12:04:18 +0530 Subject: [PATCH 05/16] [AAI] Update aai-schema version to 1.12.7 in babel - Bump aai-schema pom version to 1.12.7 - Update aai-schema default version to v30 Issue-ID: AAI-4075 Change-Id: I3d4ef82c239ae551f4d60397040fa2953b58e3d8 Signed-off-by: vani.kv --- pom.xml | 2 +- src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml | 2 +- src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml | 2 +- .../resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml | 2 +- .../generatedXml/AAI-Grouping Service for Test-service-1.0.xml | 2 +- .../resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml | 2 +- .../generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml | 2 +- .../AAI-Network Res 1806..NetworkCollection..0-resource-1.xml | 2 +- ...rkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml | 2 +- src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml | 2 +- .../generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml | 2 +- src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml | 2 +- .../generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml | 2 +- .../generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml | 2 +- src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml | 2 +- src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml | 2 +- .../AAI-VLAN Network Receptor Configuration-resource-3.0.xml | 2 +- .../resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml | 2 +- src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml | 2 +- .../AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml | 2 +- .../AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml | 2 +- src/test/resources/generatedXml/AAI-oam_group-resource-3.xml | 2 +- .../generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml | 2 +- src/test/resources/generatedXml/AAI-untr_group-resource-3.xml | 2 +- src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml | 2 +- src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml | 2 +- .../generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml | 2 +- src/test/resources/response/response.json | 2 +- src/test/resources/response/responseWithVersionLessThan1.json | 2 +- src/test/resources/response/validNoVnfConfigurationResponse.json | 2 +- 36 files changed, 36 insertions(+), 36 deletions(-) diff --git a/pom.xml b/pom.xml index 72f8e9b..9623904 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,7 @@ 0.15.1 org.onap.aai.schema-service - 1.12.5 + 1.12.7 3.12.0 1.6.4 diff --git a/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml b/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml index 5be0efc..14e490e 100644 --- a/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml @@ -1,4 +1,4 @@ - + 4b95b343-a640-4e87-8587-945ac2748eca service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml b/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml index 28e32c1..aac402d 100644 --- a/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml +++ b/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml @@ -1,4 +1,4 @@ - + extVL-invariant-uuid resource diff --git a/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml b/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml index 0f0b201..3d5bd74 100644 --- a/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml +++ b/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml @@ -1,4 +1,4 @@ - + 379f816b-a7aa-422f-be30-17114ff50b7c resource diff --git a/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml b/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml index 234e505..7f13ac1 100644 --- a/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml +++ b/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml @@ -1,4 +1,4 @@ - + 3c5bb7f4-764e-4da3-8d34-8829a2924192 resource diff --git a/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml index fc9e653..ed0b1c7 100644 --- a/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml @@ -1,4 +1,4 @@ - + service-invariant-uuid service Network L4+ diff --git a/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml b/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml index e27ae98..a4d4312 100644 --- a/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml @@ -1,4 +1,4 @@ - + b78ae06b-95f7-493c-963b-c81e110f2dee resource diff --git a/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml b/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml index 5cb6e54..cf84b41 100644 --- a/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml @@ -1,4 +1,4 @@ - + 60f83fa8-f577-42bf-b295-460acbe977a5 service diff --git a/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml b/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml index 62daf1d..b4b42ca 100644 --- a/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml +++ b/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml @@ -1,4 +1,4 @@ - + 831ed8de-e2ca-4310-bc51-cf97ab44547c resource diff --git a/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml b/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml index a5de48c..454bc31 100644 --- a/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml @@ -1,4 +1,4 @@ - + e732025b-8f42-425f-b40c-09e5986b9c4f resource diff --git a/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml b/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml index 3ad5610..ae27e65 100644 --- a/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml @@ -1,4 +1,4 @@ - + ea2360e3-f4b1-4acc-8d23-c8f6b2fdce3a resource diff --git a/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml index 6e01fc6..ea1fb6f 100644 --- a/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml @@ -1,4 +1,4 @@ - + cd674566-ce17-4262-ae99-d526e7b8d47a service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml b/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml index d95aaa2..5443939 100644 --- a/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml +++ b/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml @@ -1,4 +1,4 @@ - + cf53c1d6-8708-4b4e-a056-ead7daa57cd5 resource diff --git a/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml b/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml index d79e985..365d256 100644 --- a/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml @@ -1,4 +1,4 @@ - + 32b61fa7-95e7-4ede-ad9b-2322e26fc623 service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml b/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml index ff77698..a3f0be9 100644 --- a/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml +++ b/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml @@ -1,4 +1,4 @@ - + b2b88a73-5c55-4984-99dd-a35c55935d14 resource diff --git a/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml index f6cebdf..9b87088 100644 --- a/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml @@ -1,4 +1,4 @@ - + 1c111111-1111-1111-1111-111111111111 service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml b/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml index 30435b1..d956483 100644 --- a/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml +++ b/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml @@ -1,4 +1,4 @@ - + 1a111111-1111-1111-1111-111111111111 resource diff --git a/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml b/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml index 22fbe7d..47d8277 100644 --- a/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml @@ -1,4 +1,4 @@ - + 6f288081-b321-47c9-b038-6de70079a3bf resource diff --git a/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml b/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml index 917f9d2..788bfad 100644 --- a/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml +++ b/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml @@ -1,4 +1,4 @@ - + 6a111111-1111-1111-1111-111111111111 resource diff --git a/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml b/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml index 0611c96..e3e90a1 100644 --- a/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml +++ b/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml @@ -1,4 +1,4 @@ - + testcr1-invariant-uuid resource diff --git a/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml b/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml index e845dbe..a93ebcd 100644 --- a/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml @@ -1,4 +1,4 @@ - + service-invariant-uuid service Network L4+ diff --git a/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml b/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml index cbdd38b..37ea075 100644 --- a/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml +++ b/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml @@ -1,4 +1,4 @@ - + 1b111111-1111-1111-1111-111111111111 resource diff --git a/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml b/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml index 589d10f..ff98e11 100644 --- a/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml +++ b/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml @@ -1,4 +1,4 @@ - + 1608eef4-de53-4334-a8d2-ba79cab4bde0 resource diff --git a/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml b/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml index b316536..feba4ca 100644 --- a/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml +++ b/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml @@ -1,4 +1,4 @@ - + b67a289b-1688-496d-86e8-1583c828be0a resource diff --git a/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml index 4b5524c..4f1ceda 100644 --- a/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml @@ -1,4 +1,4 @@ - + a8db6285-20ca-4fd3-9c85-e267bdb013f9 service diff --git a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml index b5e7450..552914a 100644 --- a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml @@ -1,4 +1,4 @@ - + instance-group-0-invariant-id resource diff --git a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml index 2d646ef..002a33e 100644 --- a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml @@ -1,4 +1,4 @@ - + instance-group-1-invariant-id resource diff --git a/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml b/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml index 5a7b93b..9f79aa0 100644 --- a/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml +++ b/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml @@ -1,4 +1,4 @@ - + 53688e73-06a1-4759-96d2-8872e9c6a460 resource diff --git a/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml b/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml index 161e567..d261c5d 100644 --- a/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml @@ -1,4 +1,4 @@ - + test-cr-invariant-uuid resource diff --git a/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml b/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml index 7587a5b..d66cf27 100644 --- a/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml +++ b/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml @@ -1,4 +1,4 @@ - + 01a007bf-e3c4-4e27-963b-74fabeab08bc resource diff --git a/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml b/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml index 36987d1..e055417 100644 --- a/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml +++ b/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml @@ -1,4 +1,4 @@ - + 2b6388c7-fec4-45b1-ac66-297ba402ae40 resource diff --git a/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml b/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml index 0da6952..5afe75d 100644 --- a/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml @@ -1,4 +1,4 @@ - + 66e7aed9-3257-4069-b0a6-9012aaca821a service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml b/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml index 79d6290..d9dfecd 100644 --- a/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml +++ b/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml @@ -1,4 +1,4 @@ - + 63d57475-e7c3-49b2-ab32-90357c0e4f30 resource diff --git a/src/test/resources/response/response.json b/src/test/resources/response/response.json index bf27af3..3ddc052 100644 --- a/src/test/resources/response/response.json +++ b/src/test/resources/response/response.json @@ -1 +1 @@ -[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] +[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] diff --git a/src/test/resources/response/responseWithVersionLessThan1.json b/src/test/resources/response/responseWithVersionLessThan1.json index 3051686..9a22699 100644 --- a/src/test/resources/response/responseWithVersionLessThan1.json +++ b/src/test/resources/response/responseWithVersionLessThan1.json @@ -1 +1 @@ -[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 0.1\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] +[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 0.1\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] diff --git a/src/test/resources/response/validNoVnfConfigurationResponse.json b/src/test/resources/response/validNoVnfConfigurationResponse.json index 40b3b51..c6b4dd8 100644 --- a/src/test/resources/response/validNoVnfConfigurationResponse.json +++ b/src/test/resources/response/validNoVnfConfigurationResponse.json @@ -1 +1 @@ -[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"\n a8db6285-20ca-4fd3-9c85-e267bdb013f9\n service\n Network L4+\n \n \n 7f7f6fa4-275a-488f-8b3e-691a0765d57e\n Vscpaas_Test\n 1.0\n Vscpaas_Test\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n \n \n model.model-invariant-id\n b2b88a73-5c55-4984-99dd-a35c55935d14\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"\n 6f288081-b321-47c9-b038-6de70079a3bf\n resource\n \n \n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n ScpTestVsp..asc_heat-int2..module-0\n 1\n \n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n image-version-id\n \n \n model.model-invariant-id\n image-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n flavor-version-id\n \n \n model.model-invariant-id\n flavor-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n vnfc-version-id\n \n \n model.model-invariant-id\n vnfc-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n tenant-version-id\n \n \n model.model-invariant-id\n tenant-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vserver-version-id\n \n \n model.model-invariant-id\n vserver-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n l3-network-version-id\n \n \n model.model-invariant-id\n l3-network-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vf-module-version-id\n \n \n model.model-invariant-id\n vf-module-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"\n b2b88a73-5c55-4984-99dd-a35c55935d14\n resource\n \n \n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n SCP-Test-VSP\n 1.0\n SCP Test VSP\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n \n \n model.model-invariant-id\n 6f288081-b321-47c9-b038-6de70079a3bf\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"}] +[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"\n a8db6285-20ca-4fd3-9c85-e267bdb013f9\n service\n Network L4+\n \n \n 7f7f6fa4-275a-488f-8b3e-691a0765d57e\n Vscpaas_Test\n 1.0\n Vscpaas_Test\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n \n \n model.model-invariant-id\n b2b88a73-5c55-4984-99dd-a35c55935d14\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"\n 6f288081-b321-47c9-b038-6de70079a3bf\n resource\n \n \n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n ScpTestVsp..asc_heat-int2..module-0\n 1\n \n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n image-version-id\n \n \n model.model-invariant-id\n image-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n flavor-version-id\n \n \n model.model-invariant-id\n flavor-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n vnfc-version-id\n \n \n model.model-invariant-id\n vnfc-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n tenant-version-id\n \n \n model.model-invariant-id\n tenant-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vserver-version-id\n \n \n model.model-invariant-id\n vserver-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n l3-network-version-id\n \n \n model.model-invariant-id\n l3-network-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vf-module-version-id\n \n \n model.model-invariant-id\n vf-module-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"\n b2b88a73-5c55-4984-99dd-a35c55935d14\n resource\n \n \n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n SCP-Test-VSP\n 1.0\n SCP Test VSP\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n \n \n model.model-invariant-id\n 6f288081-b321-47c9-b038-6de70079a3bf\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"}] -- 2.16.6 From 109a8d7196d4053654ce70f558a1179486ec7959 Mon Sep 17 00:00:00 2001 From: "atul.m.singh" Date: Tue, 4 Feb 2025 13:23:16 +0530 Subject: [PATCH 06/16] [AAI] Unnecessary packages must be cleared from all java files for aai-babel module - Removed unused imports from the JAVA files so that unnecessary packages are ignored Issue-ID: AAI-4120 Change-Id: I350930b92881efc452efe685e6ea3ca23004a069 Signed-off-by: atul.m.singh --- src/main/java/org/onap/aai/babel/logging/LogHelper.java | 1 - .../onap/aai/babel/service/GenerateArtifactsController.java | 4 ---- .../aai/babel/service/GenerateArtifactsControllerImpl.java | 1 - src/test/java/org/onap/aai/babel/TestApplication.java | 3 --- .../aai/babel/filters/AuthenticationRequestFilterTest.java | 12 ------------ .../aai/babel/service/TestGenerateArtifactsServiceImpl.java | 2 -- .../org/onap/aai/babel/xml/generator/model/TestWidget.java | 1 - 7 files changed, 24 deletions(-) diff --git a/src/main/java/org/onap/aai/babel/logging/LogHelper.java b/src/main/java/org/onap/aai/babel/logging/LogHelper.java index f96aff0..406cdb8 100644 --- a/src/main/java/org/onap/aai/babel/logging/LogHelper.java +++ b/src/main/java/org/onap/aai/babel/logging/LogHelper.java @@ -31,7 +31,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import javax.servlet.ServletRequest; -import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response.Status; diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java index 29ebbb2..520d4fb 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java @@ -20,16 +20,12 @@ */ package org.onap.aai.babel.service; -import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import org.onap.aai.auth.AAIAuthException; import org.onap.aai.babel.service.data.BabelRequest; diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java index 4b56798..8e06f38 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java @@ -28,7 +28,6 @@ import lombok.RequiredArgsConstructor; import java.util.Base64; import java.util.List; -import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.*; import javax.ws.rs.core.Response.Status; diff --git a/src/test/java/org/onap/aai/babel/TestApplication.java b/src/test/java/org/onap/aai/babel/TestApplication.java index 87158c0..a665119 100644 --- a/src/test/java/org/onap/aai/babel/TestApplication.java +++ b/src/test/java/org/onap/aai/babel/TestApplication.java @@ -24,12 +24,9 @@ package org.onap.aai.babel; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; - -import org.eclipse.jetty.util.security.Password; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.ApplicationContextException; @SpringBootTest(classes = BabelApplication.class) public class TestApplication { diff --git a/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java index 2475a34..d8f2965 100644 --- a/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java +++ b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java @@ -23,26 +23,14 @@ package org.onap.aai.babel.filters; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.onap.aai.auth.AAIAuthException; import org.onap.aai.auth.AAIMicroServiceAuth; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.reactive.server.WebTestClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.boot.test.context.TestConfiguration; import javax.servlet.http.HttpServletRequest; diff --git a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java index 27eeb51..740d5e3 100644 --- a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java +++ b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java @@ -42,8 +42,6 @@ import javax.ws.rs.core.UriInfo; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import org.onap.aai.auth.AAIAuthException; -import org.onap.aai.auth.AAIMicroServiceAuth; import org.onap.aai.babel.service.data.BabelRequest; import org.onap.aai.babel.testdata.CsarTest; import org.onap.aai.babel.util.ArtifactTestUtils; diff --git a/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java b/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java index 9a06766..88ff742 100644 --- a/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java +++ b/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java @@ -22,7 +22,6 @@ package org.onap.aai.babel.xml.generator.model; import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -- 2.16.6 From b9c26efa16b63dd49344aa90217946da83b21723 Mon Sep 17 00:00:00 2001 From: "ranjan.kumar@t-systems.com" Date: Wed, 4 Jun 2025 11:44:39 +0200 Subject: [PATCH 07/16] log format changes from patter log to json format Issue-ID: AAI-4170 Change-Id: I927488b8ece909e7d887c6dc6b96bd40ddade8a2 Signed-off-by: ranjan.kumar@t-systems.com --- pom.xml | 5 ++ src/main/resources/logback.xml | 194 +++++++++++++++++------------------------ 2 files changed, 84 insertions(+), 115 deletions(-) diff --git a/pom.xml b/pom.xml index 9623904..c4780e0 100644 --- a/pom.xml +++ b/pom.xml @@ -405,6 +405,11 @@ 1.18.32 provided + + net.logstash.logback + logstash-logback-encoder + 6.6 + diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 98c626b..d0bf65d 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -14,175 +14,134 @@ # See the License for the specific language governing permissions and # limitations under the License. --> - - - - - - - - - - - - - - - - + + + + + timestamp + + + + context + ServerIPAddress + EntryTimestamp + InvokeTimestamp + ErrorCode + ErrorDesc + + + exception + + ^sun\.reflect\..*\.invoke + ^net\.sf\.cglib\.proxy\.MethodProxy\.invoke + true + + + + thread + + + logger + 36 + + + + + - - ${logDirectory}/${generalLogName}.log - - ${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip - - 60 - - - ${errorLogPattern} - - INFO 256 - + - - - - ${logDirectory}/${auditLogName}.log - - ${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip - - 60 - - - ${auditLogPattern} - - + + 256 - - - - - ${logDirectory}/${metricsLogName}.log - - ${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip - - 60 - - - ${metricsLogPattern} - + 256 - - - - - - ${logDirectory}/${debugLogName}.log - - - ${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip - - 60 - - - ${errorLogPattern} - + - - e.level.toInt() < INFO.toInt() - + + e.level.toInt() < INFO.toInt() + DENY NEUTRAL 256 - + false - - - - - - - - - - - - + + + - - + + + - + - - + + + - - + + + - - + + + - - - + + + - + - + - + - + @@ -191,8 +150,13 @@ To find main logging config please check `logging.config` in the application.pro - + - + + + + + + \ No newline at end of file -- 2.16.6 From 85eddc29352de227486ecda1d85ecfe64b9887e2 Mon Sep 17 00:00:00 2001 From: "ranjan.kumar@t-systems.com" Date: Wed, 4 Jun 2025 09:07:03 +0200 Subject: [PATCH 08/16] Java 17 and spring boot updgrade for babel Issue-ID: AAI-4169 Change-Id: Ia41d74429b16aa902d3381f6f58315006ff4db6a Signed-off-by: ranjan.kumar@t-systems.com --- pom.xml | 4 +-- src/main/docker/Dockerfile | 16 +++--------- src/main/resources/logback.xml | 58 +++++++++++++----------------------------- 3 files changed, 24 insertions(+), 54 deletions(-) diff --git a/pom.xml b/pom.xml index c4780e0..5dc94e7 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ - + 2.7.18 UTF-8 UTF-8 @@ -90,7 +90,7 @@ 1.9.4 1.2.11 3.0.13 - 2020.0.2 + 2021.0.9 1.27.0 2.16.1 diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile index d956c76..8d474ea 100644 --- a/src/main/docker/Dockerfile +++ b/src/main/docker/Dockerfile @@ -1,5 +1,6 @@ -FROM @aai.docker.namespace@/aai-common-@aai.base.image@:@aai.base.image.version@ +FROM eclipse-temurin:11-jre-alpine +USER 1000 ARG MICRO_HOME=/opt/app/babel # Build up the deployment folder structure @@ -7,17 +8,8 @@ ARG MICRO_HOME=/opt/app/babel #RUN adduser -u 1000 -h /opt/aaihome/aaiadmin -S -D -G aaiadmin -s /bin/bash aaiadmin WORKDIR $MICRO_HOME -USER root -# Create the aai user -RUN mkdir -p /opt/aaihome $MICRO_HOME /logs && \ - ln -s /logs $MICRO_HOME/logs && \ - chown -R aaiadmin:aaiadmin $MICRO_HOME && \ - chown -R aaiadmin:aaiadmin /logs - -COPY --chown=aaiadmin:aaiadmin /maven/babel/ . +COPY --chown=1000:1000 /maven/babel/ . # The start script is executable and can be run directly. -ENTRYPOINT ["/bin/bash", "/opt/app/babel/bin/start.sh"] - -USER aaiadmin +ENTRYPOINT ["/bin/sh", "/opt/app/babel/bin/start.sh"] diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index d0bf65d..d8c7771 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -15,8 +15,7 @@ # limitations under the License. --> - - + @@ -51,11 +50,9 @@ - - @@ -64,31 +61,25 @@ 256 - - + audit logger and appender + are specializations of the EELF application root logger and appender. This can be used to segregate + Policy engine events + from other components, or it can be eliminated to record these events as part of the application + root log. --> 256 - 256 - - - e.level.toInt() < INFO.toInt() - + DENY NEUTRAL @@ -97,51 +88,40 @@ false - - - - - + - - - - - - - - + + + + - - + - - + - - + @@ -149,12 +129,10 @@ - - + - - + -- 2.16.6 From 59cb19307caaf5b2512084a44d2aec3f90d04853 Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Tue, 3 Jun 2025 13:19:28 +0200 Subject: [PATCH 09/16] 1.13.5 release - refactor GenerateArtifactsService - replace some String parameters with their type representation to have better type checking and less explicit object mapper - update aai-schema dependency (1.12.5 -> 1.12.7) - add logstash-logback-encoder dependency for json formatted log output Issue-ID: AAI-4168 Change-Id: I2f2128bcd6858e55caaf05a1a422991b018b1e57 Signed-off-by: Fiete Ostkamp --- releases/1.13.5-container-release.yaml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 releases/1.13.5-container-release.yaml diff --git a/releases/1.13.5-container-release.yaml b/releases/1.13.5-container-release.yaml new file mode 100644 index 0000000..f059c80 --- /dev/null +++ b/releases/1.13.5-container-release.yaml @@ -0,0 +1,7 @@ +distribution_type: container +container_release_tag: 1.13.5 +project: aai/babel +ref: b9c26efa16b63dd49344aa90217946da83b21723 +containers: + - name: babel + version: 1.13-STAGING-20250604T102614Z -- 2.16.6 From f76251c4df3163f59a78ed50911c2a9f7b438780 Mon Sep 17 00:00:00 2001 From: "aditi.shukla@t-systems.com" Date: Thu, 12 Jun 2025 10:45:49 +0200 Subject: [PATCH 10/16] Pom reverted to Java 11, spring boot 2.4 Issue-ID: AAI-4169 Change-Id: I6a4eb66c3b428cda736a32541a2af42fd89bb1e8 Signed-off-by: aditi.shukla@t-systems.com --- pom.xml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 5dc94e7..c5d2b70 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,6 @@ - 2.7.18 UTF-8 UTF-8 @@ -58,7 +57,7 @@ - 0.8.6 + 0.8.7 jacoco ${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml @@ -90,7 +89,7 @@ 1.9.4 1.2.11 3.0.13 - 2021.0.9 + 2020.0.2 1.27.0 2.16.1 @@ -370,10 +369,6 @@ xmlunit-legacy test - - javax.xml.bind - jaxb-api - javax.xml.ws jaxws-api @@ -382,10 +377,6 @@ com.sun.xml.bind jaxb-core - - com.sun.xml.bind - jaxb-impl - jakarta.activation jakarta.activation-api @@ -410,6 +401,14 @@ logstash-logback-encoder 6.6 + + javax.xml.bind + jaxb-api + + + com.sun.xml.bind + jaxb-impl + -- 2.16.6 From db65b4502d003e5750fff95da1da0757b4a9527a Mon Sep 17 00:00:00 2001 From: "tushar.mohanty@t-systems.com" Date: Tue, 1 Jul 2025 08:13:28 +0200 Subject: [PATCH 11/16] springboot 2.7 upgrade Issue-ID: AAI-4184 Change-Id: If5b1479872f009960e4504798c75df158b64e040 Signed-off-by: tushar.mohanty@t-systems.com --- pom.xml | 50 +++++---- src/main/resources/application.properties | 2 +- .../java/org/onap/aai/babel/TestApplication.java | 20 ++-- .../filters/AuthenticationRequestFilterTest.java | 119 ++++++++++----------- src/test/resources/application.properties | 2 + 5 files changed, 102 insertions(+), 91 deletions(-) diff --git a/pom.xml b/pom.xml index c5d2b70..2029f0b 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ org.onap.aai.aai-common aai-parent - 1.13.3 + 1.15.5 org.onap.aai @@ -41,6 +41,7 @@ + UTF-8 UTF-8 @@ -57,7 +58,7 @@ - 0.8.7 + 0.8.11 jacoco ${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml @@ -87,22 +88,21 @@ 1.6.5 1.9.4 - 1.2.11 3.0.13 - 2020.0.2 + 2021.0.8 1.27.0 2.16.1 1.15 - + 2.3.0 2.1.1 0.15.1 org.onap.aai.schema-service - 1.12.7 + 1.12.10 3.12.0 1.6.4 - + 1.13.0 1.4.5 1.6 @@ -289,15 +289,16 @@ org.onap.aai.logging-service common-logging + ${common.logging.version} ch.qos.logback logback-classic + compile ch.qos.logback logback-core - ${logback.core.version} commons-codec @@ -332,6 +333,7 @@ org.onap.aai rest-client + ${aai.rest.client.version} @@ -369,6 +371,10 @@ xmlunit-legacy test + + javax.xml.bind + jaxb-api + javax.xml.ws jaxws-api @@ -376,6 +382,12 @@ com.sun.xml.bind jaxb-core + ${jaxb.version} + + + com.sun.xml.bind + jaxb-impl + ${jaxb.version} jakarta.activation @@ -396,19 +408,11 @@ 1.18.32 provided - - net.logstash.logback - logstash-logback-encoder - 6.6 - - - javax.xml.bind - jaxb-api - - - com.sun.xml.bind - jaxb-impl - + + org.slf4j + slf4j-api + 2.0.9 + @@ -755,7 +759,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.0.0-M5 + 3.1.2 @@ -781,4 +785,4 @@ - + \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6bd8991..77835f3 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,5 +1,5 @@ server.port=9516 -security.require-ssl=false +#security.require-ssl=false server.ssl.enabled=false server.ssl.key-store=${CONFIG_HOME}/auth/tomcat_keystore server.ssl.client-auth=need diff --git a/src/test/java/org/onap/aai/babel/TestApplication.java b/src/test/java/org/onap/aai/babel/TestApplication.java index a665119..c8e96e3 100644 --- a/src/test/java/org/onap/aai/babel/TestApplication.java +++ b/src/test/java/org/onap/aai/babel/TestApplication.java @@ -24,16 +24,24 @@ package org.onap.aai.babel; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.TestPropertySource; -@SpringBootTest(classes = BabelApplication.class) +@SpringBootTest( + classes = BabelApplication.class, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT +) +@ActiveProfiles("test") +@TestPropertySource(properties = { + "APP_HOME=.", + "CONFIG_HOME=src/test/resources" +}) public class TestApplication { - /** - * Initialize System Properties. - */ @BeforeEach public void init() { System.setProperty("APP_HOME", "."); @@ -43,7 +51,7 @@ public class TestApplication { @Test public void testApplicationStarts() { assertDoesNotThrow(() -> { - BabelApplication.main(new String[]{}); + BabelApplication.main(new String[] {}); BabelApplication.exit(); }); } @@ -51,7 +59,7 @@ public class TestApplication { @Test public void testApplicationStartsWithObfuscatedPassword() { assertDoesNotThrow(() -> { - BabelApplication.main(new String[]{}); + BabelApplication.main(new String[] {}); BabelApplication.exit(); }); } diff --git a/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java index d8f2965..ac72b6d 100644 --- a/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java +++ b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java @@ -21,92 +21,89 @@ package org.onap.aai.babel.filters; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.onap.aai.auth.AAIAuthException; import org.onap.aai.auth.AAIMicroServiceAuth; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.test.web.reactive.server.WebTestClient; +import org.onap.aai.auth.AAIMicroServiceAuthCore.HTTP_METHODS; + +import java.io.IOException; +import java.util.List; import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.core.PathSegment; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; -import java.time.Duration; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.*; -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class AuthenticationRequestFilterTest { - @LocalServerPort - private int port; + @Mock + private AAIMicroServiceAuth authService; + + @Mock + private HttpServletRequest servletRequest; - @Autowired - private WebTestClient webTestClient; + @Mock + private ContainerRequestContext requestContext; - @MockBean - private AAIMicroServiceAuth authService; + @Mock + private UriInfo uriInfo; + + @Mock + private PathSegment pathSegment; + + private AuthenticationRequestFilter filter; @BeforeEach public void setUp() { MockitoAnnotations.openMocks(this); - webTestClient = webTestClient.mutate() - .responseTimeout(Duration.ofMillis(300000)) - .build(); - } + filter = new AuthenticationRequestFilter(authService, servletRequest); - @Test - public void testAuthorizedRequest() throws AAIAuthException { - // Mocking authService to return true - when(authService.validateRequest(any(), any(HttpServletRequest.class), any(), anyString())).thenReturn(true); - - webTestClient.post() - .uri("/v1/app/generateArtifacts") - .exchange() - .expectStatus().is5xxServerError(); + when(requestContext.getUriInfo()).thenReturn(uriInfo); + when(uriInfo.getPathSegments()).thenReturn(List.of(pathSegment)); + when(pathSegment.getPath()).thenReturn("some-segment"); } @Test - @Disabled - public void testUnauthorizedRequest() throws AAIAuthException { - // Mocking authService to return false - when(authService.validateRequest(any(), any(HttpServletRequest.class), any(), anyString())).thenReturn(false); - - webTestClient.post() - .uri("/services/babel-service/v1/app/generateArtifacts") - .exchange() - .expectStatus().isUnauthorized(); - } + public void testAuthorizedRequest() throws IOException, AAIAuthException { + when(requestContext.getMethod()).thenReturn("GET"); + when(authService.validateRequest(any(), eq(servletRequest), eq(HTTP_METHODS.GET), eq("some-segment"))) + .thenReturn(true); - // @TestConfiguration - // static class TestConfig { + filter.filter(requestContext); - // @Bean - // public FilterRegistrationBean loggingFilter(AAIMicroServiceAuth authService, HttpServletRequest servletRequest) { - // FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + verify(requestContext, never()).abortWith(any()); + } - // registrationBean.setFilter(new AuthenticationRequestFilter(authService, servletRequest)); - // registrationBean.addUrlPatterns("/test"); + @Test + public void testUnauthorizedRequest() throws IOException, AAIAuthException { + when(requestContext.getMethod()).thenReturn("POST"); + when(authService.validateRequest(any(), eq(servletRequest), eq(HTTP_METHODS.POST), eq("some-segment"))) + .thenReturn(false); - // return registrationBean; - // } + filter.filter(requestContext); - // @Bean - // public HttpServletRequest httpServletRequest() { - // return new MockHttpServletRequest(); - // } - // } + ArgumentCaptor captor = ArgumentCaptor.forClass(Response.class); + verify(requestContext).abortWith(captor.capture()); + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), captor.getValue().getStatus()); + } - // @RestController - // static class TestController { + @Test + public void testExceptionDuringValidation() throws IOException, AAIAuthException { + when(requestContext.getMethod()).thenReturn("DELETE"); + when(authService.validateRequest(any(), eq(servletRequest), eq(HTTP_METHODS.DELETE), eq("some-segment"))) + .thenThrow(new RuntimeException("Failure")); + + filter.filter(requestContext); - // @GetMapping("/test") - // public ResponseEntity testEndpoint() { - // return ResponseEntity.ok("Authorized"); - // } - // } + ArgumentCaptor captor = ArgumentCaptor.forClass(Response.class); + verify(requestContext).abortWith(captor.capture()); + assertEquals(Response.Status.FORBIDDEN.getStatusCode(), captor.getValue().getStatus()); + } } diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 8c3bd59..d4ab747 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -1 +1,3 @@ spring.sleuth.enabled=false +server.port= 0 +spring.main.allow-bean-definition-overriding= true -- 2.16.6 From cb0a6774eb01fe0014ac8be0d26bfbb6326bc143 Mon Sep 17 00:00:00 2001 From: "tushar.mohanty@t-systems.com" Date: Fri, 25 Jul 2025 10:48:15 +0200 Subject: [PATCH 12/16] Jdk-17 migration changes Issue-ID: AAI-4193 Change-Id: I4f5cfb284693b475f547a716f62f21e593f1456c Signed-off-by: tushar.mohanty@t-systems.com --- pom.xml | 42 +++++++++++++++++++++++------------------- src/main/docker/Dockerfile | 2 +- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index 2029f0b..13fbcb0 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ org.onap.aai babel - 1.13.5-SNAPSHOT + 1.13.7-SNAPSHOT jar aai-babel @@ -69,10 +69,10 @@ 3.2.0 3.8.1 - 11 - 11 - 11 - 11 + 17 + 17 + 17 + 17 3.7.0.1746 @@ -89,7 +89,7 @@ 1.9.4 3.0.13 - 2021.0.8 + 2021.0.9 1.27.0 2.16.1 @@ -111,7 +111,8 @@ 1.2.2 yyyyMMdd'T'HHmmss'Z' - + 3.0.1 + 3.0.1 @@ -303,22 +304,18 @@ commons-codec commons-codec - ${commons.codec.version} org.apache.commons commons-compress - ${commons.compress.version} org.apache.commons commons-lang3 - ${commons.lang3.version} javax.ws.rs javax.ws.rs-api - ${javax.ws.rs.version} org.codehaus.groovy @@ -351,7 +348,6 @@ org.hamcrest hamcrest - 2.2 test @@ -392,7 +388,6 @@ jakarta.activation jakarta.activation-api - ${jakarta.activation.version} org.springframework.cloud @@ -413,6 +408,16 @@ slf4j-api 2.0.9 + + jakarta.xml.bind + jakarta.xml.bind-api + ${jakarta.xml.bind-api.version} + + + org.glassfish.jaxb + jaxb-runtime + ${jaxb-runtime.version} + @@ -430,7 +435,6 @@ org.springframework.boot spring-boot-maven-plugin - ${spring.boot.version} -DCONFIG_HOME=src/main/resources @@ -572,7 +576,6 @@ com.mycila license-maven-plugin - 3.0
License.txt
@@ -740,7 +743,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M8 + 3.1.2 false @@ -749,7 +752,10 @@ . src/test/resources - ${surefireArgLine} + + + -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true ${surefireArgLine} + **/IT*.java @@ -759,7 +765,6 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.1.2 @@ -779,7 +784,6 @@ org.sonarsource.scanner.maven sonar-maven-plugin - ${sonar.scanner.version} diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile index 8d474ea..ee885d6 100644 --- a/src/main/docker/Dockerfile +++ b/src/main/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:11-jre-alpine +FROM eclipse-temurin:17-jre-alpine USER 1000 ARG MICRO_HOME=/opt/app/babel -- 2.16.6 From 34c7b5b11a4419a6bad9ed495f3bcbad56f1c588 Mon Sep 17 00:00:00 2001 From: Kevin Sandi Date: Sat, 9 Aug 2025 22:55:07 -0600 Subject: [PATCH 13/16] Chore: Add dependabot config Issue-ID: CIMAN-33 Change-Id: I491e21804c0058dcf9505182ede8dbb31fd75ace Signed-off-by: Kevin Sandi --- .github/dependabot.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..43cf551 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,15 @@ +--- +# SPDX-FileCopyrightText: 2025 The Linux Foundation +# SPDX-License-Identifier: Apache-2.0 + +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" \ No newline at end of file -- 2.16.6 From 8f2cd76702096dec5f5fcff863113d50c0978f2c Mon Sep 17 00:00:00 2001 From: "tushar.mohanty@t-systems.com" Date: Wed, 10 Sep 2025 08:25:57 +0200 Subject: [PATCH 14/16] spring boot 3.1.12 upgrade Issue-ID: AAI-4204 Change-Id: Id716e050643d93b8ed645f2b0d2521cd82792216 Signed-off-by: tushar.mohanty@t-systems.com --- pom.xml | 170 +++++++++++---------- .../java/org/onap/aai/auth/AAIAuthException.java | 3 + .../org/onap/aai/auth/AAIMicroServiceAuth.java | 6 +- .../org/onap/aai/auth/AAIMicroServiceAuthCore.java | 7 +- .../org/onap/aai/babel/JerseyConfiguration.java | 2 +- .../aai/babel/csar/CsarConverterException.java | 3 + .../csar/extractor/InvalidArchiveException.java | 3 + .../vnfcatalog/InvalidNumberOfNodesException.java | 3 + .../csar/vnfcatalog/ToscaToCatalogException.java | 3 + .../csar/vnfcatalog/VnfVendorImageExtractor.java | 4 +- .../babel/filters/AuthenticationRequestFilter.java | 14 +- .../aai/babel/filters/LoggingRequestFilter.java | 13 +- .../onap/aai/babel/logging/ApplicationMsgs.java | 3 +- .../java/org/onap/aai/babel/logging/LogHelper.java | 8 +- .../babel/parser/ArtifactGeneratorToscaParser.java | 12 +- .../org/onap/aai/babel/request/RequestHeaders.java | 4 +- .../babel/service/GenerateArtifactsController.java | 12 +- .../service/GenerateArtifactsControllerImpl.java | 4 +- .../org/onap/aai/babel/service/InfoService.java | 10 +- .../aai/babel/util/RequestValidationException.java | 3 + .../aai/babel/xml/generator/ModelGenerator.java | 2 +- .../generator/XmlArtifactGenerationException.java | 3 + .../xml/generator/api/AaiArtifactGenerator.java | 6 +- .../babel/xml/generator/api/AaiModelGenerator.java | 6 +- .../generator/error/IllegalAccessException.java | 3 + .../aai/babel/xml/generator/model/Resource.java | 4 +- .../onap/aai/babel/xml/generator/model/Widget.java | 3 +- src/main/resources/application.properties | 10 +- src/main/resources/logback.xml | 12 +- .../filters/AuthenticationRequestFilterTest.java | 10 +- .../java/org/onap/aai/babel/logging/LogReader.java | 3 +- .../aai/babel/logging/TestApplicationLogger.java | 4 +- .../service/TestGenerateArtifactsServiceImpl.java | 8 +- .../onap/aai/babel/service/TestRequestHeaders.java | 4 +- .../org/onap/aai/babel/util/ArtifactTestUtils.java | 4 +- src/test/resources/application.properties | 5 +- src/test/resources/response/response.json | 2 +- .../response/responseWithVersionLessThan1.json | 2 +- .../response/validNoVnfConfigurationResponse.json | 2 +- 39 files changed, 210 insertions(+), 170 deletions(-) diff --git a/pom.xml b/pom.xml index 13fbcb0..9bffd77 100644 --- a/pom.xml +++ b/pom.xml @@ -21,25 +21,28 @@ ============LICENSE_END========================================================= --> - 4.0.0 org.onap.aai.aai-common aai-parent - 1.15.5 + 1.16.1 org.onap.aai babel - 1.13.7-SNAPSHOT + 1.13.8-SNAPSHOT jar aai-babel ONAP AAI Babel Microservice + 5.0.0 + 17 UTF-8 @@ -58,7 +61,7 @@ - 0.8.11 + 0.8.13 jacoco ${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml @@ -68,7 +71,7 @@ 3.2.0 - 3.8.1 + 3.14.0 17 17 17 @@ -89,17 +92,15 @@ 1.9.4 3.0.13 - 2021.0.9 1.27.0 2.16.1 1.15 - 2.3.0 2.1.1 0.15.1 org.onap.aai.schema-service - 1.12.10 + 1.13.1-SNAPSHOT 3.12.0 1.6.4 1.13.0 @@ -111,8 +112,12 @@ 1.2.2 yyyyMMdd'T'HHmmss'Z' - 3.0.1 - 3.0.1 + 4.0.2 + 3.0.2 + 4.0.8 + 1.4.14 + 6.6 + 2.0.9 @@ -261,6 +266,10 @@ org.springframework.boot spring-boot-starter-tomcat + + org.springframework.boot + spring-boot-starter-tomcat + @@ -295,12 +304,9 @@ ch.qos.logback logback-classic + ${logback.version} compile - - ch.qos.logback - logback-core - commons-codec commons-codec @@ -314,8 +320,21 @@ commons-lang3 - javax.ws.rs - javax.ws.rs-api + net.logstash.logback + logstash-logback-encoder + ${logstash.logback.encoder.version} + + + org.apache.httpcomponents.client5 + httpclient5 + + + org.codehaus.janino + janino + + + jakarta.ws.rs + jakarta.ws.rs-api org.codehaus.groovy @@ -332,6 +351,13 @@ rest-client ${aai.rest.client.version} + + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided + + @@ -368,68 +394,67 @@ test - javax.xml.bind - jaxb-api - - - javax.xml.ws - jaxws-api - - - com.sun.xml.bind - jaxb-core - ${jaxb.version} + jakarta.xml.bind + jakarta.xml.bind-api - com.sun.xml.bind - jaxb-impl - ${jaxb.version} + jakarta.xml.ws + jakarta.xml.ws-api + provided jakarta.activation jakarta.activation-api - org.springframework.cloud - spring-cloud-starter-sleuth + io.micrometer + micrometer-tracing-bridge-otel + + + com.sun.xml.ws + jaxws-rt + 4.0.3 + provided - org.springframework.cloud - spring-cloud-sleuth-zipkin + io.opentelemetry + opentelemetry-exporter-zipkin org.projectlombok lombok - 1.18.32 provided - - org.slf4j - slf4j-api - 2.0.9 - - - jakarta.xml.bind - jakarta.xml.bind-api - ${jakarta.xml.bind-api.version} - - - org.glassfish.jaxb - jaxb-runtime - ${jaxb-runtime.version} - + + org.slf4j + slf4j-api + ${slf4j.api.version} + + + org.glassfish.jaxb + jaxb-runtime + ${jaxb-runtime.version} + + + org.jvnet.jaxb + jaxb-plugins-runtime + ${jaxb.plugin.version} + + + org.jvnet.jaxb + jaxb-plugin-annotate + ${jaxb.plugin.version} + + + org.onap.aai.schema-service + aai-annotations + ${aai-schema.version} + + + org.eclipse.jetty + jetty-server +
- - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud.version} - pom - import - - - @@ -499,9 +524,9 @@
- org.jvnet.jaxb2.maven2 - maven-jaxb2-plugin - ${mvn.jaxb2.version} + org.jvnet.jaxb + jaxb-maven-plugin + ${jaxb.plugin.version} process-sources @@ -522,16 +547,11 @@ -Xannotate + - org.jvnet.jaxb2_commons - jaxb2-basics-annotate - 0.6.4 - - - - org.jvnet.jaxb2_commons - jaxb2-annotate-plugin-test-annox-annotations - 1.0.0 + org.jvnet.jaxb + jaxb-plugins + 4.0.8 @@ -601,8 +621,6 @@ ${maven-compiler-plugin.version} true - ${maven-compiler-plugin.source} - ${maven-compiler-plugin.target} ${maven-compiler-plugin.test.source} ${maven-compiler-plugin.test.target} @@ -641,7 +659,6 @@ org.jacoco jacoco-maven-plugin - ${jacoco-maven-plugin.version} @@ -743,7 +760,6 @@ org.apache.maven.plugins maven-surefire-plugin - 3.1.2 false diff --git a/src/main/java/org/onap/aai/auth/AAIAuthException.java b/src/main/java/org/onap/aai/auth/AAIAuthException.java index 35adb5a..a7020c4 100644 --- a/src/main/java/org/onap/aai/auth/AAIAuthException.java +++ b/src/main/java/org/onap/aai/auth/AAIAuthException.java @@ -21,8 +21,11 @@ package org.onap.aai.auth; +import java.io.Serial; + public class AAIAuthException extends Exception { + @Serial private static final long serialVersionUID = 1L; public AAIAuthException(String string) { diff --git a/src/main/java/org/onap/aai/auth/AAIMicroServiceAuth.java b/src/main/java/org/onap/aai/auth/AAIMicroServiceAuth.java index 5e4f3c4..2e2395f 100644 --- a/src/main/java/org/onap/aai/auth/AAIMicroServiceAuth.java +++ b/src/main/java/org/onap/aai/auth/AAIMicroServiceAuth.java @@ -22,10 +22,10 @@ package org.onap.aai.auth; import java.security.cert.X509Certificate; -import javax.inject.Inject; +import jakarta.inject.Inject; import javax.security.auth.x500.X500Principal; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.core.HttpHeaders; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.core.HttpHeaders; import org.onap.aai.babel.config.BabelAuthConfig; import org.onap.aai.babel.logging.LogHelper; import org.onap.aai.cl.api.Logger; diff --git a/src/main/java/org/onap/aai/auth/AAIMicroServiceAuthCore.java b/src/main/java/org/onap/aai/auth/AAIMicroServiceAuthCore.java index f1b3549..a9acf12 100644 --- a/src/main/java/org/onap/aai/auth/AAIMicroServiceAuthCore.java +++ b/src/main/java/org/onap/aai/auth/AAIMicroServiceAuthCore.java @@ -28,7 +28,6 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -129,15 +128,15 @@ public class AAIMicroServiceAuthCore { private static Optional locateConfigFile(String authPolicyFile) throws IOException { if (authPolicyFile != null) { List paths = new ArrayList<>(); - paths.add(Paths.get(".")); + paths.add(Path.of(".")); String configHome = System.getProperty("CONFIG_HOME"); if (configHome == null) { configHome = System.getProperty("APP_HOME") + "/appconfig"; } - paths.add(Paths.get(configHome)); - paths.add(Paths.get(configHome).resolve("auth")); + paths.add(Path.of(configHome)); + paths.add(Path.of(configHome).resolve("auth")); for (Path path : paths) { File authFile = path.resolve(authPolicyFile).toFile(); diff --git a/src/main/java/org/onap/aai/babel/JerseyConfiguration.java b/src/main/java/org/onap/aai/babel/JerseyConfiguration.java index ff8c5bb..bac441f 100644 --- a/src/main/java/org/onap/aai/babel/JerseyConfiguration.java +++ b/src/main/java/org/onap/aai/babel/JerseyConfiguration.java @@ -20,7 +20,7 @@ */ package org.onap.aai.babel; -import javax.ws.rs.ApplicationPath; +import jakarta.ws.rs.ApplicationPath; import org.glassfish.jersey.server.ResourceConfig; import org.onap.aai.babel.service.GenerateArtifactsControllerImpl; import org.onap.aai.babel.service.InfoService; diff --git a/src/main/java/org/onap/aai/babel/csar/CsarConverterException.java b/src/main/java/org/onap/aai/babel/csar/CsarConverterException.java index 12b324e..84bf4e2 100644 --- a/src/main/java/org/onap/aai/babel/csar/CsarConverterException.java +++ b/src/main/java/org/onap/aai/babel/csar/CsarConverterException.java @@ -20,11 +20,14 @@ */ package org.onap.aai.babel.csar; +import java.io.Serial; + /** * This class represents an exception encountered when attempting to convert the YAML files in a CSAR archive into XML. */ public class CsarConverterException extends Exception { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/src/main/java/org/onap/aai/babel/csar/extractor/InvalidArchiveException.java b/src/main/java/org/onap/aai/babel/csar/extractor/InvalidArchiveException.java index 97d72d4..5403aa5 100644 --- a/src/main/java/org/onap/aai/babel/csar/extractor/InvalidArchiveException.java +++ b/src/main/java/org/onap/aai/babel/csar/extractor/InvalidArchiveException.java @@ -20,9 +20,12 @@ */ package org.onap.aai.babel.csar.extractor; +import java.io.Serial; + /** This class represents an exception encountered when processing an archive in memory. */ public class InvalidArchiveException extends Exception { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/InvalidNumberOfNodesException.java b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/InvalidNumberOfNodesException.java index 425982b..7d86010 100644 --- a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/InvalidNumberOfNodesException.java +++ b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/InvalidNumberOfNodesException.java @@ -20,11 +20,14 @@ */ package org.onap.aai.babel.csar.vnfcatalog; +import java.io.Serial; + /** * This class represents a scenario when there are invalid number of Nodes found during processing. */ class InvalidNumberOfNodesException extends Exception { /** Default ID */ + @Serial private static final long serialVersionUID = 1L; InvalidNumberOfNodesException(String message) { diff --git a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/ToscaToCatalogException.java b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/ToscaToCatalogException.java index 2ef9dc8..d781786 100644 --- a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/ToscaToCatalogException.java +++ b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/ToscaToCatalogException.java @@ -20,12 +20,15 @@ */ package org.onap.aai.babel.csar.vnfcatalog; +import java.io.Serial; + /** * This class represents an exception raised when trying to extract VNFCatalog data out of a CSAR file. */ public class ToscaToCatalogException extends Exception { /** Defaulted */ + @Serial private static final long serialVersionUID = 1L; /** diff --git a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java index 8973f57..e3d104d 100644 --- a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java +++ b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java @@ -44,7 +44,7 @@ import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; import org.onap.sdc.toscaparser.api.NodeTemplate; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.core.Response; /** * This class is responsible for extracting Virtual Network Function (VNF) information from a TOSCA 1.1 CSAR package. @@ -212,7 +212,7 @@ public class VnfVendorImageExtractor { NodeTemplate vnfConfigurationNode = vnfConfigs.get(0); applicationLogger.info(ApplicationMsgs.DISTRIBUTION_EVENT, - String.format("Found VNF Configuration node \"%s\"", vnfConfigurationNode)); + "Found VNF Configuration node \"%s\"".formatted(vnfConfigurationNode)); if (vnfConfigs.size() > 1) { throw new InvalidNumberOfNodesException("Only one VNF configuration node is allowed however " diff --git a/src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java b/src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java index deeafb0..88e6f52 100644 --- a/src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java +++ b/src/main/java/org/onap/aai/babel/filters/AuthenticationRequestFilter.java @@ -29,13 +29,13 @@ import org.springframework.stereotype.Component; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.ext.Provider; -import javax.ws.rs.core.PathSegment; -import javax.ws.rs.core.Response; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerRequestFilter; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.ext.Provider; +import jakarta.ws.rs.core.PathSegment; +import jakarta.ws.rs.core.Response; import java.io.IOException; import java.util.List; diff --git a/src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java b/src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java index 9699be4..d8fec5c 100644 --- a/src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java +++ b/src/main/java/org/onap/aai/babel/filters/LoggingRequestFilter.java @@ -27,11 +27,11 @@ import org.onap.aai.babel.request.RequestHeaders; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.core.UriInfo; -import javax.ws.rs.core.MultivaluedMap; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerRequestFilter; +import jakarta.ws.rs.core.UriInfo; +import jakarta.ws.rs.core.MultivaluedMap; import java.io.IOException; import java.util.UUID; @@ -52,8 +52,7 @@ public class LoggingRequestFilter implements ContainerRequestFilter { applicationLogger.startAudit(headers, servletRequest); applicationLogger.info(ApplicationMsgs.BABEL_REQUEST_PAYLOAD, "Received request: " + headers + requestBody); - applicationLogger.debug(String.format( - "Received request. UriInfo \"%s\", HttpHeaders \"%s\", ServletRequest \"%s\", Request \"%s\"", uriInfo, + applicationLogger.debug("Received request. UriInfo \"%s\", HttpHeaders \"%s\", ServletRequest \"%s\", Request \"%s\"".formatted(uriInfo, headers, servletRequest, requestBody)); // Additional name/value pairs according to EELF guidelines diff --git a/src/main/java/org/onap/aai/babel/logging/ApplicationMsgs.java b/src/main/java/org/onap/aai/babel/logging/ApplicationMsgs.java index 7d18a40..6756994 100644 --- a/src/main/java/org/onap/aai/babel/logging/ApplicationMsgs.java +++ b/src/main/java/org/onap/aai/babel/logging/ApplicationMsgs.java @@ -22,9 +22,10 @@ package org.onap.aai.babel.logging; import com.att.eelf.i18n.EELFResourceManager; +import com.att.eelf.i18n.EELFResolvableErrorEnum; import org.onap.aai.cl.eelf.LogMessageEnum; -public enum ApplicationMsgs implements LogMessageEnum { +public enum ApplicationMsgs implements LogMessageEnum, EELFResolvableErrorEnum { DISTRIBUTION_EVENT, // MESSAGE_AUDIT, // diff --git a/src/main/java/org/onap/aai/babel/logging/LogHelper.java b/src/main/java/org/onap/aai/babel/logging/LogHelper.java index 406cdb8..e3c528b 100644 --- a/src/main/java/org/onap/aai/babel/logging/LogHelper.java +++ b/src/main/java/org/onap/aai/babel/logging/LogHelper.java @@ -30,9 +30,9 @@ import java.util.Optional; import java.util.function.BiConsumer; import java.util.function.Consumer; -import javax.servlet.ServletRequest; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response.Status; +import jakarta.servlet.ServletRequest; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.core.Response.Status; import org.apache.commons.lang3.time.StopWatch; import org.onap.aai.babel.request.RequestHeaders; @@ -181,7 +181,7 @@ public enum LogHelper implements Logger { clientHost = servletRequest.getRemoteHost(); clientIPAddress = servletRequest.getRemoteAddr(); - if (!partnerName.isPresent()) { + if (partnerName.isEmpty()) { partnerName = Optional.ofNullable(clientHost); } } diff --git a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java index 2816cb5..4e897a1 100644 --- a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java +++ b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java @@ -107,7 +107,7 @@ public class ArtifactGeneratorToscaParser { log.debug("Getting TOSCA Mappings Configuration"); File file = new File(configLocation); if (!file.exists()) { - throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGFILE_NOT_FOUND, configLocation)); + throw new IllegalArgumentException(GENERATOR_AAI_CONFIGFILE_NOT_FOUND.formatted(configLocation)); } GroupConfiguration config; @@ -269,7 +269,7 @@ public class ArtifactGeneratorToscaParser { } if (resourceModel.hasWidgetType("ALLOTTED_RESOURCE") && !foundProvidingService) { - throw new XmlArtifactGenerationException(String.format(GENERATOR_AAI_PROVIDING_SERVICE_MISSING, + throw new XmlArtifactGenerationException(GENERATOR_AAI_PROVIDING_SERVICE_MISSING.formatted( Optional.ofNullable(resourceModel.getModelId()).orElse(""))); } } @@ -313,7 +313,7 @@ public class ArtifactGeneratorToscaParser { */ private List generateResourcesAndWidgets(final ArrayList memberNodes, final Resource groupModel) throws XmlArtifactGenerationException { - log.debug(String.format("Processing member nodes for Group %s (invariant UUID %s)", // + log.debug("Processing member nodes for Group %s (invariant UUID %s)".formatted( // groupModel.getModelName(), groupModel.getModelId())); List resources = new ArrayList<>(); @@ -322,13 +322,13 @@ public class ArtifactGeneratorToscaParser { String nodeTypeName = nodeTemplate.getType(); final String metadataType = nodeTemplate.getMetaData().getValue("type"); - log.debug(String.format("Get model for %s (metadata type %s)", nodeTypeName, metadataType)); + log.debug("Get model for %s (metadata type %s)".formatted(nodeTypeName, metadataType)); Resource memberModel = Model.getModelFor(nodeTypeName, metadataType); if (memberModel != null) { memberModel.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties()); - log.debug(String.format("Generating grouped %s (%s) from TOSCA type %s", + log.debug("Generating grouped %s (%s) from TOSCA type %s".formatted( memberModel.getClass().getSuperclass().getSimpleName(), memberModel.getClass(), nodeTypeName)); addRelatedModel(groupModel, memberModel); @@ -493,7 +493,7 @@ public class ArtifactGeneratorToscaParser { if (nodeProperties == null || nodeProperties.get("providing_service_uuid") == null || nodeProperties.get("providing_service_invariant_uuid") == null) { throw new IllegalArgumentException( - String.format(GENERATOR_AAI_PROVIDING_SERVICE_METADATA_MISSING, resourceModel.getModelId())); + GENERATOR_AAI_PROVIDING_SERVICE_METADATA_MISSING.formatted(resourceModel.getModelId())); } Map properties = populateStringProperties(nodeProperties); properties.put(VERSION, "1.0"); diff --git a/src/main/java/org/onap/aai/babel/request/RequestHeaders.java b/src/main/java/org/onap/aai/babel/request/RequestHeaders.java index 19d5425..574ec3c 100644 --- a/src/main/java/org/onap/aai/babel/request/RequestHeaders.java +++ b/src/main/java/org/onap/aai/babel/request/RequestHeaders.java @@ -22,8 +22,8 @@ package org.onap.aai.babel.request; import java.util.Optional; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MultivaluedMap; /** Bean to represent the ECOMP request/transaction IDs required for EELF logging. */ public class RequestHeaders { diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java index 520d4fb..f45d2cc 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java @@ -20,12 +20,12 @@ */ package org.onap.aai.babel.service; -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import org.onap.aai.auth.AAIAuthException; import org.onap.aai.babel.service.data.BabelRequest; diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java index 8e06f38..544b2c4 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsControllerImpl.java @@ -28,8 +28,8 @@ import lombok.RequiredArgsConstructor; import java.util.Base64; import java.util.List; -import javax.ws.rs.core.*; -import javax.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.*; +import jakarta.ws.rs.core.Response.Status; import org.apache.commons.lang3.time.StopWatch; import org.onap.aai.babel.csar.CsarConverterException; diff --git a/src/main/java/org/onap/aai/babel/service/InfoService.java b/src/main/java/org/onap/aai/babel/service/InfoService.java index 7c3e21e..4621bad 100644 --- a/src/main/java/org/onap/aai/babel/service/InfoService.java +++ b/src/main/java/org/onap/aai/babel/service/InfoService.java @@ -26,11 +26,11 @@ import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; import org.springframework.stereotype.Service; /** diff --git a/src/main/java/org/onap/aai/babel/util/RequestValidationException.java b/src/main/java/org/onap/aai/babel/util/RequestValidationException.java index cf5322a..6b8b3bb 100644 --- a/src/main/java/org/onap/aai/babel/util/RequestValidationException.java +++ b/src/main/java/org/onap/aai/babel/util/RequestValidationException.java @@ -20,9 +20,12 @@ */ package org.onap.aai.babel.util; +import java.io.Serial; + /** This exception is thrown when the request fails validation. */ public class RequestValidationException extends Exception { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/src/main/java/org/onap/aai/babel/xml/generator/ModelGenerator.java b/src/main/java/org/onap/aai/babel/xml/generator/ModelGenerator.java index ecc81fd..c8ef9de 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/ModelGenerator.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/ModelGenerator.java @@ -36,7 +36,7 @@ import org.onap.aai.babel.xml.generator.data.Artifact; import org.onap.aai.babel.xml.generator.data.GenerationData; import org.onap.aai.babel.xml.generator.data.GeneratorUtil; import org.onap.aai.babel.xml.generator.data.GroupType; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.core.Response; /** * This class is responsible for generating XML model artifacts from a collection of CSAR artifacts. diff --git a/src/main/java/org/onap/aai/babel/xml/generator/XmlArtifactGenerationException.java b/src/main/java/org/onap/aai/babel/xml/generator/XmlArtifactGenerationException.java index ebb6c47..8e25ede 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/XmlArtifactGenerationException.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/XmlArtifactGenerationException.java @@ -21,12 +21,15 @@ package org.onap.aai.babel.xml.generator; +import java.io.Serial; + /** * This class represents a fatal exception encountered when generating an Artifact. * */ public class XmlArtifactGenerationException extends Exception { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java index c42518d..71eb44d 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java @@ -88,7 +88,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator { String configLocation = System.getProperty(ArtifactGeneratorToscaParser.PROPERTY_TOSCA_MAPPING_FILE); if (configLocation == null) { throw new IllegalArgumentException( - String.format(ArtifactGeneratorToscaParser.GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND, + ArtifactGeneratorToscaParser.GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND.formatted( ArtifactGeneratorToscaParser.PROPERTY_TOSCA_MAPPING_FILE)); } @@ -240,7 +240,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator { ArrayList members = group.getMembers(); if (members != null && members.contains(nodeTemplate.getName()) && WidgetConfigurationUtil.isSupportedInstanceGroup(group.getType())) { - log.debug(String.format("Adding group %s (type %s) with members %s", group.getName(), + log.debug("Adding group %s (type %s) with members %s".formatted(group.getName(), group.getType(), members)); Resource groupModel = parser.createInstanceGroupModel( @@ -484,7 +484,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator { } else { String versionRegex = "^\\d*\\.\\d*$"; if (!(serviceVersion.matches(versionRegex))) { - throw new IllegalArgumentException(String.format(GENERATOR_AAI_INVALID_SERVICE_VERSION)); + throw new IllegalArgumentException(GENERATOR_AAI_INVALID_SERVICE_VERSION.formatted()); } } return serviceVersion; diff --git a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiModelGenerator.java b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiModelGenerator.java index 69bbb80..1b8dfbd 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiModelGenerator.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiModelGenerator.java @@ -25,9 +25,9 @@ package org.onap.aai.babel.xml.generator.api; import java.io.StringWriter; import java.util.Collection; import java.util.List; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Marshaller; import org.onap.aai.babel.logging.ApplicationMsgs; import org.onap.aai.babel.logging.LogHelper; import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException; diff --git a/src/main/java/org/onap/aai/babel/xml/generator/error/IllegalAccessException.java b/src/main/java/org/onap/aai/babel/xml/generator/error/IllegalAccessException.java index 3c907cb..e3b33cc 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/error/IllegalAccessException.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/error/IllegalAccessException.java @@ -20,8 +20,11 @@ */ package org.onap.aai.babel.xml.generator.error; +import java.io.Serial; + public class IllegalAccessException extends RuntimeException { + @Serial private static final long serialVersionUID = 1L; public IllegalAccessException(String message) { diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java index 8c01a50..61eccb7 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java @@ -65,8 +65,8 @@ public class Resource extends Model { @Override public boolean equals(Object obj) { - if (obj instanceof Resource) { - return getModelNameVersionId().equals(((Resource) obj).getModelNameVersionId()); + if (obj instanceof Resource resource) { + return getModelNameVersionId().equals(resource.getModelNameVersionId()); } return false; } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java index 8f71f2b..38b0902 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java @@ -140,8 +140,7 @@ public class Widget extends Model { @Override public boolean equals(Object obj) { boolean isEqual = false; - if (obj instanceof Widget) { - Widget other = (Widget) obj; + if (obj instanceof Widget other) { if (getId().equals(other.getId())) { other.keys.addAll(this.keys); isEqual = true; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 77835f3..0632c62 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -7,15 +7,15 @@ server.ssl.client-auth=need spring.main.allow-bean-definition-overriding=true server.servlet.context-path=/services/babel-service logging.config=${CONFIG_HOME}/logback.xml +# Logging pattern containing traceId and spanId; no longer provided through Sleuth by default +logging.pattern.level="%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]" tosca.mappings.config=${CONFIG_HOME}/tosca-mappings.json spring.application.name=aai-babel -spring.sleuth.enabled=true +management.tracing.enabled=true spring.zipkin.baseUrl=http://jaeger-collector.istio-system:9411 spring.sleuth.messaging.jms.enabled = false -spring.sleuth.trace-id128=true -spring.sleuth.sampler.probability=1.0 -spring.sleuth.propagation.type=w3c, b3 -spring.sleuth.supports-join=false +management.tracing.sampling.probability=1.0 +management.tracing.propagation.type=w3c, b3 management.endpoints.web.exposure.include=* diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index d8c7771..6655276 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -78,12 +78,12 @@ - - - - DENY - NEUTRAL - + + throwable instanceof java.io.IOException + + DENY + NEUTRAL + 256 false diff --git a/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java index ac72b6d..122cc3a 100644 --- a/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java +++ b/src/test/java/org/onap/aai/babel/filters/AuthenticationRequestFilterTest.java @@ -32,11 +32,11 @@ import org.onap.aai.auth.AAIMicroServiceAuthCore.HTTP_METHODS; import java.io.IOException; import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.core.PathSegment; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.core.PathSegment; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriInfo; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.*; diff --git a/src/test/java/org/onap/aai/babel/logging/LogReader.java b/src/test/java/org/onap/aai/babel/logging/LogReader.java index e841860..bb882f3 100644 --- a/src/test/java/org/onap/aai/babel/logging/LogReader.java +++ b/src/test/java/org/onap/aai/babel/logging/LogReader.java @@ -27,7 +27,6 @@ import java.io.FileReader; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Comparator; import java.util.HashMap; import java.util.Map; @@ -73,7 +72,7 @@ public class LogReader { Path cachedLog = cachedLogMap.get(filenamePrefix); if (cachedLog == null) { - Optional latestFilePath = Files.list(Paths.get(logDirectory)) + Optional latestFilePath = Files.list(Path.of(logDirectory)) .filter(f -> Files.isDirectory(f) == false && f.getFileName().toString().startsWith(filenamePrefix)) .max(Comparator.comparingLong(f -> f.toFile().lastModified())); if (latestFilePath.isPresent()) { diff --git a/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java b/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java index c997e41..bdfe75d 100644 --- a/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java +++ b/src/test/java/org/onap/aai/babel/logging/TestApplicationLogger.java @@ -31,8 +31,8 @@ import com.att.eelf.configuration.EELFLogger.Level; import com.att.eelf.configuration.EELFManager; import java.io.IOException; import java.util.Arrays; -import javax.servlet.ServletRequest; -import javax.ws.rs.core.MultivaluedMap; +import jakarta.servlet.ServletRequest; +import jakarta.ws.rs.core.MultivaluedMap; import org.apache.commons.lang3.time.StopWatch; import org.junit.jupiter.api.Assertions; diff --git a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java index 740d5e3..42414ce 100644 --- a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java +++ b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java @@ -35,10 +35,10 @@ import java.util.List; import java.util.Map.Entry; import java.util.Optional; import javax.security.auth.x500.X500Principal; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MultivaluedHashMap; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MultivaluedHashMap; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriInfo; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.Mockito; diff --git a/src/test/java/org/onap/aai/babel/service/TestRequestHeaders.java b/src/test/java/org/onap/aai/babel/service/TestRequestHeaders.java index 4828132..61f034e 100644 --- a/src/test/java/org/onap/aai/babel/service/TestRequestHeaders.java +++ b/src/test/java/org/onap/aai/babel/service/TestRequestHeaders.java @@ -29,8 +29,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map.Entry; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MultivaluedHashMap; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MultivaluedHashMap; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.onap.aai.babel.request.RequestHeaders; diff --git a/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java b/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java index 2cf221d..de73fcc 100644 --- a/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java +++ b/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java @@ -33,7 +33,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.Charset; import java.nio.file.Files; -import java.nio.file.Paths; +import java.nio.file.Path; import java.util.Base64; import java.util.HashMap; import java.util.List; @@ -143,7 +143,7 @@ public class ArtifactTestUtils { } public String readstringFromFile(String resourceFile) throws IOException, URISyntaxException { - return Files.lines(Paths.get(getResource(resourceFile).toURI())).collect(Collectors.joining()); + return Files.lines(Path.of(getResource(resourceFile).toURI())).collect(Collectors.joining()); } /** diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index d4ab747..02aec7c 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -1,3 +1,6 @@ -spring.sleuth.enabled=false +# Logging pattern containing traceId and spanId; no longer provided through Sleuth by default +logging.pattern.level="%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]" +management.tracing.enabled=false server.port= 0 spring.main.allow-bean-definition-overriding= true +logging.level.root=INFO diff --git a/src/test/resources/response/response.json b/src/test/resources/response/response.json index 3ddc052..d7d6721 100644 --- a/src/test/resources/response/response.json +++ b/src/test/resources/response/response.json @@ -1 +1 @@ -[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] +[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 1.0\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] \ No newline at end of file diff --git a/src/test/resources/response/responseWithVersionLessThan1.json b/src/test/resources/response/responseWithVersionLessThan1.json index 9a22699..1349cef 100644 --- a/src/test/resources/response/responseWithVersionLessThan1.json +++ b/src/test/resources/response/responseWithVersionLessThan1.json @@ -1 +1 @@ -[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 0.1\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] +[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 0.1\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] \ No newline at end of file diff --git a/src/test/resources/response/validNoVnfConfigurationResponse.json b/src/test/resources/response/validNoVnfConfigurationResponse.json index c6b4dd8..4b73ec8 100644 --- a/src/test/resources/response/validNoVnfConfigurationResponse.json +++ b/src/test/resources/response/validNoVnfConfigurationResponse.json @@ -1 +1 @@ -[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"\n a8db6285-20ca-4fd3-9c85-e267bdb013f9\n service\n Network L4+\n \n \n 7f7f6fa4-275a-488f-8b3e-691a0765d57e\n Vscpaas_Test\n 1.0\n Vscpaas_Test\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n \n \n model.model-invariant-id\n b2b88a73-5c55-4984-99dd-a35c55935d14\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"\n 6f288081-b321-47c9-b038-6de70079a3bf\n resource\n \n \n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n ScpTestVsp..asc_heat-int2..module-0\n 1\n \n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n image-version-id\n \n \n model.model-invariant-id\n image-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n flavor-version-id\n \n \n model.model-invariant-id\n flavor-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n vnfc-version-id\n \n \n model.model-invariant-id\n vnfc-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n tenant-version-id\n \n \n model.model-invariant-id\n tenant-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vserver-version-id\n \n \n model.model-invariant-id\n vserver-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n l3-network-version-id\n \n \n model.model-invariant-id\n l3-network-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vf-module-version-id\n \n \n model.model-invariant-id\n vf-module-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"\n b2b88a73-5c55-4984-99dd-a35c55935d14\n resource\n \n \n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n SCP-Test-VSP\n 1.0\n SCP Test VSP\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n \n \n model.model-invariant-id\n 6f288081-b321-47c9-b038-6de70079a3bf\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"}] +[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"\n a8db6285-20ca-4fd3-9c85-e267bdb013f9\n service\n Network L4+\n \n \n 7f7f6fa4-275a-488f-8b3e-691a0765d57e\n Vscpaas_Test\n 1.0\n Vscpaas_Test\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n \n \n model.model-invariant-id\n b2b88a73-5c55-4984-99dd-a35c55935d14\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"\n 6f288081-b321-47c9-b038-6de70079a3bf\n resource\n \n \n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n ScpTestVsp..asc_heat-int2..module-0\n 1\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vf-module-version-id\n \n \n model.model-invariant-id\n vf-module-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vserver-version-id\n \n \n model.model-invariant-id\n vserver-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n image-version-id\n \n \n model.model-invariant-id\n image-invariant-id\n \n \n \n F\n unbounded\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n flavor-version-id\n \n \n model.model-invariant-id\n flavor-invariant-id\n \n \n \n F\n unbounded\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vnfc-version-id\n \n \n model.model-invariant-id\n vnfc-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n tenant-version-id\n \n \n model.model-invariant-id\n tenant-invariant-id\n \n \n \n F\n unbounded\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n l3-network-version-id\n \n \n model.model-invariant-id\n l3-network-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"\n b2b88a73-5c55-4984-99dd-a35c55935d14\n resource\n \n \n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n SCP-Test-VSP\n 1.0\n SCP Test VSP\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n \n \n model.model-invariant-id\n 6f288081-b321-47c9-b038-6de70079a3bf\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"}] \ No newline at end of file -- 2.16.6 From 9765558d6dfa29881fe6dbe38e838521a5132f47 Mon Sep 17 00:00:00 2001 From: "mithun.menon@t-systems.com" Date: Wed, 17 Sep 2025 12:45:35 +0200 Subject: [PATCH 15/16] Adding maven swagger plugin - To add swagger plugin for aai-babel Issue-ID: AAI-4205 Change-Id: I10df04bc71abc236c44ae7856525f1931e57aaf3 Signed-off-by: mithun.menon@t-systems.com --- pom.xml | 32 +++++++++++++++++++++- .../java/org/onap/aai/babel/BabelApplication.java | 10 +++++++ .../babel/service/GenerateArtifactsController.java | 18 +++++++++++- .../org/onap/aai/babel/service/InfoService.java | 8 +++++- 4 files changed, 65 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 9bffd77..265743a 100644 --- a/pom.xml +++ b/pom.xml @@ -118,6 +118,7 @@ 1.4.14 6.6 2.0.9 + 2.2.35 @@ -454,6 +455,11 @@ org.eclipse.jetty jetty-server + + io.swagger.core.v3 + swagger-jaxrs2-jakarta + ${swagger.version} + @@ -801,8 +807,32 @@ org.sonarsource.scanner.maven sonar-maven-plugin + + io.swagger.core.v3 + swagger-maven-plugin-jakarta + ${swagger.version} + + + generate-openapi + prepare-package + + resolve + + + false + ${project.build.directory}/generated-swagger-docs + openapi + JSON + + org.onap.aai.babel + + true + + + + - \ No newline at end of file + diff --git a/src/main/java/org/onap/aai/babel/BabelApplication.java b/src/main/java/org/onap/aai/babel/BabelApplication.java index 3270af5..66e2561 100644 --- a/src/main/java/org/onap/aai/babel/BabelApplication.java +++ b/src/main/java/org/onap/aai/babel/BabelApplication.java @@ -28,12 +28,22 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ImportResource; +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.info.Info; + @SpringBootApplication @ImportResource("classpath:babel-beans.xml") @ComponentScan(basePackages = { "org.onap.aai.aaf", "org.onap.aai.babel" }) +@OpenAPIDefinition( + info = @Info( + title = "ONAP AAI Babel APIs", + description = "Generates AAI model XML from SDC TOSCA artifacts", + version = "1.0.0" + ) +) public class BabelApplication extends SpringBootServletInitializer { private static ConfigurableApplicationContext context; diff --git a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java index f45d2cc..69b3ef2 100644 --- a/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java +++ b/src/main/java/org/onap/aai/babel/service/GenerateArtifactsController.java @@ -29,14 +29,30 @@ import jakarta.ws.rs.core.Response; import org.onap.aai.auth.AAIAuthException; import org.onap.aai.babel.service.data.BabelRequest; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; + /** Generate artifacts from the specified request content */ @Path("/app") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @FunctionalInterface +@Tag(name = "Babel Services", description = "APIs for generating artifacts from TOSCA models in AAI Babel") public interface GenerateArtifactsController { @POST @Path("/generateArtifacts") - Response generateArtifacts(BabelRequest babelRequest) throws AAIAuthException; + @Operation(summary = "Generate artifacts", description = "Takes a BabelRequest containing TOSCA service model artifacts and generates AAI-compatible artifacts.", responses = { + @ApiResponse(responseCode = "200", description = "Artifacts generated successfully", content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = Response.class))), + @ApiResponse(responseCode = "400", description = "Invalid request or malformed input"), + @ApiResponse(responseCode = "401", description = "Unauthorized (authentication failure)"), + @ApiResponse(responseCode = "500", description = "Internal server error during artifact generation") + }) + Response generateArtifacts( + @RequestBody(required = true, description = "The BabelRequest containing TOSCA service model artifacts.", content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = BabelRequest.class))) BabelRequest babelRequest) + throws AAIAuthException; } diff --git a/src/main/java/org/onap/aai/babel/service/InfoService.java b/src/main/java/org/onap/aai/babel/service/InfoService.java index 4621bad..409c17f 100644 --- a/src/main/java/org/onap/aai/babel/service/InfoService.java +++ b/src/main/java/org/onap/aai/babel/service/InfoService.java @@ -33,13 +33,18 @@ import jakarta.ws.rs.Produces; import jakarta.ws.rs.QueryParam; import org.springframework.stereotype.Service; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + /** - * Information service for the micro-service. Return status details to the caller. + * Information service for the micro-service. Return status details to the + * caller. * * @exclude */ @Path("/core/core-service") @Service +@Tag(name = "Babel Info Service", description = "Provides uptime and status information for the Babel micro-service.") public class InfoService { private Clock clock = Clock.systemDefaultZone(); @@ -53,6 +58,7 @@ public class InfoService { @GET @Path("/info") @Produces("text/plain") + @Operation(summary = "Get Babel service status", description = "Returns uptime, start time, and request count information for the Babel micro-service.") public String getInfo(@DefaultValue("text") @QueryParam("format") String format) { return "Status: Up\n" + statusReport(clock) + "\n"; } -- 2.16.6 From d07a2e9f59512c7a470814f42244bea7bc99eb85 Mon Sep 17 00:00:00 2001 From: "akshay.khairnar@t-systems.com" Date: Thu, 6 Nov 2025 07:45:22 +0100 Subject: [PATCH 16/16] update schema service version 1.13.3 and upgrade to v31 - Updated schema service dependency version 1.13.3 - Applied v31 schema updates to AAI babel - Bump up aai-babel to 1.14.0 - Updated Babel test cases after re-enabling XSD generation in schema-service. Issue-ID: AAI-4207 Change-Id: I596cf54c6c3204343a0702fdcc8f0329afe2caa7 Signed-off-by: akshay.khairnar@t-systems.com --- pom.xml | 4 ++-- src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml | 2 +- src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml | 2 +- .../resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml | 2 +- .../generatedXml/AAI-Grouping Service for Test-service-1.0.xml | 2 +- .../generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml | 2 +- .../generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml | 2 +- .../AAI-Network Res 1806..NetworkCollection..0-resource-1.xml | 2 +- ...CloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml | 2 +- src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml | 2 +- .../generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml | 2 +- src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml | 2 +- .../resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml | 2 +- .../AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml | 2 +- .../generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml | 2 +- src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml | 2 +- src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml | 2 +- src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml | 2 +- .../AAI-VLAN Network Receptor Configuration-resource-3.0.xml | 2 +- .../generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml | 2 +- src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml | 2 +- ...AI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml | 2 +- ...AI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml | 2 +- src/test/resources/generatedXml/AAI-oam_group-resource-3.xml | 2 +- .../generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml | 2 +- src/test/resources/generatedXml/AAI-untr_group-resource-3.xml | 2 +- src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml | 2 +- src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml | 2 +- .../generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml | 2 +- src/test/resources/response/response.json | 2 +- src/test/resources/response/responseWithVersionLessThan1.json | 2 +- src/test/resources/response/validNoVnfConfigurationResponse.json | 2 +- version.properties | 4 ++-- 37 files changed, 39 insertions(+), 39 deletions(-) diff --git a/pom.xml b/pom.xml index 265743a..e99bae6 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ org.onap.aai babel - 1.13.8-SNAPSHOT + 1.14.0-SNAPSHOT jar aai-babel @@ -100,7 +100,7 @@ 0.15.1 org.onap.aai.schema-service - 1.13.1-SNAPSHOT + 1.13.3-SNAPSHOT 3.12.0 1.6.4 1.13.0 diff --git a/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml b/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml index 14e490e..12288b0 100644 --- a/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-COS_AVPN-service-1.0.xml @@ -1,4 +1,4 @@ - + 4b95b343-a640-4e87-8587-945ac2748eca service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml b/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml index aac402d..515d41d 100644 --- a/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml +++ b/src/test/resources/generatedXml/AAI-ExtVL-resource-40.0.xml @@ -1,4 +1,4 @@ - + extVL-invariant-uuid resource diff --git a/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml b/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml index 3d5bd74..5dfc5bf 100644 --- a/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml +++ b/src/test/resources/generatedXml/AAI-ExtVL-resource-48.0.xml @@ -1,4 +1,4 @@ - + 379f816b-a7aa-422f-be30-17114ff50b7c resource diff --git a/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml b/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml index 7f13ac1..c555494 100644 --- a/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml +++ b/src/test/resources/generatedXml/AAI-Fabric Configuration-resource-10.0.xml @@ -1,4 +1,4 @@ - + 3c5bb7f4-764e-4da3-8d34-8829a2924192 resource diff --git a/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml index ed0b1c7..36628b0 100644 --- a/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Grouping Service for Test-service-1.0.xml @@ -1,4 +1,4 @@ - + service-invariant-uuid service Network L4+ diff --git a/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml b/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml index a4d4312..05ee284 100644 --- a/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Network Cloud VNF MOCK-resource-1.0.xml @@ -1,4 +1,4 @@ - + b78ae06b-95f7-493c-963b-c81e110f2dee resource diff --git a/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml b/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml index cf84b41..96ad945 100644 --- a/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Network Cloud VNF Service MOCK-service-1.0.xml @@ -1,4 +1,4 @@ - + 60f83fa8-f577-42bf-b295-460acbe977a5 service diff --git a/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml b/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml index b4b42ca..91ed5c6 100644 --- a/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml +++ b/src/test/resources/generatedXml/AAI-Network Res 1806-resource-4.0.xml @@ -1,4 +1,4 @@ - + 831ed8de-e2ca-4310-bc51-cf97ab44547c resource diff --git a/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml b/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml index 454bc31..2fbf391 100644 --- a/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-Network Res 1806..NetworkCollection..0-resource-1.xml @@ -1,4 +1,4 @@ - + e732025b-8f42-425f-b40c-09e5986b9c4f resource diff --git a/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml b/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml index ae27e65..c5c5b08 100644 --- a/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-NetworkCloudVnfMock..NC1_Test_Heat_08152018_base..module-0-resource-1.xml @@ -1,4 +1,4 @@ - + ea2360e3-f4b1-4acc-8d23-c8f6b2fdce3a resource diff --git a/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml index ea1fb6f..7f3593a 100644 --- a/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Port Mirror_Test-service-1.0.xml @@ -1,4 +1,4 @@ - + cd674566-ce17-4262-ae99-d526e7b8d47a service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml b/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml index 5443939..0904ab8 100644 --- a/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml +++ b/src/test/resources/generatedXml/AAI-Port Mirroring Configuration-resource-35.0.xml @@ -1,4 +1,4 @@ - + cf53c1d6-8708-4b4e-a056-ead7daa57cd5 resource diff --git a/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml b/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml index 365d256..8b2b1b4 100644 --- a/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-RG_collector_6-15-service-1.0.xml @@ -1,4 +1,4 @@ - + 32b61fa7-95e7-4ede-ad9b-2322e26fc623 service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml b/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml index a3f0be9..d01d990 100644 --- a/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml +++ b/src/test/resources/generatedXml/AAI-SCP-Test-VSP-resource-1.0.xml @@ -1,4 +1,4 @@ - + b2b88a73-5c55-4984-99dd-a35c55935d14 resource diff --git a/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml index 9b87088..dc5482f 100644 --- a/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml @@ -1,4 +1,4 @@ - + 1c111111-1111-1111-1111-111111111111 service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml b/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml index d956483..c6bf2d5 100644 --- a/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml +++ b/src/test/resources/generatedXml/AAI-SD-WAN-Test-VSP-resource-1.0.xml @@ -1,4 +1,4 @@ - + 1a111111-1111-1111-1111-111111111111 resource diff --git a/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml b/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml index 47d8277..7953bb2 100644 --- a/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml @@ -1,4 +1,4 @@ - + 6f288081-b321-47c9-b038-6de70079a3bf resource diff --git a/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml b/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml index 788bfad..6792e08 100644 --- a/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml +++ b/src/test/resources/generatedXml/AAI-SdWanTestVsp..DUMMY..module-0-resource-2.xml @@ -1,4 +1,4 @@ - + 6a111111-1111-1111-1111-111111111111 resource diff --git a/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml b/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml index e3e90a1..a07ec9d 100644 --- a/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml +++ b/src/test/resources/generatedXml/AAI-TEST CR_1-resource-7.0.xml @@ -1,4 +1,4 @@ - + testcr1-invariant-uuid resource diff --git a/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml b/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml index a93ebcd..a0209ba 100644 --- a/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-TEST SVC_1-service-1.0.xml @@ -1,4 +1,4 @@ - + service-invariant-uuid service Network L4+ diff --git a/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml b/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml index 37ea075..9a493ee 100644 --- a/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml +++ b/src/test/resources/generatedXml/AAI-Tunnel_XConnTest-resource-2.0.xml @@ -1,4 +1,4 @@ - + 1b111111-1111-1111-1111-111111111111 resource diff --git a/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml b/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml index ff98e11..9657c1a 100644 --- a/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml +++ b/src/test/resources/generatedXml/AAI-VLAN Network Receptor Configuration-resource-3.0.xml @@ -1,4 +1,4 @@ - + 1608eef4-de53-4334-a8d2-ba79cab4bde0 resource diff --git a/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml b/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml index feba4ca..a4d0171 100644 --- a/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml +++ b/src/test/resources/generatedXml/AAI-VRF Entry Configuration-resource-3.0.xml @@ -1,4 +1,4 @@ - + b67a289b-1688-496d-86e8-1583c828be0a resource diff --git a/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml index 4f1ceda..0ffb600 100644 --- a/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-Vscpaas_Test-service-1.0.xml @@ -1,4 +1,4 @@ - + a8db6285-20ca-4fd3-9c85-e267bdb013f9 service diff --git a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml index 552914a..c2e6cc3 100644 --- a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..0-resource-1.xml @@ -1,4 +1,4 @@ - + instance-group-0-invariant-id resource diff --git a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml index 002a33e..1f37435 100644 --- a/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-groupingservicefortest..ResourceInstanceGroup..1-resource-1.xml @@ -1,4 +1,4 @@ - + instance-group-1-invariant-id resource diff --git a/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml b/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml index 9f79aa0..295010c 100644 --- a/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml +++ b/src/test/resources/generatedXml/AAI-oam_group-resource-3.xml @@ -1,4 +1,4 @@ - + 53688e73-06a1-4759-96d2-8872e9c6a460 resource diff --git a/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml b/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml index d261c5d..9c73192 100644 --- a/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml +++ b/src/test/resources/generatedXml/AAI-testcr_1..NetworkCollection..0-resource-1.xml @@ -1,4 +1,4 @@ - + test-cr-invariant-uuid resource diff --git a/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml b/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml index d66cf27..179c7f2 100644 --- a/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml +++ b/src/test/resources/generatedXml/AAI-untr_group-resource-3.xml @@ -1,4 +1,4 @@ - + 01a007bf-e3c4-4e27-963b-74fabeab08bc resource diff --git a/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml b/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml index e055417..6c46366 100644 --- a/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml +++ b/src/test/resources/generatedXml/AAI-vDBE-resource-0.5.xml @@ -1,4 +1,4 @@ - + 2b6388c7-fec4-45b1-ac66-297ba402ae40 resource diff --git a/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml b/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml index 5afe75d..8efbf7e 100644 --- a/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-vDBE_srv-service-1.0.xml @@ -1,4 +1,4 @@ - + 66e7aed9-3257-4069-b0a6-9012aaca821a service Network L1-3 diff --git a/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml b/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml index d9dfecd..e94aabb 100644 --- a/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml +++ b/src/test/resources/generatedXml/AAI-vdbe0..Vdbe..main..module-0-resource-2.xml @@ -1,4 +1,4 @@ - + 63d57475-e7c3-49b2-ab32-90357c0e4f30 resource diff --git a/src/test/resources/response/response.json b/src/test/resources/response/response.json index d7d6721..cb54a93 100644 --- a/src/test/resources/response/response.json +++ b/src/test/resources/response/response.json @@ -1 +1 @@ -[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 1.0\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] \ No newline at end of file +[{"name":"AAI-29NFOD_S-service-1.0.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] \ No newline at end of file diff --git a/src/test/resources/response/responseWithVersionLessThan1.json b/src/test/resources/response/responseWithVersionLessThan1.json index 1349cef..86d6250 100644 --- a/src/test/resources/response/responseWithVersionLessThan1.json +++ b/src/test/resources/response/responseWithVersionLessThan1.json @@ -1 +1 @@ -[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 0.1\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] \ No newline at end of file +[{"name":"AAI-29NFOD_S-service-0.1.xml","type":"MODEL","payload":"\n 29NFOD_S-invariant-id\n service\n Network L1-3\n \n \n 29NFOD_S-version-id\n 29NFOD_S\n 0.1\n 29NFOD\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 29NFOD 0-version-id\n \n \n model.model-invariant-id\n 29NFOD 0-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-29NFOD-resource-1.0.xml","type":"MODEL","payload":"\n 29NFOD 0-invariant-id\n resource\n \n \n 29NFOD 0-version-id\n 29NFOD\n 1.0\n 29NFOD\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"},{"name":"vnfVendorImageConfigurations","type":"VNFCATALOG","payload":"[{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM00\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.1\"},{\"application\":\"VM01\",\"application-vendor\":\"29NFOD\",\"application-version\":\"3.16.9\"}]"}] \ No newline at end of file diff --git a/src/test/resources/response/validNoVnfConfigurationResponse.json b/src/test/resources/response/validNoVnfConfigurationResponse.json index 4b73ec8..314c67b 100644 --- a/src/test/resources/response/validNoVnfConfigurationResponse.json +++ b/src/test/resources/response/validNoVnfConfigurationResponse.json @@ -1 +1 @@ -[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"\n a8db6285-20ca-4fd3-9c85-e267bdb013f9\n service\n Network L4+\n \n \n 7f7f6fa4-275a-488f-8b3e-691a0765d57e\n Vscpaas_Test\n 1.0\n Vscpaas_Test\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n \n \n model.model-invariant-id\n b2b88a73-5c55-4984-99dd-a35c55935d14\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"\n 6f288081-b321-47c9-b038-6de70079a3bf\n resource\n \n \n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n ScpTestVsp..asc_heat-int2..module-0\n 1\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vf-module-version-id\n \n \n model.model-invariant-id\n vf-module-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vserver-version-id\n \n \n model.model-invariant-id\n vserver-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n image-version-id\n \n \n model.model-invariant-id\n image-invariant-id\n \n \n \n F\n unbounded\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n flavor-version-id\n \n \n model.model-invariant-id\n flavor-invariant-id\n \n \n \n F\n unbounded\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vnfc-version-id\n \n \n model.model-invariant-id\n vnfc-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n tenant-version-id\n \n \n model.model-invariant-id\n tenant-invariant-id\n \n \n \n F\n unbounded\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n l3-network-version-id\n \n \n model.model-invariant-id\n l3-network-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"\n b2b88a73-5c55-4984-99dd-a35c55935d14\n resource\n \n \n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n SCP-Test-VSP\n 1.0\n SCP Test VSP\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n T\n unbounded\n \n \n \n \n model-ver\n \n model-ver.model-version-id\n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n \n \n model.model-invariant-id\n 6f288081-b321-47c9-b038-6de70079a3bf\n \n \n \n T\n unbounded\n \n \n \n \n \n \n \n"}] \ No newline at end of file +[{"name":"AAI-Vscpaas_Test-service-1.0.xml","type":"MODEL","payload":"\n a8db6285-20ca-4fd3-9c85-e267bdb013f9\n service\n Network L4+\n \n \n 7f7f6fa4-275a-488f-8b3e-691a0765d57e\n Vscpaas_Test\n 1.0\n Vscpaas_Test\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n \n \n model.model-invariant-id\n b2b88a73-5c55-4984-99dd-a35c55935d14\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n service-instance-version-id\n \n \n model.model-invariant-id\n service-instance-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-ScpTestVsp..asc_heat-int2..module-0-resource-1.xml","type":"MODEL","payload":"\n 6f288081-b321-47c9-b038-6de70079a3bf\n resource\n \n \n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n ScpTestVsp..asc_heat-int2..module-0\n 1\n \n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n image-version-id\n \n \n model.model-invariant-id\n image-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n flavor-version-id\n \n \n model.model-invariant-id\n flavor-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n vnfc-version-id\n \n \n model.model-invariant-id\n vnfc-invariant-id\n \n \n \n \n \n F\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n tenant-version-id\n \n \n model.model-invariant-id\n tenant-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vserver-version-id\n \n \n model.model-invariant-id\n vserver-invariant-id\n \n \n \n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n l3-network-version-id\n \n \n model.model-invariant-id\n l3-network-invariant-id\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n vf-module-version-id\n \n \n model.model-invariant-id\n vf-module-invariant-id\n \n \n \n \n \n \n \n"},{"name":"AAI-SCP-Test-VSP-resource-1.0.xml","type":"MODEL","payload":"\n b2b88a73-5c55-4984-99dd-a35c55935d14\n resource\n \n \n 2e42bac2-318a-410c-b8ff-3b3a31351be7\n SCP-Test-VSP\n 1.0\n SCP Test VSP\n \n \n T\n unbounded\n \n \n T\n unbounded\n \n \n \n model-ver\n \n model-ver.model-version-id\n 06258c44-ab48-4b4b-a5db-16892f7d1e76\n \n \n model.model-invariant-id\n 6f288081-b321-47c9-b038-6de70079a3bf\n \n \n \n \n \n \n \n model-ver\n \n model-ver.model-version-id\n generic-vnf-version-id\n \n \n model.model-invariant-id\n generic-vnf-invariant-id\n \n \n \n \n \n \n \n"}] \ No newline at end of file diff --git a/version.properties b/version.properties index ec1a1bc..ed6ad18 100644 --- a/version.properties +++ b/version.properties @@ -3,8 +3,8 @@ # because they are used in Jenkins, whose plug-in doesn't support major=1 -minor=13 -patch=5 +minor=14 +patch=0 base_version=${major}.${minor}.${patch} -- 2.16.6