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 { @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 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 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 findAll() { try(NetworkAPIGroupDSL dsl = clientProvider.getClient().network()) { return dsl.v1().ingresses().inAnyNamespace().list().getItems(); } } @Override public Optional findOptionalByNameAndNamespace(String name, String namespace) { return Optional.ofNullable(findByNameAndNamespace(name, namespace)); } @Override public Watch watch(String namespace, Watcher 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); } } }