mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-26 19:35:10 +00:00
add e2e test for image pull serialize and parallel
- wait for pod pulled: running/failed(no restart)
This commit is contained in:
@@ -110,7 +110,9 @@ func getNodeProblemDetectorImage() string {
|
||||
// puller represents a generic image puller
|
||||
type puller interface {
|
||||
// Pull pulls an image by name
|
||||
Pull(image string) ([]byte, error)
|
||||
Pull(ctx context.Context, image string) ([]byte, error)
|
||||
// Remove removes an image by name
|
||||
Remove(ctx context.Context, image string) error
|
||||
// Name returns the name of the specific puller implementation
|
||||
Name() string
|
||||
}
|
||||
@@ -123,15 +125,19 @@ func (rp *remotePuller) Name() string {
|
||||
return "CRI"
|
||||
}
|
||||
|
||||
func (rp *remotePuller) Pull(image string) ([]byte, error) {
|
||||
resp, err := rp.imageService.ImageStatus(context.Background(), &runtimeapi.ImageSpec{Image: image}, false)
|
||||
func (rp *remotePuller) Pull(ctx context.Context, image string) ([]byte, error) {
|
||||
resp, err := rp.imageService.ImageStatus(ctx, &runtimeapi.ImageSpec{Image: image}, false)
|
||||
if err == nil && resp.GetImage() != nil {
|
||||
return nil, nil
|
||||
}
|
||||
_, err = rp.imageService.PullImage(context.Background(), &runtimeapi.ImageSpec{Image: image}, nil, nil)
|
||||
_, err = rp.imageService.PullImage(ctx, &runtimeapi.ImageSpec{Image: image}, nil, nil)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (rp *remotePuller) Remove(ctx context.Context, image string) error {
|
||||
return rp.imageService.RemoveImage(ctx, &runtimeapi.ImageSpec{Image: image})
|
||||
}
|
||||
|
||||
func getPuller() (puller, error) {
|
||||
_, is, err := getCRIClient()
|
||||
if err != nil {
|
||||
@@ -143,7 +149,7 @@ func getPuller() (puller, error) {
|
||||
}
|
||||
|
||||
// PrePullAllImages pre-fetches all images tests depend on so that we don't fail in an actual test.
|
||||
func PrePullAllImages() error {
|
||||
func PrePullAllImages(ctx context.Context) error {
|
||||
puller, err := getPuller()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -191,7 +197,7 @@ func PrePullAllImages() error {
|
||||
if retryCount > 0 {
|
||||
time.Sleep(imagePullRetryDelay)
|
||||
}
|
||||
if output, pullErr = puller.Pull(images[i]); pullErr == nil {
|
||||
if output, pullErr = puller.Pull(ctx, images[i]); pullErr == nil {
|
||||
break
|
||||
}
|
||||
klog.Warningf("Failed to pull %s as user %q, retrying in %s (%d of %d): %v",
|
||||
@@ -211,6 +217,14 @@ func PrePullAllImages() error {
|
||||
return utilerrors.NewAggregate(pullErrs)
|
||||
}
|
||||
|
||||
func RemoveImage(ctx context.Context, image string) error {
|
||||
puller, err := getPuller()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return puller.Remove(ctx, image)
|
||||
}
|
||||
|
||||
func getContainerImageFromE2ETestDaemonset(dsYamlPath string) (string, error) {
|
||||
data, err := e2etestfiles.Read(dsYamlPath)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user