mirror of
https://github.com/containers/podman.git
synced 2025-10-19 20:23:08 +08:00
Remove the authfile parameter of MakeXRegistryAuthHeader
Having a parameter that modifies the provides types.SystemContext seems rather unexpected and risky to have around - and the only user of that is actually a no-op, others only provide a nil SystemContext; so, remove that option and simplify (well, somewhat; many callers now have extra &types.SystemContext{AuthFilePath} boilerplate; at least that's consistent with that code carrying a TODO to create a larger-scope SystemContext). Should not change behavior. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
@ -172,7 +172,7 @@ func MakeXRegistryConfigHeader(sys *types.SystemContext, username, password stri
|
|||||||
|
|
||||||
// MakeXRegistryAuthHeader returns a map with the XRegistryAuthHeader set which can
|
// MakeXRegistryAuthHeader returns a map with the XRegistryAuthHeader set which can
|
||||||
// conveniently be used in the http stack.
|
// conveniently be used in the http stack.
|
||||||
func MakeXRegistryAuthHeader(sys *types.SystemContext, authfile, username, password string) (map[string]string, error) {
|
func MakeXRegistryAuthHeader(sys *types.SystemContext, username, password string) (map[string]string, error) {
|
||||||
if username != "" {
|
if username != "" {
|
||||||
content, err := encodeSingleAuthConfig(types.DockerAuthConfig{Username: username, Password: password})
|
content, err := encodeSingleAuthConfig(types.DockerAuthConfig{Username: username, Password: password})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -184,9 +184,6 @@ func MakeXRegistryAuthHeader(sys *types.SystemContext, authfile, username, passw
|
|||||||
if sys == nil {
|
if sys == nil {
|
||||||
sys = &types.SystemContext{}
|
sys = &types.SystemContext{}
|
||||||
}
|
}
|
||||||
if authfile != "" {
|
|
||||||
sys.AuthFilePath = authfile
|
|
||||||
}
|
|
||||||
authConfigs, err := imageAuth.GetAllCredentials(sys)
|
authConfigs, err := imageAuth.GetAllCredentials(sys)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -29,12 +29,12 @@ var largeAuthFileValues = map[string]types.DockerAuthConfig{
|
|||||||
"quay.io": {Username: "quay", Password: "top"},
|
"quay.io": {Username: "quay", Password: "top"},
|
||||||
}
|
}
|
||||||
|
|
||||||
// tempAuthFilePath returns a non-empty path pointing
|
// systemContextForAuthFile returns a types.SystemContext with AuthFilePath pointing
|
||||||
// to a temporary file with fileContents, or "" if fileContents is empty; and a cleanup
|
// to a temporary file with fileContents, or nil if fileContents is empty; and a cleanup
|
||||||
// function the calle rmust arrange to call.
|
// function the calle rmust arrange to call.
|
||||||
func tempAuthFilePath(t *testing.T, fileContents string) (string, func()) {
|
func systemContextForAuthFile(t *testing.T, fileContents string) (*types.SystemContext, func()) {
|
||||||
if fileContents == "" {
|
if fileContents == "" {
|
||||||
return "", func() {}
|
return nil, func() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := ioutil.TempFile("", "auth.json")
|
f, err := ioutil.TempFile("", "auth.json")
|
||||||
@ -42,7 +42,7 @@ func tempAuthFilePath(t *testing.T, fileContents string) (string, func()) {
|
|||||||
path := f.Name()
|
path := f.Name()
|
||||||
err = ioutil.WriteFile(path, []byte(fileContents), 0700)
|
err = ioutil.WriteFile(path, []byte(fileContents), 0700)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return path, func() { os.Remove(path) }
|
return &types.SystemContext{AuthFilePath: path}, func() { os.Remove(path) }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that GetCredentials() correctly parses what MakeXRegistryConfigHeader() produces
|
// Test that GetCredentials() correctly parses what MakeXRegistryConfigHeader() produces
|
||||||
@ -79,9 +79,9 @@ func TestMakeXRegistryConfigHeaderGetCredentialsRoundtrip(t *testing.T) {
|
|||||||
expectedFileValues: largeAuthFileValues,
|
expectedFileValues: largeAuthFileValues,
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
inputAuthFile, cleanup := tempAuthFilePath(t, tc.fileContents)
|
sys, cleanup := systemContextForAuthFile(t, tc.fileContents)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
headers, err := MakeXRegistryConfigHeader(&types.SystemContext{AuthFilePath: inputAuthFile}, tc.username, tc.password)
|
headers, err := MakeXRegistryConfigHeader(sys, tc.username, tc.password)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
req, err := http.NewRequest(http.MethodPost, "/", nil)
|
req, err := http.NewRequest(http.MethodPost, "/", nil)
|
||||||
require.NoError(t, err, tc.name)
|
require.NoError(t, err, tc.name)
|
||||||
@ -131,9 +131,9 @@ func TestMakeXRegistryAuthHeaderGetCredentialsRoundtrip(t *testing.T) {
|
|||||||
expectedFileValues: largeAuthFileValues,
|
expectedFileValues: largeAuthFileValues,
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
inputAuthFile, cleanup := tempAuthFilePath(t, tc.fileContents)
|
sys, cleanup := systemContextForAuthFile(t, tc.fileContents)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
headers, err := MakeXRegistryAuthHeader(nil, inputAuthFile, tc.username, tc.password)
|
headers, err := MakeXRegistryAuthHeader(sys, tc.username, tc.password)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
req, err := http.NewRequest(http.MethodPost, "/", nil)
|
req, err := http.NewRequest(http.MethodPost, "/", nil)
|
||||||
require.NoError(t, err, tc.name)
|
require.NoError(t, err, tc.name)
|
||||||
@ -206,9 +206,9 @@ func TestMakeXRegistryConfigHeader(t *testing.T) {
|
|||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
authFile, cleanup := tempAuthFilePath(t, tc.fileContents)
|
sys, cleanup := systemContextForAuthFile(t, tc.fileContents)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
res, err := MakeXRegistryConfigHeader(&types.SystemContext{AuthFilePath: authFile}, tc.username, tc.password)
|
res, err := MakeXRegistryConfigHeader(sys, tc.username, tc.password)
|
||||||
if tc.shouldErr {
|
if tc.shouldErr {
|
||||||
assert.Error(t, err, tc.name)
|
assert.Error(t, err, tc.name)
|
||||||
} else {
|
} else {
|
||||||
@ -269,9 +269,9 @@ func TestMakeXRegistryAuthHeader(t *testing.T) {
|
|||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
authFile, cleanup := tempAuthFilePath(t, tc.fileContents)
|
sys, cleanup := systemContextForAuthFile(t, tc.fileContents)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
res, err := MakeXRegistryAuthHeader(nil, authFile, tc.username, tc.password)
|
res, err := MakeXRegistryAuthHeader(sys, tc.username, tc.password)
|
||||||
if tc.shouldErr {
|
if tc.shouldErr {
|
||||||
assert.Error(t, err, tc.name)
|
assert.Error(t, err, tc.name)
|
||||||
} else {
|
} else {
|
||||||
|
@ -294,7 +294,7 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
|
|||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
if options.SystemContext != nil && options.SystemContext.DockerAuthConfig != nil {
|
if options.SystemContext != nil && options.SystemContext.DockerAuthConfig != nil {
|
||||||
headers, err = auth.MakeXRegistryAuthHeader(options.SystemContext, options.SystemContext.AuthFilePath, options.SystemContext.DockerAuthConfig.Username, options.SystemContext.DockerAuthConfig.Password)
|
headers, err = auth.MakeXRegistryAuthHeader(options.SystemContext, options.SystemContext.DockerAuthConfig.Username, options.SystemContext.DockerAuthConfig.Password)
|
||||||
} else {
|
} else {
|
||||||
headers, err = auth.MakeXRegistryConfigHeader(options.SystemContext, "", "")
|
headers, err = auth.MakeXRegistryConfigHeader(options.SystemContext, "", "")
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
imageTypes "github.com/containers/image/v5/types"
|
||||||
"github.com/containers/podman/v3/pkg/api/handlers/types"
|
"github.com/containers/podman/v3/pkg/api/handlers/types"
|
||||||
"github.com/containers/podman/v3/pkg/auth"
|
"github.com/containers/podman/v3/pkg/auth"
|
||||||
"github.com/containers/podman/v3/pkg/bindings"
|
"github.com/containers/podman/v3/pkg/bindings"
|
||||||
@ -280,7 +281,7 @@ func Push(ctx context.Context, source string, destination string, options *PushO
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// TODO: have a global system context we can pass around (1st argument)
|
// TODO: have a global system context we can pass around (1st argument)
|
||||||
header, err := auth.MakeXRegistryAuthHeader(nil, options.GetAuthfile(), options.GetUsername(), options.GetPassword())
|
header, err := auth.MakeXRegistryAuthHeader(&imageTypes.SystemContext{AuthFilePath: options.GetAuthfile()}, options.GetUsername(), options.GetPassword())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -329,7 +330,7 @@ func Search(ctx context.Context, term string, options *SearchOptions) ([]entitie
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: have a global system context we can pass around (1st argument)
|
// TODO: have a global system context we can pass around (1st argument)
|
||||||
header, err := auth.MakeXRegistryAuthHeader(nil, options.GetAuthfile(), "", "")
|
header, err := auth.MakeXRegistryAuthHeader(&imageTypes.SystemContext{AuthFilePath: options.GetAuthfile()}, "", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/containers/image/v5/types"
|
||||||
"github.com/containers/podman/v3/pkg/auth"
|
"github.com/containers/podman/v3/pkg/auth"
|
||||||
"github.com/containers/podman/v3/pkg/bindings"
|
"github.com/containers/podman/v3/pkg/bindings"
|
||||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||||
@ -42,7 +43,7 @@ func Pull(ctx context.Context, rawImage string, options *PullOptions) ([]string,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: have a global system context we can pass around (1st argument)
|
// TODO: have a global system context we can pass around (1st argument)
|
||||||
header, err := auth.MakeXRegistryAuthHeader(nil, options.GetAuthfile(), options.GetUsername(), options.GetPassword())
|
header, err := auth.MakeXRegistryAuthHeader(&types.SystemContext{AuthFilePath: options.GetAuthfile()}, options.GetUsername(), options.GetPassword())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/containers/image/v5/types"
|
||||||
"github.com/containers/podman/v3/pkg/auth"
|
"github.com/containers/podman/v3/pkg/auth"
|
||||||
"github.com/containers/podman/v3/pkg/bindings"
|
"github.com/containers/podman/v3/pkg/bindings"
|
||||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||||
@ -40,7 +41,7 @@ func Kube(ctx context.Context, path string, options *KubeOptions) (*entities.Pla
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: have a global system context we can pass around (1st argument)
|
// TODO: have a global system context we can pass around (1st argument)
|
||||||
header, err := auth.MakeXRegistryAuthHeader(nil, options.GetAuthfile(), options.GetUsername(), options.GetPassword())
|
header, err := auth.MakeXRegistryAuthHeader(&types.SystemContext{AuthFilePath: options.GetAuthfile()}, options.GetUsername(), options.GetPassword())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user