Loading Dockerfile +2 −2 Original line number Diff line number Diff line FROM ibm-semeru-runtimes:open-17.0.7_7-jdk # RUN mkdir /opt/shareclasses RUN mkdir -p /opt/openslice/lib/ COPY target/org.etsi.osl.tmf.api-1.1.0-exec.jar /opt/openslice/lib/ CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.tmf.api-1.1.0-exec.jar"] COPY target/org.etsi.osl.tmf.api-1.2.0-exec.jar /opt/openslice/lib/ CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.tmf.api-1.2.0-exec.jar"] EXPOSE 13082 No newline at end of file pom.xml +2 −2 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ <parent> <groupId>org.etsi.osl</groupId> <artifactId>org.etsi.osl.main</artifactId> <version>2024Q4</version> <version>2025Q2</version> <relativePath>../org.etsi.osl.main</relativePath> </parent> Loading Loading @@ -305,7 +305,7 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> <version>2.3.232</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> Loading src/main/java/org/etsi/osl/tmf/BootstrapRepository.java +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ public class BootstrapRepository { } else { //check if we have the latest version of GST if (ADDGST) { ServiceCategory scategory = this.categRepoService.findByName("Generic Services"); ServiceSpecification serviceSpecificationObj = this.specRepoService.findByNameAndVersion( GST_EXAMPLE_NAME , "5.0.0"); ServiceSpecification serviceSpecificationObj = this.specRepoService.findByNameAndVersion( GST_EXAMPLE_NAME , "10.0.0"); if ( ( scategory != null ) && ( serviceSpecificationObj == null )) { Loading src/main/java/org/etsi/osl/tmf/configuration/SwaggerDocumentationConfig.java +34 −1 Original line number Diff line number Diff line Loading @@ -830,7 +830,7 @@ public GroupedOpenApi pim637() { SpringDocUtils.getConfig().replaceWithClass(java.time.OffsetDateTime.class, java.util.Date.class); return GroupedOpenApi.builder() .group("OpensliceLCMRulesspecificationAPI") .group("OpenSliceLCMRulesspecificationAPI") .addOpenApiCustomizer( this.lcmOpenAPI() ) .packagesToScan("org.etsi.osl.tmf.lcm.api") .build(); Loading Loading @@ -949,6 +949,39 @@ public GroupedOpenApi pim637() { } /** * Metrics * @return */ @Bean public OpenApiCustomizer metricsOpenAPI() { return openApi -> openApi .specVersion( SpecVersion.V30 ).addSecurityItem(new SecurityRequirement().addList("security_auth")) .info(new Info().title("OpenSlice Metrics API") .description("OpenAPI environment for OpenSlice Metrics") .version("4.0.0") .license(new License() .name("Apache 2.0") .url("https://osl.etsi.org"))) .externalDocs(new ExternalDocumentation() .description("OpenSlice Metrics") .url("https://osl.etsi.org")); } @Bean public GroupedOpenApi metrics(){ SpringDocUtils.getConfig().replaceWithClass(java.time.LocalDate.class, java.sql.Date.class); SpringDocUtils.getConfig().replaceWithClass(java.time.OffsetDateTime.class, java.util.Date.class); return GroupedOpenApi.builder() .group("OpenSliceMetricsAPI") .addOpenApiCustomizer( this.metricsOpenAPI() ) .packagesToScan("org.etsi.osl.tmf.metrics.api") .build(); } // @Bean // public SecurityConfiguration security() { // return SecurityConfigurationBuilder.builder() Loading src/main/java/org/etsi/osl/tmf/metrics/api/GeneralMetricsApi.java 0 → 100644 +49 −0 Original line number Diff line number Diff line package org.etsi.osl.tmf.metrics.api; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import org.etsi.osl.tmf.metrics.PublishedServiceSpecifications; import org.etsi.osl.tmf.metrics.RegisteredIndividuals; import org.etsi.osl.tmf.metrics.RegisteredResourceSpecifications; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import java.util.Map; @Tag(name = "GeneralMetricsApi", description = "The General Metrics API") public interface GeneralMetricsApi { Logger log = LoggerFactory.getLogger(GeneralMetricsApi.class); @Operation(summary = "Get total number of registered individuals", operationId = "getRegisteredIndividuals") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "500", description = "Internal Server Error") }) @RequestMapping(value = "/metrics/registeredIndividuals", method = RequestMethod.GET, produces = "application/json;charset=utf-8") ResponseEntity<RegisteredIndividuals> getRegisteredIndividuals(); @Operation(summary = "Get total number of published service specifications", operationId = "getPublishedServiceSpecifications") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "500", description = "Internal Server Error") }) @RequestMapping(value = "/metrics/publishedServiceSpecifications", method = RequestMethod.GET, produces = "application/json;charset=utf-8") ResponseEntity<PublishedServiceSpecifications> getPublishedServiceSpecifications(); @Operation(summary = "Get total number of registered resource specifications", operationId = "getRegisteredResourceSpecifications") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "500", description = "Internal Server Error") }) @RequestMapping(value = "/metrics/registeredResourceSpecifications", method = RequestMethod.GET, produces = "application/json;charset=utf-8") ResponseEntity<RegisteredResourceSpecifications> getRegisteredResourceSpecifications(); } Loading
Dockerfile +2 −2 Original line number Diff line number Diff line FROM ibm-semeru-runtimes:open-17.0.7_7-jdk # RUN mkdir /opt/shareclasses RUN mkdir -p /opt/openslice/lib/ COPY target/org.etsi.osl.tmf.api-1.1.0-exec.jar /opt/openslice/lib/ CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.tmf.api-1.1.0-exec.jar"] COPY target/org.etsi.osl.tmf.api-1.2.0-exec.jar /opt/openslice/lib/ CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.tmf.api-1.2.0-exec.jar"] EXPOSE 13082 No newline at end of file
pom.xml +2 −2 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ <parent> <groupId>org.etsi.osl</groupId> <artifactId>org.etsi.osl.main</artifactId> <version>2024Q4</version> <version>2025Q2</version> <relativePath>../org.etsi.osl.main</relativePath> </parent> Loading Loading @@ -305,7 +305,7 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> <version>2.3.232</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> Loading
src/main/java/org/etsi/osl/tmf/BootstrapRepository.java +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ public class BootstrapRepository { } else { //check if we have the latest version of GST if (ADDGST) { ServiceCategory scategory = this.categRepoService.findByName("Generic Services"); ServiceSpecification serviceSpecificationObj = this.specRepoService.findByNameAndVersion( GST_EXAMPLE_NAME , "5.0.0"); ServiceSpecification serviceSpecificationObj = this.specRepoService.findByNameAndVersion( GST_EXAMPLE_NAME , "10.0.0"); if ( ( scategory != null ) && ( serviceSpecificationObj == null )) { Loading
src/main/java/org/etsi/osl/tmf/configuration/SwaggerDocumentationConfig.java +34 −1 Original line number Diff line number Diff line Loading @@ -830,7 +830,7 @@ public GroupedOpenApi pim637() { SpringDocUtils.getConfig().replaceWithClass(java.time.OffsetDateTime.class, java.util.Date.class); return GroupedOpenApi.builder() .group("OpensliceLCMRulesspecificationAPI") .group("OpenSliceLCMRulesspecificationAPI") .addOpenApiCustomizer( this.lcmOpenAPI() ) .packagesToScan("org.etsi.osl.tmf.lcm.api") .build(); Loading Loading @@ -949,6 +949,39 @@ public GroupedOpenApi pim637() { } /** * Metrics * @return */ @Bean public OpenApiCustomizer metricsOpenAPI() { return openApi -> openApi .specVersion( SpecVersion.V30 ).addSecurityItem(new SecurityRequirement().addList("security_auth")) .info(new Info().title("OpenSlice Metrics API") .description("OpenAPI environment for OpenSlice Metrics") .version("4.0.0") .license(new License() .name("Apache 2.0") .url("https://osl.etsi.org"))) .externalDocs(new ExternalDocumentation() .description("OpenSlice Metrics") .url("https://osl.etsi.org")); } @Bean public GroupedOpenApi metrics(){ SpringDocUtils.getConfig().replaceWithClass(java.time.LocalDate.class, java.sql.Date.class); SpringDocUtils.getConfig().replaceWithClass(java.time.OffsetDateTime.class, java.util.Date.class); return GroupedOpenApi.builder() .group("OpenSliceMetricsAPI") .addOpenApiCustomizer( this.metricsOpenAPI() ) .packagesToScan("org.etsi.osl.tmf.metrics.api") .build(); } // @Bean // public SecurityConfiguration security() { // return SecurityConfigurationBuilder.builder() Loading
src/main/java/org/etsi/osl/tmf/metrics/api/GeneralMetricsApi.java 0 → 100644 +49 −0 Original line number Diff line number Diff line package org.etsi.osl.tmf.metrics.api; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import org.etsi.osl.tmf.metrics.PublishedServiceSpecifications; import org.etsi.osl.tmf.metrics.RegisteredIndividuals; import org.etsi.osl.tmf.metrics.RegisteredResourceSpecifications; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import java.util.Map; @Tag(name = "GeneralMetricsApi", description = "The General Metrics API") public interface GeneralMetricsApi { Logger log = LoggerFactory.getLogger(GeneralMetricsApi.class); @Operation(summary = "Get total number of registered individuals", operationId = "getRegisteredIndividuals") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "500", description = "Internal Server Error") }) @RequestMapping(value = "/metrics/registeredIndividuals", method = RequestMethod.GET, produces = "application/json;charset=utf-8") ResponseEntity<RegisteredIndividuals> getRegisteredIndividuals(); @Operation(summary = "Get total number of published service specifications", operationId = "getPublishedServiceSpecifications") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "500", description = "Internal Server Error") }) @RequestMapping(value = "/metrics/publishedServiceSpecifications", method = RequestMethod.GET, produces = "application/json;charset=utf-8") ResponseEntity<PublishedServiceSpecifications> getPublishedServiceSpecifications(); @Operation(summary = "Get total number of registered resource specifications", operationId = "getRegisteredResourceSpecifications") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success"), @ApiResponse(responseCode = "400", description = "Bad Request"), @ApiResponse(responseCode = "500", description = "Internal Server Error") }) @RequestMapping(value = "/metrics/registeredResourceSpecifications", method = RequestMethod.GET, produces = "application/json;charset=utf-8") ResponseEntity<RegisteredResourceSpecifications> getRegisteredResourceSpecifications(); }