use of org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type in project ozone by apache.
the class OMKeyRequestFactory method createRequest.
/**
* Create OM request based on the bucket layout type.
*
* @param omRequest om key request
* @param ozoneManager ozone manager
* @return omKeyRequest
* @throws IOException
*/
public static OMKeyRequest createRequest(OMRequest omRequest, OzoneManager ozoneManager) throws IOException {
Type cmdType = omRequest.getCmdType();
KeyArgs keyArgs;
OMKeyRequest omKeyRequest = null;
switch(cmdType) {
case CreateDirectory:
keyArgs = omRequest.getCreateDirectoryRequest().getKeyArgs();
omKeyRequest = OMDirectoryCreateRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case CreateFile:
keyArgs = omRequest.getCreateFileRequest().getKeyArgs();
omKeyRequest = OMFileCreateRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case CreateKey:
keyArgs = omRequest.getCreateKeyRequest().getKeyArgs();
omKeyRequest = OMKeyCreateRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case AllocateBlock:
keyArgs = omRequest.getAllocateBlockRequest().getKeyArgs();
omKeyRequest = OMAllocateBlockRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case CommitKey:
keyArgs = omRequest.getCommitKeyRequest().getKeyArgs();
omKeyRequest = OMKeyCommitRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case DeleteKey:
keyArgs = omRequest.getDeleteKeyRequest().getKeyArgs();
omKeyRequest = OMKeyDeleteRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case DeleteKeys:
return new OMKeysDeleteRequest(omRequest);
case RenameKey:
keyArgs = omRequest.getRenameKeyRequest().getKeyArgs();
omKeyRequest = OMKeyRenameRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case RenameKeys:
return new OMKeysRenameRequest(omRequest);
case PurgeKeys:
omKeyRequest = new OMKeyPurgeRequest(omRequest);
break;
case PurgePaths:
omKeyRequest = new OMPathsPurgeRequestWithFSO(omRequest);
break;
case InitiateMultiPartUpload:
keyArgs = omRequest.getInitiateMultiPartUploadRequest().getKeyArgs();
omKeyRequest = S3InitiateMultipartUploadRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case CommitMultiPartUpload:
keyArgs = omRequest.getCommitMultiPartUploadRequest().getKeyArgs();
omKeyRequest = S3MultipartUploadCommitPartRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case AbortMultiPartUpload:
keyArgs = omRequest.getAbortMultiPartUploadRequest().getKeyArgs();
omKeyRequest = S3MultipartUploadAbortRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
case CompleteMultiPartUpload:
keyArgs = omRequest.getCompleteMultiPartUploadRequest().getKeyArgs();
omKeyRequest = S3MultipartUploadCompleteRequest.getInstance(keyArgs, omRequest, ozoneManager);
break;
default:
// #createRequest() method.
break;
}
return omKeyRequest;
}
use of org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type in project ozone by apache.
the class OzoneManagerRatisUtils method createClientRequest.
/**
* Create OMClientRequest which encapsulates the OMRequest.
* @param omRequest
* @return OMClientRequest
* @throws IOException
*/
@SuppressWarnings("checkstyle:methodlength")
public static OMClientRequest createClientRequest(OMRequest omRequest, OzoneManager ozoneManager) throws IOException {
// Handling of exception by createClientRequest(OMRequest, OzoneManger):
// Either the code will take FSO or non FSO path, both classes has a
// validateAndUpdateCache() function which also contains
// validateBucketAndVolume() function which validates bucket and volume and
// throws necessary exceptions if required. validateAndUpdateCache()
// function has catch block which catches the exception if required and
// handles it appropriately.
Type cmdType = omRequest.getCmdType();
OzoneManagerProtocolProtos.KeyArgs keyArgs;
BucketLayout bucketLayout = BucketLayout.DEFAULT;
switch(cmdType) {
case CreateVolume:
return new OMVolumeCreateRequest(omRequest);
case SetVolumeProperty:
boolean hasQuota = omRequest.getSetVolumePropertyRequest().hasQuotaInBytes();
boolean hasOwner = omRequest.getSetVolumePropertyRequest().hasOwnerName();
Preconditions.checkState(hasOwner || hasQuota, "Either Quota or owner " + "should be set in the SetVolumeProperty request");
Preconditions.checkState(!(hasOwner && hasQuota), "Either Quota or " + "owner should be set in the SetVolumeProperty request. Should not " + "set both");
if (hasQuota) {
return new OMVolumeSetQuotaRequest(omRequest);
} else {
return new OMVolumeSetOwnerRequest(omRequest);
}
case DeleteVolume:
return new OMVolumeDeleteRequest(omRequest);
case CreateBucket:
return new OMBucketCreateRequest(omRequest);
case DeleteBucket:
return new OMBucketDeleteRequest(omRequest);
case SetBucketProperty:
boolean hasBucketOwner = omRequest.getSetBucketPropertyRequest().getBucketArgs().hasOwnerName();
if (hasBucketOwner) {
return new OMBucketSetOwnerRequest(omRequest);
} else {
return new OMBucketSetPropertyRequest(omRequest);
}
case AddAcl:
case RemoveAcl:
case SetAcl:
return getOMAclRequest(omRequest, ozoneManager);
case GetDelegationToken:
return new OMGetDelegationTokenRequest(omRequest);
case CancelDelegationToken:
return new OMCancelDelegationTokenRequest(omRequest);
case RenewDelegationToken:
return new OMRenewDelegationTokenRequest(omRequest);
case GetS3Secret:
return new S3GetSecretRequest(omRequest);
case RecoverTrash:
return new OMTrashRecoverRequest(omRequest);
case FinalizeUpgrade:
return new OMFinalizeUpgradeRequest(omRequest);
case Prepare:
return new OMPrepareRequest(omRequest);
case CancelPrepare:
return new OMCancelPrepareRequest(omRequest);
case RevokeS3Secret:
return new S3RevokeSecretRequest(omRequest);
/**
* Following key requests will be created in {@link OMKeyRequestFactory}.
*/
case CreateDirectory:
case CreateFile:
case CreateKey:
case AllocateBlock:
case CommitKey:
case DeleteKey:
case DeleteKeys:
case RenameKey:
case RenameKeys:
case PurgeKeys:
case PurgePaths:
case InitiateMultiPartUpload:
case CommitMultiPartUpload:
case AbortMultiPartUpload:
case CompleteMultiPartUpload:
return OMKeyRequestFactory.createRequest(omRequest, ozoneManager);
default:
throw new IllegalStateException("Unrecognized write command " + "type request" + cmdType);
}
}
use of org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type in project ozone by apache.
the class OzoneManagerRequestHandler method handleReadRequest.
// TODO simplify it to make it shorter
@SuppressWarnings("methodlength")
@Override
public OMResponse handleReadRequest(OMRequest request) {
if (LOG.isDebugEnabled()) {
LOG.debug("Received OMRequest: {}, ", request);
}
Type cmdType = request.getCmdType();
OMResponse.Builder responseBuilder = OmResponseUtil.getOMResponseBuilder(request);
try {
switch(cmdType) {
case CheckVolumeAccess:
CheckVolumeAccessResponse checkVolumeAccessResponse = checkVolumeAccess(request.getCheckVolumeAccessRequest());
responseBuilder.setCheckVolumeAccessResponse(checkVolumeAccessResponse);
break;
case InfoVolume:
InfoVolumeResponse infoVolumeResponse = infoVolume(request.getInfoVolumeRequest());
responseBuilder.setInfoVolumeResponse(infoVolumeResponse);
break;
case ListVolume:
ListVolumeResponse listVolumeResponse = listVolumes(request.getListVolumeRequest());
responseBuilder.setListVolumeResponse(listVolumeResponse);
break;
case InfoBucket:
InfoBucketResponse infoBucketResponse = infoBucket(request.getInfoBucketRequest());
responseBuilder.setInfoBucketResponse(infoBucketResponse);
break;
case ListBuckets:
ListBucketsResponse listBucketsResponse = listBuckets(request.getListBucketsRequest());
responseBuilder.setListBucketsResponse(listBucketsResponse);
break;
case LookupKey:
LookupKeyResponse lookupKeyResponse = lookupKey(request.getLookupKeyRequest(), request.getVersion());
responseBuilder.setLookupKeyResponse(lookupKeyResponse);
break;
case ListKeys:
ListKeysResponse listKeysResponse = listKeys(request.getListKeysRequest(), request.getVersion());
responseBuilder.setListKeysResponse(listKeysResponse);
break;
case ListTrash:
ListTrashResponse listTrashResponse = listTrash(request.getListTrashRequest(), request.getVersion());
responseBuilder.setListTrashResponse(listTrashResponse);
break;
case ListMultiPartUploadParts:
MultipartUploadListPartsResponse listPartsResponse = listParts(request.getListMultipartUploadPartsRequest());
responseBuilder.setListMultipartUploadPartsResponse(listPartsResponse);
break;
case ListMultipartUploads:
ListMultipartUploadsResponse response = listMultipartUploads(request.getListMultipartUploadsRequest());
responseBuilder.setListMultipartUploadsResponse(response);
break;
case ServiceList:
ServiceListResponse serviceListResponse = getServiceList(request.getServiceListRequest());
responseBuilder.setServiceListResponse(serviceListResponse);
break;
case DBUpdates:
DBUpdatesResponse dbUpdatesResponse = getOMDBUpdates(request.getDbUpdatesRequest());
responseBuilder.setDbUpdatesResponse(dbUpdatesResponse);
break;
case GetFileStatus:
GetFileStatusResponse getFileStatusResponse = getOzoneFileStatus(request.getGetFileStatusRequest(), request.getVersion());
responseBuilder.setGetFileStatusResponse(getFileStatusResponse);
break;
case LookupFile:
LookupFileResponse lookupFileResponse = lookupFile(request.getLookupFileRequest(), request.getVersion());
responseBuilder.setLookupFileResponse(lookupFileResponse);
break;
case ListStatus:
ListStatusResponse listStatusResponse = listStatus(request.getListStatusRequest(), request.getVersion());
responseBuilder.setListStatusResponse(listStatusResponse);
break;
case GetAcl:
GetAclResponse getAclResponse = getAcl(request.getGetAclRequest());
responseBuilder.setGetAclResponse(getAclResponse);
break;
case FinalizeUpgradeProgress:
FinalizeUpgradeProgressResponse upgradeProgressResponse = reportUpgradeProgress(request.getFinalizeUpgradeProgressRequest());
responseBuilder.setFinalizeUpgradeProgressResponse(upgradeProgressResponse);
break;
case PrepareStatus:
PrepareStatusResponse prepareStatusResponse = getPrepareStatus();
responseBuilder.setPrepareStatusResponse(prepareStatusResponse);
break;
default:
responseBuilder.setSuccess(false);
responseBuilder.setMessage("Unrecognized Command Type: " + cmdType);
break;
}
responseBuilder.setSuccess(true);
} catch (IOException ex) {
responseBuilder.setSuccess(false);
responseBuilder.setStatus(exceptionToResponseStatus(ex));
if (ex.getMessage() != null) {
responseBuilder.setMessage(ex.getMessage());
}
}
return responseBuilder.build();
}
Aggregations