diff --git a/rgw/admin/user.go b/rgw/admin/user.go index fceef425f..16be579ad 100644 --- a/rgw/admin/user.go +++ b/rgw/admin/user.go @@ -20,7 +20,7 @@ type User struct { Caps []UserCapSpec `json:"caps"` OpMask string `json:"op_mask" url:"op-mask"` DefaultPlacement string `json:"default_placement" url:"default-placement"` - DefaultStorageClass string `json:"default_storage_class"` + DefaultStorageClass string `json:"default_storage_class" url:"default-storage-class"` PlacementTags []interface{} `json:"placement_tags"` BucketQuota QuotaSpec `json:"bucket_quota"` UserQuota QuotaSpec `json:"user_quota"` @@ -162,7 +162,7 @@ func (api *API) CreateUser(ctx context.Context, user User) (User, error) { } // valid parameters not supported by go-ceph: system, exclusive, placement-tags - body, err := api.call(ctx, http.MethodPut, "/user", valueToURLParams(user, []string{"uid", "display-name", "default-placement", "email", "key-type", "access-key", "secret-key", "user-caps", "tenant", "generate-key", "max-buckets", "suspended", "op-mask", "account-id", "account-root"})) + body, err := api.call(ctx, http.MethodPut, "/user", valueToURLParams(user, []string{"uid", "display-name", "default-placement", "default-storage-class", "email", "key-type", "access-key", "secret-key", "user-caps", "tenant", "generate-key", "max-buckets", "suspended", "op-mask", "account-id", "account-root"})) if err != nil { return User{}, err } @@ -198,7 +198,7 @@ func (api *API) ModifyUser(ctx context.Context, user User) (User, error) { } // valid parameters not supported by go-ceph: system, placement-tags - body, err := api.call(ctx, http.MethodPost, "/user", valueToURLParams(user, []string{"uid", "display-name", "default-placement", "email", "generate-key", "access-key", "secret-key", "key-type", "max-buckets", "suspended", "op-mask", "account-id", "account-root"})) + body, err := api.call(ctx, http.MethodPost, "/user", valueToURLParams(user, []string{"uid", "display-name", "default-placement", "default-storage-class", "email", "generate-key", "access-key", "secret-key", "key-type", "max-buckets", "suspended", "op-mask", "account-id", "account-root"})) if err != nil { return User{}, err } diff --git a/rgw/admin/user_test.go b/rgw/admin/user_test.go index 37097d23c..47716417f 100644 --- a/rgw/admin/user_test.go +++ b/rgw/admin/user_test.go @@ -28,8 +28,7 @@ type mockDoType func(req *http.Request) (*http.Response, error) // Do is the mock client's `Do` func func (m *mockClient) Do(req *http.Request) (*http.Response, error) { return m.mockDo(req) } -var ( - fakeUserResponse = []byte(` +var fakeUserResponse = []byte(` { "tenant": "", "user_id": "dashboard-admin", @@ -61,7 +60,7 @@ var ( "system": "true", "admin": "false", "default_placement": "ssd", - "default_storage_class": "", + "default_storage_class": "ONEZONE_IA", "placement_tags": [], "bucket_quota": { "enabled": false, @@ -81,7 +80,6 @@ var ( "type": "rgw", "mfa_ids": [] }`) -) func TestUnmarshal(t *testing.T) { u := &User{} @@ -108,7 +106,7 @@ func (suite *RadosGWTestSuite) TestUser() { suite.T().Run("user creation success", func(_ *testing.T) { usercaps := "users=read" - user, err := co.CreateUser(context.Background(), User{ID: "leseb", DisplayName: "This is leseb", Email: "leseb@example.com", UserCaps: usercaps, OpMask: "delete", DefaultPlacement: "default-placement"}) + user, err := co.CreateUser(context.Background(), User{ID: "leseb", DisplayName: "This is leseb", Email: "leseb@example.com", UserCaps: usercaps, OpMask: "delete", DefaultPlacement: "default-placement", DefaultStorageClass: "STANDARD"}) assert.NoError(suite.T(), err) assert.Equal(suite.T(), "leseb@example.com", user.Email) }) @@ -254,6 +252,13 @@ func TestGetUserMockAPI(t *testing.T) { assert.NoError(t, err) assert.Equal(t, "ssd", u.DefaultPlacement, u) }) + t.Run("test get user default storage class", func(t *testing.T) { + api, err := New("127.0.0.1", "accessKey", "secretKey", returnMockClient()) + assert.NoError(t, err) + u, err := api.GetUser(context.TODO(), User{ID: "dashboard-admin"}) + assert.NoError(t, err) + assert.Equal(t, "ONEZONE_IA", u.DefaultStorageClass, u) + }) t.Run("test get user with access key", func(t *testing.T) { api, err := New("127.0.0.1", "accessKey", "secretKey", returnMockClient()) assert.NoError(t, err)