Commit c5c2441a authored by George Tziavas's avatar George Tziavas
Browse files

Added JobMapper

parent 7a67d8b1
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ package org.etsi.osl.metrico;


import org.etsi.osl.metrico.model.Job;
import org.etsi.osl.metrico.model.StartPeriodicQueryRequest;
import org.etsi.osl.metrico.model.PeriodicQueryRequest;
import org.etsi.osl.metrico.prometheus.PrometheusQueries;
import org.etsi.osl.tmf.pm628.model.ExecutionStateType;
import org.slf4j.Logger;
@@ -48,7 +48,7 @@ public class MetricoController {
    }

    @PostMapping("/startPeriodicQuery")
    public ResponseEntity<String> startPeriodicQuery(@RequestBody StartPeriodicQueryRequest request) {
    public ResponseEntity<String> startPeriodicQuery(@RequestBody PeriodicQueryRequest request) {
        logger.atDebug().setMessage("/startPeriodicQuery endpoint called with request body: " + request).log();
        logger.atInfo().setMessage("/startPeriodicQuery endpoint called with query: " + request.getQuery()).log();
        if (request.getProm_ip() == null) {
@@ -67,8 +67,7 @@ public class MetricoController {
            logger.atDebug().setMessage("/startPeriodicQuery endpoint called without a stopAfterSeconds. Job will not stop by itself.").log();
        }
        String prom_url = request.getProtocol() + "://" + request.getProm_ip() + ":" + request.getProm_port();
        Job newPeriodicQuery = prometheusQueries.startPeriodicQuery(prom_url, request.getQuery(), request.getStartDateTime(), request.getEndDateTime(), request.getExecutionInterval()
        );
        Job newPeriodicQuery = prometheusQueries.startPeriodicQuery(prom_url, request.getQuery(), request.getStartDateTime(), request.getEndDateTime(), request.getExecutionInterval());
        if(newPeriodicQuery.getState()== ExecutionStateType.FAILED){
            return new ResponseEntity<>("Periodic query failed to start due to internal error.", HttpStatus.INTERNAL_SERVER_ERROR);
        }
+48 −0
Original line number Diff line number Diff line
package org.etsi.osl.metrico.mapper;

import org.etsi.osl.metrico.model.Job;
import org.etsi.osl.tmf.pm628.model.DataAccessEndpoint;
import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.UUID;

public class JobMapper {

    private static final Logger logger = LoggerFactory.getLogger(JobMapper.class);

    public static Job measurementCollectionJobMapToJob(MeasurementCollectionJob measurementCollectionJob) {
        Job job = new Job();

        job.setMeasurementCollectionJobRef(UUID.fromString(measurementCollectionJob.getUuid()));
        if(measurementCollectionJob.getDataAccessEndpoint().size()!=1){
            throw new IllegalArgumentException("DataAccessEndpoint should be exactly one");
        }else {
            DataAccessEndpoint dataAccessEndpoint = measurementCollectionJob.getDataAccessEndpoint().get(0);
            job.setDataAccessEndPointRef(UUID.fromString(dataAccessEndpoint.getUuid()));
            if( dataAccessEndpoint.getApiType().equalsIgnoreCase("PROMETHEUS")){
                job.setApiType(dataAccessEndpoint.getApiType());
            } else if (dataAccessEndpoint.getApiType() == null ) {
                throw new IllegalArgumentException("API type needs to be defined");
            }else{
                throw new IllegalArgumentException("API type not supported");
            }
            job.setDateAccessEndPointUri(dataAccessEndpoint.getUri());
            job.setQuery(dataAccessEndpoint.getUriQueryFilter());

        }

        job.setStartDateTime(measurementCollectionJob.getScheduleDefinition().get(0).getScheduleDefinitionStartTime());
        job.setEndDateTime(measurementCollectionJob.getScheduleDefinition().get(0).getScheduleDefinitionEndTime());

        /*
        Extend the reporting period and granularitypossible values
        job.setStartDateTime(measurementCollectionJob.getReportingPeriod());
        job.setExecutionInterval(measurementCollectionJob.getGranularity());
        */

        return job;
    }

}
+8 −0
Original line number Diff line number Diff line
@@ -4,10 +4,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import org.etsi.osl.tmf.pm628.model.DataFilterMap;
import org.etsi.osl.tmf.pm628.model.ExecutionStateType;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.format.annotation.DateTimeFormat;

import java.net.URI;
import java.time.OffsetDateTime;
import java.util.UUID;
import java.util.concurrent.ScheduledFuture;
@@ -43,6 +45,12 @@ public class Job{
    // Should I check the granularity or the scheduleDefinitionRef for the recurringFrequency?
    private UUID measurementCollectionJobRef;

    private URI dateAccessEndPointUri;

    private DataFilterMap query;

    private String apiType;

    @JsonIgnore
    private boolean deleted = false;

+2 −2
Original line number Diff line number Diff line
@@ -2,13 +2,12 @@ package org.etsi.osl.metrico.model;

import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.OffsetDateTime;

@Setter
@Getter
public class StartPeriodicQueryRequest {
public class PeriodicQueryRequest {
    private String protocol = "https";
    private String prom_ip;
    private String prom_port = "9090";
@@ -16,4 +15,5 @@ public class StartPeriodicQueryRequest {
    private OffsetDateTime startDateTime;
    private OffsetDateTime endDateTime;
    private int executionInterval = 300;
    private Job job;
}