mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-07-29 19:42:45 +00:00
Change the CreateFileToPod function's OS parameter as the E2E pass-in value.
Fix GetResourceWithLabel's bug: labels were not applied. Add workOS for deployment and pod creationg. Add OS label for select node. Enlarge the context timeout to 10 minutes. 5 min is not enough for Windows. Enlarge the Kibishii test context to 15 minutes for Windows. Signed-off-by: Xun Jiang <xun.jiang@broadcom.com>
This commit is contained in:
@@ -29,6 +29,7 @@ import (
|
||||
|
||||
. "github.com/vmware-tanzu/velero/test"
|
||||
. "github.com/vmware-tanzu/velero/test/e2e/test"
|
||||
"github.com/vmware-tanzu/velero/test/util/common"
|
||||
. "github.com/vmware-tanzu/velero/test/util/common"
|
||||
. "github.com/vmware-tanzu/velero/test/util/k8s"
|
||||
)
|
||||
@@ -77,11 +78,6 @@ func (v *BackupVolumeInfo) Init() error {
|
||||
}
|
||||
|
||||
func (v *BackupVolumeInfo) Start() error {
|
||||
if v.VeleroCfg.CloudProvider == Vsphere && (!strings.Contains(v.CaseBaseName, "fs-upload") && !strings.Contains(v.CaseBaseName, "skipped")) {
|
||||
fmt.Printf("Skip snapshot case %s for vsphere environment.\n", v.CaseBaseName)
|
||||
Skip("Skip snapshot case due to vsphere environment doesn't cover the CSI test, and it doesn't have a Velero native snapshot plugin.")
|
||||
}
|
||||
|
||||
if strings.Contains(v.VeleroCfg.Features, FeatureCSI) {
|
||||
if strings.Contains(v.CaseBaseName, "native-snapshot") {
|
||||
fmt.Printf("Skip native snapshot case %s when the CSI feature is enabled.\n", v.CaseBaseName)
|
||||
@@ -100,6 +96,12 @@ func (v *BackupVolumeInfo) CreateResources() error {
|
||||
labels := map[string]string{
|
||||
"volume-info": "true",
|
||||
}
|
||||
|
||||
if v.VeleroCfg.WorkerOS == common.WorkerOSWindows {
|
||||
labels["pod-security.kubernetes.io/enforce"] = "privileged"
|
||||
labels["pod-security.kubernetes.io/enforce-version"] = "latest"
|
||||
}
|
||||
|
||||
for nsNum := 0; nsNum < v.NamespacesTotal; nsNum++ {
|
||||
fmt.Printf("Creating namespaces ...\n")
|
||||
createNSName := v.CaseBaseName
|
||||
@@ -121,7 +123,14 @@ func (v *BackupVolumeInfo) CreateResources() error {
|
||||
volumeName := fmt.Sprintf("volume-info-pv-%d", i)
|
||||
vols = append(vols, CreateVolumes(pvc.Name, []string{volumeName})...)
|
||||
}
|
||||
deployment := NewDeployment(v.CaseBaseName, createNSName, 1, labels, v.VeleroCfg.ImageRegistryProxy).WithVolume(vols).Result()
|
||||
deployment := NewDeployment(
|
||||
v.CaseBaseName,
|
||||
createNSName,
|
||||
1,
|
||||
labels,
|
||||
v.VeleroCfg.ImageRegistryProxy,
|
||||
v.VeleroCfg.WorkerOS,
|
||||
).WithVolume(vols).Result()
|
||||
deployment, err := CreateDeployment(v.Client.ClientGo, createNSName, deployment)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, fmt.Sprintf("failed to delete the namespace %q", createNSName))
|
||||
@@ -139,14 +148,13 @@ func (v *BackupVolumeInfo) CreateResources() error {
|
||||
// So populate data only to some of pods, leave other pods empty to verify empty PV datamover
|
||||
if i%2 == 0 {
|
||||
Expect(CreateFileToPod(
|
||||
v.Ctx,
|
||||
createNSName,
|
||||
pod.Name,
|
||||
DefaultContainerName,
|
||||
vols[i].Name,
|
||||
fmt.Sprintf("file-%s", pod.Name),
|
||||
CreateFileContent(createNSName, pod.Name, vols[i].Name),
|
||||
WorkerOSLinux,
|
||||
v.VeleroCfg.WorkerOS,
|
||||
)).To(Succeed())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
|
||||
. "github.com/vmware-tanzu/velero/test"
|
||||
. "github.com/vmware-tanzu/velero/test/e2e/test"
|
||||
"github.com/vmware-tanzu/velero/test/util/common"
|
||||
. "github.com/vmware-tanzu/velero/test/util/k8s"
|
||||
. "github.com/vmware-tanzu/velero/test/util/velero"
|
||||
)
|
||||
@@ -64,19 +65,36 @@ func (p *PVCSelectedNodeChanging) Init() error {
|
||||
|
||||
func (p *PVCSelectedNodeChanging) CreateResources() error {
|
||||
By(fmt.Sprintf("Create namespace %s", p.namespace), func() {
|
||||
Expect(CreateNamespace(p.Ctx, p.Client, p.namespace)).To(Succeed(),
|
||||
labels := make(map[string]string)
|
||||
if p.VeleroCfg.WorkerOS == common.WorkerOSWindows {
|
||||
labels = map[string]string{
|
||||
"pod-security.kubernetes.io/enforce": "privileged",
|
||||
"pod-security.kubernetes.io/enforce-version": "latest",
|
||||
}
|
||||
}
|
||||
Expect(CreateNamespaceWithLabel(p.Ctx, p.Client, p.namespace, labels)).To(Succeed(),
|
||||
fmt.Sprintf("Failed to create namespace %s", p.namespace))
|
||||
})
|
||||
|
||||
By(fmt.Sprintf("Create pod %s in namespace %s", p.podName, p.namespace), func() {
|
||||
nodeNameList, err := GetWorkerNodes(p.Ctx)
|
||||
nodeNameList, err := GetWorkerNodes(p.Ctx, p.VeleroCfg.WorkerOS)
|
||||
Expect(err).To(Succeed())
|
||||
for _, nodeName := range nodeNameList {
|
||||
p.oldNodeName = nodeName
|
||||
fmt.Printf("Create PVC on node %s\n", p.oldNodeName)
|
||||
pvcAnn := map[string]string{p.ann: nodeName}
|
||||
_, err := CreatePod(p.Client, p.namespace, p.podName, StorageClassName, p.pvcName, []string{p.volume},
|
||||
pvcAnn, nil, p.VeleroCfg.ImageRegistryProxy)
|
||||
_, err := CreatePod(
|
||||
p.Client,
|
||||
p.namespace,
|
||||
p.podName,
|
||||
StorageClassName,
|
||||
p.pvcName,
|
||||
[]string{p.volume},
|
||||
pvcAnn,
|
||||
nil,
|
||||
p.VeleroCfg.ImageRegistryProxy,
|
||||
p.VeleroCfg.WorkerOS,
|
||||
)
|
||||
Expect(err).To(Succeed())
|
||||
err = WaitForPods(p.Ctx, p.Client, p.namespace, []string{p.podName})
|
||||
Expect(err).To(Succeed())
|
||||
@@ -85,8 +103,9 @@ func (p *PVCSelectedNodeChanging) CreateResources() error {
|
||||
})
|
||||
|
||||
By("Prepare ConfigMap data", func() {
|
||||
nodeNameList, err := GetWorkerNodes(p.Ctx)
|
||||
nodeNameList, err := GetWorkerNodes(p.Ctx, p.VeleroCfg.WorkerOS)
|
||||
Expect(err).To(Succeed())
|
||||
// Expect Windows node or Linux node number are no less than 2.
|
||||
Expect(len(nodeNameList)).To(BeNumerically(">=", 2))
|
||||
for _, nodeName := range nodeNameList {
|
||||
if nodeName != p.oldNodeName {
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
velerov1api "github.com/vmware-tanzu/velero/pkg/apis/velero/v1"
|
||||
. "github.com/vmware-tanzu/velero/test"
|
||||
. "github.com/vmware-tanzu/velero/test/e2e/test"
|
||||
"github.com/vmware-tanzu/velero/test/util/common"
|
||||
. "github.com/vmware-tanzu/velero/test/util/k8s"
|
||||
. "github.com/vmware-tanzu/velero/test/util/velero"
|
||||
)
|
||||
@@ -73,7 +74,14 @@ func (s *StorageClasssChanging) CreateResources() error {
|
||||
}
|
||||
|
||||
By(fmt.Sprintf("Create namespace %s", s.namespace), func() {
|
||||
Expect(CreateNamespace(s.Ctx, s.Client, s.namespace)).To(Succeed(),
|
||||
nsLabels := make(map[string]string)
|
||||
if s.VeleroCfg.WorkerOS == common.WorkerOSWindows {
|
||||
nsLabels = map[string]string{
|
||||
"pod-security.kubernetes.io/enforce": "privileged",
|
||||
"pod-security.kubernetes.io/enforce-version": "latest",
|
||||
}
|
||||
}
|
||||
Expect(CreateNamespaceWithLabel(s.Ctx, s.Client, s.namespace, nsLabels)).To(Succeed(),
|
||||
fmt.Sprintf("Failed to create namespace %s", s.namespace))
|
||||
})
|
||||
|
||||
@@ -82,7 +90,14 @@ func (s *StorageClasssChanging) CreateResources() error {
|
||||
Expect(err).To(Succeed())
|
||||
vols := CreateVolumes(pvc.Name, []string{s.volume})
|
||||
|
||||
deployment := NewDeployment(s.CaseBaseName, s.namespace, 1, label, s.VeleroCfg.ImageRegistryProxy).WithVolume(vols).Result()
|
||||
deployment := NewDeployment(
|
||||
s.CaseBaseName,
|
||||
s.namespace,
|
||||
1,
|
||||
label,
|
||||
s.VeleroCfg.ImageRegistryProxy,
|
||||
s.VeleroCfg.WorkerOS,
|
||||
).WithVolume(vols).Result()
|
||||
deployment, err = CreateDeployment(s.Client.ClientGo, s.namespace, deployment)
|
||||
Expect(err).To(Succeed())
|
||||
s.deploymentName = deployment.Name
|
||||
|
||||
Reference in New Issue
Block a user