Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,21 @@ public String createSnapshot(String volumeName,
return proxy.createSnapshot(volumeName, bucketName, snapshotName);
}

/**
* Rename snapshot.
*
* @param volumeName vol to be used
* @param bucketName bucket to be used
* @param snapshotOldName Old name of the snapshot
* @param snapshotNewName New name of the snapshot
*
* @throws IOException
*/
public void renameSnapshot(String volumeName,
String bucketName, String snapshotOldName, String snapshotNewName) throws IOException {
proxy.renameSnapshot(volumeName, bucketName, snapshotOldName, snapshotNewName);
}

/**
* Delete snapshot.
* @param volumeName vol to be used
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1092,6 +1092,19 @@ Map<DatanodeDetails, OzoneInputStream>> getKeysEveryReplicas(
String createSnapshot(String volumeName,
String bucketName, String snapshotName) throws IOException;

/**
* Rename snapshot.
*
* @param volumeName Vol to be used
* @param bucketName Bucket to be used
* @param snapshotOldName Old name of the snapshot
* @param snapshotNewName New name of the snapshot
*
* @throws IOException
*/
void renameSnapshot(String volumeName,
String bucketName, String snapshotOldName, String snapshotNewName) throws IOException;

/**
* Delete snapshot.
* @param volumeName vol to be used
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -965,6 +965,31 @@ public String createSnapshot(String volumeName,
bucketName, snapshotName);
}

/**
* Rename Snapshot.
*
* @param volumeName vol to be used
* @param bucketName bucket to be used
* @param snapshotOldName Old name of the snapshot
* @param snapshotNewName New name of the snapshot
*
* @throws IOException
*/
@Override
public void renameSnapshot(String volumeName,
String bucketName, String snapshotOldName, String snapshotNewName) throws IOException {
Preconditions.checkArgument(StringUtils.isNotBlank(volumeName),
"volume can't be null or empty.");
Preconditions.checkArgument(StringUtils.isNotBlank(bucketName),
"bucket can't be null or empty.");
Preconditions.checkArgument(StringUtils.isNotBlank(snapshotOldName),
"old snapshot name can't be null or empty.");
Preconditions.checkArgument(StringUtils.isNotBlank(snapshotNewName),
"new snapshot name can't be null or empty.");

ozoneManagerClient.renameSnapshot(volumeName, bucketName, snapshotOldName, snapshotNewName);
}

/**
* Delete Snapshot.
* @param volumeName vol to be used
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ public static boolean isReadOnly(
case SetRangerServiceVersion:
case CreateSnapshot:
case DeleteSnapshot:
case RenameSnapshot:
case SnapshotMoveDeletedKeys:
case SnapshotPurge:
case RecoverLease:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,21 @@ default String createSnapshot(String volumeName,
"this to be implemented");
}

/**
* Rename snapshot.
* @param volumeName vol to be used
* @param bucketName bucket to be used
* @param snapshotOldName Old name of the snapshot
* @param snapshotNewName New name of the snapshot
*
* @throws IOException
*/
default void renameSnapshot(String volumeName,
String bucketName, String snapshotOldName, String snapshotNewName) throws IOException {
throw new UnsupportedOperationException("OzoneManager does not require " +
"this to be implemented");
}

/**
* Delete snapshot.
* @param volumeName vol to be used
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.BucketArgs;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.BucketInfo;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CancelDelegationTokenResponseProto;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CancelPrepareRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CancelPrepareResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CheckVolumeAccessRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CommitKeyRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CreateBucketRequest;
Expand All @@ -106,6 +108,8 @@
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DeleteTenantRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DeleteTenantResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DeleteVolumeRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.EchoRPCRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.EchoRPCResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.FinalizeUpgradeProgressRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.FinalizeUpgradeProgressResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.FinalizeUpgradeRequest;
Expand All @@ -121,22 +125,21 @@
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.GetS3SecretResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.GetS3VolumeContextRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.GetS3VolumeContextResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotInfoRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.InfoBucketRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.InfoBucketResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.InfoVolumeRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.InfoVolumeResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListBucketsRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListBucketsResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListKeysLightResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListKeysRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListKeysResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListKeysLightResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListMultipartUploadsRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListMultipartUploadsResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListStatusLightResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListStatusRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListStatusResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListStatusLightResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListTenantRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListTenantResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ListTrashRequest;
Expand All @@ -161,6 +164,11 @@
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OzoneAclInfo;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OzoneFileStatusProto;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OzoneFileStatusProtoLight;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareRequestArgs;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareStatusRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrepareStatusResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.PrintCompactionLogDagRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RangerBGSyncRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RangerBGSyncResponse;
Expand All @@ -172,25 +180,30 @@
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RefetchSecretKeyResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RemoveAclRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RemoveAclResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysArgs;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysMap;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeyRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameKeysRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenameSnapshotRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RenewDelegationTokenResponseProto;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.RevokeS3SecretRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.S3Authentication;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.S3Secret;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SafeMode;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ServiceListRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ServiceListResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetAclRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetAclResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetBucketPropertyRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetBucketPropertyResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetS3SecretRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetS3SecretResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetSafeModeRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetSafeModeResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetTimesRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetVolumePropertyRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SetVolumePropertyResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotInfoRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.TenantAssignAdminRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.TenantAssignUserAccessIdRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.TenantAssignUserAccessIdResponse;
Expand All @@ -202,8 +215,6 @@
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.TenantRevokeUserAccessIdRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.VolumeInfo;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.EchoRPCRequest;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.EchoRPCResponse;
import org.apache.hadoop.ozone.protocolPB.OMPBHelper;
import org.apache.hadoop.ozone.security.OzoneTokenIdentifier;
import org.apache.hadoop.ozone.security.acl.OzoneObj;
Expand Down Expand Up @@ -1224,6 +1235,26 @@ public String createSnapshot(String volumeName,
return snapshotInfo.getName();
}

/**
* {@inheritDoc}
*/
@Override
public void renameSnapshot(String volumeName, String bucketName,
String snapshotOldName, String snapshotNewName) throws IOException {
RenameSnapshotRequest.Builder requestBuilder =
RenameSnapshotRequest.newBuilder()
.setVolumeName(volumeName)
.setBucketName(bucketName)
.setSnapshotOldName(snapshotOldName)
.setSnapshotNewName(snapshotNewName);

final OMRequest omRequest = createOMRequest(Type.RenameSnapshot)
.setRenameSnapshotRequest(requestBuilder)
.build();
final OMResponse omResponse = submitRequest(omRequest);
handleError(omResponse);
}

