All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.resources.SlaveResource Maven / Gradle / Ivy

package com.hubspot.singularity.resources;

import java.util.List;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.google.common.base.Optional;
import com.google.inject.Inject;
import com.hubspot.singularity.SingularityService;
import com.hubspot.singularity.SingularitySlave;
import com.hubspot.singularity.data.SlaveManager;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;

@Path(SlaveResource.PATH)
@Produces({ MediaType.APPLICATION_JSON })
@Api(description="Manages Singularity slaves.", value=SlaveResource.PATH)
public class SlaveResource extends AbstractMachineResource {
  public static final String PATH = SingularityService.API_BASE_PATH + "/slaves";

  private final SlaveManager slaveManager;

  @Inject
  public SlaveResource(SlaveManager slaveManager) {
    super(slaveManager);

    this.slaveManager = slaveManager;
  }

  @Override
  protected String getObjectTypeString() {
    return "Slave";
  }

  @GET
  @Path("/active")
  @ApiOperation("Retrieve the list of active slaves.")
  public List getSlaves() {
    return slaveManager.getActiveObjects();
  }

  @GET
  @Path("/dead")
  @ApiOperation("Retrieve the list of dead slaves.")
  public List getDead() {
    return slaveManager.getDeadObjects();
  }

  @GET
  @Path("/decomissioning")
  @ApiOperation("Retrieve the list of decommissioning slaves.")
  public List getDecomissioning() {
    return slaveManager.getDecomissioningObjects();
  }

  @DELETE
  @Path("/slave/{slaveId}/dead")
  @ApiOperation("Remove a specific dead slave.")
  public void removeDeadSlave(@PathParam("slaveId") String slaveId) {
    super.removeDead(slaveId);
  }

  @DELETE
  @Path("/slave/{slaveId}/decomissioning")
  @ApiOperation("Remove a specific decommissioning slave")
  public void removeDecomissioningSlave(@PathParam("slaveId") String slaveId) {
    super.removeDecomissioning(slaveId);
  }

  @POST
  @Path("/slave/{slaveId}/decomission")
  @ApiOperation("Decommission a specific slave.")
  public void decomissionSlave(@PathParam("slaveId") String slaveId, @QueryParam("user") Optional user) {
    super.decomission(slaveId, user);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy