backend/src/main/java/dev/dinauer/service/IngressService.java
2025-12-20 18:38:36 +01:00

89 lines
2.7 KiB
Java

package dev.dinauer.service;
import java.util.List;
import java.util.Optional;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.jboss.resteasy.reactive.common.NotImplementedYet;
import io.fabric8.kubernetes.api.model.ObjectMeta;
import io.fabric8.kubernetes.api.model.networking.v1.Ingress;
import io.fabric8.kubernetes.client.Watch;
import io.fabric8.kubernetes.client.Watcher;
import io.fabric8.kubernetes.client.dsl.NetworkAPIGroupDSL;
import dev.dinauer.utils.ClientProvider;
@ApplicationScoped
public class IngressService implements ResourceService<Ingress>
{
@Inject
ClientProvider clientProvider;
@Override
public void delete(String name, String namespace)
{
throw new NotImplementedYet();
}
@Override
public Ingress findByNameAndNamespace(String name, String namespace)
{
try(NetworkAPIGroupDSL dsl = clientProvider.getClient().network())
{
List<Ingress> ingresses = dsl.v1().ingresses().list().getItems();
for (Ingress ingress : ingresses)
{
ObjectMeta meta = ingress.getMetadata();
if (name.equals(meta.getName()) && namespace.equals(meta.getNamespace()))
{
return ingress;
}
}
return null;
}
}
public List<Ingress> findByNamespace(String namespace)
{
try(NetworkAPIGroupDSL dsl = clientProvider.getClient().network())
{
if (namespace.equals("_all"))
{
return dsl.v1().ingresses().inAnyNamespace().list().getItems();
}
return dsl.v1().ingresses().inNamespace(namespace).list().getItems();
}
}
public List<Ingress> findAll()
{
try(NetworkAPIGroupDSL dsl = clientProvider.getClient().network())
{
return dsl.v1().ingresses().inAnyNamespace().list().getItems();
}
}
@Override
public Optional<Ingress> findOptionalByNameAndNamespace(String name, String namespace)
{
return Optional.ofNullable(findByNameAndNamespace(name, namespace));
}
@Override
public Watch watch(String namespace, Watcher<Ingress> watcher)
{
try(NetworkAPIGroupDSL dsl = clientProvider.getClient().network())
{
String version = dsl.v1().ingresses().inAnyNamespace().list().getMetadata().getResourceVersion();
if (namespace.equals("_all"))
{
return dsl.v1().ingresses().inAnyNamespace().withResourceVersion(version).watch(watcher);
}
return dsl.v1().ingresses().inNamespace(namespace).withResourceVersion(version).watch(watcher);
}
}
}