Skip to content

Commit

Permalink
refactor: functions 'addPolicy' and 'removePolicy'; change param 'ak'…
Browse files Browse the repository at this point in the history
… to 'userID'

Signed-off-by: wenjia322 <[email protected]>
  • Loading branch information
wenjia322 committed Mar 19, 2020
1 parent 3216d99 commit ddf4449
Show file tree
Hide file tree
Showing 12 changed files with 216 additions and 212 deletions.
5 changes: 1 addition & 4 deletions master/api_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -1825,10 +1825,7 @@ func (m *Server) associateVolWithUser(userID, volName string) error {
return err
}
}
policy := &proto.UserPolicy{
OwnVols: []string{volName},
}
if _, err = m.user.addPolicy(akPolicy.AccessKey, policy); err != nil {
if _, err = m.user.addOwnVol(akPolicy.UserID, volName); err != nil {
return err
}
return nil
Expand Down
75 changes: 37 additions & 38 deletions master/api_service_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,56 +90,52 @@ func (m *Server) getUserInfo(w http.ResponseWriter, r *http.Request) {
sendOkReply(w, r, newSuccessHTTPReply(akPolicy))
}

func (m *Server) addUserPolicy(w http.ResponseWriter, r *http.Request) {
func (m *Server) updateUserPolicy(w http.ResponseWriter, r *http.Request) {
var (
ak string
akPolicy *proto.AKPolicy
userPolicy *proto.UserPolicy
body []byte
err error
akPolicy *proto.AKPolicy
bytes []byte
err error
)
if body, err = ioutil.ReadAll(r.Body); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeReadBodyError, Msg: err.Error()})
if bytes, err = ioutil.ReadAll(r.Body); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
return
}
userPolicy = proto.NewUserPolicy()
if err = json.Unmarshal(body, userPolicy); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeUnmarshalData, Msg: err.Error()})
var param = proto.UserPermUpdateParam{}
if err = json.Unmarshal(bytes, &param); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
return
}
if ak, err = parseAccessKey(r); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
if _, err = m.cluster.getVol(param.Volume); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeVolNotExists, Msg: err.Error()})
return
}
if akPolicy, err = m.user.addPolicy(ak, userPolicy); err != nil {
if akPolicy, err = m.user.updatePolicy(&param); err != nil {
sendErrReply(w, r, newErrHTTPReply(err))
return
}
sendOkReply(w, r, newSuccessHTTPReply(akPolicy))
}

func (m *Server) deleteUserPolicy(w http.ResponseWriter, r *http.Request) {
func (m *Server) removeUserPolicy(w http.ResponseWriter, r *http.Request) {
var (
ak string
akPolicy *proto.AKPolicy
userPolicy *proto.UserPolicy
body []byte
err error
akPolicy *proto.AKPolicy
bytes []byte
err error
)
if body, err = ioutil.ReadAll(r.Body); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeReadBodyError, Msg: err.Error()})
if bytes, err = ioutil.ReadAll(r.Body); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
return
}
userPolicy = proto.NewUserPolicy()
if err = json.Unmarshal(body, userPolicy); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeUnmarshalData, Msg: err.Error()})
var param = proto.UserPermRemoveParam{}
if err = json.Unmarshal(bytes, &param); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
return
}
if ak, err = parseAccessKey(r); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
if _, err = m.cluster.getVol(param.Volume); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeVolNotExists, Msg: err.Error()})
return
}
if akPolicy, err = m.user.deletePolicy(ak, userPolicy); err != nil {
if akPolicy, err = m.user.removePolicy(&param); err != nil {
sendErrReply(w, r, newErrHTTPReply(err))
return
}
Expand All @@ -166,22 +162,25 @@ func (m *Server) deleteUserVolPolicy(w http.ResponseWriter, r *http.Request) {

func (m *Server) transferUserVol(w http.ResponseWriter, r *http.Request) {
var (
volName string
ak string
targetKey string
akPolicy *proto.AKPolicy
vol *Vol
err error
bytes []byte
vol *Vol
akPolicy *proto.AKPolicy
err error
)
if volName, ak, targetKey, err = parseVolAndKey(r); err != nil {
if bytes, err = ioutil.ReadAll(r.Body); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
return
}
var param = proto.UserTransferVolParam{}
if err = json.Unmarshal(bytes, &param); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeParamError, Msg: err.Error()})
return
}
if vol, err = m.cluster.getVol(volName); err != nil {
sendErrReply(w, r, newErrHTTPReply(proto.ErrVolNotExists))
if vol, err = m.cluster.getVol(param.Volume); err != nil {
sendErrReply(w, r, &proto.HTTPReply{Code: proto.ErrCodeVolNotExists, Msg: err.Error()})
return
}
if akPolicy, err = m.user.transferVol(volName, ak, targetKey); err != nil {
if akPolicy, err = m.user.transferVol(&param); err != nil {
sendErrReply(w, r, newErrHTTPReply(err))
return
}
Expand Down
18 changes: 9 additions & 9 deletions master/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,9 @@ const (
opSyncUpdateAKPolicy uint32 = 0x19
opSyncAddUserAK uint32 = 0x1A
opSyncDeleteUserAK uint32 = 0x1B
opSyncAddVolAK uint32 = 0x1C
opSyncDeleteVolAK uint32 = 0x1D
opSyncUpdateVolAK uint32 = 0x1E
opSyncAddVolUser uint32 = 0x1C
opSyncDeleteVolUser uint32 = 0x1D
opSyncUpdateVolUser uint32 = 0x1E
)

const (
Expand All @@ -149,10 +149,10 @@ const (
clusterPrefix = keySeparator + clusterAcronym + keySeparator
nodeSetPrefix = keySeparator + nodeSetAcronym + keySeparator

akAcronym = "ak"
userAcronym = "user"
volAKAcronym = "volak"
akPrefix = keySeparator + akAcronym + keySeparator
userPrefix = keySeparator + userAcronym + keySeparator
volAKPrefix = keySeparator + volAKAcronym + keySeparator
akAcronym = "ak"
userAcronym = "user"
volUserAcronym = "voluser"
akPrefix = keySeparator + akAcronym + keySeparator
userPrefix = keySeparator + userAcronym + keySeparator
volUserPrefix = keySeparator + volUserAcronym + keySeparator
)
8 changes: 4 additions & 4 deletions master/http_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,11 +208,11 @@ func (m *Server) registerAPIRoutes(router *mux.Router) {
Path(proto.UserDelete).
HandlerFunc(m.deleteUser)
router.NewRoute().Methods(http.MethodGet, http.MethodPost).
Path(proto.UserAddPolicy).
HandlerFunc(m.addUserPolicy)
Path(proto.UserUpdatePolicy).
HandlerFunc(m.updateUserPolicy)
router.NewRoute().Methods(http.MethodGet, http.MethodPost).
Path(proto.UserDeletePolicy).
HandlerFunc(m.deleteUserPolicy)
Path(proto.UserRemovePolicy).
HandlerFunc(m.removeUserPolicy)
router.NewRoute().Methods(http.MethodGet, http.MethodPost).
Path(proto.UserDeleteVolPolicy).
HandlerFunc(m.deleteUserVolPolicy)
Expand Down
4 changes: 2 additions & 2 deletions master/master_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ func (m *Server) loadMetadata() {
if err = m.user.loadUserAK(); err != nil {
panic(err)
}
if err = m.user.loadVolAKs(); err != nil {
if err = m.user.loadVolUsers(); err != nil {
panic(err)
}
log.LogInfo("action[loadUserInfo] end")
Expand All @@ -147,7 +147,7 @@ func (m *Server) clearMetadata() {
m.cluster.clearVols()
m.user.clearAKStore()
m.user.clearUserAK()
m.user.clearVolAKs()
m.user.clearVolUsers()
m.cluster.t = newTopology()
}

Expand Down
2 changes: 1 addition & 1 deletion master/metadata_fsm.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (mf *MetadataFsm) Apply(command []byte, index uint64) (resp interface{}, er
}
switch cmd.Op {
case opSyncDeleteDataNode, opSyncDeleteMetaNode, opSyncDeleteVol, opSyncDeleteDataPartition, opSyncDeleteMetaPartition,
opSyncDeleteAKPolicy, opSyncDeleteUserAK, opSyncDeleteVolAK:
opSyncDeleteAKPolicy, opSyncDeleteUserAK, opSyncDeleteVolUser:
if err = mf.delKeyAndPutIndex(cmd.K, cmdMap); err != nil {
panic(err)
}
Expand Down
4 changes: 2 additions & 2 deletions master/metadata_fsm_op.go
Original file line number Diff line number Diff line change
Expand Up @@ -253,8 +253,8 @@ func (m *RaftCmd) setOpType() {
m.Op = opSyncAddAKPolicy
case userAcronym:
m.Op = opSyncAddUserAK
case volAKAcronym:
m.Op = opSyncAddVolAK
case volUserAcronym:
m.Op = opSyncAddVolUser
default:
log.LogWarnf("action[setOpType] unknown opCode[%v]", keyArr[1])
}
Expand Down
Loading

0 comments on commit ddf4449

Please sign in to comment.