Skip to content

Commit

Permalink
Address PR review comments
Browse files Browse the repository at this point in the history
* Support wildcard registry mirror
* Add registry-mirror alias

Signed-off-by: Anthony Emengo <[email protected]>
  • Loading branch information
Anthony Emengo committed Jul 6, 2021
1 parent 4d1ea11 commit 9ed36d7
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
5 changes: 3 additions & 2 deletions internal/commands/config_registry_mirrors.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ var registryMirror string
func ConfigRegistryMirrors(logger logging.Logger, cfg config.Config, cfgPath string) *cobra.Command {
cmd := &cobra.Command{
Use: "registry-mirrors",
Short: "List, add and remove registry mirrors",
Short: "List, add and remove OCI registry mirrors",
Aliases: []string{"registry-mirror"},
Args: cobra.MaximumNArgs(3),
RunE: logError(logger, func(cmd *cobra.Command, args []string) error {
listRegistryMirrors(args, logger, cfg)
Expand All @@ -34,7 +35,7 @@ func ConfigRegistryMirrors(logger logging.Logger, cfg config.Config, cfgPath str
addCmd := generateAdd("mirror for a registry", logger, cfg, cfgPath, addRegistryMirror)
addCmd.Use = "add <registry> [-m <mirror...]"
addCmd.Long = "Set mirror for a given registry."
addCmd.Example = "pack config registry-mirrors add index.docker.io --mirror 10.0.0.1"
addCmd.Example = "pack config registry-mirrors add index.docker.io --mirror 10.0.0.1\npack config registry-mirrors add '*' --mirror 10.0.0.1"
addCmd.Flags().StringVarP(&registryMirror, "mirror", "m", "", "Registry mirror")
cmd.AddCommand(addCmd)

Expand Down
12 changes: 11 additions & 1 deletion internal/name/name.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TranslateRegistry(name string, registryMirrors map[string]string) (string,
}

srcContext := srcRef.Context()
registryMirror, ok := registryMirrors[srcContext.RegistryStr()]
registryMirror, ok := getMirror(srcContext, registryMirrors)
if !ok {
return name, nil
}
Expand All @@ -30,3 +30,13 @@ func TranslateRegistry(name string, registryMirrors map[string]string) (string,

return refName, nil
}

func getMirror(repo gname.Repository, registryMirrors map[string]string) (string, bool) {
mirror, ok := registryMirrors["*"]
if ok {
return mirror, ok
}

mirror, ok = registryMirrors[repo.RegistryStr()]
return mirror, ok
}
13 changes: 13 additions & 0 deletions internal/name/name_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,18 @@ func testTranslateRegistry(t *testing.T, when spec.G, it spec.S) {
assert.Nil(err)
assert.Equal(output, expected)
})

it("prefers the wildcard mirror translation", func() {
input := "index.docker.io/my/buildpack:0.1"
expected := "10.0.0.2/my/buildpack:0.1"
registryMirrors := map[string]string{
"index.docker.io": "10.0.0.1",
"*": "10.0.0.2",
}

output, err := name.TranslateRegistry(input, registryMirrors)
assert.Nil(err)
assert.Equal(output, expected)
})
})
}

0 comments on commit 9ed36d7

Please sign in to comment.