mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
fix(objectnode): fix the volume load call and error return
Signed-off-by: yhjiango <jiangyunhua@oppo.com>
This commit is contained in:
parent
862fde677a
commit
a56250817d
@ -40,10 +40,9 @@ func (o *ObjectNode) getBucketACLHandler(w http.ResponseWriter, r *http.Request)
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.bucket); err != nil {
|
||||
if vol, err = o.getVol(param.bucket); err != nil {
|
||||
log.LogErrorf("getBucketACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.bucket, err)
|
||||
ec = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var acl *AccessControlPolicy
|
||||
@ -91,10 +90,9 @@ func (o *ObjectNode) putBucketACLHandler(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.bucket); err != nil {
|
||||
if vol, err = o.getVol(param.bucket); err != nil {
|
||||
log.LogErrorf("putBucketACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.bucket, err)
|
||||
ec = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var acl *AccessControlPolicy
|
||||
@ -135,10 +133,9 @@ func (o *ObjectNode) getObjectACLHandler(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.bucket); err != nil {
|
||||
if vol, err = o.getVol(param.bucket); err != nil {
|
||||
log.LogErrorf("getObjectACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.bucket, err)
|
||||
ec = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var acl *AccessControlPolicy
|
||||
@ -189,10 +186,9 @@ func (o *ObjectNode) putObjectACLHandler(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.bucket); err != nil {
|
||||
if vol, err = o.getVol(param.bucket); err != nil {
|
||||
log.LogErrorf("putObjectACLHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.bucket, err)
|
||||
ec = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var acl, oldAcl *AccessControlPolicy
|
||||
|
||||
@ -150,8 +150,9 @@ func (o *ObjectNode) deleteBucketHandler(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(bucket); err != nil {
|
||||
errorCode = NoSuchBucket
|
||||
if vol, err = o.getVol(bucket); err != nil {
|
||||
log.LogErrorf("deleteBucketHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), bucket, err)
|
||||
return
|
||||
}
|
||||
if !vol.IsEmpty() {
|
||||
@ -212,8 +213,7 @@ func (o *ObjectNode) listBucketsHandler(w http.ResponseWriter, r *http.Request)
|
||||
Buckets []bucket `xml:"Buckets>Bucket"`
|
||||
}
|
||||
|
||||
var output = listBucketsOutput{}
|
||||
|
||||
output := listBucketsOutput{}
|
||||
ownVols := userInfo.Policy.OwnVols
|
||||
for _, ownVol := range ownVols {
|
||||
var vol *Volume
|
||||
@ -252,22 +252,30 @@ func (o *ObjectNode) getBucketLocation(w http.ResponseWriter, r *http.Request) {
|
||||
// Get bucket tagging
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html
|
||||
func (o *ObjectNode) getBucketTaggingHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
if len(param.Bucket()) == 0 {
|
||||
_ = InvalidBucketName.ServeResponse(w, r)
|
||||
errorCode = InvalidBucketName
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
_ = NoSuchBucket.ServeResponse(w, r)
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getBucketTaggingHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
|
||||
var xattrInfo *proto.XAttrInfo
|
||||
if xattrInfo, err = vol.GetXAttr("/", XAttrKeyOSSTagging); err != nil {
|
||||
log.LogErrorf("getBucketTaggingHandler: Volume get XAttr fail: requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
_ = InternalErrorCode(err).ServeResponse(w, r)
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
ossTaggingData := xattrInfo.Get(XAttrKeyOSSTagging)
|
||||
@ -275,12 +283,12 @@ func (o *ObjectNode) getBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
|
||||
var encoded []byte
|
||||
if nil == output || len(output.TagSet) == 0 {
|
||||
_ = NoSuchTagSetError.ServeResponse(w, r)
|
||||
errorCode = NoSuchTagSetError
|
||||
return
|
||||
} else {
|
||||
if encoded, err = MarshalXMLEntity(output); err != nil {
|
||||
log.LogErrorf("getBucketTaggingHandler: encode output fail: requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
_ = InternalErrorCode(err).ServeResponse(w, r)
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -294,13 +302,12 @@ func (o *ObjectNode) getBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
// Put bucket tagging
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html
|
||||
func (o *ObjectNode) putBucketTaggingHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
@ -309,22 +316,23 @@ func (o *ObjectNode) putBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
errorCode = NoSuchBucket
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("putBucketTaggingHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
|
||||
var requestBody []byte
|
||||
if requestBody, err = ioutil.ReadAll(r.Body); err != nil {
|
||||
log.LogErrorf("putBucketTaggingHandler: read request body data fail: requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
_ = InvalidArgument.ServeResponse(w, r)
|
||||
errorCode = InvalidArgument
|
||||
return
|
||||
}
|
||||
|
||||
var tagging = NewTagging()
|
||||
if err = UnmarshalXMLEntity(requestBody, tagging); err != nil {
|
||||
log.LogWarnf("putBucketTaggingHandler: decode request body fail: requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
_ = InvalidArgument.ServeResponse(w, r)
|
||||
errorCode = InvalidArgument
|
||||
return
|
||||
}
|
||||
validateRes, errorCode := tagging.Validate()
|
||||
@ -334,8 +342,7 @@ func (o *ObjectNode) putBucketTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
}
|
||||
|
||||
if err = vol.SetXAttr("/", XAttrKeyOSSTagging, []byte(tagging.Encode()), false); err != nil {
|
||||
_ = InternalErrorCode(err).ServeResponse(w, r)
|
||||
return
|
||||
errorCode = InternalErrorCode(err)
|
||||
}
|
||||
|
||||
return
|
||||
@ -348,29 +355,25 @@ func (o *ObjectNode) deleteBucketTaggingHandler(w http.ResponseWriter, r *http.R
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
if len(param.Bucket()) == 0 {
|
||||
errorCode = InvalidBucketName
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteBucketTaggingHandler: load Volume fail: requestID(%v) Volume(%v) err(%v)", GetRequestID(r), param.bucket, err)
|
||||
errorCode = NoSuchBucket
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteBucketTaggingHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
if err = vol.DeleteXAttr("/", XAttrKeyOSSTagging); err != nil {
|
||||
log.LogErrorf("deleteBucketTaggingHandler: Volume delete tagging xattr fail: requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
_ = InternalErrorCode(err).ServeResponse(w, r)
|
||||
log.LogErrorf("deleteBucketTaggingHandler: delete tagging xattr fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
|
||||
@ -38,8 +38,10 @@ var (
|
||||
// Create multipart upload
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
|
||||
func (o *ObjectNode) createMultipleUploadHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
@ -58,10 +60,9 @@ func (o *ObjectNode) createMultipleUploadHandler(w http.ResponseWriter, r *http.
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("createMultipleUploadHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -155,17 +156,12 @@ func (o *ObjectNode) createMultipleUploadHandler(w http.ResponseWriter, r *http.
|
||||
// Uploads a part in a multipart upload.
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html .
|
||||
func (o *ObjectNode) uploadPartHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
// check args
|
||||
@ -198,10 +194,9 @@ func (o *ObjectNode) uploadPartHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("uploadPartHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -237,7 +232,6 @@ func (o *ObjectNode) uploadPartHandler(w http.ResponseWriter, r *http.Request) {
|
||||
// Uploads a part in a multipart upload by copying a existed object.
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html .
|
||||
func (o *ObjectNode) uploadPartCopyHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
@ -350,22 +344,15 @@ func (o *ObjectNode) uploadPartCopyHandler(w http.ResponseWriter, r *http.Reques
|
||||
// List parts
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
|
||||
func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
log.LogInfof("listPartsHandler: list parts, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
// get upload id and part number
|
||||
uploadId := param.GetVar(ParamUploadId)
|
||||
maxParts := param.GetVar(ParamMaxParts)
|
||||
@ -376,7 +363,7 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
if uploadId == "" {
|
||||
log.LogErrorf("listPartsHandler: illegal update ID, requestID(%v) err(%v)", GetRequestID(r), err)
|
||||
_ = InvalidArgument.ServeResponse(w, r)
|
||||
errorCode = InvalidArgument
|
||||
return
|
||||
}
|
||||
|
||||
@ -386,7 +373,7 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
maxPartsInt, err = strconv.ParseUint(maxParts, 10, 64)
|
||||
if err != nil {
|
||||
log.LogErrorf("listPartsHandler: parse max parts fail, requestID(%v) raw(%v) err(%v)", GetRequestID(r), maxParts, err)
|
||||
_ = InvalidArgument.ServeResponse(w, r)
|
||||
errorCode = InvalidArgument
|
||||
return
|
||||
}
|
||||
if maxPartsInt > MaxParts {
|
||||
@ -397,7 +384,7 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
res, err := strconv.ParseUint(partNoMarker, 10, 64)
|
||||
if err != nil {
|
||||
log.LogErrorf("listPatsHandler: parse part number marker fail, requestID(%v) raw(%v) err(%v)", GetRequestID(r), partNoMarker, err)
|
||||
_ = InvalidArgument.ServeResponse(w, r)
|
||||
errorCode = InvalidArgument
|
||||
return
|
||||
}
|
||||
partNoMarkerInt = res
|
||||
@ -413,10 +400,9 @@ func (o *ObjectNode) listPartsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("listPartsHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -540,22 +526,15 @@ func (o *ObjectNode) checkReqParts(reqParts *CompleteMultipartUploadRequest, mul
|
||||
// Complete multipart
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
|
||||
func (o *ObjectNode) completeMultipartUploadHandler(w http.ResponseWriter, r *http.Request) {
|
||||
log.LogInfof("completeMultipartUploadHandler: complete multiple upload, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
// get upload id and part number
|
||||
uploadId := param.GetVar(ParamUploadId)
|
||||
if uploadId == "" {
|
||||
@ -578,10 +557,9 @@ func (o *ObjectNode) completeMultipartUploadHandler(w http.ResponseWriter, r *ht
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("completeMultipartUploadHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -692,23 +670,16 @@ func (o *ObjectNode) completeMultipartUploadHandler(w http.ResponseWriter, r *ht
|
||||
// Abort multipart
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html .
|
||||
func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.Request) {
|
||||
log.LogInfof("abortMultipartUploadHandler: abort multiple upload, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
// check args
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
uploadId := param.GetVar(ParamUploadId)
|
||||
if uploadId == "" {
|
||||
errorCode = InvalidArgument
|
||||
@ -724,10 +695,9 @@ func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("abortMultipartUploadHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -744,7 +714,6 @@ func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.
|
||||
return
|
||||
}
|
||||
log.LogDebugf("abortMultipartUploadHandler: Volume abort multipart, requestID(%v) uploadID(%v) path(%v)", GetRequestID(r), uploadId, param.Object())
|
||||
//errorCode = NoContent
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
return
|
||||
}
|
||||
@ -752,22 +721,15 @@ func (o *ObjectNode) abortMultipartUploadHandler(w http.ResponseWriter, r *http.
|
||||
// List multipart uploads
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
|
||||
func (o *ObjectNode) listMultipartUploadsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
log.LogInfof("listMultipartUploadsHandler: list multipart uploads, requestID(%v) remote(%v)", GetRequestID(r), r.RemoteAddr)
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
// get list uploads parameter
|
||||
prefix := param.GetVar(ParamPrefix)
|
||||
keyMarker := param.GetVar(ParamKeyMarker)
|
||||
@ -782,7 +744,7 @@ func (o *ObjectNode) listMultipartUploadsHandler(w http.ResponseWriter, r *http.
|
||||
maxUploadsInt, err = strconv.ParseUint(maxUploads, 10, 64)
|
||||
if err != nil {
|
||||
log.LogErrorf("listMultipartUploadsHandler: parse max uploads option fail: requestID(%v), err(%v)", GetRequestID(r), err)
|
||||
_ = InvalidArgument.ServeResponse(w, r)
|
||||
errorCode = InvalidArgument
|
||||
return
|
||||
}
|
||||
if maxUploadsInt > MaxUploads {
|
||||
@ -796,10 +758,9 @@ func (o *ObjectNode) listMultipartUploadsHandler(w http.ResponseWriter, r *http.
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("listMultipartUploadsHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@ -46,17 +46,12 @@ func (o *ObjectNode) getObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
var startGet = time.Now()
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
if param.Bucket() == "" {
|
||||
errorCode = InvalidBucketName
|
||||
return
|
||||
@ -66,10 +61,9 @@ func (o *ObjectNode) getObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getObjectHandler: load volume fail: requestID(%v) volume(%v) path(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), param.Object(), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
// parse http range option
|
||||
@ -358,10 +352,7 @@ func (o *ObjectNode) headObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
// check args
|
||||
@ -376,10 +367,9 @@ func (o *ObjectNode) headObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("headObjectHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -533,10 +523,9 @@ func (o *ObjectNode) deleteObjectsHandler(w http.ResponseWriter, r *http.Request
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteObjectsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -1337,21 +1326,15 @@ func (o *ObjectNode) putObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
// Delete object
|
||||
// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html .
|
||||
func (o *ObjectNode) deleteObjectHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
if param.Bucket() == "" {
|
||||
errorCode = InvalidBucketName
|
||||
return
|
||||
@ -1362,10 +1345,9 @@ func (o *ObjectNode) deleteObjectHandler(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteObjectHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -1442,16 +1424,11 @@ func (o *ObjectNode) getObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
func (o *ObjectNode) putObjectTaggingHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
if errorCode != nil {
|
||||
_ = errorCode.ServeResponse(w, r)
|
||||
return
|
||||
}
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
|
||||
if param.Bucket() == "" {
|
||||
errorCode = InvalidBucketName
|
||||
return
|
||||
@ -1462,10 +1439,9 @@ func (o *ObjectNode) putObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("putObjectTaggingHandler: load volume fail: requestID(%v) err(%v)",
|
||||
GetRequestID(r), err)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
|
||||
@ -1508,7 +1484,6 @@ func (o *ObjectNode) putObjectTaggingHandler(w http.ResponseWriter, r *http.Requ
|
||||
func (o *ObjectNode) deleteObjectTaggingHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
@ -1543,7 +1518,6 @@ func (o *ObjectNode) deleteObjectTaggingHandler(w http.ResponseWriter, r *http.R
|
||||
func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
@ -1565,20 +1539,20 @@ func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
|
||||
}
|
||||
var requestBody []byte
|
||||
if requestBody, err = ioutil.ReadAll(r.Body); err != nil {
|
||||
_ = ErrorCode{
|
||||
errorCode = &ErrorCode{
|
||||
ErrorCode: "BadRequest",
|
||||
ErrorMessage: err.Error(),
|
||||
StatusCode: http.StatusBadRequest,
|
||||
}.ServeResponse(w, r)
|
||||
}
|
||||
return
|
||||
}
|
||||
var putXAttrRequest = PutXAttrRequest{}
|
||||
if err = xml.Unmarshal(requestBody, &putXAttrRequest); err != nil {
|
||||
_ = ErrorCode{
|
||||
errorCode = &ErrorCode{
|
||||
ErrorCode: "BadRequest",
|
||||
ErrorMessage: err.Error(),
|
||||
StatusCode: http.StatusBadRequest,
|
||||
}.ServeResponse(w, r)
|
||||
}
|
||||
return
|
||||
}
|
||||
var key, value = putXAttrRequest.XAttr.Key, putXAttrRequest.XAttr.Value
|
||||
@ -1603,7 +1577,6 @@ func (o *ObjectNode) putObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
|
||||
func (o *ObjectNode) getObjectXAttrHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
@ -1661,10 +1634,10 @@ func (o *ObjectNode) getObjectXAttrHandler(w http.ResponseWriter, r *http.Reques
|
||||
func (o *ObjectNode) deleteObjectXAttrHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
if len(param.Bucket()) == 0 {
|
||||
errorCode = InvalidBucketName
|
||||
@ -1703,10 +1676,10 @@ func (o *ObjectNode) deleteObjectXAttrHandler(w http.ResponseWriter, r *http.Req
|
||||
func (o *ObjectNode) listObjectXAttrs(w http.ResponseWriter, r *http.Request) {
|
||||
var err error
|
||||
var errorCode *ErrorCode
|
||||
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var param = ParseRequestParam(r)
|
||||
if len(param.Bucket()) == 0 {
|
||||
errorCode = InvalidBucketName
|
||||
@ -1719,7 +1692,7 @@ func (o *ObjectNode) listObjectXAttrs(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
if len(param.Object()) == 0 {
|
||||
_ = &InvalidKey
|
||||
errorCode = InvalidKey
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@ -32,8 +32,9 @@ func (o *ObjectNode) getBucketCorsHandler(w http.ResponseWriter, r *http.Request
|
||||
}
|
||||
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
errorCode = NoSuchBucket
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("getBucketCorsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -77,8 +78,9 @@ func (o *ObjectNode) putBucketCorsHandler(w http.ResponseWriter, r *http.Request
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
errorCode = NoSuchBucket
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("putBucketCorsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
md5 := r.Header.Get(HeaderNameContentMD5)
|
||||
@ -132,8 +134,9 @@ func (o *ObjectNode) deleteBucketCorsHandler(w http.ResponseWriter, r *http.Requ
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
errorCode = NoSuchBucket
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteBucketCorsHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
if err = deleteBucketCors(vol); err != nil {
|
||||
|
||||
@ -16,11 +16,12 @@ package objectnode
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/cubefs/cubefs/proto"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
|
||||
"github.com/cubefs/cubefs/proto"
|
||||
|
||||
"github.com/cubefs/cubefs/util/log"
|
||||
)
|
||||
|
||||
@ -126,22 +127,30 @@ func (o *ObjectNode) putBucketPolicyHandler(w http.ResponseWriter, r *http.Reque
|
||||
|
||||
// https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html
|
||||
func (o *ObjectNode) deleteBucketPolicyHandler(w http.ResponseWriter, r *http.Request) {
|
||||
log.LogInfof("Delete bucket policy...")
|
||||
var (
|
||||
err error
|
||||
errorCode *ErrorCode
|
||||
)
|
||||
defer func() {
|
||||
o.errorResponse(w, r, err, errorCode)
|
||||
}()
|
||||
|
||||
var err error
|
||||
var param = ParseRequestParam(r)
|
||||
if param.Bucket() == "" {
|
||||
_ = NoSuchBucket.ServeResponse(w, r)
|
||||
errorCode = NoSuchBucket
|
||||
return
|
||||
}
|
||||
var vol *Volume
|
||||
if vol, err = o.vm.Volume(param.Bucket()); err != nil {
|
||||
_ = NoSuchBucket.ServeResponse(w, r)
|
||||
if vol, err = o.getVol(param.Bucket()); err != nil {
|
||||
log.LogErrorf("deleteBucketPolicyHandler: load volume fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
return
|
||||
}
|
||||
|
||||
if err = deleteBucketPolicy(vol); err != nil {
|
||||
_ = InternalErrorCode(err).ServeResponse(w, r)
|
||||
log.LogErrorf("deleteBucketPolicyHandler: delete policy fail: requestID(%v) volume(%v) err(%v)",
|
||||
GetRequestID(r), param.Bucket(), err)
|
||||
errorCode = InternalErrorCode(err)
|
||||
return
|
||||
}
|
||||
vol.metaLoader.storePolicy(nil)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user