Skip to content

Commit 8088197

Browse files
committed
rgw/admin: support user default-storage-class
Support for this parameter was added in Squid. Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
1 parent 5591713 commit 8088197

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

rgw/admin/user.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type User struct {
2020
Caps []UserCapSpec `json:"caps"`
2121
OpMask string `json:"op_mask" url:"op-mask"`
2222
DefaultPlacement string `json:"default_placement" url:"default-placement"`
23-
DefaultStorageClass string `json:"default_storage_class"`
23+
DefaultStorageClass string `json:"default_storage_class" url:"default-storage-class"`
2424
PlacementTags []interface{} `json:"placement_tags"`
2525
BucketQuota QuotaSpec `json:"bucket_quota"`
2626
UserQuota QuotaSpec `json:"user_quota"`
@@ -162,7 +162,7 @@ func (api *API) CreateUser(ctx context.Context, user User) (User, error) {
162162
}
163163

164164
// valid parameters not supported by go-ceph: system, exclusive, placement-tags
165-
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"}))
165+
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"}))
166166
if err != nil {
167167
return User{}, err
168168
}
@@ -198,7 +198,7 @@ func (api *API) ModifyUser(ctx context.Context, user User) (User, error) {
198198
}
199199

200200
// valid parameters not supported by go-ceph: system, placement-tags
201-
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"}))
201+
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"}))
202202
if err != nil {
203203
return User{}, err
204204
}

rgw/admin/user_test.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ type mockDoType func(req *http.Request) (*http.Response, error)
2828
// Do is the mock client's `Do` func
2929
func (m *mockClient) Do(req *http.Request) (*http.Response, error) { return m.mockDo(req) }
3030

31-
var (
32-
fakeUserResponse = []byte(`
31+
var fakeUserResponse = []byte(`
3332
{
3433
"tenant": "",
3534
"user_id": "dashboard-admin",
@@ -61,7 +60,7 @@ var (
6160
"system": "true",
6261
"admin": "false",
6362
"default_placement": "ssd",
64-
"default_storage_class": "",
63+
"default_storage_class": "ONEZONE_IA",
6564
"placement_tags": [],
6665
"bucket_quota": {
6766
"enabled": false,
@@ -81,7 +80,6 @@ var (
8180
"type": "rgw",
8281
"mfa_ids": []
8382
}`)
84-
)
8583

8684
func TestUnmarshal(t *testing.T) {
8785
u := &User{}
@@ -108,7 +106,7 @@ func (suite *RadosGWTestSuite) TestUser() {
108106

109107
suite.T().Run("user creation success", func(_ *testing.T) {
110108
usercaps := "users=read"
111-
user, err := co.CreateUser(context.Background(), User{ID: "leseb", DisplayName: "This is leseb", Email: "leseb@example.com", UserCaps: usercaps, OpMask: "delete", DefaultPlacement: "default-placement"})
109+
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: "default-storage-class"})
112110
assert.NoError(suite.T(), err)
113111
assert.Equal(suite.T(), "leseb@example.com", user.Email)
114112
})
@@ -121,6 +119,7 @@ func (suite *RadosGWTestSuite) TestUser() {
121119
assert.Equal(suite.T(), "read", user.Caps[0].Perm)
122120
assert.Equal(suite.T(), "delete", user.OpMask)
123121
assert.Equal(suite.T(), "default-placement", user.DefaultPlacement)
122+
assert.Equal(suite.T(), "default-storage-class", user.DefaultStorageClass)
124123
os.Setenv("LESEB_ACCESS_KEY", user.Keys[0].AccessKey)
125124
})
126125

@@ -254,6 +253,13 @@ func TestGetUserMockAPI(t *testing.T) {
254253
assert.NoError(t, err)
255254
assert.Equal(t, "ssd", u.DefaultPlacement, u)
256255
})
256+
t.Run("test get user default storage class", func(t *testing.T) {
257+
api, err := New("127.0.0.1", "accessKey", "secretKey", returnMockClient())
258+
assert.NoError(t, err)
259+
u, err := api.GetUser(context.TODO(), User{ID: "dashboard-admin"})
260+
assert.NoError(t, err)
261+
assert.Equal(t, "ONEZONE_IA", u.DefaultStorageClass, u)
262+
})
257263
t.Run("test get user with access key", func(t *testing.T) {
258264
api, err := New("127.0.0.1", "accessKey", "secretKey", returnMockClient())
259265
assert.NoError(t, err)

0 commit comments

Comments
 (0)