From 05b064c58703d4f97ef97c1403a5d8612a71f267 Mon Sep 17 00:00:00 2001 From: wenjia322 Date: Mon, 9 Mar 2020 22:40:13 +0800 Subject: [PATCH] feature: change user information when create or delete volume Signed-off-by: wenjia322 --- master/api_service.go | 23 +++++++++++++++++++++++ objectnode/api_handler_bucket.go | 8 -------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/master/api_service.go b/master/api_service.go index d6881e08c..9d8df7a5b 100644 --- a/master/api_service.go +++ b/master/api_service.go @@ -490,6 +490,10 @@ func (m *Server) markDeleteVol(w http.ResponseWriter, r *http.Request) { sendErrReply(w, r, newErrHTTPReply(err)) return } + if err = m.user.deleteVolPolicy(name); err != nil { + sendErrReply(w, r, newErrHTTPReply(err)) + return + } msg = fmt.Sprintf("delete vol[%v] successfully,from[%v]", name, r.RemoteAddr) log.LogWarn(msg) sendOkReply(w, r, newSuccessHTTPReply(msg)) @@ -561,6 +565,11 @@ func (m *Server) createVol(w http.ResponseWriter, r *http.Request) { sendErrReply(w, r, newErrHTTPReply(err)) return } + // create user + if err = m.createUserWithPolicy(owner, name); err != nil { + sendErrReply(w, r, newErrHTTPReply(err)) + return + } msg = fmt.Sprintf("create vol[%v] successfully, has allocate [%v] data partitions", name, len(vol.dataPartitions.partitions)) sendOkReply(w, r, newSuccessHTTPReply(msg)) } @@ -1768,3 +1777,17 @@ func genRespMessage(data []byte, req *proto.APIAccessReq, ts int64, key []byte) return } + +func (m *Server) createUserWithPolicy(userID, volName string) (err error) { + var akPolicy *proto.AKPolicy + if akPolicy, err = m.user.createKey(userID); err != nil { + return + } + policy := &proto.UserPolicy{ + OwnVol: []string{volName}, + } + if _, err = m.user.addPolicy(akPolicy.AccessKey, policy); err != nil { + return + } + return +} diff --git a/objectnode/api_handler_bucket.go b/objectnode/api_handler_bucket.go index 74c12a4c5..993ce1c20 100644 --- a/objectnode/api_handler_bucket.go +++ b/objectnode/api_handler_bucket.go @@ -79,14 +79,6 @@ func (o *ObjectNode) createBucketHandler(w http.ResponseWriter, r *http.Request) return } //todo parse body - policy := &proto.UserPolicy{ - OwnVol: []string{bucket}, - } - if _, err = o.mc.UserAPI().AddPolicy(auth.accessKey, policy); err != nil { - log.LogErrorf("add bucket[%v] policy for user[%v] error: err(%v)", bucket, auth.accessKey, err) - _ = InternalError.ServeResponse(w, r) - return - } w.Header().Set("Location", o.region) return }