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:
14
aliases.go
14
aliases.go
@@ -34,25 +34,23 @@ func isValidAliasName(aliasName string) bool {
|
|||||||
|
|
||||||
// aliasExpand expands aliased (name:/path) to full URL, used by url-parser
|
// aliasExpand expands aliased (name:/path) to full URL, used by url-parser
|
||||||
func aliasExpand(aliasedURL string, aliases map[string]string) (newURL string, err error) {
|
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)
|
u, err := url.Parse(aliasedURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return aliasedURL, iodine.New(errInvalidURL{url: aliasedURL}, nil)
|
return aliasedURL, iodine.New(errInvalidURL{url: aliasedURL}, nil)
|
||||||
}
|
}
|
||||||
if u.Scheme == "" {
|
// proper URL
|
||||||
|
if u.Host != "" {
|
||||||
return aliasedURL, nil
|
return aliasedURL, nil
|
||||||
}
|
}
|
||||||
for aliasName, expandedURL := range aliases {
|
for aliasName, expandedURL := range aliases {
|
||||||
if !isValidAliasName(aliasName) {
|
|
||||||
return "", iodine.New(errInvalidAliasName{name: aliasName}, nil)
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(aliasedURL, aliasName) {
|
if strings.HasPrefix(aliasedURL, aliasName) {
|
||||||
// Match found. Expand it.
|
// Match found. Expand it.
|
||||||
splits := strings.Split(aliasedURL, ":")
|
splits := strings.Split(aliasedURL, ":")
|
||||||
|
if len(splits) == 2 {
|
||||||
return expandedURL + "/" + splits[1], nil
|
return expandedURL + "/" + splits[1], nil
|
||||||
}
|
}
|
||||||
|
return expandedURL, nil
|
||||||
}
|
}
|
||||||
return aliasedURL, iodine.New(errAliasNotFound{name: aliasedURL}, nil)
|
}
|
||||||
|
return aliasedURL, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,29 +43,29 @@ func (s *MySuite) TestEmptyExpansions(c *C) {
|
|||||||
// c.Skip("Test still being written")
|
// c.Skip("Test still being written")
|
||||||
url, err := aliasExpand("hello", nil)
|
url, err := aliasExpand("hello", nil)
|
||||||
c.Assert(url, Equals, "hello")
|
c.Assert(url, Equals, "hello")
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
|
|
||||||
url, err = aliasExpand("minio://hello", nil)
|
url, err = aliasExpand("minio://hello", nil)
|
||||||
c.Assert(url, Equals, "minio://hello")
|
c.Assert(url, Equals, "minio://hello")
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
|
|
||||||
url, err = aliasExpand("$#\\", nil)
|
url, err = aliasExpand("$#\\", nil)
|
||||||
c.Assert(url, Equals, "$#\\")
|
c.Assert(url, Equals, "$#\\")
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
|
|
||||||
url, err = aliasExpand("foo:bar", map[string]string{"foo": "http://foo"})
|
url, err = aliasExpand("foo:bar", map[string]string{"foo": "http://foo"})
|
||||||
c.Assert(url, Equals, "http://foo/bar")
|
c.Assert(url, Equals, "http://foo/bar")
|
||||||
c.Assert(err, IsNil)
|
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(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(url, Equals, "")
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
|
|
||||||
url, err = aliasExpand("hello", nil)
|
url, err = aliasExpand("hello", nil)
|
||||||
c.Assert(url, Equals, "hello")
|
c.Assert(url, Equals, "hello")
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,6 +205,9 @@ func parseConfigInput(ctx *cli.Context) (config qdb.Store, err error) {
|
|||||||
if !strings.HasPrefix(url, "http") {
|
if !strings.HasPrefix(url, "http") {
|
||||||
return nil, iodine.New(errInvalidURL{url: url}, nil)
|
return nil, iodine.New(errInvalidURL{url: url}, nil)
|
||||||
}
|
}
|
||||||
|
if !isValidAliasName(aliasName) {
|
||||||
|
return nil, iodine.New(errInvalidAliasName{name: aliasName}, nil)
|
||||||
|
}
|
||||||
aliases := configStore.GetMapString("Aliases")
|
aliases := configStore.GetMapString("Aliases")
|
||||||
if _, ok := aliases[aliasName]; ok {
|
if _, ok := aliases[aliasName]; ok {
|
||||||
return nil, iodine.New(errAliasExists{name: aliasName}, nil)
|
return nil, iodine.New(errAliasExists{name: aliasName}, nil)
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ func doListCmd(ctx *cli.Context) {
|
|||||||
u, err := parseURL(arg, config.GetMapString("Aliases"))
|
u, err := parseURL(arg, config.GetMapString("Aliases"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug.Println(iodine.New(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{}
|
manager := mcClientManager{}
|
||||||
clnt, err := manager.getNewClient(u, globalDebugFlag)
|
clnt, err := manager.getNewClient(u, globalDebugFlag)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ var _ = Suite(&CmdTestSuite{})
|
|||||||
func (s *CmdTestSuite) TestCopyToSingleTarget(c *C) {
|
func (s *CmdTestSuite) TestCopyToSingleTarget(c *C) {
|
||||||
manager := &MockclientManager{}
|
manager := &MockclientManager{}
|
||||||
sourceURL, err := parseURL("foo", nil)
|
sourceURL, err := parseURL("foo", nil)
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
|
|
||||||
data := "Hello World"
|
data := "Hello World"
|
||||||
md5Sum := md5.Sum([]byte(data))
|
md5Sum := md5.Sum([]byte(data))
|
||||||
@@ -45,7 +45,7 @@ func (s *CmdTestSuite) TestCopyToSingleTarget(c *C) {
|
|||||||
dataLength := int64(len(data))
|
dataLength := int64(len(data))
|
||||||
|
|
||||||
targetURL, err := parseURL("bar", nil)
|
targetURL, err := parseURL("bar", nil)
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
targetURLs := []string{targetURL}
|
targetURLs := []string{targetURL}
|
||||||
|
|
||||||
sourceReader, sourceWriter := io.Pipe()
|
sourceReader, sourceWriter := io.Pipe()
|
||||||
@@ -66,7 +66,7 @@ func (s *CmdTestSuite) TestCopyToSingleTarget(c *C) {
|
|||||||
manager.On("getTargetWriter", targetURL, hexMd5, dataLength).Return(targetWriter, nil).Once()
|
manager.On("getTargetWriter", targetURL, hexMd5, dataLength).Return(targetWriter, nil).Once()
|
||||||
doCopyCmd(manager, sourceURL, targetURLs)
|
doCopyCmd(manager, sourceURL, targetURLs)
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
c.Assert(err, Not(IsNil))
|
c.Assert(err, IsNil)
|
||||||
c.Assert(resultBuffer.String(), DeepEquals, data)
|
c.Assert(resultBuffer.String(), DeepEquals, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,15 +84,6 @@ func (e errAliasExists) Error() string {
|
|||||||
return fmt.Sprintf("alias: %s exists", e.name)
|
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
|
// errInvalidAuthKeys - invalid authorization keys
|
||||||
type errInvalidAuthKeys struct{}
|
type errInvalidAuthKeys struct{}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user