From 9f5c2aea1a398b7afa045d28fa35aeaa1612bd18 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Sun, 9 Sep 2018 11:22:29 -0400 Subject: [PATCH] Cut a dependency between kubectl and the rest of the repo The types referenced in credentialprovider are part of a long term api and will not change, and kubectl doesn't need to take a dependency on this package in order to do minimal validation here. --- build/visible_to/BUILD | 1 + hack/.golint_failures | 3 +++ pkg/kubectl/generate/versioned/BUILD | 1 - .../versioned/secret_for_docker_registry.go | 26 ++++++++++++++++--- .../secret_for_docker_registry_test.go | 2 +- 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/build/visible_to/BUILD b/build/visible_to/BUILD index fc077eeb70..d0d420fb37 100644 --- a/build/visible_to/BUILD +++ b/build/visible_to/BUILD @@ -393,6 +393,7 @@ package_group( "//pkg/kubectl", "//pkg/kubectl/cmd", "//pkg/kubectl/generate", + "//pkg/kubectl/generate/versioned", "//pkg/kubectl/proxy", ], ) diff --git a/hack/.golint_failures b/hack/.golint_failures index 0871b07a43..c9004ba3c2 100644 --- a/hack/.golint_failures +++ b/hack/.golint_failures @@ -190,6 +190,9 @@ pkg/kubectl/cmd/util/openapi pkg/kubectl/cmd/util/sanity pkg/kubectl/cmd/version pkg/kubectl/cmd/wait +pkg/kubectl/describe +pkg/kubectl/generate +pkg/kubectl/generate/versioned pkg/kubectl/metricsutil pkg/kubectl/util pkg/kubectl/util/slice diff --git a/pkg/kubectl/generate/versioned/BUILD b/pkg/kubectl/generate/versioned/BUILD index 391f74deb2..c770342936 100644 --- a/pkg/kubectl/generate/versioned/BUILD +++ b/pkg/kubectl/generate/versioned/BUILD @@ -25,7 +25,6 @@ go_library( importpath = "k8s.io/kubernetes/pkg/kubectl/generate/versioned", visibility = ["//visibility:public"], deps = [ - "//pkg/credentialprovider:go_default_library", "//pkg/kubectl/generate:go_default_library", "//pkg/kubectl/util:go_default_library", "//pkg/kubectl/util/hash:go_default_library", diff --git a/pkg/kubectl/generate/versioned/secret_for_docker_registry.go b/pkg/kubectl/generate/versioned/secret_for_docker_registry.go index 1a5c08b131..36072cb3c7 100644 --- a/pkg/kubectl/generate/versioned/secret_for_docker_registry.go +++ b/pkg/kubectl/generate/versioned/secret_for_docker_registry.go @@ -22,7 +22,6 @@ import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/kubernetes/pkg/credentialprovider" "k8s.io/kubernetes/pkg/kubectl/generate" "k8s.io/kubernetes/pkg/kubectl/util/hash" ) @@ -149,15 +148,34 @@ func (s SecretForDockerRegistryGeneratorV1) validate() error { // handleDockerCfgJsonContent serializes a ~/.docker/config.json file func handleDockerCfgJsonContent(username, password, email, server string) ([]byte, error) { - dockercfgAuth := credentialprovider.DockerConfigEntry{ + dockercfgAuth := DockerConfigEntry{ Username: username, Password: password, Email: email, } - dockerCfgJson := credentialprovider.DockerConfigJson{ - Auths: map[string]credentialprovider.DockerConfigEntry{server: dockercfgAuth}, + dockerCfgJson := DockerConfigJson{ + Auths: map[string]DockerConfigEntry{server: dockercfgAuth}, } return json.Marshal(dockerCfgJson) } + +// DockerConfigJson represents a local docker auth config file +// for pulling images. +type DockerConfigJson struct { + Auths DockerConfig `json:"auths"` + // +optional + HttpHeaders map[string]string `json:"HttpHeaders,omitempty"` +} + +// DockerConfig represents the config file used by the docker CLI. +// This config that represents the credentials that should be used +// when pulling images from specific image repositories. +type DockerConfig map[string]DockerConfigEntry + +type DockerConfigEntry struct { + Username string + Password string + Email string +} diff --git a/pkg/kubectl/generate/versioned/secret_for_docker_registry_test.go b/pkg/kubectl/generate/versioned/secret_for_docker_registry_test.go index 26543ae50a..3cb73f68f4 100644 --- a/pkg/kubectl/generate/versioned/secret_for_docker_registry_test.go +++ b/pkg/kubectl/generate/versioned/secret_for_docker_registry_test.go @@ -73,7 +73,7 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) { }, expected: &v1.Secret{ ObjectMeta: metav1.ObjectMeta{ - Name: "foo-548cm7fgdh", + Name: "foo-7566tc6mgc", }, Data: map[string][]byte{ v1.DockerConfigJsonKey: secretData,