Skip to content

Commit a34ccc8

Browse files
authored
Merge branch 'master' into expired-object-all-versions
2 parents 834d442 + 0afea63 commit a34ccc8

File tree

6 files changed

+16
-77
lines changed

6 files changed

+16
-77
lines changed

api/admin_client_mock.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ var (
8080
minioSetUserStatusMock func(accessKey string, status madmin.AccountStatus) error
8181

8282
minioAccountInfoMock func(ctx context.Context) (madmin.AccountInfo, error)
83-
minioAddServiceAccountMock func(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string, description string, name string, expiry *time.Time, status string) (madmin.Credentials, error)
83+
minioAddServiceAccountMock func(ctx context.Context, policy string, user string, accessKey string, secretKey string, description string, name string, expiry *time.Time, status string) (madmin.Credentials, error)
8484
minioListServiceAccountsMock func(ctx context.Context, user string) (madmin.ListServiceAccountsResp, error)
8585
minioDeleteServiceAccountMock func(ctx context.Context, serviceAccount string) error
8686
minioInfoServiceAccountMock func(ctx context.Context, serviceAccount string) (madmin.InfoServiceAccountResp, error)
@@ -377,7 +377,7 @@ func (ac AdminClientMock) AccountInfo(ctx context.Context) (madmin.AccountInfo,
377377
return minioAccountInfoMock(ctx)
378378
}
379379

380-
func (ac AdminClientMock) addServiceAccount(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string, description string, name string, expiry *time.Time, status string) (madmin.Credentials, error) {
380+
func (ac AdminClientMock) addServiceAccount(ctx context.Context, policy string, user string, accessKey string, secretKey string, description string, name string, expiry *time.Time, status string) (madmin.Credentials, error) {
381381
return minioAddServiceAccountMock(ctx, policy, user, accessKey, secretKey, description, name, expiry, status)
382382
}
383383

api/client-admin.go

+3-7
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ type MinioAdmin interface {
7070
heal(ctx context.Context, bucket, prefix string, healOpts madmin.HealOpts, clientToken string,
7171
forceStart, forceStop bool) (healStart madmin.HealStartSuccess, healTaskStatus madmin.HealTaskStatus, err error)
7272
// Service Accounts
73-
addServiceAccount(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string, name string, description string, expiry *time.Time, comment string) (madmin.Credentials, error)
73+
addServiceAccount(ctx context.Context, policy string, user string, accessKey string, secretKey string, name string, description string, expiry *time.Time, comment string) (madmin.Credentials, error)
7474
listServiceAccounts(ctx context.Context, user string) (madmin.ListServiceAccountsResp, error)
7575
deleteServiceAccount(ctx context.Context, serviceAccount string) error
7676
infoServiceAccount(ctx context.Context, serviceAccount string) (madmin.InfoServiceAccountResp, error)
@@ -305,13 +305,9 @@ func (ac AdminClient) getLogs(ctx context.Context, node string, lineCnt int, log
305305
}
306306

307307
// implements madmin.AddServiceAccount()
308-
func (ac AdminClient) addServiceAccount(ctx context.Context, policy *iampolicy.Policy, user string, accessKey string, secretKey string, name string, description string, expiry *time.Time, comment string) (madmin.Credentials, error) {
309-
buf, err := json.Marshal(policy)
310-
if err != nil {
311-
return madmin.Credentials{}, err
312-
}
308+
func (ac AdminClient) addServiceAccount(ctx context.Context, policy string, user string, accessKey string, secretKey string, name string, description string, expiry *time.Time, comment string) (madmin.Credentials, error) {
313309
return ac.Client.AddServiceAccount(ctx, madmin.AddServiceAccountReq{
314-
Policy: buf,
310+
Policy: []byte(policy),
315311
TargetUser: user,
316312
AccessKey: accessKey,
317313
SecretKey: secretKey,

api/service_accounts_handlers.go

+6-49
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717
package api
1818

1919
import (
20-
"bytes"
2120
"context"
2221
"encoding/json"
2322
"errors"
24-
"strings"
2523
"time"
2624

2725
"github.com/go-openapi/runtime/middleware"
@@ -123,36 +121,17 @@ func registerServiceAccountsHandlers(api *operations.ConsoleAPI) {
123121

124122
// createServiceAccount adds a service account to the userClient and assigns a policy to him if defined.
125123
func createServiceAccount(ctx context.Context, userClient MinioAdmin, policy string, name string, description string, expiry *time.Time, comment string) (*models.ServiceAccountCreds, error) {
126-
// By default a nil policy will be used so the service account inherit the parent account policy, otherwise
127-
// we override with the user provided iam policy
128-
var iamPolicy *iampolicy.Policy
129-
if strings.TrimSpace(policy) != "" {
130-
iamp, err := iampolicy.ParseConfig(bytes.NewReader([]byte(policy)))
131-
if err != nil {
132-
return nil, err
133-
}
134-
iamPolicy = iamp
135-
}
136-
creds, err := userClient.addServiceAccount(ctx, iamPolicy, "", "", "", name, description, expiry, comment)
124+
creds, err := userClient.addServiceAccount(ctx, policy, "", "", "", name, description, expiry, comment)
137125
if err != nil {
138126
return nil, err
139127
}
140128
return &models.ServiceAccountCreds{AccessKey: creds.AccessKey, SecretKey: creds.SecretKey, URL: getMinIOServer()}, nil
141129
}
142130

143-
// createServiceAccount adds a service account with the given credentials to the userClient and assigns a policy to him if defined.
131+
// createServiceAccount adds a service account with the given credentials to the
132+
// userClient and assigns a policy to him if defined.
144133
func createServiceAccountCreds(ctx context.Context, userClient MinioAdmin, policy string, accessKey string, secretKey string, name string, description string, expiry *time.Time, comment string) (*models.ServiceAccountCreds, error) {
145-
// By default a nil policy will be used so the service account inherit the parent account policy, otherwise
146-
// we override with the user provided iam policy
147-
var iamPolicy *iampolicy.Policy
148-
if strings.TrimSpace(policy) != "" {
149-
iamp, err := iampolicy.ParseConfig(bytes.NewReader([]byte(policy)))
150-
if err != nil {
151-
return nil, err
152-
}
153-
iamPolicy = iamp
154-
}
155-
creds, err := userClient.addServiceAccount(ctx, iamPolicy, "", accessKey, secretKey, name, description, expiry, comment)
134+
creds, err := userClient.addServiceAccount(ctx, policy, "", accessKey, secretKey, name, description, expiry, comment)
156135
if err != nil {
157136
return nil, err
158137
}
@@ -190,37 +169,15 @@ func getCreateServiceAccountResponse(session *models.Principal, params saApi.Cre
190169

191170
// createServiceAccount adds a service account to a given user and assigns a policy to him if defined.
192171
func createAUserServiceAccount(ctx context.Context, userClient MinioAdmin, policy string, user string, name string, description string, expiry *time.Time, comment string) (*models.ServiceAccountCreds, error) {
193-
// By default a nil policy will be used so the service account inherit the parent account policy, otherwise
194-
// we override with the user provided iam policy
195-
var iamPolicy *iampolicy.Policy
196-
if strings.TrimSpace(policy) != "" {
197-
iamp, err := iampolicy.ParseConfig(bytes.NewReader([]byte(policy)))
198-
if err != nil {
199-
return nil, err
200-
}
201-
iamPolicy = iamp
202-
}
203-
204-
creds, err := userClient.addServiceAccount(ctx, iamPolicy, user, "", "", name, description, expiry, comment)
172+
creds, err := userClient.addServiceAccount(ctx, policy, user, "", "", name, description, expiry, comment)
205173
if err != nil {
206174
return nil, err
207175
}
208176
return &models.ServiceAccountCreds{AccessKey: creds.AccessKey, SecretKey: creds.SecretKey, URL: getMinIOServer()}, nil
209177
}
210178

211179
func createAUserServiceAccountCreds(ctx context.Context, userClient MinioAdmin, policy string, user string, accessKey string, secretKey string, name string, description string, expiry *time.Time, comment string) (*models.ServiceAccountCreds, error) {
212-
// By default a nil policy will be used so the service account inherit the parent account policy, otherwise
213-
// we override with the user provided iam policy
214-
var iamPolicy *iampolicy.Policy
215-
if strings.TrimSpace(policy) != "" {
216-
iamp, err := iampolicy.ParseConfig(bytes.NewReader([]byte(policy)))
217-
if err != nil {
218-
return nil, err
219-
}
220-
iamPolicy = iamp
221-
}
222-
223-
creds, err := userClient.addServiceAccount(ctx, iamPolicy, user, accessKey, secretKey, name, description, expiry, comment)
180+
creds, err := userClient.addServiceAccount(ctx, policy, user, accessKey, secretKey, name, description, expiry, comment)
224181
if err != nil {
225182
return nil, err
226183
}

api/service_accounts_handlers_test.go

+3-16
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"time"
2525

2626
"github.com/minio/madmin-go/v3"
27-
iampolicy "github.com/minio/pkg/v2/policy"
2827
"github.com/stretchr/testify/assert"
2928
)
3029

@@ -41,7 +40,7 @@ func TestAddServiceAccount(t *testing.T) {
4140
AccessKey: "minio",
4241
SecretKey: "minio123",
4342
}
44-
minioAddServiceAccountMock = func(_ context.Context, _ *iampolicy.Policy, _ string, _ string, _ string, _ string, _ string, _ *time.Time, _ string) (madmin.Credentials, error) {
43+
minioAddServiceAccountMock = func(_ context.Context, _ string, _ string, _ string, _ string, _ string, _ string, _ *time.Time, _ string) (madmin.Credentials, error) {
4544
return mockResponse, nil
4645
}
4746
saCreds, err := createServiceAccount(ctx, client, policyDefinition, "", "", nil, "")
@@ -51,25 +50,13 @@ func TestAddServiceAccount(t *testing.T) {
5150
assert.Equal(mockResponse.AccessKey, saCreds.AccessKey, fmt.Sprintf("Failed on %s:, error occurred: AccessKey differ", function))
5251
assert.Equal(mockResponse.SecretKey, saCreds.SecretKey, fmt.Sprintf("Failed on %s:, error occurred: SecretKey differ", function))
5352

54-
// Test-2: if an invalid policy is assigned to the service account, this will raise an error
55-
policyDefinition = "invalid policy"
56-
mockResponse = madmin.Credentials{
57-
AccessKey: "minio",
58-
SecretKey: "minio123",
59-
}
60-
minioAddServiceAccountMock = func(_ context.Context, _ *iampolicy.Policy, _ string, _ string, _ string, _ string, _ string, _ *time.Time, _ string) (madmin.Credentials, error) {
61-
return mockResponse, nil
62-
}
63-
_, err = createServiceAccount(ctx, client, policyDefinition, "", "", nil, "")
64-
assert.Error(err)
65-
66-
// Test-3: if an error occurs on server while creating service account (valid policy), handle it
53+
// Test-2: if an error occurs on server while creating service account (valid policy), handle it
6754
policyDefinition = "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:GetBucketLocation\",\"s3:GetObject\",\"s3:ListAllMyBuckets\"],\"Resource\":[\"arn:aws:s3:::bucket1/*\"]}]}"
6855
mockResponse = madmin.Credentials{
6956
AccessKey: "minio",
7057
SecretKey: "minio123",
7158
}
72-
minioAddServiceAccountMock = func(_ context.Context, _ *iampolicy.Policy, _ string, _ string, _ string, _ string, _ string, _ *time.Time, _ string) (madmin.Credentials, error) {
59+
minioAddServiceAccountMock = func(_ context.Context, _ string, _ string, _ string, _ string, _ string, _ string, _ *time.Time, _ string) (madmin.Credentials, error) {
7360
return madmin.Credentials{}, errors.New("error")
7461
}
7562
_, err = createServiceAccount(ctx, client, policyDefinition, "", "", nil, "")

integration/objects_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ func TestObjectGet(t *testing.T) {
186186
}
187187

188188
response, err := client.Do(request)
189+
fmt.Printf("Console server Response: %v\nErr: %v\n", response, err)
189190

190191
assert.NotNil(response, fmt.Sprintf("%s response object is nil", tt.name))
191192
assert.Nil(err, fmt.Sprintf("%s returned an error: %v", tt.name, err))

web-app/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ export const download = (
7878
toastCallback: () => void,
7979
) => {
8080
let basename = document.baseURI.replace(window.location.origin, "");
81-
let bytesLoaded = 0;
8281
const state = store.getState();
8382
const anonymousMode = state.system.anonymousMode;
8483

@@ -107,7 +106,6 @@ export const download = (
107106
"progress",
108107
function (evt) {
109108
let percentComplete = Math.round((evt.loaded / fileSize) * 100);
110-
bytesLoaded = evt.loaded;
111109
if (progressCallback) {
112110
progressCallback(percentComplete);
113111
}
@@ -118,7 +116,7 @@ export const download = (
118116
req.responseType = "blob";
119117
req.onreadystatechange = () => {
120118
if (req.readyState === XMLHttpRequest.DONE) {
121-
let completeDownload = bytesLoaded === fileSize;
119+
let completeDownload = req.response.size === fileSize;
122120

123121
if (req.status === StatusCodes.OK && completeDownload) {
124122
const rspHeader = req.getResponseHeader("Content-Disposition");

0 commit comments

Comments
 (0)