Merge pull request #1159 from jonjohnsonjr/user-agent

Set User-Agent to skopeo/$VERSION
This commit is contained in:
Daniel J Walsh 2021-02-03 16:56:27 -05:00 committed by GitHub
commit 40f5a8cf69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 5 deletions

View File

@ -17,6 +17,8 @@ import (
// and will be populated by the Makefile // and will be populated by the Makefile
var gitCommit = "" var gitCommit = ""
var defaultUserAgent = "skopeo/" + version.Version
type globalOptions struct { type globalOptions struct {
debug bool // Enable debug output debug bool // Enable debug output
tlsVerify optionalBool // Require HTTPS and verify certificates (for docker: and docker-daemon:) tlsVerify optionalBool // Require HTTPS and verify certificates (for docker: and docker-daemon:)
@ -143,6 +145,7 @@ func (opts *globalOptions) newSystemContext() *types.SystemContext {
VariantChoice: opts.overrideVariant, VariantChoice: opts.overrideVariant,
SystemRegistriesConfPath: opts.registriesConfPath, SystemRegistriesConfPath: opts.registriesConfPath,
BigFilesTemporaryDir: opts.tmpDir, BigFilesTemporaryDir: opts.tmpDir,
DockerRegistryUserAgent: defaultUserAgent,
} }
// DEPRECATED: We support this for backward compatibility, but override it if a per-image flag is provided. // DEPRECATED: We support this for backward compatibility, but override it if a per-image flag is provided.
if opts.tlsVerify.present { if opts.tlsVerify.present {

View File

@ -23,7 +23,10 @@ func TestGlobalOptionsNewSystemContext(t *testing.T) {
// Default state // Default state
opts, _ := fakeGlobalOptions(t, []string{}) opts, _ := fakeGlobalOptions(t, []string{})
res := opts.newSystemContext() res := opts.newSystemContext()
assert.Equal(t, &types.SystemContext{}, res) assert.Equal(t, &types.SystemContext{
// User-Agent is set by default.
DockerRegistryUserAgent: defaultUserAgent,
}, res)
// Set everything to non-default values. // Set everything to non-default values.
opts, _ = fakeGlobalOptions(t, []string{ opts, _ = fakeGlobalOptions(t, []string{
"--registries.d", "/srv/registries.d", "--registries.d", "/srv/registries.d",
@ -43,5 +46,6 @@ func TestGlobalOptionsNewSystemContext(t *testing.T) {
BigFilesTemporaryDir: "/srv", BigFilesTemporaryDir: "/srv",
SystemRegistriesConfPath: "/srv/registries.conf", SystemRegistriesConfPath: "/srv/registries.conf",
DockerInsecureSkipTLSVerify: types.OptionalBoolTrue, DockerInsecureSkipTLSVerify: types.OptionalBoolTrue,
DockerRegistryUserAgent: defaultUserAgent,
}, res) }, res)
} }

View File

@ -37,7 +37,9 @@ func TestImageOptionsNewSystemContext(t *testing.T) {
opts := fakeImageOptions(t, "dest-", []string{}, []string{}) opts := fakeImageOptions(t, "dest-", []string{}, []string{})
res, err := opts.newSystemContext() res, err := opts.newSystemContext()
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, &types.SystemContext{}, res) assert.Equal(t, &types.SystemContext{
DockerRegistryUserAgent: defaultUserAgent,
}, res)
// Set everything to non-default values. // Set everything to non-default values.
opts = fakeImageOptions(t, "dest-", []string{ opts = fakeImageOptions(t, "dest-", []string{
@ -72,6 +74,7 @@ func TestImageOptionsNewSystemContext(t *testing.T) {
DockerDaemonCertPath: "/srv/cert-dir", DockerDaemonCertPath: "/srv/cert-dir",
DockerDaemonHost: "daemon-host.example.com", DockerDaemonHost: "daemon-host.example.com",
DockerDaemonInsecureSkipTLSVerify: true, DockerDaemonInsecureSkipTLSVerify: true,
DockerRegistryUserAgent: defaultUserAgent,
BigFilesTemporaryDir: "/srv", BigFilesTemporaryDir: "/srv",
}, res) }, res)
@ -129,7 +132,9 @@ func TestImageDestOptionsNewSystemContext(t *testing.T) {
opts := fakeImageDestOptions(t, "dest-", []string{}, []string{}) opts := fakeImageDestOptions(t, "dest-", []string{}, []string{})
res, err := opts.newSystemContext() res, err := opts.newSystemContext()
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, &types.SystemContext{}, res) assert.Equal(t, &types.SystemContext{
DockerRegistryUserAgent: defaultUserAgent,
}, res)
oldXRD, hasXRD := os.LookupEnv("REGISTRY_AUTH_FILE") oldXRD, hasXRD := os.LookupEnv("REGISTRY_AUTH_FILE")
defer func() { defer func() {
@ -149,7 +154,10 @@ func TestImageDestOptionsNewSystemContext(t *testing.T) {
}) })
res, err = opts.newSystemContext() res, err = opts.newSystemContext()
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, &types.SystemContext{AuthFilePath: authFile}, res) assert.Equal(t, &types.SystemContext{
AuthFilePath: authFile,
DockerRegistryUserAgent: defaultUserAgent,
}, res)
// Set everything to non-default values. // Set everything to non-default values.
opts = fakeImageDestOptions(t, "dest-", []string{ opts = fakeImageDestOptions(t, "dest-", []string{
@ -184,6 +192,7 @@ func TestImageDestOptionsNewSystemContext(t *testing.T) {
DockerDaemonCertPath: "/srv/cert-dir", DockerDaemonCertPath: "/srv/cert-dir",
DockerDaemonHost: "daemon-host.example.com", DockerDaemonHost: "daemon-host.example.com",
DockerDaemonInsecureSkipTLSVerify: true, DockerDaemonInsecureSkipTLSVerify: true,
DockerRegistryUserAgent: defaultUserAgent,
DirForceCompress: true, DirForceCompress: true,
BigFilesTemporaryDir: "/srv", BigFilesTemporaryDir: "/srv",
}, res) }, res)
@ -233,7 +242,8 @@ func TestImageOptionsAuthfileOverride(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, &types.SystemContext{ assert.Equal(t, &types.SystemContext{
AuthFilePath: testCase.expectedAuthfilePath, AuthFilePath: testCase.expectedAuthfilePath,
DockerRegistryUserAgent: defaultUserAgent,
}, res) }, res)
} }
} }