mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	This moves the types for the `engine-api` repo to the existing types package. Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package daemon
 | 
						|
 | 
						|
import (
 | 
						|
	"io"
 | 
						|
 | 
						|
	"github.com/docker/docker/api/types"
 | 
						|
	"github.com/docker/docker/distribution"
 | 
						|
	"github.com/docker/docker/pkg/progress"
 | 
						|
	"github.com/docker/docker/reference"
 | 
						|
	"golang.org/x/net/context"
 | 
						|
)
 | 
						|
 | 
						|
// PushImage initiates a push operation on the repository named localName.
 | 
						|
func (daemon *Daemon) PushImage(ctx context.Context, image, tag string, metaHeaders map[string][]string, authConfig *types.AuthConfig, outStream io.Writer) error {
 | 
						|
	ref, err := reference.ParseNamed(image)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	if tag != "" {
 | 
						|
		// Push by digest is not supported, so only tags are supported.
 | 
						|
		ref, err = reference.WithTag(ref, tag)
 | 
						|
		if err != nil {
 | 
						|
			return err
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// Include a buffer so that slow client connections don't affect
 | 
						|
	// transfer performance.
 | 
						|
	progressChan := make(chan progress.Progress, 100)
 | 
						|
 | 
						|
	writesDone := make(chan struct{})
 | 
						|
 | 
						|
	ctx, cancelFunc := context.WithCancel(ctx)
 | 
						|
 | 
						|
	go func() {
 | 
						|
		writeDistributionProgress(cancelFunc, outStream, progressChan)
 | 
						|
		close(writesDone)
 | 
						|
	}()
 | 
						|
 | 
						|
	imagePushConfig := &distribution.ImagePushConfig{
 | 
						|
		MetaHeaders:      metaHeaders,
 | 
						|
		AuthConfig:       authConfig,
 | 
						|
		ProgressOutput:   progress.ChanOutput(progressChan),
 | 
						|
		RegistryService:  daemon.RegistryService,
 | 
						|
		ImageEventLogger: daemon.LogImageEvent,
 | 
						|
		MetadataStore:    daemon.distributionMetadataStore,
 | 
						|
		LayerStore:       daemon.layerStore,
 | 
						|
		ImageStore:       daemon.imageStore,
 | 
						|
		ReferenceStore:   daemon.referenceStore,
 | 
						|
		TrustKey:         daemon.trustKey,
 | 
						|
		UploadManager:    daemon.uploadManager,
 | 
						|
	}
 | 
						|
 | 
						|
	err = distribution.Push(ctx, ref, imagePushConfig)
 | 
						|
	close(progressChan)
 | 
						|
	<-writesDone
 | 
						|
	return err
 | 
						|
}
 |