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();
  }
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
ambry-tools/src/main/java/com/github/ambry/tools/admin/ServerAdminTool.java