Loading src/main/java/org/etsi/osl/metrico/MetricoController.java +3 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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); } Loading src/main/java/org/etsi/osl/metrico/mapper/JobMapper.java 0 → 100644 +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; } } src/main/java/org/etsi/osl/metrico/model/Job.java +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading src/main/java/org/etsi/osl/metrico/model/StartPeriodicQueryRequest.java→src/main/java/org/etsi/osl/metrico/model/PeriodicQueryRequest.java +2 −2 Original line number Diff line number Diff line Loading @@ -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"; Loading @@ -16,4 +15,5 @@ public class StartPeriodicQueryRequest { private OffsetDateTime startDateTime; private OffsetDateTime endDateTime; private int executionInterval = 300; private Job job; } Loading
src/main/java/org/etsi/osl/metrico/MetricoController.java +3 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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); } Loading
src/main/java/org/etsi/osl/metrico/mapper/JobMapper.java 0 → 100644 +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; } }
src/main/java/org/etsi/osl/metrico/model/Job.java +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading
src/main/java/org/etsi/osl/metrico/model/StartPeriodicQueryRequest.java→src/main/java/org/etsi/osl/metrico/model/PeriodicQueryRequest.java +2 −2 Original line number Diff line number Diff line Loading @@ -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"; Loading @@ -16,4 +15,5 @@ public class StartPeriodicQueryRequest { private OffsetDateTime startDateTime; private OffsetDateTime endDateTime; private int executionInterval = 300; private Job job; }