func ExpectNoErrorWithOffset(offset int, err error, explain ...interface{}) {
	if err != nil {
		e2elog.Logf("Unexpected error occurred: %v", err)
	}
	gomega.ExpectWithOffset(1+offset, err).NotTo(gomega.HaveOccurred(), explain...)
}
ExpectNoErrorWithOffset checks if "err" is set, and if so, fails assertion while logging the error at "offset" levels above its caller
(for example, for call chain f -> g -> ExpectNoErrorWithOffset(1, ...) error would be logged for "f").
package framework
import (
	"context"
	"fmt"
	"math/rand"
	"sort"
	"strconv"
	"time"
	"github.com/onsi/ginkgo"
	"github.com/onsi/gomega"
	v1 "k8s.io/api/core/v1"
	apierrs "k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/util/uuid"
	"k8s.io/apimachinery/pkg/util/wait"
	clientset "k8s.io/client-go/kubernetes"
	restclient "k8s.io/client-go/rest"
	"k8s.io/client-go/tools/clientcmd"
	clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
	e2elog "sigs.k8s.io/cluster-api-provider-nested/virtualcluster/test/e2e/framework/log"
	e2epod "sigs.k8s.io/cluster-api-provider-nested/virtualcluster/test/e2e/framework/pod"
)
const (
	Poll = 2 * time.Second
)
func RandomSuffix() string {
	return strconv.Itoa(rand.Intn(10000))
}
func ExpectNoError(err error, explain ...interface{}) {
	ExpectNoErrorWithOffset(1, err, explain...)
}