mirror of https://github.com/docker/docs.git
43 lines
724 B
Go
43 lines
724 B
Go
package cluster
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/samalba/dockerclient"
|
|
)
|
|
|
|
// Image is exported
|
|
type Image struct {
|
|
dockerclient.Image
|
|
|
|
Engine *Engine
|
|
}
|
|
|
|
// Match is exported
|
|
func (image *Image) Match(IDOrName string, matchTag bool) bool {
|
|
size := len(IDOrName)
|
|
|
|
if image.Id == IDOrName || (size > 2 && strings.HasPrefix(image.Id, IDOrName)) {
|
|
return true
|
|
}
|
|
|
|
name := IDOrName
|
|
if matchTag {
|
|
if len(strings.SplitN(IDOrName, ":", 2)) == 1 {
|
|
name = IDOrName + ":latest"
|
|
}
|
|
} else {
|
|
name = strings.SplitN(IDOrName, ":", 2)[0]
|
|
}
|
|
|
|
for _, repoTag := range image.RepoTags {
|
|
if matchTag == false {
|
|
repoTag = strings.SplitN(repoTag, ":", 2)[0]
|
|
}
|
|
if repoTag == name {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|