func (c *ContainerProxy) createNewAttachClientWithTimeouts(connectTimeout, responseTimeout, responseHeaderTimeout time.Duration) (*client.PortLayer, *httpclient.Transport) { runtime := httptransport.New(c.portlayerAddr, "/", []string{"http"}) transport := &httpclient.Transport{ ConnectTimeout: connectTimeout, ResponseHeaderTimeout: responseHeaderTimeout, RequestTimeout: responseTimeout, } runtime.Transport = transport plClient := client.New(runtime, nil) runtime.Consumers["application/octet-stream"] = httpkit.ByteStreamConsumer() runtime.Producers["application/octet-stream"] = httpkit.ByteStreamProducer() return plClient, transport }
// WriteImage writes the image to given image store func WriteImage(host string, image *ImageWithMeta, data io.ReadCloser) error { defer trace.End(trace.Begin(image.ID)) transport := httptransport.New(host, "/", []string{"http"}) client := apiclient.New(transport, nil) transport.Consumers["application/json"] = httpkit.JSONConsumer() transport.Producers["application/json"] = httpkit.JSONProducer() transport.Consumers["application/octet-stream"] = httpkit.ByteStreamConsumer() transport.Producers["application/octet-stream"] = httpkit.ByteStreamProducer() key := new(string) blob := new(string) *key = metadata.MetaDataKey *blob = image.Meta r, err := client.Storage.WriteImage( storage.NewWriteImageParamsWithContext(ctx). WithImageID(image.ID). WithParentID(*image.Parent). WithStoreName(image.Store). WithMetadatakey(key). WithMetadataval(blob). WithImageFile(data). WithSum(image.Layer.BlobSum), ) if err != nil { log.Debugf("Creating an image failed: %s", err) return err } log.Printf("Created an image %#v", r.Payload) return nil }