Commit 40f02b23 authored by Nikolaos Kyriakoulis's avatar Nikolaos Kyriakoulis
Browse files

Created metrics endpoints for NFV-related information

parent cdbf8788
Loading
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
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.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 = "NFV_MetricsApi")
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 = "/osapi/metrics/registeredNsds", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
    ResponseEntity<Map<String, Integer>> 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 = "/osapi/metrics/registeredVnfs", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
    ResponseEntity<Map<String, Integer>> 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 = "/osapi/metrics/registeredManoProviders", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
    ResponseEntity<Map<String, Integer>> getRegisteredManoProviders();
}
+70 −0
Original line number Diff line number Diff line
package portal.api.metrics;

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;

import java.util.HashMap;
import java.util.Map;

@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<Map<String, Integer>> getRegisteredNsds() {
        try {
            int totalNSDs = nsdService.getExperiments().size();
            Map<String, Integer> response = new HashMap<>();
            response.put("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<Map<String, Integer>> getRegisteredVnfs() {
        try {
            int totalVNFs = vxfService.getVxFs().size();
            Map<String, Integer> response = new HashMap<>();
            response.put("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<Map<String, Integer>> getRegisteredManoProviders() {
        try {
            int totalManoProviders = manoProviderService.getMANOproviders().size();
            Map<String, Integer> response = new HashMap<>();
            response.put("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);
        }
    }
}