/*******************************************************************************
* Copyright (c) Jan 28, 2011 Zend Technologies Ltd.
* 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
*******************************************************************************/
package org.zend.webapi.internal.core.connection.request;
import java.util.Date;
import org.restlet.data.Method;
import org.zend.webapi.core.connection.data.IResponseData;
import org.zend.webapi.core.connection.data.IResponseData.ResponseType;
import org.zend.webapi.core.connection.data.values.ServerType;
import org.zend.webapi.core.connection.data.values.WebApiVersion;
import org.zend.webapi.core.connection.response.ResponseCode;
/**
* Remove a server from the cluster. The removal process may be asynchronous if
* Session Clustering is used – if this is the case, the initial operation will
* return an HTTP 202 response. As long as the server is not fully removed,
* further calls to remove the same server should be idempotent. On a ZSCM with
* no valid license, this operation will fail.
* <p>
*
* Method Parameters:
* <table border="1">
* <tr>
* <th>Parameter</th>
* <th>Type</th>
* <th>Required</th>
* <th>Description</th>
* </tr>
* <tr>
* <td>serverId</td>
* <td>String</td>
* <td>Yes</td>
* <td>Server ID</td>
* </tr>
* </tr>
* <tr>
* <td>force</td>
* <td>Boolean</td>
* <td>No</td>
* <td>Force-remove the server, skipping graceful shutdown process. Default is
* FALSE</td>
* </tr>
* </table>
*
* @author Roy, 2011
*/
public class ClusterRemoveServerRequest extends AbstractRequest {
private static final ResponseCode[] RESPONSE_CODES = new ResponseCode[] {
ResponseCode.OK, ResponseCode.ACCEPTED };
public ClusterRemoveServerRequest(WebApiVersion version, Date date,
String keyName, String userAgent, String host, String secretKey,
ServerType type) {
super(version, date, keyName, userAgent, host, secretKey, type);
}
/*
* (non-Javadoc)
*
* @see org.zend.webapi.core.connection.request.IRequest#getMethod()
*/
public Method getMethod() {
return Method.POST;
}
/**
* set Server id
*
* @param server
* Id
*/
public ClusterRemoveServerRequest setServerId(String serverId) {
addParameter("serverId", serverId);
return this;
}
/**
* Force-remove the server, skipping graceful shutdown process. Default is
* FALSE
*
* @param force
*/
public void setForce(boolean force) {
addParameter("force", force);
}
/*
* (non-Javadoc)
*
* @see org.zend.webapi.internal.core.connection.request.AbstractRequest#
* getValidResponseCode()
*/
@Override
protected ResponseCode[] getValidResponseCode() {
return RESPONSE_CODES;
}
/*
* (non-Javadoc)
*
* @see
* org.zend.webapi.core.connection.request.IRequest#getExpectedResponseDataType
* ()
*/
public ResponseType getExpectedResponseDataType() {
return IResponseData.ResponseType.SERVER_INFO;
}
/*
* (non-Javadoc)
*
* @see org.zend.webapi.internal.core.connection.request.AbstractRequest#
* getMethodName()
*/
protected String getRequestName() {
return "clusterRemoveServer";
}
}