mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-28 20:06:19 -04:00
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
|
package testutils
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"os"
|
||
|
|
||
|
"github.com/docker/docker/api/types"
|
||
|
"github.com/docker/docker/client"
|
||
|
"github.com/docker/docker/pkg/jsonmessage"
|
||
|
"github.com/docker/docker/pkg/term"
|
||
|
)
|
||
|
|
||
|
// RegistryHelper implements methods to manipulate docker registry from test cases
|
||
|
type RegistryHelper struct {
|
||
|
dcli *client.Client
|
||
|
auth string
|
||
|
addr string
|
||
|
}
|
||
|
|
||
|
// NewRegistryHelper returns RegistryHelper
|
||
|
func NewRegistryHelper(dcli *client.Client, username, password, addr string) (*RegistryHelper, error) {
|
||
|
auth, err := constructRegistryAuth(username, password)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return &RegistryHelper{dcli: dcli, auth: auth, addr: addr}, nil
|
||
|
}
|
||
|
|
||
|
// RefillRegistry adds images to a registry.
|
||
|
func (r *RegistryHelper) RefillRegistry(image string) error {
|
||
|
if err := pullDockerImage(r.dcli, image); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
if err := r.dcli.ImageTag(context.Background(), image, r.addr+"/"+image); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
resp, err := r.dcli.ImagePush(context.Background(), r.addr+"/"+image, types.ImagePushOptions{
|
||
|
RegistryAuth: r.auth,
|
||
|
})
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer resp.Close()
|
||
|
|
||
|
fd, isTerm := term.GetFdInfo(os.Stdout)
|
||
|
|
||
|
return jsonmessage.DisplayJSONMessagesStream(resp, os.Stdout, fd, isTerm, nil)
|
||
|
}
|