/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank;
/*
* #%L
* Cloud Rest Client
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.core.MediaType;
import com.intuit.tank.api.model.v1.cloud.CloudVmStatus;
import com.intuit.tank.api.model.v1.cloud.CloudVmStatusContainer;
import com.intuit.tank.api.service.v1.cloud.CloudService;
import com.intuit.tank.rest.BaseRestClient;
import com.intuit.tank.rest.RestServiceException;
import com.intuit.tank.rest.util.ServiceConsants;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;
/**
* CloudServiceClient
*
* @author dangleton
*
*/
public class CloudServiceClient extends BaseRestClient {
private static final String SERVICE_BASE_URL = ServiceConsants.REST_SERVICE_CONTEXT
+ CloudService.SERVICE_RELATIVE_PATH;
/**
*
* @param serviceUrl
*/
public CloudServiceClient(String serviceUrl) {
super(serviceUrl, null, null);
}
/**
*
* @param serviceUrl
*/
public CloudServiceClient(String serviceUrl, final String proxyServer, final Integer proxyPort) {
super(serviceUrl, proxyServer, proxyPort);
}
/**
*
* @return
*/
protected String getServiceBaseUrl() {
return SERVICE_BASE_URL;
}
/**
* @{inheritDoc
*/
public String getSummaryStatus(String jobId) throws RestServiceException,
UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_REPORTING_SUMMARY_STATUS,
jobId));
ClientResponse response = webResource.accept(MediaType.TEXT_PLAIN_TYPE).get(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
return response.getEntity(String.class);
}
/**
*
* @param jobId
* @param minValue
* @param maxValue
* @return
*/
public String userIdFromRange(String jobId, int minValue, int maxValue) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_USER_ID_FROM_RANGE, jobId,
Integer.toString(minValue), Integer.toString(maxValue)));
ClientResponse response = webResource.accept(MediaType.TEXT_PLAIN_TYPE).get(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
return response.getEntity(String.class);
}
/**
* @{inheritDoc
*/
public CloudVmStatus getVmStatus(String instanceId) throws RestServiceException, UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_INSTANCE_STATUS, instanceId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).get(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
return response.getEntity(CloudVmStatus.class);
}
/**
* @{inheritDoc
*/
public CloudVmStatusContainer getVmStatusForJob(String jobId) throws RestServiceException,
UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_JOB_STATUS, jobId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).get(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
return response.getEntity(CloudVmStatusContainer.class);
}
/**
* @{inheritDoc
*/
public void setVmStatus(String instanceId, CloudVmStatus status) throws RestServiceException,
UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_INSTANCE_STATUS, instanceId));
ClientResponse response = webResource.entity(status, MediaType.APPLICATION_XML_TYPE).put(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void stopInstance(String instanceId) throws RestServiceException, UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_STOP_INSTANCE, instanceId));
ClientResponse response = webResource.post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void stopInstances(ArrayList<String> instanceIds) throws RestServiceException, UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_STOP_INSTANCE));
ClientResponse response = webResource.entity(instanceIds, MediaType.APPLICATION_XML).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public CloudVmStatus startReportingProxy(String location) throws RestServiceException, UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_REPORTING_START, location));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
return response.getEntity(CloudVmStatus.class);
}
/**
* @{inheritDoc
*/
public void stopReportingProxy(String location) throws RestServiceException, UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_REPORTING_STOP, location));
ClientResponse response = webResource.post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public CloudVmStatus getReportingProxyStatus(String location) throws RestServiceException,
UniformInterfaceException {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_REPORTING_STATUS, location));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).get(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
return response.getEntity(CloudVmStatus.class);
}
/**
* @{inheritDoc
*/
public void killInstance(String instanceId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_KILL_INSTANCE, instanceId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void killJob(String jobId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_KILL_JOB, jobId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void killInstances(List<String> instanceIds) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_KILL_INSTANCE));
ClientResponse response = webResource.entity(instanceIds, MediaType.APPLICATION_XML).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void stopJob(String jobId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_STOP_JOB, jobId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void stopAgent(String instanceId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_STOP_INSTANCE, instanceId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void stopAgents(List<String> instanceIds) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_STOP_INSTANCE));
ClientResponse response = webResource.entity(instanceIds, MediaType.APPLICATION_XML).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void pauseJob(String jobId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_PAUSE_JOB, jobId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void pauseAgent(String instanceId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_PAUSE_INSTANCE, instanceId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void pauseAgents(List<String> instanceIds) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_RESTART_INSTANCE));
ClientResponse response = webResource.entity(instanceIds, MediaType.APPLICATION_XML).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void restartJob(String jobId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_RESTART_JOB, jobId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void restartAgent(String instanceId) {
WebResource webResource = client
.resource(urlBuilder.buildUrl(CloudService.METHOD_RESTART_INSTANCE, instanceId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void restartAgents(List<String> instanceIds) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_RESTART_INSTANCE));
ClientResponse response = webResource.entity(instanceIds, MediaType.APPLICATION_XML).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void pauseRampJob(String jobId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_PAUSE_RAMP_JOB, jobId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void pauseRampAgent(String instanceId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_PAUSE_RAMP_INSTANCE,
instanceId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void pauseRampAgents(List<String> instanceIds) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_PAUSE_RAMP_INSTANCE));
ClientResponse response = webResource.entity(instanceIds, MediaType.APPLICATION_XML).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void resumeRampJob(String jobId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_RESUME_RAMP_JOB, jobId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void resumeRampAgent(String instanceId) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_RESUME_RAMP_INSTANCE,
instanceId));
ClientResponse response = webResource.accept(MediaType.APPLICATION_XML_TYPE).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
/**
* @{inheritDoc
*/
public void resumeRampAgents(List<String> instanceIds) {
WebResource webResource = client.resource(urlBuilder.buildUrl(CloudService.METHOD_RESUME_RAMP_INSTANCE));
ClientResponse response = webResource.entity(instanceIds, MediaType.APPLICATION_XML).post(ClientResponse.class);
exceptionHandler.checkStatusCode(response);
}
}