mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-14 14:23:37 +00:00
rkt: add image ref to ImageService interfaces
This commit is contained in:
parent
9d52b761cc
commit
394aad9d6b
@ -45,18 +45,18 @@ import (
|
||||
//
|
||||
// http://issue.k8s.io/7203
|
||||
//
|
||||
func (r *Runtime) PullImage(image kubecontainer.ImageSpec, pullSecrets []v1.Secret) error {
|
||||
func (r *Runtime) PullImage(image kubecontainer.ImageSpec, pullSecrets []v1.Secret) (string, error) {
|
||||
img := image.Image
|
||||
// TODO(yifan): The credential operation is a copy from dockertools package,
|
||||
// Need to resolve the code duplication.
|
||||
repoToPull, _, _, err := parsers.ParseImageName(img)
|
||||
if err != nil {
|
||||
return err
|
||||
return "", err
|
||||
}
|
||||
|
||||
keyring, err := credentialprovider.MakeDockerKeyring(pullSecrets, r.dockerKeyring)
|
||||
if err != nil {
|
||||
return err
|
||||
return "", err
|
||||
}
|
||||
|
||||
creds, ok := keyring.Lookup(repoToPull)
|
||||
@ -66,7 +66,7 @@ func (r *Runtime) PullImage(image kubecontainer.ImageSpec, pullSecrets []v1.Secr
|
||||
|
||||
userConfigDir, err := ioutil.TempDir("", "rktnetes-user-config-dir-")
|
||||
if err != nil {
|
||||
return fmt.Errorf("rkt: Cannot create a temporary user-config directory: %v", err)
|
||||
return "", fmt.Errorf("rkt: Cannot create a temporary user-config directory: %v", err)
|
||||
}
|
||||
defer os.RemoveAll(userConfigDir)
|
||||
|
||||
@ -74,7 +74,7 @@ func (r *Runtime) PullImage(image kubecontainer.ImageSpec, pullSecrets []v1.Secr
|
||||
config.UserConfigDir = userConfigDir
|
||||
|
||||
if err := r.writeDockerAuthConfig(img, creds, userConfigDir); err != nil {
|
||||
return err
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Today, `--no-store` will fetch the remote image regardless of whether the content of the image
|
||||
@ -82,14 +82,20 @@ func (r *Runtime) PullImage(image kubecontainer.ImageSpec, pullSecrets []v1.Secr
|
||||
// the image pull policy is 'always'. The issue is tracked in https://github.com/coreos/rkt/issues/2937.
|
||||
if _, err := r.cli.RunCommand(&config, "fetch", "--no-store", dockerPrefix+img); err != nil {
|
||||
glog.Errorf("Failed to fetch: %v", err)
|
||||
return err
|
||||
return "", err
|
||||
}
|
||||
return nil
|
||||
return r.getImageID(img)
|
||||
}
|
||||
|
||||
func (r *Runtime) IsImagePresent(image kubecontainer.ImageSpec) (bool, error) {
|
||||
func (r *Runtime) IsImagePresent(image kubecontainer.ImageSpec) (string, error) {
|
||||
images, err := r.listImages(image.Image, false)
|
||||
return len(images) > 0, err
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(images) == 0 {
|
||||
return "", nil
|
||||
}
|
||||
return images[0].Id, nil
|
||||
}
|
||||
|
||||
// ListImages lists all the available appc images on the machine by invoking 'rkt image list'.
|
||||
|
@ -782,8 +782,9 @@ func (r *Runtime) newAppcRuntimeApp(pod *v1.Pod, podIP string, c v1.Container, r
|
||||
if requiresPrivileged && !securitycontext.HasPrivilegedRequest(&c) {
|
||||
return fmt.Errorf("cannot make %q: running a custom stage1 requires a privileged security context", format.Pod(pod))
|
||||
}
|
||||
if err, _ := r.imagePuller.EnsureImageExists(pod, &c, pullSecrets); err != nil {
|
||||
return nil
|
||||
imageRef, _, err := r.imagePuller.EnsureImageExists(pod, &c, pullSecrets)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
imgManifest, err := r.getImageManifest(c.Image)
|
||||
if err != nil {
|
||||
@ -794,11 +795,7 @@ func (r *Runtime) newAppcRuntimeApp(pod *v1.Pod, podIP string, c v1.Container, r
|
||||
imgManifest.App = new(appctypes.App)
|
||||
}
|
||||
|
||||
imageID, err := r.getImageID(c.Image)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hash, err := appctypes.NewHash(imageID)
|
||||
hash, err := appctypes.NewHash(imageRef)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user