/**
* {@inheritDoc}
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ enum Type {
SetSnapshotProperty = 128;
ListStatusLight = 129;
GetSnapshotInfo = 130;
RenameSnapshot = 131;
}

enum SafeMode {
Expand Down Expand Up @@ -281,6 +282,7 @@ message OMRequest {
optional MultipartUploadsExpiredAbortRequest multipartUploadsExpiredAbortRequest = 126;
optional SetSnapshotPropertyRequest SetSnapshotPropertyRequest = 127;
optional SnapshotInfoRequest SnapshotInfoRequest = 128;
optional RenameSnapshotRequest RenameSnapshotRequest = 129;
}

message OMResponse {
Expand Down Expand Up @@ -403,6 +405,7 @@ message OMResponse {
optional ListStatusLightResponse listStatusLightResponse = 129;
optional SnapshotInfoResponse SnapshotInfoResponse = 130;
optional OMLockDetailsProto omLockDetails = 131;
optional RenameSnapshotResponse RenameSnapshotResponse = 132;
}

enum Status {
Expand Down Expand Up @@ -1827,6 +1830,14 @@ message CreateSnapshotRequest {
optional uint64 creationTime = 5;
}

message RenameSnapshotRequest {
optional string volumeName = 1;
optional string bucketName = 2;
optional string snapshotOldName = 3;
optional string snapshotNewName = 4;
optional uint64 renameTime = 5;
}

message ListSnapshotRequest {
optional string volumeName = 1;
optional string bucketName = 2;
Expand Down Expand Up @@ -1989,6 +2000,10 @@ message DeleteSnapshotResponse {

}

message RenameSnapshotResponse {
optional SnapshotInfo snapshotInfo = 1;
}

message SnapshotInfoResponse {
optional SnapshotInfo snapshotInfo = 1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ public enum OMAction implements AuditAction {
CREATE_SNAPSHOT,
LIST_SNAPSHOT,
DELETE_SNAPSHOT,
RENAME_SNAPSHOT,
SNAPSHOT_MOVE_DELETED_KEYS,
SNAPSHOT_INFO,
SET_TIMES,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,14 @@ public synchronized void addSnapshot(SnapshotInfo snapshotInfo)
snapshotInfo.getTableKey());
}

/**
* Update snapshot chain when snapshot changes (e.g. renamed).
*/
public synchronized void updateSnapshot(SnapshotInfo snapshotInfo) {
snapshotIdToTableKey.computeIfPresent(snapshotInfo.getSnapshotId(),
(snapshotId, dbTableKey) -> snapshotInfo.getTableKey());
}

/**
* Delete snapshot from snapshot chain.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
import org.apache.hadoop.ozone.om.request.snapshot.OMSnapshotDeleteRequest;
import org.apache.hadoop.ozone.om.request.snapshot.OMSnapshotMoveDeletedKeysRequest;
import org.apache.hadoop.ozone.om.request.snapshot.OMSnapshotPurgeRequest;
import org.apache.hadoop.ozone.om.request.snapshot.OMSnapshotRenameRequest;
import org.apache.hadoop.ozone.om.request.snapshot.OMSnapshotSetPropertyRequest;
import org.apache.hadoop.ozone.om.request.upgrade.OMCancelPrepareRequest;
import org.apache.hadoop.ozone.om.request.upgrade.OMFinalizeUpgradeRequest;
Expand Down Expand Up @@ -224,6 +225,8 @@ public static OMClientRequest createClientRequest(OMRequest omRequest,
return new OMSnapshotCreateRequest(omRequest);
case DeleteSnapshot:
return new OMSnapshotDeleteRequest(omRequest);
case RenameSnapshot:
return new OMSnapshotRenameRequest(omRequest);
case SnapshotMoveDeletedKeys:
return new OMSnapshotMoveDeletedKeysRequest(omRequest);
case SnapshotPurge:
Expand Down
Loading