79 lines
2.6 KiB
Java
Executable File
79 lines
2.6 KiB
Java
Executable File
package dev.dinauer.monitoring;
|
|
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
import jakarta.inject.Inject;
|
|
import jakarta.transaction.Transactional;
|
|
import jakarta.ws.rs.GET;
|
|
import jakarta.ws.rs.POST;
|
|
import jakarta.ws.rs.Path;
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
|
import dev.dinauer.monitoring.entity.MonitoringConfig;
|
|
import dev.dinauer.monitoring.entity.MonitoringType;
|
|
import dev.dinauer.monitoring.entity.TargetConfig;
|
|
import dev.dinauer.monitoring.entity.VolumeConfig;
|
|
import dev.dinauer.monitoring.entity.creation.MonitoringConfigCreation;
|
|
import dev.dinauer.monitoring.entity.repo.MonitoringRepo;
|
|
|
|
@Path("/monitorings")
|
|
public class MonitoringResource
|
|
{
|
|
@Inject
|
|
MonitoringRepo monitoringRepo;
|
|
|
|
@Inject
|
|
MonitoringJobRunner jobRunner;
|
|
|
|
@GET
|
|
public List<MonitoringConfig> get() throws JsonProcessingException
|
|
{
|
|
return monitoringRepo.listAll();
|
|
}
|
|
|
|
@POST
|
|
@Transactional
|
|
public void create(MonitoringConfigCreation configCreation)
|
|
{
|
|
MonitoringConfig config = new MonitoringConfig();
|
|
config.setId(UUID.randomUUID().toString());
|
|
config.setConfigName(configCreation.configName());
|
|
config.setInterval(configCreation.interval());
|
|
config.setType(configCreation.type());
|
|
|
|
TargetConfig targetConfig = new TargetConfig();
|
|
targetConfig.setId(UUID.randomUUID().toString());
|
|
targetConfig.setNamespace(configCreation.targetConfig().namespace());
|
|
targetConfig.setType(configCreation.targetConfig().type());
|
|
targetConfig.setLabels(Map.ofEntries(Map.entry(configCreation.targetConfig().labelKey(), configCreation.targetConfig().labelValue())));
|
|
targetConfig.setConfig(config);
|
|
config.setTargetConfig(targetConfig);
|
|
|
|
switch (configCreation.type())
|
|
{
|
|
case MonitoringType.VOLUME:
|
|
{
|
|
VolumeConfig volumeConfig = new VolumeConfig();
|
|
volumeConfig.setId(UUID.randomUUID().toString());
|
|
volumeConfig.setMountPath(configCreation.volumeConfig().mountPath());
|
|
volumeConfig.setContainerName(configCreation.volumeConfig().containerName());
|
|
volumeConfig.setConfig(config);
|
|
config.setVolumeConfig(volumeConfig);
|
|
monitoringRepo.persist(config);
|
|
try
|
|
{
|
|
jobRunner.run(config);
|
|
}
|
|
catch (IOException | InterruptedException e)
|
|
{
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|