1
0
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:
Harshavardhana
2015-04-21 16:35:50 -07:00
5 changed files with 65 additions and 66 deletions

View File

@@ -134,11 +134,7 @@ func (manager mcClientManager) getNewClient(urlStr string, auth *hostConfig, deb
clnt = s3.New(s3Config) clnt = s3.New(s3Config)
return clnt, nil return clnt, nil
case client.Filesystem: case client.Filesystem:
absURLStr, err := filepath.Abs(filepath.Clean(urlStr)) clnt = fs.New(filepath.Clean(urlStr))
if err != nil {
return nil, iodine.New(err, nil)
}
clnt = fs.New(absURLStr)
return clnt, nil return clnt, nil
default: default:
return nil, iodine.New(errUnsupportedScheme{ return nil, iodine.New(errUnsupportedScheme{

View File

@@ -106,7 +106,8 @@ func runListCmd(ctx *cli.Context) {
} }
targetURLConfigMap[targetURL] = targetConfig 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) err = iodine.New(err, nil)
if err != nil { if err != nil {
if errorMsg == "" { if errorMsg == "" {
@@ -115,10 +116,10 @@ func runListCmd(ctx *cli.Context) {
log.Debug.Println(err) log.Debug.Println(err)
console.Fatalf("%s", errorMsg) console.Fatalf("%s", errorMsg)
} }
}
} }
func doListCmd(manager clientManager, targetURLConfigMap map[string]*hostConfig, debug bool) (string, error) { func doListCmd(manager clientManager, targetURL string, targetConfig *hostConfig, debug bool) (string, error) {
for targetURL, targetConfig := range targetURLConfigMap {
clnt, err := manager.getNewClient(targetURL, targetConfig, globalDebugFlag) clnt, err := manager.getNewClient(targetURL, targetConfig, globalDebugFlag)
if err != nil { if err != nil {
err := iodine.New(err, nil) err := iodine.New(err, nil)
@@ -127,6 +128,4 @@ func doListCmd(manager clientManager, targetURLConfigMap map[string]*hostConfig,
return msg, err return msg, err
} }
return doList(clnt, targetURL) return doList(clnt, targetURL)
}
return "", nil
} }

View File

@@ -58,7 +58,8 @@ func runMakeBucketCmd(ctx *cli.Context) {
} }
targetURLConfigMap[targetURL] = targetConfig 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) err = iodine.New(err, nil)
if err != nil { if err != nil {
if errorMsg == "" { if errorMsg == "" {
@@ -67,21 +68,11 @@ func runMakeBucketCmd(ctx *cli.Context) {
log.Debug.Println(err) log.Debug.Println(err)
console.Fatalf("%s", errorMsg) console.Fatalf("%s", errorMsg)
} }
}
} }
func doMakeBucketCmd(manager clientManager, targetURLConfigMap map[string]*hostConfig, debug bool) (string, error) { func doMakeBucket(clnt client.Client, targetURL string) (string, error) {
var err error err := clnt.PutBucket()
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()
if err != nil { if err != nil {
console.Infof("Retrying ...") 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)) msg := fmt.Sprintf("\nmc: Creating bucket failed for URL [%s] with following reason: [%s]\n", targetURL, iodine.ToError(err))
return msg, err return msg, err
} }
console.Infoln()
}
return "", nil 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)
}

View File

@@ -27,10 +27,11 @@ import (
"errors" "errors"
"net" "net"
"io/ioutil"
. "github.com/minio-io/check" . "github.com/minio-io/check"
"github.com/minio-io/mc/pkg/client" "github.com/minio-io/mc/pkg/client"
clientMocks "github.com/minio-io/mc/pkg/client/mocks" clientMocks "github.com/minio-io/mc/pkg/client/mocks"
"io/ioutil"
) )
type CmdTestSuite struct{} type CmdTestSuite struct{}
@@ -287,7 +288,7 @@ func (s *CmdTestSuite) TestLsCmdWithBucket(c *C) {
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once() manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
cl1.On("List").Return(items, 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(msg, Equals, "")
c.Assert(err, IsNil) c.Assert(err, IsNil)
@@ -321,7 +322,7 @@ func (s *CmdTestSuite) TestLsCmdWithFilePath(c *C) {
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once() manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
cl1.On("List").Return(items, 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(msg, Equals, "")
c.Assert(err, IsNil) c.Assert(err, IsNil)
@@ -349,7 +350,7 @@ func (s *CmdTestSuite) TestLsCmdListsBuckets(c *C) {
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once() manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
cl1.On("List").Return(buckets, 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(msg, Equals, "")
c.Assert(err, IsNil) c.Assert(err, IsNil)
@@ -372,7 +373,7 @@ func (s *CmdTestSuite) TestMbCmd(c *C) {
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once() manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
cl1.On("PutBucket").Return(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(msg, Equals, "")
c.Assert(err, IsNil) c.Assert(err, IsNil)
@@ -394,14 +395,14 @@ func (s *CmdTestSuite) TestMbCmdFailures(c *C) {
sourceURLConfigMap[sourceURL] = sourceConfig sourceURLConfigMap[sourceURL] = sourceConfig
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(nil, errors.New("Expected Failure")).Once() 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(len(msg) > 0, Equals, true)
c.Assert(err, Not(IsNil)) c.Assert(err, Not(IsNil))
manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once() manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
cl1.On("PutBucket").Return(&net.DNSError{}).Once() cl1.On("PutBucket").Return(&net.DNSError{}).Once()
cl1.On("PutBucket").Return(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(msg, Equals, "")
c.Assert(err, IsNil) c.Assert(err, IsNil)
@@ -412,7 +413,7 @@ func (s *CmdTestSuite) TestMbCmdFailures(c *C) {
for i := 0; i <= globalMaxRetryFlag; i++ { for i := 0; i <= globalMaxRetryFlag; i++ {
cl1.On("PutBucket").Return(errors.New("Another Expected Error")).Once() 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 globalMaxRetryFlag = retries
c.Assert(len(msg) > 0, Equals, true) c.Assert(len(msg) > 0, Equals, true)
c.Assert(err, Not(IsNil)) 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() manager.On("getNewClient", sourceURL, sourceConfig, false).Return(cl1, nil).Once()
cl1.On("PutBucket").Return(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(msg, Equals, "")
c.Assert(err, IsNil) c.Assert(err, IsNil)

View File

@@ -30,6 +30,7 @@ type Client interface {
// Common operations // Common operations
Stat() error Stat() error
List() (items []*Item, err error) List() (items []*Item, err error)
// ListNew() error
// Bucket operations // Bucket operations
PutBucket() error PutBucket() error