1
0
mirror of https://github.com/minio/mc.git synced 2025-11-14 23:42:27 +03:00

Revert Alias behavior, make it passthrough and make Object Storage errors human readable

This commit is contained in:
Harshavardhana
2015-04-17 21:31:15 -07:00
parent 1f9136ffc5
commit c706e152c6
6 changed files with 22 additions and 30 deletions

View File

@@ -34,25 +34,23 @@ func isValidAliasName(aliasName string) bool {
// aliasExpand expands aliased (name:/path) to full URL, used by url-parser
func aliasExpand(aliasedURL string, aliases map[string]string) (newURL string, err error) {
if aliasedURL == "" || aliases == nil {
return aliasedURL, iodine.New(errInvalidArgument{}, nil)
}
u, err := url.Parse(aliasedURL)
if err != nil {
return aliasedURL, iodine.New(errInvalidURL{url: aliasedURL}, nil)
}
if u.Scheme == "" {
// proper URL
if u.Host != "" {
return aliasedURL, nil
}
for aliasName, expandedURL := range aliases {
if !isValidAliasName(aliasName) {
return "", iodine.New(errInvalidAliasName{name: aliasName}, nil)
}
if strings.HasPrefix(aliasedURL, aliasName) {
// Match found. Expand it.
splits := strings.Split(aliasedURL, ":")
if len(splits) == 2 {
return expandedURL + "/" + splits[1], nil
}
return expandedURL, nil
}
return aliasedURL, iodine.New(errAliasNotFound{name: aliasedURL}, nil)
}
return aliasedURL, nil
}

View File

@@ -43,29 +43,29 @@ func (s *MySuite) TestEmptyExpansions(c *C) {
// c.Skip("Test still being written")
url, err := aliasExpand("hello", nil)
c.Assert(url, Equals, "hello")
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
url, err = aliasExpand("minio://hello", nil)
c.Assert(url, Equals, "minio://hello")
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
url, err = aliasExpand("$#\\", nil)
c.Assert(url, Equals, "$#\\")
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
url, err = aliasExpand("foo:bar", map[string]string{"foo": "http://foo"})
c.Assert(url, Equals, "http://foo/bar")
c.Assert(err, IsNil)
url, err = aliasExpand("myfoo:bar", map[string]string{"foo": "http://foo"})
url, err = aliasExpand("myfoo:bar", nil)
c.Assert(url, Equals, "myfoo:bar")
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
url, err = aliasExpand("", map[string]string{"foo": "http://foo"})
url, err = aliasExpand("", nil)
c.Assert(url, Equals, "")
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
url, err = aliasExpand("hello", nil)
c.Assert(url, Equals, "hello")
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
}

View File

@@ -205,6 +205,9 @@ func parseConfigInput(ctx *cli.Context) (config qdb.Store, err error) {
if !strings.HasPrefix(url, "http") {
return nil, iodine.New(errInvalidURL{url: url}, nil)
}
if !isValidAliasName(aliasName) {
return nil, iodine.New(errInvalidAliasName{name: aliasName}, nil)
}
aliases := configStore.GetMapString("Aliases")
if _, ok := aliases[aliasName]; ok {
return nil, iodine.New(errAliasExists{name: aliasName}, nil)

View File

@@ -69,7 +69,7 @@ func doListCmd(ctx *cli.Context) {
u, err := parseURL(arg, config.GetMapString("Aliases"))
if err != nil {
log.Debug.Println(iodine.New(err, nil))
console.Fatalf("mc: Unable to parse URL [%s]\n", u)
console.Fatalf("mc: Unable to parse URL [%s]\n", arg)
}
manager := mcClientManager{}
clnt, err := manager.getNewClient(u, globalDebugFlag)

View File

@@ -37,7 +37,7 @@ var _ = Suite(&CmdTestSuite{})
func (s *CmdTestSuite) TestCopyToSingleTarget(c *C) {
manager := &MockclientManager{}
sourceURL, err := parseURL("foo", nil)
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
data := "Hello World"
md5Sum := md5.Sum([]byte(data))
@@ -45,7 +45,7 @@ func (s *CmdTestSuite) TestCopyToSingleTarget(c *C) {
dataLength := int64(len(data))
targetURL, err := parseURL("bar", nil)
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
targetURLs := []string{targetURL}
sourceReader, sourceWriter := io.Pipe()
@@ -66,7 +66,7 @@ func (s *CmdTestSuite) TestCopyToSingleTarget(c *C) {
manager.On("getTargetWriter", targetURL, hexMd5, dataLength).Return(targetWriter, nil).Once()
doCopyCmd(manager, sourceURL, targetURLs)
wg.Wait()
c.Assert(err, Not(IsNil))
c.Assert(err, IsNil)
c.Assert(resultBuffer.String(), DeepEquals, data)
}

View File

@@ -84,15 +84,6 @@ func (e errAliasExists) Error() string {
return fmt.Sprintf("alias: %s exists", e.name)
}
// errAliasNotFound - alias not found
type errAliasNotFound struct {
name string
}
func (e errAliasNotFound) Error() string {
return "alias: " + e.name + " exists"
}
// errInvalidAuthKeys - invalid authorization keys
type errInvalidAuthKeys struct{}