12345678910111213141516171819202122232425262728293031323334 |
- package contentutil
- import (
- "net/url"
- "strings"
- "github.com/containerd/containerd/content"
- "github.com/containerd/containerd/reference"
- )
- func HasSource(info content.Info, refspec reference.Spec) (bool, error) {
- u, err := url.Parse("dummy://" + refspec.Locator)
- if err != nil {
- return false, err
- }
- if info.Labels == nil {
- return false, nil
- }
- source, target := u.Hostname(), strings.TrimPrefix(u.Path, "/")
- repoLabel, ok := info.Labels["containerd.io/distribution.source."+source]
- if !ok || repoLabel == "" {
- return false, nil
- }
- for _, repo := range strings.Split(repoLabel, ",") {
- // the target repo is not a candidate
- if repo == target {
- return true, nil
- }
- }
- return false, nil
- }
|