func verifyVMCreation()

in integration_test/gce-testing-internal/gce/gce_testing.go [1237:1295]


func verifyVMCreation(ctx context.Context, logger *log.Logger, vm *VM) error {
	if err := waitForStart(ctx, logger, vm); err != nil {
		return err
	}

	if os, err := getOS(ctx, logger, vm); err != nil {
		return err
	} else {
		vm.OS = *os
	}

	if IsSUSEVM(vm) {
		// Set download.max_silent_tries to 5 (by default, it is commented out in
		// the config file). This should help with issues like b/211003972.
		if _, err := RunRemotely(ctx, logger, vm, "sudo sed -i -E 's/.*download.max_silent_tries.*/download.max_silent_tries = 5/g' /etc/zypp/zypp.conf"); err != nil {
			return fmt.Errorf("attemptCreateInstance() failed to configure retries in zypp.conf: %v", err)
		}
	}

	if IsSLESVM(vm) {
		if err := prepareSLES(ctx, logger, vm); err != nil {
			return fmt.Errorf("%s: %v", prepareSLESMessage, err)
		}
	}

	if IsSUSEVM(vm) {
		// Set ZYPP_LOCK_TIMEOUT so tests that use zypper don't randomly fail
		// because some background process happened to be using zypper at the same time.
		if _, err := RunRemotely(ctx, logger, vm, `echo 'ZYPP_LOCK_TIMEOUT=300' | sudo tee -a /etc/environment`); err != nil {
			return err
		}
	}

	// Removing flaky rhel-7 repositories due to b/265341502
	if isRHEL7SAPHA(vm.ImageSpec) {
		if _, err := RunRemotely(ctx,
			logger, vm, `sudo yum -y --disablerepo=rhui-rhel*-7-* install yum-utils && sudo yum-config-manager --disable "rhui-rhel*-7-*"`); err != nil {
			return fmt.Errorf("disabling flaky repos failed: %w", err)
		}
	}

	// Pre-installed jupyter services on DLVM images cause port conflicts for third-party apps.
	// See b/347107292.
	if IsDLVMImage(vm.ImageSpec) {
		if _, err := RunRemotely(ctx, logger, vm, "sudo service jupyter stop || true"); err != nil {
			return fmt.Errorf("attemptCreateInstance() failed to stop pre-installed jupyter service: %v", err)
		}
	}

	// TODO(b/369656678): We see frequent errors like "Waiting for cache lock:
	//   Could not get lock /var/lib/dpkg/lock-frontend", so add a generous timeout.
	if IsDebianBased(vm.ImageSpec) {
		if _, err := RunRemotely(ctx, logger, vm, "echo 'DPkg::Lock::Timeout=300' | sudo tee /etc/dpkg/dpkg.cfg.d/cache-lock-timeout.cfg"); err != nil {
			return fmt.Errorf("setting increased dpkg cache lock timeout failed: %w", err)
		}
	}

	return nil
}