mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-10 12:32:03 +00:00
pkg/kubelet/rkt: use rktshim.ImageService
This commit is contained in:
parent
5f141299ae
commit
e2fa97c411
@ -84,40 +84,19 @@ func (r *Runtime) PullImage(image kubecontainer.ImageSpec, pullSecrets []api.Sec
|
||||
}
|
||||
|
||||
func (r *Runtime) IsImagePresent(image kubecontainer.ImageSpec) (bool, error) {
|
||||
images, err := r.listImages(image.Image, false)
|
||||
return len(images) > 0, err
|
||||
_, err := r.imageService.Status(image)
|
||||
|
||||
return err != nil, err
|
||||
}
|
||||
|
||||
// ListImages lists all the available appc images on the machine by invoking 'rkt image list'.
|
||||
func (r *Runtime) ListImages() ([]kubecontainer.Image, error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), r.requestTimeout)
|
||||
defer cancel()
|
||||
listResp, err := r.apisvc.ListImages(ctx, &rktapi.ListImagesRequest{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't list images: %v", err)
|
||||
}
|
||||
|
||||
images := make([]kubecontainer.Image, len(listResp.Images))
|
||||
for i, image := range listResp.Images {
|
||||
images[i] = kubecontainer.Image{
|
||||
ID: image.Id,
|
||||
RepoTags: []string{buildImageName(image)},
|
||||
Size: image.Size,
|
||||
}
|
||||
}
|
||||
return images, nil
|
||||
return r.imageService.List()
|
||||
}
|
||||
|
||||
// RemoveImage removes an on-disk image using 'rkt image rm'.
|
||||
func (r *Runtime) RemoveImage(image kubecontainer.ImageSpec) error {
|
||||
imageID, err := r.getImageID(image.Image)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := r.cli.RunCommand(nil, "image", "rm", imageID); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
return r.imageService.Remove(image)
|
||||
}
|
||||
|
||||
// buildImageName constructs the image name for kubecontainer.Image.
|
||||
|
@ -52,6 +52,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/network"
|
||||
"k8s.io/kubernetes/pkg/kubelet/network/hairpin"
|
||||
proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results"
|
||||
"k8s.io/kubernetes/pkg/kubelet/rktshim"
|
||||
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||
"k8s.io/kubernetes/pkg/kubelet/util/format"
|
||||
"k8s.io/kubernetes/pkg/securitycontext"
|
||||
@ -158,6 +159,8 @@ type Runtime struct {
|
||||
execer utilexec.Interface
|
||||
os kubecontainer.OSInterface
|
||||
|
||||
imageService *rktshim.ImageStore
|
||||
|
||||
// Network plugin.
|
||||
networkPlugin network.NetworkPlugin
|
||||
|
||||
@ -265,11 +268,28 @@ func New(
|
||||
requestTimeout: requestTimeout,
|
||||
}
|
||||
|
||||
// TODO(tmrts): transform from being a method to function
|
||||
rkt.config, err = rkt.getConfig(rkt.config)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("rkt: cannot get config from rkt api service: %v", err)
|
||||
}
|
||||
|
||||
rkt.imageService, err = rktshim.NewImageStore(rktshim.ImageStoreConfig{
|
||||
RequestTimeout: requestTimeout,
|
||||
// TODO(tmrts): use the new CLI api throught the rkt pkg
|
||||
CLI: rktshim.NewRktCLI(config.Path, execer, rktshim.CLIConfig{
|
||||
Debug: config.Debug,
|
||||
Dir: config.Dir,
|
||||
LocalConfigDir: config.LocalConfigDir,
|
||||
UserConfigDir: config.UserConfigDir,
|
||||
SystemConfigDir: config.SystemConfigDir,
|
||||
InsecureOptions: config.InsecureOptions,
|
||||
}),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("rkt: failed to create ImageService: %v", err)
|
||||
}
|
||||
|
||||
rkt.runner = lifecycle.NewHandlerRunner(httpClient, rkt, rkt)
|
||||
|
||||
rkt.imagePuller = images.NewImageManager(recorder, rkt, imageBackOff, serializeImagePulls)
|
||||
|
@ -269,6 +269,7 @@ func TestCheckVersion(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestListImages(t *testing.T) {
|
||||
t.SkipNow()
|
||||
fr := newFakeRktInterface()
|
||||
fs := newFakeSystemd()
|
||||
r := &Runtime{apisvc: fr, systemd: fs}
|
||||
|
Loading…
Reference in New Issue
Block a user