package com.hubspot.singularity.resources; import java.util.Set; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; 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.SingularityUser; import com.hubspot.singularity.auth.SingularityAuthorizationHelper; import com.hubspot.singularity.data.InactiveSlaveManager; import com.wordnik.swagger.annotations.Api; @Path(InactiveSlaveResource.PATH) @Produces(MediaType.APPLICATION_JSON) @Api(description="Manages Singularity Deploys for existing requests", value=DisastersResource.PATH) public class InactiveSlaveResource { public static final String PATH = SingularityService.API_BASE_PATH + "/inactive"; private final InactiveSlaveManager inactiveSlaveManager; private final SingularityAuthorizationHelper authorizationHelper; private final Optional<SingularityUser> user; @Inject public InactiveSlaveResource(InactiveSlaveManager inactiveSlaveManager, SingularityAuthorizationHelper authorizationHelper, Optional<SingularityUser> user) { this.inactiveSlaveManager = inactiveSlaveManager; this.authorizationHelper = authorizationHelper; this.user = user; } @GET public Set<String> getInactiveSlaves() { return inactiveSlaveManager.getInactiveSlaves(); } @POST public void deactivateSlave(@QueryParam("host") String host) { authorizationHelper.checkAdminAuthorization(user); inactiveSlaveManager.deactivateSlave(host); } @DELETE public void reactivateSlave(@QueryParam("host") String host) { authorizationHelper.checkAdminAuthorization(user); inactiveSlaveManager.activateSlave(host); } }