🐛 Fix plugin name derivation from image name (#3711)
* 🐛 Fix plugin name derivation from image name
Signed-off-by: Ashish Amarnath <ashisham@vmware.com>
* changelog
Signed-off-by: Ashish Amarnath <ashisham@vmware.com>
pull/3722/head
parent
f988fd1411
commit
32c3820b8a
|
@ -0,0 +1 @@
|
|||
🐛 Fix plugin name derivation from image name
|
|
@ -45,7 +45,7 @@ func ForPluginContainer(image string, pullPolicy corev1api.PullPolicy) *Containe
|
|||
|
||||
// getName returns the 'name' component of a docker
|
||||
// image that includes the entire string except the registry name, and transforms the combined
|
||||
// string into a DNS-1123 compatible name.
|
||||
// string into a RFC-1123 compatible name.
|
||||
func getName(image string) string {
|
||||
slashIndex := strings.Index(image, "/")
|
||||
slashCount := 0
|
||||
|
@ -67,7 +67,14 @@ func getName(image string) string {
|
|||
end = colonIndex
|
||||
}
|
||||
|
||||
return strings.Replace(image[start:end], "/", "-", -1) // this makes it DNS-1123 compatible
|
||||
// https://github.com/distribution/distribution/blob/main/docs/spec/api.md#overview
|
||||
// valid repository names match the regex [a-z0-9]+(?:[._-][a-z0-9]+)*
|
||||
// image repository names can container [._] but [._] are not allowed in RFC-1123 labels.
|
||||
// replace '/', '_' and '.' with '-'
|
||||
re := strings.NewReplacer("/", "-",
|
||||
"_", "-",
|
||||
".", "-")
|
||||
return re.Replace(image[start:end])
|
||||
}
|
||||
|
||||
// Result returns the built Container.
|
||||
|
|
|
@ -75,7 +75,17 @@ func TestGetName(t *testing.T) {
|
|||
{
|
||||
name: "image name with registry hostname starting with a / will include the registry name ¯\\_(ツ)_/¯",
|
||||
image: "/gcr.io/my-repo/mystery/another/my-image",
|
||||
expected: "gcr.io-my-repo-mystery-another-my-image",
|
||||
expected: "gcr-io-my-repo-mystery-another-my-image",
|
||||
},
|
||||
{
|
||||
name: "image repository names containing _ ",
|
||||
image: "projects.registry.vmware.com/tanzu_migrator/route-2-httpproxy:myTag",
|
||||
expected: "tanzu-migrator-route-2-httpproxy",
|
||||
},
|
||||
{
|
||||
name: "image repository names containing . ",
|
||||
image: "projects.registry.vmware.com/tanzu.migrator/route-2-httpproxy:myTag",
|
||||
expected: "tanzu-migrator-route-2-httpproxy",
|
||||
},
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue