From 5f1128b5f7982f46b54bf695a820e8d229f28a15 Mon Sep 17 00:00:00 2001 From: Josh Dolitsky Date: Fri, 10 May 2019 10:44:46 -0500 Subject: [PATCH] pass debug option to registry client Signed-off-by: Josh Dolitsky --- Gopkg.lock | 56 ++++++------------------------------- Gopkg.toml | 4 +++ cmd/helm/root.go | 1 + pkg/registry/client.go | 23 ++++++++++++--- pkg/registry/client_test.go | 3 +- 5 files changed, 35 insertions(+), 52 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 1467695ba..de97fdbdf 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -242,12 +242,13 @@ version = "v1.1.1" [[projects]] - digest = "1:82158435e282da9b23bb1188487fe1c68b17a54ed9dcd557ab6204782ad3ff92" + digest = "1:32b33e550e9fba29158153b1881dd46b86593e045564746dcb56557b9061668f" name = "github.com/deislabs/oras" packages = [ "pkg/auth", "pkg/auth/docker", "pkg/content", + "pkg/context", "pkg/oras", ] pruneopts = "UT" @@ -891,12 +892,12 @@ version = "v1.5.2" [[projects]] - digest = "1:69b1cc331fca23d702bd72f860c6a647afd0aa9fcbc1d0659b1365e26546dd70" + digest = "1:fd61cf4ae1953d55df708acb6b91492d538f49c305b364a014049914495db426" name = "github.com/sirupsen/logrus" packages = ["."] pruneopts = "UT" - revision = "bcd833dfe83d3cebad139e4a29ed79cb2318bf95" - version = "v1.2.0" + revision = "8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f" + version = "v1.4.1" [[projects]] digest = "1:e01b05ba901239c783dfe56450bcde607fc858908529868259c9a8765dc176d0" @@ -1404,90 +1405,51 @@ revision = "44a48934c135b31e4f1c0d12e91d384e1cb2304c" [[projects]] - digest = "1:fe724e5bfc9e388624ccf76b77051c0c7da8695a264b3ab4103de270a8965b18" + digest = "1:1ac7533fe6c10c68cb17d26bd44975d582cbe4dee89fd0e095d3133c7680416b" name = "k8s.io/client-go" packages = [ "discovery", "discovery/cached/disk", - "discovery/cached/memory", - "discovery/fake", "dynamic", "dynamic/fake", "kubernetes", - "kubernetes/fake", "kubernetes/scheme", "kubernetes/typed/admissionregistration/v1beta1", - "kubernetes/typed/admissionregistration/v1beta1/fake", "kubernetes/typed/apps/v1", - "kubernetes/typed/apps/v1/fake", "kubernetes/typed/apps/v1beta1", - "kubernetes/typed/apps/v1beta1/fake", "kubernetes/typed/apps/v1beta2", - "kubernetes/typed/apps/v1beta2/fake", "kubernetes/typed/auditregistration/v1alpha1", - "kubernetes/typed/auditregistration/v1alpha1/fake", "kubernetes/typed/authentication/v1", - "kubernetes/typed/authentication/v1/fake", "kubernetes/typed/authentication/v1beta1", - "kubernetes/typed/authentication/v1beta1/fake", "kubernetes/typed/authorization/v1", - "kubernetes/typed/authorization/v1/fake", "kubernetes/typed/authorization/v1beta1", - "kubernetes/typed/authorization/v1beta1/fake", "kubernetes/typed/autoscaling/v1", - "kubernetes/typed/autoscaling/v1/fake", "kubernetes/typed/autoscaling/v2beta1", - "kubernetes/typed/autoscaling/v2beta1/fake", "kubernetes/typed/autoscaling/v2beta2", - "kubernetes/typed/autoscaling/v2beta2/fake", "kubernetes/typed/batch/v1", - "kubernetes/typed/batch/v1/fake", "kubernetes/typed/batch/v1beta1", - "kubernetes/typed/batch/v1beta1/fake", "kubernetes/typed/batch/v2alpha1", - "kubernetes/typed/batch/v2alpha1/fake", "kubernetes/typed/certificates/v1beta1", - "kubernetes/typed/certificates/v1beta1/fake", "kubernetes/typed/coordination/v1", - "kubernetes/typed/coordination/v1/fake", "kubernetes/typed/coordination/v1beta1", - "kubernetes/typed/coordination/v1beta1/fake", "kubernetes/typed/core/v1", - "kubernetes/typed/core/v1/fake", "kubernetes/typed/events/v1beta1", - "kubernetes/typed/events/v1beta1/fake", "kubernetes/typed/extensions/v1beta1", - "kubernetes/typed/extensions/v1beta1/fake", "kubernetes/typed/networking/v1", - "kubernetes/typed/networking/v1/fake", "kubernetes/typed/networking/v1beta1", - "kubernetes/typed/networking/v1beta1/fake", "kubernetes/typed/node/v1alpha1", - "kubernetes/typed/node/v1alpha1/fake", "kubernetes/typed/node/v1beta1", - "kubernetes/typed/node/v1beta1/fake", "kubernetes/typed/policy/v1beta1", - "kubernetes/typed/policy/v1beta1/fake", "kubernetes/typed/rbac/v1", - "kubernetes/typed/rbac/v1/fake", "kubernetes/typed/rbac/v1alpha1", - "kubernetes/typed/rbac/v1alpha1/fake", "kubernetes/typed/rbac/v1beta1", - "kubernetes/typed/rbac/v1beta1/fake", "kubernetes/typed/scheduling/v1", - "kubernetes/typed/scheduling/v1/fake", "kubernetes/typed/scheduling/v1alpha1", - "kubernetes/typed/scheduling/v1alpha1/fake", "kubernetes/typed/scheduling/v1beta1", - "kubernetes/typed/scheduling/v1beta1/fake", "kubernetes/typed/settings/v1alpha1", - "kubernetes/typed/settings/v1alpha1/fake", "kubernetes/typed/storage/v1", - "kubernetes/typed/storage/v1/fake", "kubernetes/typed/storage/v1alpha1", - "kubernetes/typed/storage/v1alpha1/fake", "kubernetes/typed/storage/v1beta1", - "kubernetes/typed/storage/v1beta1/fake", "pkg/apis/clientauthentication", "pkg/apis/clientauthentication/v1alpha1", "pkg/apis/clientauthentication/v1beta1", @@ -1780,6 +1742,7 @@ "github.com/deislabs/oras/pkg/auth", "github.com/deislabs/oras/pkg/auth/docker", "github.com/deislabs/oras/pkg/content", + "github.com/deislabs/oras/pkg/context", "github.com/deislabs/oras/pkg/oras", "github.com/docker/distribution/configuration", "github.com/docker/distribution/registry", @@ -1796,6 +1759,7 @@ "github.com/opencontainers/go-digest", "github.com/opencontainers/image-spec/specs-go/v1", "github.com/pkg/errors", + "github.com/sirupsen/logrus", "github.com/spf13/cobra", "github.com/spf13/cobra/doc", "github.com/spf13/pflag", @@ -1827,17 +1791,15 @@ "k8s.io/apimachinery/pkg/util/strategicpatch", "k8s.io/apimachinery/pkg/util/validation", "k8s.io/apimachinery/pkg/util/wait", - "k8s.io/apimachinery/pkg/version", "k8s.io/apimachinery/pkg/watch", "k8s.io/cli-runtime/pkg/genericclioptions", "k8s.io/cli-runtime/pkg/resource", "k8s.io/client-go/discovery", - "k8s.io/client-go/discovery/cached/memory", "k8s.io/client-go/kubernetes", - "k8s.io/client-go/kubernetes/fake", "k8s.io/client-go/kubernetes/scheme", "k8s.io/client-go/kubernetes/typed/core/v1", "k8s.io/client-go/plugin/pkg/client/auth", + "k8s.io/client-go/rest", "k8s.io/client-go/rest/fake", "k8s.io/client-go/tools/clientcmd", "k8s.io/client-go/tools/watch", diff --git a/Gopkg.toml b/Gopkg.toml index 94736bf3c..c2e0ae425 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -46,6 +46,10 @@ name = "github.com/deislabs/oras" version = "0.4.0" +[[constraint]] + name = "github.com/sirupsen/logrus" + version = "1.3.0" + [[constraint]] name = "github.com/docker/go-units" version = "~0.3.3" diff --git a/cmd/helm/root.go b/cmd/helm/root.go index f2124aba4..0fa1af8c4 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -81,6 +81,7 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string panic(err) } actionConfig.RegistryClient = registry.NewClient(®istry.ClientOptions{ + Debug: settings.Debug, Out: out, Authorizer: registry.Authorizer{ Client: client, diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 588961d02..7bde355e9 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -22,8 +22,10 @@ import ( "io" orascontent "github.com/deislabs/oras/pkg/content" + orascontext "github.com/deislabs/oras/pkg/context" "github.com/deislabs/oras/pkg/oras" "github.com/gosuri/uitable" + "github.com/sirupsen/logrus" "helm.sh/helm/pkg/chart" ) @@ -35,6 +37,7 @@ const ( type ( // ClientOptions is used to construct a new client ClientOptions struct { + Debug bool Out io.Writer Authorizer Authorizer Resolver Resolver @@ -43,6 +46,7 @@ type ( // Client works with OCI-compliant registries and local Helm chart cache Client struct { + debug bool out io.Writer authorizer Authorizer resolver Resolver @@ -53,6 +57,7 @@ type ( // NewClient returns a new registry client with config func NewClient(options *ClientOptions) *Client { return &Client{ + debug: options.Debug, out: options.Out, resolver: options.Resolver, authorizer: options.Authorizer, @@ -66,7 +71,7 @@ func NewClient(options *ClientOptions) *Client { // Login logs into a registry func (c *Client) Login(hostname string, username string, password string) error { - err := c.authorizer.Login(context.Background(), hostname, username, password) + err := c.authorizer.Login(c.newContext(), hostname, username, password) if err != nil { return err } @@ -76,7 +81,7 @@ func (c *Client) Login(hostname string, username string, password string) error // Logout logs out of a registry func (c *Client) Logout(hostname string) error { - err := c.authorizer.Logout(context.Background(), hostname) + err := c.authorizer.Logout(c.newContext(), hostname) if err != nil { return err } @@ -92,7 +97,7 @@ func (c *Client) PushChart(ref *Reference) error { if err != nil { return err } - _, err = oras.Push(context.Background(), c.resolver, ref.String(), c.cache.store, layers) + _, err = oras.Push(c.newContext(), c.resolver, ref.String(), c.cache.store, layers) if err != nil { return err } @@ -109,7 +114,7 @@ func (c *Client) PushChart(ref *Reference) error { func (c *Client) PullChart(ref *Reference) error { c.setDefaultTag(ref) fmt.Fprintf(c.out, "%s: Pulling from %s\n", ref.Tag, ref.Repo) - _, layers, err := oras.Pull(context.Background(), c.resolver, ref.String(), c.cache.store, oras.WithAllowedMediaTypes(KnownMediaTypes())) + _, layers, err := oras.Pull(c.newContext(), c.resolver, ref.String(), c.cache.store, oras.WithAllowedMediaTypes(KnownMediaTypes())) if err != nil { return err } @@ -184,3 +189,13 @@ func (c *Client) setDefaultTag(ref *Reference) { fmt.Fprintf(c.out, "Using default tag: %s\n", HelmChartDefaultTag) } } + +// disable verbose logging coming from ORAS unless debug is enabled +func (c *Client) newContext() context.Context { + if !c.debug { + return orascontext.Background() + } + ctx := orascontext.WithLoggerFromWriter(context.Background(), c.out) + orascontext.GetLogger(ctx).Logger.SetLevel(logrus.DebugLevel) + return ctx +} diff --git a/pkg/registry/client_test.go b/pkg/registry/client_test.go index 5b2f06eb5..d9f22361f 100644 --- a/pkg/registry/client_test.go +++ b/pkg/registry/client_test.go @@ -71,7 +71,8 @@ func (suite *RegistryClientTestSuite) SetupSuite() { // Init test client suite.RegistryClient = NewClient(&ClientOptions{ - Out: suite.Out, + Debug: false, + Out: suite.Out, Authorizer: Authorizer{ Client: client, },