MCPcopy Create free account
hub / github.com/cubefs/cubefs / createBucketHandler

Method createBucketHandler

objectnode/api_handler_bucket.go:46–150  ·  view source on GitHub ↗

Create bucket API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html

(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

44// Create bucket
45// API reference: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html
46func (o *ObjectNode) createBucketHandler(w http.ResponseWriter, r *http.Request) {
47 var (
48 err error
49 errorCode *ErrorCode
50 )
51 defer func() {
52 o.errorResponse(w, r, err, errorCode)
53 }()
54
55 if o.disableCreateBucketByS3 {
56 errorCode = DisableCreateBucketByS3
57 return
58 }
59 param := ParseRequestParam(r)
60 bucket := param.Bucket()
61 if bucket == "" {
62 errorCode = InvalidBucketName
63 return
64 }
65
66 if !IsValidBucketName(bucket, DefaultMinBucketLength, DefaultMaxBucketLength) {
67 errorCode = InvalidBucketName
68 return
69 }
70
71 if vol, _ := o.vm.VolumeWithoutBlacklist(bucket, false); vol != nil {
72 log.LogInfof("createBucketHandler: duplicated bucket name: requestID(%v) bucket(%v)", GetRequestID(r), bucket)
73 errorCode = BucketAlreadyOwnedByYou
74 return
75 }
76
77 var userInfo *proto.UserInfo
78 if userInfo, err = o.getUserInfoByAccessKeyV2(param.AccessKey()); err != nil {
79 log.LogErrorf("createBucketHandler: get user info from master fail: requestID(%v) accessKey(%v) err(%v)",
80 GetRequestID(r), param.AccessKey(), err)
81 return
82 }
83
84 // QPS and Concurrency Limit
85 rateLimit := o.AcquireRateLimiter()
86 if err = rateLimit.AcquireLimitResource(userInfo.UserID, param.apiName); err != nil {
87 return
88 }
89 defer rateLimit.ReleaseLimitResource(userInfo.UserID, param.apiName)
90
91 length, errorCode := VerifyContentLength(r, BodyLimit)
92 if errorCode != nil {
93 return
94 }
95 if length > 0 {
96 requestBytes, err := io.ReadAll(r.Body)
97 if err != nil && err != io.EOF {
98 log.LogErrorf("createBucketHandler: read request body fail: requestID(%v) err(%v)", GetRequestID(r), err)
99 return
100 }
101 createBucketRequest := &CreateBucketRequest{}
102 err = UnmarshalXMLEntity(requestBytes, createBucketRequest)
103 if err != nil {

Callers

nothing calls this directly

Calls 15

errorResponseMethod · 0.95
AcquireRateLimiterMethod · 0.95
LogInfofFunction · 0.92
LogErrorfFunction · 0.92
LogWarnfFunction · 0.92
ParseRequestParamFunction · 0.85
IsValidBucketNameFunction · 0.85
GetRequestIDFunction · 0.85
VerifyContentLengthFunction · 0.85
UnmarshalXMLEntityFunction · 0.85
ParseACLFunction · 0.85

Tested by

no test coverage detected