feature: change user information when create or delete volume

Signed-off-by: wenjia322 <buaa1214wwj@126.com>
This commit is contained in:
wenjia322 2020-03-09 22:40:13 +08:00
parent 3a2df30f36
commit 05b064c587
2 changed files with 23 additions and 8 deletions

View File

@ -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
}

View File

@ -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
}