mirror of
https://github.com/minio/mc.git
synced 2025-11-14 23:42:27 +03:00
Merge pull request #488 from harshavardhana/pr_out_fix_listcmd_makebucketcmd_for_multi_target
This commit is contained in:
@@ -134,11 +134,7 @@ func (manager mcClientManager) getNewClient(urlStr string, auth *hostConfig, deb
|
||||
clnt = s3.New(s3Config)
|
||||
return clnt, nil
|
||||
case client.Filesystem:
|
||||
absURLStr, err := filepath.Abs(filepath.Clean(urlStr))
|
||||
if err != nil {
|
||||
return nil, iodine.New(err, nil)
|
||||
}
|
||||
clnt = fs.New(absURLStr)
|
||||
clnt = fs.New(filepath.Clean(urlStr))
|
||||
return clnt, nil
|
||||
default:
|
||||
return nil, iodine.New(errUnsupportedScheme{
|
||||
|
||||
@@ -106,7 +106,8 @@ func runListCmd(ctx *cli.Context) {
|
||||
}
|
||||
targetURLConfigMap[targetURL] = targetConfig
|
||||
}
|
||||
errorMsg, err := doListCmd(mcClientManager{}, targetURLConfigMap, globalDebugFlag)
|
||||
for targetURL, targetConfig := range targetURLConfigMap {
|
||||
errorMsg, err := doListCmd(mcClientManager{}, targetURL, targetConfig, globalDebugFlag)
|
||||
err = iodine.New(err, nil)
|
||||
if err != nil {
|
||||
if errorMsg == "" {
|
||||
@@ -115,10 +116,10 @@ func runListCmd(ctx *cli.Context) {
|
||||
log.Debug.Println(err)
|
||||
console.Fatalf("%s", errorMsg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func doListCmd(manager clientManager, targetURLConfigMap map[string]*hostConfig, debug bool) (string, error) {
|
||||
for targetURL, targetConfig := range targetURLConfigMap {
|
||||
func doListCmd(manager clientManager, targetURL string, targetConfig *hostConfig, debug bool) (string, error) {
|
||||
clnt, err := manager.getNewClient(targetURL, targetConfig, globalDebugFlag)
|
||||
if err != nil {
|
||||
err := iodine.New(err, nil)
|
||||
@@ -127,6 +128,4 @@ func doListCmd(manager clientManager, targetURLConfigMap map[string]*hostConfig,
|
||||
return msg, err
|
||||
}
|
||||
return doList(clnt, targetURL)
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
||||
34
cmd-mb.go
34
cmd-mb.go
@@ -58,7 +58,8 @@ func runMakeBucketCmd(ctx *cli.Context) {
|
||||
}
|
||||
targetURLConfigMap[targetURL] = targetConfig
|
||||
}
|
||||
errorMsg, err := doMakeBucketCmd(mcClientManager{}, targetURLConfigMap, globalDebugFlag)
|
||||
for targetURL, targetConfig := range targetURLConfigMap {
|
||||
errorMsg, err := doMakeBucketCmd(mcClientManager{}, targetURL, targetConfig, globalDebugFlag)
|
||||
err = iodine.New(err, nil)
|
||||
if err != nil {
|
||||
if errorMsg == "" {
|
||||
@@ -67,21 +68,11 @@ func runMakeBucketCmd(ctx *cli.Context) {
|
||||
log.Debug.Println(err)
|
||||
console.Fatalf("%s", errorMsg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func doMakeBucketCmd(manager clientManager, targetURLConfigMap map[string]*hostConfig, debug bool) (string, error) {
|
||||
var err error
|
||||
var clnt client.Client
|
||||
|
||||
for targetURL, targetConfig := range targetURLConfigMap {
|
||||
clnt, err = manager.getNewClient(targetURL, targetConfig, debug)
|
||||
if err != nil {
|
||||
err := iodine.New(err, nil)
|
||||
msg := fmt.Sprintf("mc: instantiating a new client for URL [%s] failed with following reason: [%s]\n",
|
||||
targetURL, iodine.ToError(err))
|
||||
return msg, err
|
||||
}
|
||||
err = clnt.PutBucket()
|
||||
func doMakeBucket(clnt client.Client, targetURL string) (string, error) {
|
||||
err := clnt.PutBucket()
|
||||
if err != nil {
|
||||
console.Infof("Retrying ...")
|
||||
}
|
||||
@@ -96,7 +87,18 @@ func doMakeBucketCmd(manager clientManager, targetURLConfigMap map[string]*hostC
|
||||
msg := fmt.Sprintf("\nmc: Creating bucket failed for URL [%s] with following reason: [%s]\n", targetURL, iodine.ToError(err))
|
||||
return msg, err
|
||||
}
|
||||
console.Infoln()
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func doMakeBucketCmd(manager clientManager, targetURL string, targetConfig *hostConfig, debug bool) (string, error) {
|
||||
var err error
|
||||
var clnt client.Client
|
||||
clnt, err = manager.getNewClient(targetURL, targetConfig, debug)
|
||||
if err != nil {
|
||||
err := iodine.New(err, nil)
|
||||
msg := fmt.Sprintf("mc: instantiating a new client for URL [%s] failed with following reason: [%s]\n",
|
||||
targetURL, iodine.ToError(err))
|
||||
return msg, err
|
||||
}
|
||||
return doMakeBucket(clnt, targetURL)
|
||||
}
|
||||
|
||||
19
cmd_test.go
19
cmd_test.go
@@ -27,10 +27,11 @@ import (
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"io/ioutil"
|
||||
|
||||
. "github.com/minio-io/check"
|
||||
"github.com/minio-io/mc/pkg/client"
|
||||
clientMocks "github.com/minio-io/mc/pkg/client/mocks"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
type CmdTestSuite struct{}
|
||||
@@ -287,7 +288,7 @@ func (s *CmdTestSuite) TestLsCmdWithBucket(c *C) {
|
||||
|
||||
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
|
||||
cl1.On("List").Return(items, nil).Once()
|
||||
msg, err := doListCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err := doListCmd(manager, sourceURL, sourceConfig, false)
|
||||
c.Assert(msg, Equals, "")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
@@ -321,7 +322,7 @@ func (s *CmdTestSuite) TestLsCmdWithFilePath(c *C) {
|
||||
|
||||
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
|
||||
cl1.On("List").Return(items, nil).Once()
|
||||
msg, err := doListCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err := doListCmd(manager, sourceURL, sourceConfig, false)
|
||||
c.Assert(msg, Equals, "")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
@@ -349,7 +350,7 @@ func (s *CmdTestSuite) TestLsCmdListsBuckets(c *C) {
|
||||
|
||||
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
|
||||
cl1.On("List").Return(buckets, nil).Once()
|
||||
msg, err := doListCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err := doListCmd(manager, sourceURL, sourceConfig, false)
|
||||
c.Assert(msg, Equals, "")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
@@ -372,7 +373,7 @@ func (s *CmdTestSuite) TestMbCmd(c *C) {
|
||||
|
||||
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
|
||||
cl1.On("PutBucket").Return(nil).Once()
|
||||
msg, err := doMakeBucketCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err := doMakeBucketCmd(manager, sourceURL, sourceConfig, false)
|
||||
c.Assert(msg, Equals, "")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
@@ -394,14 +395,14 @@ func (s *CmdTestSuite) TestMbCmdFailures(c *C) {
|
||||
sourceURLConfigMap[sourceURL] = sourceConfig
|
||||
|
||||
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(nil, errors.New("Expected Failure")).Once()
|
||||
msg, err := doMakeBucketCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err := doMakeBucketCmd(manager, sourceURL, sourceConfig, false)
|
||||
c.Assert(len(msg) > 0, Equals, true)
|
||||
c.Assert(err, Not(IsNil))
|
||||
|
||||
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
|
||||
cl1.On("PutBucket").Return(&net.DNSError{}).Once()
|
||||
cl1.On("PutBucket").Return(nil).Once()
|
||||
msg, err = doMakeBucketCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err = doMakeBucketCmd(manager, sourceURL, sourceConfig, false)
|
||||
c.Assert(msg, Equals, "")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
@@ -412,7 +413,7 @@ func (s *CmdTestSuite) TestMbCmdFailures(c *C) {
|
||||
for i := 0; i <= globalMaxRetryFlag; i++ {
|
||||
cl1.On("PutBucket").Return(errors.New("Another Expected Error")).Once()
|
||||
}
|
||||
msg, err = doMakeBucketCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err = doMakeBucketCmd(manager, sourceURL, sourceConfig, false)
|
||||
globalMaxRetryFlag = retries
|
||||
c.Assert(len(msg) > 0, Equals, true)
|
||||
c.Assert(err, Not(IsNil))
|
||||
@@ -436,7 +437,7 @@ func (s *CmdTestSuite) TestMbCmdOnFile(c *C) {
|
||||
|
||||
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
|
||||
cl1.On("PutBucket").Return(nil).Once()
|
||||
msg, err := doMakeBucketCmd(manager, sourceURLConfigMap, false)
|
||||
msg, err := doMakeBucketCmd(manager, sourceURL, sourceConfig, false)
|
||||
c.Assert(msg, Equals, "")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ type Client interface {
|
||||
// Common operations
|
||||
Stat() error
|
||||
List() (items []*Item, err error)
|
||||
// ListNew() error
|
||||
|
||||
// Bucket operations
|
||||
PutBucket() error
|
||||
|
||||
Reference in New Issue
Block a user