package dev.dinauer.service; import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.client.Watch; import io.fabric8.kubernetes.client.Watcher; import io.fabric8.kubernetes.client.dsl.AppsAPIGroupDSL; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.jboss.resteasy.reactive.common.NotImplementedYet; import java.util.List; import java.util.Optional; @ApplicationScoped public class DeploymentService implements ResourceService { @Inject ClientProvider clientProvider; @Override public void delete(String name, String namespace) { throw new NotImplementedYet(); } @Override public Deployment findByNameAndNamespace(String name, String namespace) { return null; } @Override public List findByNamespace(String namespace) { try(AppsAPIGroupDSL dsl = clientProvider.getClient().apps()) { if (namespace.equals("_all")) { return dsl.deployments().inAnyNamespace().list().getItems(); } return dsl.deployments().inNamespace(namespace).list().getItems(); } } public List findAll() { try(AppsAPIGroupDSL dsl = clientProvider.getClient().apps()) { return dsl.deployments().inAnyNamespace().list().getItems(); } } @Override public Optional findOptionalByNameAndNamespace(String name, String namespace) { return Optional.empty(); } @Override public Watch watch(String namespace, Watcher watcher) { try (AppsAPIGroupDSL dsl = clientProvider.getClient().apps()) { String version = dsl.deployments().inAnyNamespace().list().getMetadata().getResourceVersion(); if (namespace.equals("_all")) { return dsl.deployments().inAnyNamespace().withResourceVersion(version).watch(watcher); } return dsl.deployments().inNamespace(namespace).withResourceVersion(version).watch(watcher); } } public void rescale(String namespace, String name, int replicaCount) { try(AppsAPIGroupDSL dsl = clientProvider.getClient().apps()) { dsl.deployments().inNamespace(namespace).withName(name).scale(replicaCount); } } }