43 lines
1 KiB
Go
43 lines
1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/urfave/cli"
|
||
|
"golang.org/x/net/context"
|
||
|
pb "k8s.io/kubernetes/pkg/kubelet/api/v1alpha1/runtime"
|
||
|
)
|
||
|
|
||
|
var imageCommand = cli.Command{
|
||
|
Name: "image",
|
||
|
Subcommands: []cli.Command{
|
||
|
pullImageCommand,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
var pullImageCommand = cli.Command{
|
||
|
Name: "pull",
|
||
|
Usage: "pull an image",
|
||
|
Action: func(context *cli.Context) error {
|
||
|
// Set up a connection to the server.
|
||
|
conn, err := getClientConnection(context)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("failed to connect: %v", err)
|
||
|
}
|
||
|
defer conn.Close()
|
||
|
client := pb.NewImageServiceClient(conn)
|
||
|
|
||
|
_, err = PullImage(client, context.Args().Get(0))
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("pulling image failed: %v", err)
|
||
|
}
|
||
|
return nil
|
||
|
},
|
||
|
}
|
||
|
|
||
|
// PullImage sends a PullImageRequest to the server, and parses
|
||
|
// the returned ContainerStatusResponse.
|
||
|
func PullImage(client pb.ImageServiceClient, image string) (*pb.PullImageResponse, error) {
|
||
|
return client.PullImage(context.Background(), &pb.PullImageRequest{Image: &pb.ImageSpec{Image: &image}})
|
||
|
}
|