fix: hide progress indicator if asking for creds (#458)

* fix: hide progress indicator if asking for creds

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix: NPE in integration test

Signed-off-by: Matej Vasek <mvasek@redhat.com>
This commit is contained in:
Matej Vasek 2021-08-05 19:41:52 +02:00 committed by GitHub
parent 6fd42a421e
commit 79e2234cbc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 9 deletions

View File

@ -163,7 +163,7 @@ func New(options ...Option) *Client {
remover: &noopRemover{output: os.Stdout},
lister: &noopLister{output: os.Stdout},
dnsProvider: &noopDNSProvider{output: os.Stdout},
progressListener: &noopProgressListener{},
progressListener: &NoopProgressListener{},
emitter: &noopEmitter{},
}
@ -480,7 +480,6 @@ func (c *Client) Deploy(ctx context.Context, path string) (err error) {
}
// Push the image for the named service to the configured registry
c.progressListener.Increment("Pushing function image to the registry")
imageDigest, err := c.pusher.Push(ctx, f)
if err != nil {
return
@ -644,13 +643,13 @@ type noopDNSProvider struct{ output io.Writer }
func (n *noopDNSProvider) Provide(_ Function) error { return nil }
type noopProgressListener struct{}
type NoopProgressListener struct{}
func (p *noopProgressListener) SetTotal(i int) {}
func (p *noopProgressListener) Increment(m string) {}
func (p *noopProgressListener) Complete(m string) {}
func (p *noopProgressListener) Stopping() {}
func (p *noopProgressListener) Done() {}
func (p *NoopProgressListener) SetTotal(i int) {}
func (p *NoopProgressListener) Increment(m string) {}
func (p *NoopProgressListener) Complete(m string) {}
func (p *NoopProgressListener) Stopping() {}
func (p *NoopProgressListener) Done() {}
type noopEmitter struct{}

View File

@ -29,7 +29,8 @@ func newDeployClient(cfg deployConfig) (*fn.Client, error) {
builder := buildpacks.NewBuilder()
pusher, err := docker.NewPusher(docker.WithCredentialsProvider(credentialsProvider))
pusher, err := docker.NewPusher(docker.WithCredentialsProvider(credentialsProvider),
docker.WithProgressListener(listener))
if err != nil {
return nil, err
}

View File

@ -32,6 +32,8 @@ type Pusher struct {
// Verbose logging.
Verbose bool
credentialsProvider CredentialsProvider
progressListener fn.ProgressListener
}
func WithCredentialsProvider(cp CredentialsProvider) Opt {
@ -41,6 +43,13 @@ func WithCredentialsProvider(cp CredentialsProvider) Opt {
}
}
func WithProgressListener(pl fn.ProgressListener) Opt {
return func (p *Pusher) error {
p.progressListener = pl
return nil
}
}
func EmptyCredentialsProvider(ctx context.Context, registry string) (Credentials, error) {
return Credentials{}, nil
}
@ -50,6 +59,7 @@ func NewPusher(opts ...Opt) (*Pusher, error) {
result := &Pusher{
Verbose: false,
credentialsProvider: EmptyCredentialsProvider,
progressListener: &fn.NoopProgressListener{},
}
for _, opt := range opts {
err := opt(result)
@ -83,10 +93,12 @@ func (n *Pusher) Push(ctx context.Context, f fn.Function) (digest string, err er
return "", errors.Wrap(err, "failed to create docker api client")
}
n.progressListener.Stopping()
credentials, err := n.credentialsProvider(ctx, registry)
if err != nil {
return "", errors.Wrap(err, "failed to get credentials")
}
n.progressListener.Increment("Pushing function image to the registry")
b, err := json.Marshal(&credentials)
if err != nil {