Skip to content
Snippets Groups Projects
Commit ea546c98 authored by trantzas's avatar trantzas
Browse files

Merge branch '12-create-metrics-endpoints-for-nfv-related-information' into 'develop'

Created metrics endpoints for NFV-related information

See merge request !12
parents cdbf8788 9015e68d
No related branches found
No related tags found
1 merge request!12Created metrics endpoints for NFV-related information
Pipeline #15050 passed
package portal.api.metrics;
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.model.nfv.metrics.RegisteredManoProviders;
import org.etsi.osl.model.nfv.metrics.RegisteredNSDs;
import org.etsi.osl.model.nfv.metrics.RegisteredVNFs;
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;
@Tag(name = "NFV Metrics Api")
public interface MetricsApi {
Logger log = LoggerFactory.getLogger(MetricsApi.class);
@Operation(summary = "Get total number of registered NSDs", operationId = "getRegisteredNsds")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Success"),
@ApiResponse(responseCode = "400", description = "Bad Request"),
@ApiResponse(responseCode = "500", description = "Internal Server Error")
})
@RequestMapping(value = "/metrics/registeredNsds", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
ResponseEntity<RegisteredNSDs> getRegisteredNsds();
@Operation(summary = "Get total number of registered VNFs", operationId = "getRegisteredVnfs")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Success"),
@ApiResponse(responseCode = "400", description = "Bad Request"),
@ApiResponse(responseCode = "500", description = "Internal Server Error")
})
@RequestMapping(value = "/metrics/registeredVnfs", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
ResponseEntity<RegisteredVNFs> getRegisteredVnfs();
@Operation(summary = "Get total number of registered Mano Providers", operationId = "getRegisteredManoProviders")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Success"),
@ApiResponse(responseCode = "400", description = "Bad Request"),
@ApiResponse(responseCode = "500", description = "Internal Server Error")
})
@RequestMapping(value = "/metrics/registeredManoProviders", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
ResponseEntity<RegisteredManoProviders> getRegisteredManoProviders();
}
package portal.api.metrics;
import org.etsi.osl.model.nfv.metrics.RegisteredManoProviders;
import org.etsi.osl.model.nfv.metrics.RegisteredNSDs;
import org.etsi.osl.model.nfv.metrics.RegisteredVNFs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import portal.api.service.ManoProviderService;
import portal.api.service.NSDService;
import portal.api.service.VxFService;
@Controller
public class MetricsApiController implements MetricsApi {
private static final Logger log = LoggerFactory.getLogger(MetricsApiController.class);
private final NSDService nsdService;
private final VxFService vxfService;
private final ManoProviderService manoProviderService;
public MetricsApiController(NSDService nsdService, VxFService vxfService, ManoProviderService manoProviderService) {
this.nsdService = nsdService;
this.vxfService = vxfService;
this.manoProviderService = manoProviderService;
}
@Override
public ResponseEntity<RegisteredNSDs> getRegisteredNsds() {
try {
int totalNSDs = nsdService.getExperiments().size();
RegisteredNSDs response = new RegisteredNSDs(totalNSDs);
return new ResponseEntity<>(response, HttpStatus.OK);
} catch (Exception e) {
log.error("Couldn't retrieve total registered NSDs. ", e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@Override
public ResponseEntity<RegisteredVNFs> getRegisteredVnfs() {
try {
int totalVNFs = vxfService.getVxFs().size();
RegisteredVNFs response = new RegisteredVNFs(totalVNFs);
return new ResponseEntity<>(response, HttpStatus.OK);
} catch (Exception e) {
log.error("Couldn't retrieve total registered VNFs. ", e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@Override
public ResponseEntity<RegisteredManoProviders> getRegisteredManoProviders() {
try {
int totalManoProviders = manoProviderService.getMANOproviders().size();
RegisteredManoProviders response = new RegisteredManoProviders(totalManoProviders);
return new ResponseEntity<>(response, HttpStatus.OK);
} catch (Exception e) {
log.error("Couldn't retrieve total registered MANO Providers. ", e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
......@@ -57,7 +57,7 @@ public class SwaggerConfig {
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("nfv-portal.api.controller-v1.0.0")
.group("nfv-portal.api.controller")
.addOpenApiCustomizer( this.apiInfoPortalAPI() )
.packagesToScan("portal.api.controller")
.build();
......@@ -69,11 +69,36 @@ public class SwaggerConfig {
return openApi -> openApi
.specVersion( SpecVersion.V30 ).addSecurityItem(new SecurityRequirement().addList("security_auth"))
.info(new Info().title("NFV portal API")
.description("## NFV portal API")
.info(new Info().title("NFV Portal API")
.description("## An API to manage NFV Artifacts")
.version("1.0.0")
.license(new License().name("Apache 2.0").url("http://openslice.io")));
.license(new License().name("Apache 2.0").url("https://osl.etsi.org")));
}
@Bean
public GroupedOpenApi nfvportalmetrics(){
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("nfv-portal.api.metrics")
.addOpenApiCustomizer( this.nfvPortalAPImetrics() )
.packagesToScan("portal.api.metrics")
.build();
}
OpenApiCustomizer nfvPortalAPImetrics() {
return openApi -> openApi
.specVersion( SpecVersion.V30 ).addSecurityItem(new SecurityRequirement().addList("security_auth"))
.info(new Info().title("NFV Portal metrics API")
.description("## An API to retrieve metrics about NFV Portal")
.version("1.0.0")
.license(new License().name("Apache 2.0").url("https://osl.etsi.org")));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment