rgw/admin: include stat information to User Struct

The stat information gives idea about current storage consumption.
Include that info to the user struct

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
This commit is contained in:
Jiffin Tony Thottan 2021-08-05 14:09:09 +05:30 committed by mergify[bot]
parent 53d742d7ce
commit 8d946bafeb
2 changed files with 16 additions and 0 deletions

View File

@ -31,6 +31,8 @@ type User struct {
Tenant string `url:"tenant"` Tenant string `url:"tenant"`
GenerateKey *bool `url:"generate-key"` GenerateKey *bool `url:"generate-key"`
PurgeData *int `url:"purge-data"` PurgeData *int `url:"purge-data"`
GenerateStat *bool `url:"stats"`
Stat UserStat `json:"stats"`
} }
// UserCapSpec represents a user capability which gives access to certain ressources // UserCapSpec represents a user capability which gives access to certain ressources
@ -46,6 +48,13 @@ type UserKeySpec struct {
SecretKey string `json:"secret_key" url:"secret-key"` SecretKey string `json:"secret_key" url:"secret-key"`
} }
// UserStat contains information about storage consumption by the ceph user
type UserStat struct {
Size *uint64 `json:"size"`
SizeRounded *uint64 `json:"size_rounded"`
NumObjects *uint64 `json:"num_objects"`
}
// GetUser retrieves a given object store user // GetUser retrieves a given object store user
func (api *API) GetUser(ctx context.Context, user User) (User, error) { func (api *API) GetUser(ctx context.Context, user User) (User, error) {
if user.ID == "" { if user.ID == "" {

View File

@ -145,6 +145,13 @@ func (suite *RadosGWTestSuite) TestUser() {
assert.Equal(suite.T(), int64(100), *q.MaxObjects) assert.Equal(suite.T(), int64(100), *q.MaxObjects)
}) })
suite.T().Run("get user stat", func(t *testing.T) {
statEnable := true
user, err := co.GetUser(context.Background(), User{ID: "leseb", GenerateStat: &statEnable})
assert.NoError(suite.T(), err)
assert.NotNil(suite.T(), user.Stat.Size)
})
suite.T().Run("remove user", func(t *testing.T) { suite.T().Run("remove user", func(t *testing.T) {
err = co.RemoveUser(context.Background(), User{ID: "leseb"}) err = co.RemoveUser(context.Background(), User{ID: "leseb"})
assert.NoError(suite.T(), err) assert.NoError(suite.T(), err)