Skip to content

Commit

Permalink
registry/storage/driver/azure: fix storage path to use leading slash
Browse files Browse the repository at this point in the history
this keeps backwards compatibility with pre-v3 registries.
  • Loading branch information
flavianmissi committed Feb 8, 2024
1 parent c7be7b4 commit efb129e
Showing 1 changed file with 12 additions and 14 deletions.
26 changes: 12 additions & 14 deletions registry/storage/driver/azure/azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -404,20 +404,9 @@ func (d *driver) listBlobs(ctx context.Context, virtPath string) ([]string, erro
virtPath += "/"
}

// we will replace the root directory prefix before returning blob names
blobPrefix := d.blobName("")

// This is to cover for the cases when the rootDirectory of the driver is either "" or "/".
// In those cases, there is no root prefix to replace and we must actually add a "/" to all
// results in order to keep them as valid paths as recognized by storagedriver.PathRegexp
prefix := ""
if blobPrefix == "" {
prefix = "/"
}

out := []string{}

listPrefix := d.blobName(virtPath)

pager := d.client.NewListBlobsFlatPager(&container.ListBlobsFlatOptions{
Prefix: &listPrefix,
})
Expand All @@ -431,7 +420,14 @@ func (d *driver) listBlobs(ctx context.Context, virtPath string) ([]string, erro
return nil, fmt.Errorf("required blob property Name is missing while listing blobs under: %s", listPrefix)
}
name := *blob.Name
out = append(out, strings.Replace(name, blobPrefix, prefix, 1))

// This is to cover for the cases when the rootDirectory of the driver is either "" or "/".
// In those cases, there is no root prefix to replace and we must actually add a "/" to all
// results in order to keep them as valid paths as recognized by storagedriver.PathRegexp
if !strings.HasPrefix(name, "/") { // add leading '/'
name = "/" + name
}
out = append(out, name)
}
}

Expand All @@ -446,7 +442,9 @@ func (d *driver) blobName(path string) string {
return path
}

return strings.TrimLeft(strings.TrimRight(d.rootDirectory, "/")+path, "/")
trimmedRoot := strings.TrimRight(d.rootDirectory, "/")
trimmedPath := strings.TrimLeft(path, "/")
return trimmedRoot + "/" + trimmedPath
}

func is404(err error) bool {
Expand Down

0 comments on commit efb129e

Please sign in to comment.