✨ Deployments + rescale introduced
This commit is contained in:
parent
4171cc86a3
commit
6ffbb7fd6a
51
src/main/java/dev/dinauer/DeploymentResource.java
Normal file
51
src/main/java/dev/dinauer/DeploymentResource.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package dev.dinauer;
|
||||||
|
|
||||||
|
import dev.dinauer.service.DeploymentService;
|
||||||
|
import io.fabric8.kubernetes.api.model.apps.Deployment;
|
||||||
|
import io.quarkus.security.Authenticated;
|
||||||
|
import io.smallrye.common.annotation.Blocking;
|
||||||
|
import jakarta.annotation.security.RolesAllowed;
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import jakarta.inject.Inject;
|
||||||
|
import jakarta.ws.rs.*;
|
||||||
|
import jakarta.ws.rs.core.MediaType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Path("/deployments")
|
||||||
|
@Blocking
|
||||||
|
@Authenticated
|
||||||
|
@ApplicationScoped
|
||||||
|
public class DeploymentResource
|
||||||
|
{
|
||||||
|
@Inject
|
||||||
|
DeploymentService deploymentService;
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public List<Deployment> getDeployments(@QueryParam("namespace") String namespace)
|
||||||
|
{
|
||||||
|
if(namespace != null && !namespace.isBlank())
|
||||||
|
{
|
||||||
|
return deploymentService.findByNamespace(namespace);
|
||||||
|
}
|
||||||
|
return deploymentService.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PATCH
|
||||||
|
@Path("/{namespace}/{name}")
|
||||||
|
@Consumes(MediaType.TEXT_PLAIN)
|
||||||
|
@Produces
|
||||||
|
@RolesAllowed("admin")
|
||||||
|
public void rescaleDeployment(@PathParam("namespace") String namespace, @PathParam("name") String name, Integer replicaCount)
|
||||||
|
{
|
||||||
|
if(namespace != null && !namespace.isBlank() && name != null && !name.isBlank() && replicaCount != null && replicaCount > 0)
|
||||||
|
{
|
||||||
|
deploymentService.rescale(namespace, name, replicaCount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new RuntimeException("Namespace, name cannot be null or empty. Replica count cannot be null and must be greater than 0.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,6 +6,7 @@ import io.fabric8.kubernetes.api.model.networking.v1.Ingress;
|
|||||||
import io.fabric8.kubernetes.client.KubernetesClient;
|
import io.fabric8.kubernetes.client.KubernetesClient;
|
||||||
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
||||||
import io.quarkus.security.Authenticated;
|
import io.quarkus.security.Authenticated;
|
||||||
|
import io.smallrye.common.annotation.Blocking;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.GET;
|
||||||
@ -17,6 +18,7 @@ import jakarta.ws.rs.core.MediaType;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Path("/ingresses")
|
@Path("/ingresses")
|
||||||
|
@Blocking
|
||||||
@Authenticated
|
@Authenticated
|
||||||
public class IngressResource
|
public class IngressResource
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import io.fabric8.kubernetes.api.model.Pod;
|
|||||||
import io.fabric8.kubernetes.client.KubernetesClient;
|
import io.fabric8.kubernetes.client.KubernetesClient;
|
||||||
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
||||||
import io.quarkus.security.Authenticated;
|
import io.quarkus.security.Authenticated;
|
||||||
|
import io.smallrye.common.annotation.Blocking;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
@ -17,6 +18,7 @@ import java.util.Optional;
|
|||||||
|
|
||||||
@Path("/pods/{pod-id}/logs")
|
@Path("/pods/{pod-id}/logs")
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
|
@Blocking
|
||||||
@Authenticated
|
@Authenticated
|
||||||
public class LogResource
|
public class LogResource
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import io.fabric8.kubernetes.api.model.Namespace;
|
|||||||
import io.fabric8.kubernetes.client.KubernetesClient;
|
import io.fabric8.kubernetes.client.KubernetesClient;
|
||||||
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
||||||
import io.quarkus.security.Authenticated;
|
import io.quarkus.security.Authenticated;
|
||||||
|
import io.smallrye.common.annotation.Blocking;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
@ -17,6 +18,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@Path("/namespaces")
|
@Path("/namespaces")
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
|
@Blocking
|
||||||
@Authenticated
|
@Authenticated
|
||||||
public class NamespaceResource
|
public class NamespaceResource
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import io.fabric8.kubernetes.api.model.Node;
|
|||||||
import io.fabric8.kubernetes.client.KubernetesClient;
|
import io.fabric8.kubernetes.client.KubernetesClient;
|
||||||
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
||||||
import io.quarkus.security.Authenticated;
|
import io.quarkus.security.Authenticated;
|
||||||
|
import io.smallrye.common.annotation.Blocking;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
@ -23,6 +24,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@Path("/nodes")
|
@Path("/nodes")
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
|
@Blocking
|
||||||
@Authenticated
|
@Authenticated
|
||||||
public class NodeResource
|
public class NodeResource
|
||||||
{
|
{
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import java.util.Optional;
|
|||||||
@Path("/pods")
|
@Path("/pods")
|
||||||
@Startup
|
@Startup
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
|
@Blocking
|
||||||
@Authenticated
|
@Authenticated
|
||||||
public class PodResource
|
public class PodResource
|
||||||
{
|
{
|
||||||
@ -36,7 +37,6 @@ public class PodResource
|
|||||||
PodService podService;
|
PodService podService;
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Blocking
|
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public List<Pod> getPods(@QueryParam("namespace") String namespace)
|
public List<Pod> getPods(@QueryParam("namespace") String namespace)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import io.fabric8.kubernetes.client.KubernetesClient;
|
|||||||
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
||||||
import io.quarkus.runtime.Startup;
|
import io.quarkus.runtime.Startup;
|
||||||
import io.quarkus.security.Authenticated;
|
import io.quarkus.security.Authenticated;
|
||||||
|
import io.smallrye.common.annotation.Blocking;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
@ -23,6 +24,7 @@ import java.util.Optional;
|
|||||||
@Path("/services")
|
@Path("/services")
|
||||||
@Startup
|
@Startup
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
|
@Blocking
|
||||||
@Authenticated
|
@Authenticated
|
||||||
public class ServiceResource
|
public class ServiceResource
|
||||||
{
|
{
|
||||||
|
|||||||
42
src/main/java/dev/dinauer/service/DeploymentService.java
Normal file
42
src/main/java/dev/dinauer/service/DeploymentService.java
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package dev.dinauer.service;
|
||||||
|
|
||||||
|
import dev.dinauer.utils.ClientProvider;
|
||||||
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
|
import io.fabric8.kubernetes.api.model.apps.Deployment;
|
||||||
|
import io.fabric8.kubernetes.client.dsl.AppsAPIGroupDSL;
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import jakarta.inject.Inject;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@ApplicationScoped
|
||||||
|
public class DeploymentService
|
||||||
|
{
|
||||||
|
@Inject
|
||||||
|
ClientProvider clientProvider;
|
||||||
|
|
||||||
|
public List<Deployment> findByNamespace(String namespace)
|
||||||
|
{
|
||||||
|
try(AppsAPIGroupDSL dsl = clientProvider.getClient().apps())
|
||||||
|
{
|
||||||
|
return dsl.deployments().inNamespace(namespace).list().getItems();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Deployment> findAll()
|
||||||
|
{
|
||||||
|
try(AppsAPIGroupDSL dsl = clientProvider.getClient().apps())
|
||||||
|
{
|
||||||
|
return dsl.deployments().inAnyNamespace().list().getItems();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rescale(String namespace, String name, int replicaCount)
|
||||||
|
{
|
||||||
|
try(AppsAPIGroupDSL dsl = clientProvider.getClient().apps())
|
||||||
|
{
|
||||||
|
dsl.deployments().inNamespace(namespace).withName(name).scale(replicaCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user