use of com.github.ambry.protocol.AdminRequest in project ambry by linkedin.
the class ServerAdminTool method controlReplication.
/**
* Sends a {@link ReplicationControlAdminRequest} to enable/disable replication from {@code origins} for
* {@code partitionIdStr} in {@code dataNodeId}.
* @param dataNodeId the {@link DataNodeId} to contact.
* @param partitionId the {@link PartitionId} to control replication for. Can be {@code null}.
* @param origins the names of the datacenters from which replication should be controlled.
* @param enable the enable (or disable) status required for replication from {@code origins}.
* @return the {@link ServerErrorCode} that is returned.
* @throws IOException
* @throws TimeoutException
*/
public ServerErrorCode controlReplication(DataNodeId dataNodeId, PartitionId partitionId, List<String> origins, boolean enable) throws IOException, TimeoutException {
AdminRequest adminRequest = new AdminRequest(AdminRequestOrResponseType.ReplicationControl, partitionId, correlationId.incrementAndGet(), CLIENT_ID);
ReplicationControlAdminRequest controlRequest = new ReplicationControlAdminRequest(origins, enable, adminRequest);
ResponseInfo response = sendRequestGetResponse(dataNodeId, partitionId, controlRequest);
AdminResponse adminResponse = AdminResponse.readFrom(new NettyByteBufDataInputStream(response.content()));
response.release();
return adminResponse.getError();
}
Aggregations