Skip to content

Commit 7f55b71

Browse files
jinapurapuJillian Inapurapubexsoft
authored
Add backend tier status checking to all tier types (#2420)
Moves Tier status check to backend for all Tier types. ![Screen Shot 2022-12-02 at 10 37 36 AM](https://user-images.githubusercontent.com/65002498/205370942-e20c0229-77b1-4a7c-9579-eebbd101c4ae.png) ![Screen Shot 2022-12-02 at 10 37 18 AM](https://user-images.githubusercontent.com/65002498/205370943-0d038206-b0e3-4597-9522-b21f94c36c0b.png) Co-authored-by: Jillian Inapurapu <jillii@Jillians-MBP.attlocal.net> Co-authored-by: Alex <33497058+bexsoft@users.noreply.github.com>
1 parent d95d59e commit 7f55b71

File tree

3 files changed

+18
-33
lines changed

3 files changed

+18
-33
lines changed

restapi/admin_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,8 @@ func (ac adminClientMock) changePassword(ctx context.Context, accessKey, secretK
5858
func (ac adminClientMock) speedtest(ctx context.Context, opts madmin.SpeedtestOpts) (chan madmin.SpeedTestResult, error) {
5959
return nil, nil
6060
}
61+
62+
// implements madmin.VerifyTier() - WILL ALWAYS RETURN TRUE AS SET NOW, FIX IF USED IN TEST
63+
func (ac adminClientMock) verifyTierStatus(ctx context.Context, tierName string) error {
64+
return nil
65+
}

restapi/admin_tiers.go

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,14 @@ package restapi
1919
import (
2020
"context"
2121
"encoding/base64"
22-
"log"
23-
"regexp"
2422
"strconv"
25-
"strings"
2623

2724
"github.com/dustin/go-humanize"
2825
"github.com/go-openapi/runtime/middleware"
2926
"github.com/minio/console/models"
3027
"github.com/minio/console/restapi/operations"
3128
tieringApi "github.com/minio/console/restapi/operations/tiering"
3229
"github.com/minio/madmin-go/v2"
33-
34-
"github.com/minio/minio-go/v7"
35-
"github.com/minio/minio-go/v7/pkg/credentials"
3630
)
3731

3832
func registerAdminTiersHandlers(api *operations.ConsoleAPI) {
@@ -97,7 +91,6 @@ func getTiers(ctx context.Context, client MinioAdmin) (*models.TierListResponse,
9791
break
9892
}
9993
}
100-
10194
switch tierData.Type {
10295
case madmin.S3:
10396
tiersList = append(tiersList, &models.Tier{
@@ -115,7 +108,7 @@ func getTiers(ctx context.Context, client MinioAdmin) (*models.TierListResponse,
115108
Objects: strconv.Itoa(stats.NumObjects),
116109
Versions: strconv.Itoa(stats.NumVersions),
117110
},
118-
Status: false,
111+
Status: client.verifyTierStatus(ctx, tierData.Name) == nil,
119112
})
120113
case madmin.MinIO:
121114
tiersList = append(tiersList, &models.Tier{
@@ -132,7 +125,7 @@ func getTiers(ctx context.Context, client MinioAdmin) (*models.TierListResponse,
132125
Objects: strconv.Itoa(stats.NumObjects),
133126
Versions: strconv.Itoa(stats.NumVersions),
134127
},
135-
Status: checkTierStatus(tierData.MinIO.Endpoint, tierData.MinIO.AccessKey, tierData.MinIO.SecretKey, tierData.MinIO.Bucket),
128+
Status: client.verifyTierStatus(ctx, tierData.Name) == nil,
136129
})
137130
case madmin.GCS:
138131
tiersList = append(tiersList, &models.Tier{
@@ -148,7 +141,7 @@ func getTiers(ctx context.Context, client MinioAdmin) (*models.TierListResponse,
148141
Objects: strconv.Itoa(stats.NumObjects),
149142
Versions: strconv.Itoa(stats.NumVersions),
150143
},
151-
Status: false,
144+
Status: client.verifyTierStatus(ctx, tierData.Name) == nil,
152145
})
153146
case madmin.Azure:
154147
tiersList = append(tiersList, &models.Tier{
@@ -165,14 +158,13 @@ func getTiers(ctx context.Context, client MinioAdmin) (*models.TierListResponse,
165158
Objects: strconv.Itoa(stats.NumObjects),
166159
Versions: strconv.Itoa(stats.NumVersions),
167160
},
168-
Status: false,
161+
Status: client.verifyTierStatus(ctx, tierData.Name) == nil,
169162
})
170163
case madmin.Unsupported:
171164
tiersList = append(tiersList, &models.Tier{
172165
Type: models.TierTypeUnsupported,
173-
Status: false,
166+
Status: client.verifyTierStatus(ctx, tierData.Name) == nil,
174167
})
175-
176168
}
177169
}
178170
// build response
@@ -417,23 +409,3 @@ func getEditTierCredentialsResponse(session *models.Principal, params tieringApi
417409
}
418410
return nil
419411
}
420-
421-
func checkTierStatus(endpoint string, accessKey string, secretKey string, bucketName string) bool {
422-
// Initialize minio client object.
423-
re := regexp.MustCompile(`(^\w+:|^)\/\/`)
424-
s := re.ReplaceAllString(endpoint, "")
425-
minioClient, err := minio.New(s, &minio.Options{
426-
Creds: credentials.NewStaticV4(accessKey, secretKey, ""),
427-
Secure: false,
428-
})
429-
if err != nil {
430-
log.Println(err)
431-
return false
432-
}
433-
bucketTest, err := minioClient.BucketExists(context.Background(), bucketName)
434-
if err != nil {
435-
log.Println(err)
436-
return strings.Contains(err.Error(), "The request signature we calculated does not match the signature you provided. Check your key and signing method.")
437-
}
438-
return bucketTest
439-
}

restapi/client-admin.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ type MinioAdmin interface {
8787
delConfigKV(ctx context.Context, kv string) (err error)
8888
serviceRestart(ctx context.Context) error
8989
serverInfo(ctx context.Context) (madmin.InfoMessage, error)
90+
9091
startProfiling(ctx context.Context, profiler madmin.ProfilerType) ([]madmin.StartProfilingResult, error)
9192
stopProfiling(ctx context.Context) (io.ReadCloser, error)
9293
serviceTrace(ctx context.Context, threshold int64, s3, internal, storage, os, errTrace bool) <-chan madmin.ServiceTraceInfo
@@ -116,6 +117,8 @@ type MinioAdmin interface {
116117
addTier(ctx context.Context, tier *madmin.TierConfig) error
117118
// Edit Tier Credentials
118119
editTierCreds(ctx context.Context, tierName string, creds madmin.TierCreds) error
120+
// verify Tier status
121+
verifyTierStatus(ctx context.Context, tierName string) error
119122
// Speedtest
120123
speedtest(ctx context.Context, opts madmin.SpeedtestOpts) (chan madmin.SpeedTestResult, error)
121124
// Site Relication
@@ -462,6 +465,11 @@ func (ac AdminClient) editTierCreds(ctx context.Context, tierName string, creds
462465
return ac.Client.EditTier(ctx, tierName, creds)
463466
}
464467

468+
// implements madmin.VerifyTier()
469+
func (ac AdminClient) verifyTierStatus(ctx context.Context, tierName string) error {
470+
return ac.Client.VerifyTier(ctx, tierName)
471+
}
472+
465473
func NewMinioAdminClient(sessionClaims *models.Principal) (*madmin.AdminClient, error) {
466474
adminClient, err := newAdminFromClaims(sessionClaims)
467475
if err != nil {

0 commit comments

Comments
 (0)