mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-19 14:34:17 +00:00
chore: define common aliases for k8s packages (#8672)
Run the E2E test on kind / build (push) Failing after 6m48s
Run the E2E test on kind / setup-test-matrix (push) Successful in 3s
Run the E2E test on kind / run-e2e-test (push) Has been skipped
Main CI / Build (push) Failing after 35s
Close stale issues and PRs / stale (push) Successful in 8s
Trivy Nightly Scan / Trivy nightly scan (velero, main) (push) Failing after 1m11s
Trivy Nightly Scan / Trivy nightly scan (velero-plugin-for-aws, main) (push) Failing after 47s
Trivy Nightly Scan / Trivy nightly scan (velero-plugin-for-gcp, main) (push) Failing after 49s
Trivy Nightly Scan / Trivy nightly scan (velero-plugin-for-microsoft-azure, main) (push) Failing after 43s
Run the E2E test on kind / build (push) Failing after 6m48s
Run the E2E test on kind / setup-test-matrix (push) Successful in 3s
Run the E2E test on kind / run-e2e-test (push) Has been skipped
Main CI / Build (push) Failing after 35s
Close stale issues and PRs / stale (push) Successful in 8s
Trivy Nightly Scan / Trivy nightly scan (velero, main) (push) Failing after 1m11s
Trivy Nightly Scan / Trivy nightly scan (velero-plugin-for-aws, main) (push) Failing after 47s
Trivy Nightly Scan / Trivy nightly scan (velero-plugin-for-gcp, main) (push) Failing after 49s
Trivy Nightly Scan / Trivy nightly scan (velero-plugin-for-microsoft-azure, main) (push) Failing after 43s
* lchore: define common alias for k8s packages Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com> * Update .golangci.yaml Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com> * Update .golangci.yaml Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com> * Update .golangci.yaml Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com> --------- Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
This commit is contained in:
@@ -20,7 +20,7 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
rbac "k8s.io/api/rbac/v1"
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
rbacbeta "k8s.io/api/rbac/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
@@ -81,7 +81,7 @@ func (v1beta1 V1beta1ClusterRoleBindingLister) List() ([]ClusterRoleBinding, err
|
||||
// Necessary so that callers to the ClusterRoleBindingLister interfaces don't need the kubernetes.Interface.
|
||||
func NewClusterRoleBindingListerMap(clientset kubernetes.Interface) map[string]ClusterRoleBindingLister {
|
||||
return map[string]ClusterRoleBindingLister{
|
||||
rbac.SchemeGroupVersion.Version: V1ClusterRoleBindingLister{client: clientset.RbacV1().ClusterRoleBindings()},
|
||||
rbacv1.SchemeGroupVersion.Version: V1ClusterRoleBindingLister{client: clientset.RbacV1().ClusterRoleBindings()},
|
||||
rbacbeta.SchemeGroupVersion.Version: V1beta1ClusterRoleBindingLister{client: clientset.RbacV1beta1().ClusterRoleBindings()},
|
||||
"": NoopClusterRoleBindingLister{},
|
||||
}
|
||||
@@ -98,7 +98,7 @@ type ClusterRoleBinding interface {
|
||||
}
|
||||
|
||||
type V1ClusterRoleBinding struct {
|
||||
Crb rbac.ClusterRoleBinding
|
||||
Crb rbacv1.ClusterRoleBinding
|
||||
}
|
||||
|
||||
func (c V1ClusterRoleBinding) Name() string {
|
||||
@@ -112,7 +112,7 @@ func (c V1ClusterRoleBinding) RoleRefName() string {
|
||||
func (c V1ClusterRoleBinding) ServiceAccountSubjects(namespace string) []string {
|
||||
var saSubjects []string
|
||||
for _, s := range c.Crb.Subjects {
|
||||
if s.Kind == rbac.ServiceAccountKind && s.Namespace == namespace {
|
||||
if s.Kind == rbacv1.ServiceAccountKind && s.Namespace == namespace {
|
||||
saSubjects = append(saSubjects, s.Name)
|
||||
}
|
||||
}
|
||||
@@ -134,7 +134,7 @@ func (c V1beta1ClusterRoleBinding) RoleRefName() string {
|
||||
func (c V1beta1ClusterRoleBinding) ServiceAccountSubjects(namespace string) []string {
|
||||
var saSubjects []string
|
||||
for _, s := range c.Crb.Subjects {
|
||||
if s.Kind == rbac.ServiceAccountKind && s.Namespace == namespace {
|
||||
if s.Kind == rbacv1.ServiceAccountKind && s.Namespace == namespace {
|
||||
saSubjects = append(saSubjects, s.Name)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ package actionhelpers
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
rbac "k8s.io/api/rbac/v1"
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
|
||||
@@ -31,7 +31,7 @@ func ClusterRoleBindingsForAction(clusterRoleBindingListers map[string]ClusterRo
|
||||
// Look up the supported RBAC version
|
||||
var supportedAPI metav1.GroupVersionForDiscovery
|
||||
for _, ag := range discoveryHelper.APIGroups() {
|
||||
if ag.Name == rbac.GroupName {
|
||||
if ag.Name == rbacv1.GroupName {
|
||||
supportedAPI = ag.PreferredVersion
|
||||
break
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@@ -879,29 +879,29 @@ func TestGetVolumeSnapshotClass(t *testing.T) {
|
||||
}
|
||||
|
||||
// pvcs
|
||||
pvcFoo := &v1.PersistentVolumeClaim{
|
||||
pvcFoo := &corev1api.PersistentVolumeClaim{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Annotations: map[string]string{
|
||||
"velero.io/csi-volumesnapshot-class": "foowithoutlabel",
|
||||
},
|
||||
},
|
||||
Spec: v1.PersistentVolumeClaimSpec{},
|
||||
Spec: corev1api.PersistentVolumeClaimSpec{},
|
||||
}
|
||||
pvcFoo2 := &v1.PersistentVolumeClaim{
|
||||
pvcFoo2 := &corev1api.PersistentVolumeClaim{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Annotations: map[string]string{
|
||||
"velero.io/csi-volumesnapshot-class": "foo2",
|
||||
},
|
||||
},
|
||||
Spec: v1.PersistentVolumeClaimSpec{},
|
||||
Spec: corev1api.PersistentVolumeClaimSpec{},
|
||||
}
|
||||
pvcNone := &v1.PersistentVolumeClaim{
|
||||
pvcNone := &corev1api.PersistentVolumeClaim{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "none",
|
||||
},
|
||||
Spec: v1.PersistentVolumeClaimSpec{},
|
||||
Spec: corev1api.PersistentVolumeClaimSpec{},
|
||||
}
|
||||
|
||||
// vsclasses
|
||||
@@ -957,7 +957,7 @@ func TestGetVolumeSnapshotClass(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
driverName string
|
||||
pvc *v1.PersistentVolumeClaim
|
||||
pvc *corev1api.PersistentVolumeClaim
|
||||
backup *velerov1api.Backup
|
||||
expectedVSC *snapshotv1api.VolumeSnapshotClass
|
||||
expectError bool
|
||||
@@ -1535,7 +1535,7 @@ func TestWaitUntilVSCHandleIsReady(t *testing.T) {
|
||||
Name: vscName,
|
||||
},
|
||||
Spec: snapshotv1api.VolumeSnapshotContentSpec{
|
||||
VolumeSnapshotRef: v1.ObjectReference{
|
||||
VolumeSnapshotRef: corev1api.ObjectReference{
|
||||
Name: "vol-snap-1",
|
||||
APIVersion: snapshotv1api.SchemeGroupVersion.String(),
|
||||
},
|
||||
@@ -1588,7 +1588,7 @@ func TestWaitUntilVSCHandleIsReady(t *testing.T) {
|
||||
Name: nilStatusVsc,
|
||||
},
|
||||
Spec: snapshotv1api.VolumeSnapshotContentSpec{
|
||||
VolumeSnapshotRef: v1.ObjectReference{
|
||||
VolumeSnapshotRef: corev1api.ObjectReference{
|
||||
Name: "vol-snap-1",
|
||||
APIVersion: snapshotv1api.SchemeGroupVersion.String(),
|
||||
},
|
||||
@@ -1611,7 +1611,7 @@ func TestWaitUntilVSCHandleIsReady(t *testing.T) {
|
||||
Name: nilStatusFieldVsc,
|
||||
},
|
||||
Spec: snapshotv1api.VolumeSnapshotContentSpec{
|
||||
VolumeSnapshotRef: v1.ObjectReference{
|
||||
VolumeSnapshotRef: corev1api.ObjectReference{
|
||||
Name: "vol-snap-1",
|
||||
APIVersion: snapshotv1api.SchemeGroupVersion.String(),
|
||||
},
|
||||
|
||||
+10
-10
@@ -22,7 +22,7 @@ import (
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/sirupsen/logrus"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
@@ -65,7 +65,7 @@ func NewEventRecorder(kubeClient kubernetes.Interface, scheme *runtime.Scheme, e
|
||||
// The callers (i.e., data mover pods) have controlled the rate and total number outside. E.g., the progress is designed to be updated every 10 seconds and is changeable.
|
||||
BurstSize: math.MaxInt32,
|
||||
MaxEvents: 1,
|
||||
MessageFunc: func(event *v1.Event) string {
|
||||
MessageFunc: func(event *corev1api.Event) string {
|
||||
return event.Message
|
||||
},
|
||||
})
|
||||
@@ -75,7 +75,7 @@ func NewEventRecorder(kubeClient kubernetes.Interface, scheme *runtime.Scheme, e
|
||||
sink: kubeClient.CoreV1().Events(""),
|
||||
})
|
||||
|
||||
res.recorder = res.broadcaster.NewRecorder(scheme, v1.EventSource{
|
||||
res.recorder = res.broadcaster.NewRecorder(scheme, corev1api.EventSource{
|
||||
Component: eventSource,
|
||||
Host: eventNode,
|
||||
})
|
||||
@@ -88,9 +88,9 @@ func (er *eventRecorder) Event(object runtime.Object, warning bool, reason strin
|
||||
return
|
||||
}
|
||||
|
||||
eventType := v1.EventTypeNormal
|
||||
eventType := corev1api.EventTypeNormal
|
||||
if warning {
|
||||
eventType = v1.EventTypeWarning
|
||||
eventType = corev1api.EventTypeWarning
|
||||
}
|
||||
|
||||
if len(a) > 0 {
|
||||
@@ -113,7 +113,7 @@ func (er *eventRecorder) EndingEvent(object runtime.Object, warning bool, reason
|
||||
if er.endingSentinel == nil {
|
||||
sentinelEvent = uuid.NewString()
|
||||
er.endingSentinel = &eventElement{
|
||||
t: v1.EventTypeNormal,
|
||||
t: corev1api.EventTypeNormal,
|
||||
r: sentinelEvent,
|
||||
m: sentinelEvent,
|
||||
sinked: make(chan struct{}),
|
||||
@@ -161,7 +161,7 @@ func (er *eventRecorder) Shutdown() {
|
||||
er.lock.Unlock()
|
||||
}
|
||||
|
||||
func (er *eventRecorder) sentinelWatch(event *v1.Event) bool {
|
||||
func (er *eventRecorder) sentinelWatch(event *corev1api.Event) bool {
|
||||
er.lock.Lock()
|
||||
defer er.lock.Unlock()
|
||||
|
||||
@@ -177,7 +177,7 @@ func (er *eventRecorder) sentinelWatch(event *v1.Event) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (es *eventSink) Create(event *v1.Event) (*v1.Event, error) {
|
||||
func (es *eventSink) Create(event *corev1api.Event) (*corev1api.Event, error) {
|
||||
if es.recorder.sentinelWatch(event) {
|
||||
return event, nil
|
||||
}
|
||||
@@ -185,10 +185,10 @@ func (es *eventSink) Create(event *v1.Event) (*v1.Event, error) {
|
||||
return es.sink.CreateWithEventNamespace(event)
|
||||
}
|
||||
|
||||
func (es *eventSink) Update(event *v1.Event) (*v1.Event, error) {
|
||||
func (es *eventSink) Update(event *corev1api.Event) (*corev1api.Event, error) {
|
||||
return es.sink.UpdateWithEventNamespace(event)
|
||||
}
|
||||
|
||||
func (es *eventSink) Patch(event *v1.Event, data []byte) (*v1.Event, error) {
|
||||
func (es *eventSink) Patch(event *corev1api.Event, data []byte) (*corev1api.Event, error) {
|
||||
return es.sink.PatchWithEventNamespace(event, data)
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
|
||||
velerotest "github.com/vmware-tanzu/velero/pkg/test"
|
||||
)
|
||||
@@ -139,18 +139,18 @@ func TestEvent(t *testing.T) {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
client := fake.NewSimpleClientset()
|
||||
scheme := runtime.NewScheme()
|
||||
err := corev1.AddToScheme(scheme)
|
||||
err := corev1api.AddToScheme(scheme)
|
||||
require.NoError(t, err)
|
||||
|
||||
recorder := NewEventRecorder(client, scheme, "source-1", "fake-node", velerotest.NewLogger())
|
||||
|
||||
pod := &corev1.Pod{
|
||||
pod := &corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Namespace: "fake-ns",
|
||||
Name: "fake-pod",
|
||||
UID: types.UID("fake-uid"),
|
||||
},
|
||||
Spec: corev1.PodSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
NodeName: "fake-node",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import (
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
|
||||
"github.com/vmware-tanzu/velero/pkg/builder"
|
||||
@@ -40,7 +40,7 @@ func TestIsLinuxNode(t *testing.T) {
|
||||
nodeLinux := builder.ForNode("fake-node").Labels(map[string]string{"kubernetes.io/os": "linux"}).Result()
|
||||
|
||||
scheme := runtime.NewScheme()
|
||||
corev1.AddToScheme(scheme)
|
||||
corev1api.AddToScheme(scheme)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
@@ -95,7 +95,7 @@ func TestWithLinuxNode(t *testing.T) {
|
||||
nodeLinux := builder.ForNode("fake-node-2").Labels(map[string]string{"kubernetes.io/os": "linux"}).Result()
|
||||
|
||||
scheme := runtime.NewScheme()
|
||||
corev1.AddToScheme(scheme)
|
||||
corev1api.AddToScheme(scheme)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
@@ -139,7 +139,7 @@ func TestGetNodeOSType(t *testing.T) {
|
||||
nodeWindows := builder.ForNode("fake-node").Labels(map[string]string{"kubernetes.io/os": "windows"}).Result()
|
||||
nodeLinux := builder.ForNode("fake-node").Labels(map[string]string{"kubernetes.io/os": "linux"}).Result()
|
||||
scheme := runtime.NewScheme()
|
||||
corev1.AddToScheme(scheme)
|
||||
corev1api.AddToScheme(scheme)
|
||||
tests := []struct {
|
||||
name string
|
||||
kubeClientObj []runtime.Object
|
||||
@@ -190,7 +190,7 @@ func TestHasNodeWithOS(t *testing.T) {
|
||||
nodeLinux := builder.ForNode("fake-node-3").Labels(map[string]string{"kubernetes.io/os": "linux"}).Result()
|
||||
|
||||
scheme := runtime.NewScheme()
|
||||
corev1.AddToScheme(scheme)
|
||||
corev1api.AddToScheme(scheme)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
|
||||
@@ -18,17 +18,17 @@ package kube
|
||||
|
||||
import (
|
||||
"github.com/pkg/errors"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
)
|
||||
|
||||
// ParseResourceRequirements takes a set of CPU and memory requests and limit string
|
||||
// values and returns a ResourceRequirements struct to be used in a Container.
|
||||
// An error is returned if we cannot parse the request/limit.
|
||||
func ParseResourceRequirements(cpuRequest, memRequest, cpuLimit, memLimit string) (corev1.ResourceRequirements, error) {
|
||||
resources := corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{},
|
||||
Limits: corev1.ResourceList{},
|
||||
func ParseResourceRequirements(cpuRequest, memRequest, cpuLimit, memLimit string) (corev1api.ResourceRequirements, error) {
|
||||
resources := corev1api.ResourceRequirements{
|
||||
Requests: corev1api.ResourceList{},
|
||||
Limits: corev1api.ResourceList{},
|
||||
}
|
||||
|
||||
parsedCPURequest, err := resource.ParseQuantity(cpuRequest)
|
||||
@@ -64,16 +64,16 @@ func ParseResourceRequirements(cpuRequest, memRequest, cpuLimit, memLimit string
|
||||
|
||||
// Only set resources if they are not unbounded
|
||||
if parsedCPURequest != unbounded {
|
||||
resources.Requests[corev1.ResourceCPU] = parsedCPURequest
|
||||
resources.Requests[corev1api.ResourceCPU] = parsedCPURequest
|
||||
}
|
||||
if parsedMemRequest != unbounded {
|
||||
resources.Requests[corev1.ResourceMemory] = parsedMemRequest
|
||||
resources.Requests[corev1api.ResourceMemory] = parsedMemRequest
|
||||
}
|
||||
if parsedCPULimit != unbounded {
|
||||
resources.Limits[corev1.ResourceCPU] = parsedCPULimit
|
||||
resources.Limits[corev1api.ResourceCPU] = parsedCPULimit
|
||||
}
|
||||
if parsedMemLimit != unbounded {
|
||||
resources.Limits[corev1.ResourceMemory] = parsedMemLimit
|
||||
resources.Limits[corev1api.ResourceMemory] = parsedMemLimit
|
||||
}
|
||||
|
||||
return resources, nil
|
||||
|
||||
@@ -20,7 +20,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
)
|
||||
|
||||
@@ -35,37 +35,37 @@ func TestParseResourceRequirements(t *testing.T) {
|
||||
name string
|
||||
args args
|
||||
wantErr bool
|
||||
expected *corev1.ResourceRequirements
|
||||
expected *corev1api.ResourceRequirements
|
||||
}{
|
||||
{"unbounded quantities", args{"0", "0", "0", "0"}, false, &corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{},
|
||||
Limits: corev1.ResourceList{},
|
||||
{"unbounded quantities", args{"0", "0", "0", "0"}, false, &corev1api.ResourceRequirements{
|
||||
Requests: corev1api.ResourceList{},
|
||||
Limits: corev1api.ResourceList{},
|
||||
}},
|
||||
{"valid quantities", args{"100m", "128Mi", "200m", "256Mi"}, false, nil},
|
||||
{"CPU request with unbounded limit", args{"100m", "128Mi", "0", "256Mi"}, false, &corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("100m"),
|
||||
corev1.ResourceMemory: resource.MustParse("128Mi"),
|
||||
{"CPU request with unbounded limit", args{"100m", "128Mi", "0", "256Mi"}, false, &corev1api.ResourceRequirements{
|
||||
Requests: corev1api.ResourceList{
|
||||
corev1api.ResourceCPU: resource.MustParse("100m"),
|
||||
corev1api.ResourceMemory: resource.MustParse("128Mi"),
|
||||
},
|
||||
Limits: corev1.ResourceList{
|
||||
corev1.ResourceMemory: resource.MustParse("256Mi"),
|
||||
Limits: corev1api.ResourceList{
|
||||
corev1api.ResourceMemory: resource.MustParse("256Mi"),
|
||||
},
|
||||
}},
|
||||
{"Mem request with unbounded limit", args{"100m", "128Mi", "200m", "0"}, false, &corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("100m"),
|
||||
corev1.ResourceMemory: resource.MustParse("128Mi"),
|
||||
{"Mem request with unbounded limit", args{"100m", "128Mi", "200m", "0"}, false, &corev1api.ResourceRequirements{
|
||||
Requests: corev1api.ResourceList{
|
||||
corev1api.ResourceCPU: resource.MustParse("100m"),
|
||||
corev1api.ResourceMemory: resource.MustParse("128Mi"),
|
||||
},
|
||||
Limits: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("200m"),
|
||||
Limits: corev1api.ResourceList{
|
||||
corev1api.ResourceCPU: resource.MustParse("200m"),
|
||||
},
|
||||
}},
|
||||
{"CPU/Mem requests with unbounded limits", args{"100m", "128Mi", "0", "0"}, false, &corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("100m"),
|
||||
corev1.ResourceMemory: resource.MustParse("128Mi"),
|
||||
{"CPU/Mem requests with unbounded limits", args{"100m", "128Mi", "0", "0"}, false, &corev1api.ResourceRequirements{
|
||||
Requests: corev1api.ResourceList{
|
||||
corev1api.ResourceCPU: resource.MustParse("100m"),
|
||||
corev1api.ResourceMemory: resource.MustParse("128Mi"),
|
||||
},
|
||||
Limits: corev1.ResourceList{},
|
||||
Limits: corev1api.ResourceList{},
|
||||
}},
|
||||
{"invalid quantity", args{"100m", "invalid", "200m", "256Mi"}, true, nil},
|
||||
{"CPU request greater than limit", args{"300m", "128Mi", "200m", "256Mi"}, true, nil},
|
||||
@@ -80,16 +80,16 @@ func TestParseResourceRequirements(t *testing.T) {
|
||||
}
|
||||
assert.NoError(t, err)
|
||||
|
||||
var expected corev1.ResourceRequirements
|
||||
var expected corev1api.ResourceRequirements
|
||||
if tt.expected == nil {
|
||||
expected = corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse(tt.args.cpuRequest),
|
||||
corev1.ResourceMemory: resource.MustParse(tt.args.memRequest),
|
||||
expected = corev1api.ResourceRequirements{
|
||||
Requests: corev1api.ResourceList{
|
||||
corev1api.ResourceCPU: resource.MustParse(tt.args.cpuRequest),
|
||||
corev1api.ResourceMemory: resource.MustParse(tt.args.memRequest),
|
||||
},
|
||||
Limits: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse(tt.args.cpuLimit),
|
||||
corev1.ResourceMemory: resource.MustParse(tt.args.memLimit),
|
||||
Limits: corev1api.ResourceList{
|
||||
corev1api.ResourceCPU: resource.MustParse(tt.args.cpuLimit),
|
||||
corev1api.ResourceMemory: resource.MustParse(tt.args.memLimit),
|
||||
},
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -20,12 +20,12 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
"sigs.k8s.io/yaml"
|
||||
)
|
||||
|
||||
func ParseSecurityContext(runAsUser string, runAsGroup string, allowPrivilegeEscalation string, secCtx string) (corev1.SecurityContext, error) {
|
||||
securityContext := corev1.SecurityContext{}
|
||||
func ParseSecurityContext(runAsUser string, runAsGroup string, allowPrivilegeEscalation string, secCtx string) (corev1api.SecurityContext, error) {
|
||||
securityContext := corev1api.SecurityContext{}
|
||||
|
||||
if runAsUser != "" {
|
||||
parsedRunAsUser, err := strconv.ParseInt(runAsUser, 10, 64)
|
||||
|
||||
@@ -20,7 +20,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
|
||||
"github.com/vmware-tanzu/velero/pkg/util/boolptr"
|
||||
)
|
||||
@@ -36,13 +36,13 @@ func TestParseSecurityContext(t *testing.T) {
|
||||
name string
|
||||
args args
|
||||
wantErr bool
|
||||
expected *corev1.SecurityContext
|
||||
expected *corev1api.SecurityContext
|
||||
}{
|
||||
{
|
||||
"valid security context",
|
||||
args{"1001", "999", "true", ``},
|
||||
false,
|
||||
&corev1.SecurityContext{
|
||||
&corev1api.SecurityContext{
|
||||
RunAsUser: pointInt64(1001),
|
||||
RunAsGroup: pointInt64(999),
|
||||
AllowPrivilegeEscalation: boolptr.True(),
|
||||
@@ -52,7 +52,7 @@ func TestParseSecurityContext(t *testing.T) {
|
||||
"valid security context with override runAsUser",
|
||||
args{"1001", "999", "true", `runAsUser: 2000`},
|
||||
false,
|
||||
&corev1.SecurityContext{
|
||||
&corev1api.SecurityContext{
|
||||
RunAsUser: pointInt64(2000),
|
||||
RunAsGroup: pointInt64(999),
|
||||
AllowPrivilegeEscalation: boolptr.True(),
|
||||
@@ -80,14 +80,14 @@ runAsNonRoot: true
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false`},
|
||||
false,
|
||||
&corev1.SecurityContext{
|
||||
&corev1api.SecurityContext{
|
||||
RunAsUser: pointInt64(3333),
|
||||
RunAsGroup: pointInt64(3333),
|
||||
Capabilities: &corev1.Capabilities{
|
||||
Drop: []corev1.Capability{"ALL"},
|
||||
Add: []corev1.Capability{"cap1", "cap2"},
|
||||
Capabilities: &corev1api.Capabilities{
|
||||
Drop: []corev1api.Capability{"ALL"},
|
||||
Add: []corev1api.Capability{"cap1", "cap2"},
|
||||
},
|
||||
SELinuxOptions: &corev1.SELinuxOptions{
|
||||
SELinuxOptions: &corev1api.SELinuxOptions{
|
||||
User: "userLabel",
|
||||
Role: "roleLabel",
|
||||
Type: "typeLabel",
|
||||
@@ -120,14 +120,14 @@ runAsNonRoot: true
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false`},
|
||||
true,
|
||||
&corev1.SecurityContext{
|
||||
&corev1api.SecurityContext{
|
||||
RunAsUser: pointInt64(3333),
|
||||
RunAsGroup: pointInt64(3333),
|
||||
Capabilities: &corev1.Capabilities{
|
||||
Drop: []corev1.Capability{"ALL"},
|
||||
Add: []corev1.Capability{"cap1", "cap2"},
|
||||
Capabilities: &corev1api.Capabilities{
|
||||
Drop: []corev1api.Capability{"ALL"},
|
||||
Add: []corev1api.Capability{"cap1", "cap2"},
|
||||
},
|
||||
SELinuxOptions: &corev1.SELinuxOptions{
|
||||
SELinuxOptions: &corev1api.SELinuxOptions{
|
||||
User: "userLabel",
|
||||
Role: "roleLabel",
|
||||
Type: "typeLabel",
|
||||
@@ -160,14 +160,14 @@ runAsNonRoot: true
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false`},
|
||||
false,
|
||||
&corev1.SecurityContext{
|
||||
&corev1api.SecurityContext{
|
||||
RunAsUser: pointInt64(3333),
|
||||
RunAsGroup: pointInt64(3333),
|
||||
Capabilities: &corev1.Capabilities{
|
||||
Drop: []corev1.Capability{"ALL"},
|
||||
Add: []corev1.Capability{"cap1", "cap2"},
|
||||
Capabilities: &corev1api.Capabilities{
|
||||
Drop: []corev1api.Capability{"ALL"},
|
||||
Add: []corev1api.Capability{"cap1", "cap2"},
|
||||
},
|
||||
SELinuxOptions: &corev1.SELinuxOptions{
|
||||
SELinuxOptions: &corev1api.SELinuxOptions{
|
||||
User: "userLabel",
|
||||
Role: "roleLabel",
|
||||
Type: "typeLabel",
|
||||
@@ -182,19 +182,19 @@ allowPrivilegeEscalation: false`},
|
||||
"another valid security context",
|
||||
args{"1001", "999", "false", ""},
|
||||
false,
|
||||
&corev1.SecurityContext{
|
||||
&corev1api.SecurityContext{
|
||||
RunAsUser: pointInt64(1001),
|
||||
RunAsGroup: pointInt64(999),
|
||||
AllowPrivilegeEscalation: boolptr.False(),
|
||||
},
|
||||
},
|
||||
{"security context without runAsGroup", args{"1001", "", "", ""}, false, &corev1.SecurityContext{
|
||||
{"security context without runAsGroup", args{"1001", "", "", ""}, false, &corev1api.SecurityContext{
|
||||
RunAsUser: pointInt64(1001),
|
||||
}},
|
||||
{"security context without runAsUser", args{"", "999", "", ""}, false, &corev1.SecurityContext{
|
||||
{"security context without runAsUser", args{"", "999", "", ""}, false, &corev1api.SecurityContext{
|
||||
RunAsGroup: pointInt64(999),
|
||||
}},
|
||||
{"empty context without runAsUser", args{"", "", "", ""}, false, &corev1.SecurityContext{}},
|
||||
{"empty context without runAsUser", args{"", "", "", ""}, false, &corev1api.SecurityContext{}},
|
||||
{
|
||||
"invalid securityContext secCtx unknown key",
|
||||
args{"", "", "", `
|
||||
@@ -263,7 +263,7 @@ allowPrivilegeEscalation: false`},
|
||||
assert.NoError(t, err)
|
||||
|
||||
if tt.expected == nil {
|
||||
tt.expected = &corev1.SecurityContext{}
|
||||
tt.expected = &corev1api.SecurityContext{}
|
||||
}
|
||||
|
||||
if tt.wantErr {
|
||||
|
||||
+18
-18
@@ -25,11 +25,11 @@ import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
storagev1api "k8s.io/api/storage/v1"
|
||||
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||
k8serrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
@@ -49,7 +49,7 @@ func TestEnsureNamespaceExistsAndIsReady(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
expectNSFound bool
|
||||
nsPhase corev1.NamespacePhase
|
||||
nsPhase corev1api.NamespacePhase
|
||||
nsDeleting bool
|
||||
expectCreate bool
|
||||
alreadyExists bool
|
||||
@@ -67,7 +67,7 @@ func TestEnsureNamespaceExistsAndIsReady(t *testing.T) {
|
||||
{
|
||||
name: "namespace found, terminating phase",
|
||||
expectNSFound: true,
|
||||
nsPhase: corev1.NamespaceTerminating,
|
||||
nsPhase: corev1api.NamespaceTerminating,
|
||||
expectedResult: false,
|
||||
expectedCreatedResult: false,
|
||||
},
|
||||
@@ -93,14 +93,14 @@ func TestEnsureNamespaceExistsAndIsReady(t *testing.T) {
|
||||
{
|
||||
name: "namespace not found initially, create returns already exists error, returned namespace is terminating",
|
||||
alreadyExists: true,
|
||||
nsPhase: corev1.NamespaceTerminating,
|
||||
nsPhase: corev1api.NamespaceTerminating,
|
||||
expectedResult: false,
|
||||
expectedCreatedResult: false,
|
||||
},
|
||||
{
|
||||
name: "same namespace found earlier, terminating phase already tracked",
|
||||
expectNSFound: true,
|
||||
nsPhase: corev1.NamespaceTerminating,
|
||||
nsPhase: corev1api.NamespaceTerminating,
|
||||
expectedResult: false,
|
||||
expectedCreatedResult: false,
|
||||
nsAlreadyInTerminationTracker: true,
|
||||
@@ -110,7 +110,7 @@ func TestEnsureNamespaceExistsAndIsReady(t *testing.T) {
|
||||
resourceDeletionStatusTracker := NewResourceDeletionStatusTracker()
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
namespace := &corev1.Namespace{
|
||||
namespace := &corev1api.Namespace{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "test",
|
||||
},
|
||||
@@ -132,11 +132,11 @@ func TestEnsureNamespaceExistsAndIsReady(t *testing.T) {
|
||||
if test.expectNSFound {
|
||||
nsClient.On("Get", "test", metav1.GetOptions{}).Return(namespace, nil)
|
||||
} else {
|
||||
nsClient.On("Get", "test", metav1.GetOptions{}).Return(&corev1.Namespace{}, k8serrors.NewNotFound(schema.GroupResource{Resource: "namespaces"}, "test"))
|
||||
nsClient.On("Get", "test", metav1.GetOptions{}).Return(&corev1api.Namespace{}, apierrors.NewNotFound(schema.GroupResource{Resource: "namespaces"}, "test"))
|
||||
}
|
||||
|
||||
if test.alreadyExists {
|
||||
nsClient.On("Create", namespace).Return(namespace, k8serrors.NewAlreadyExists(schema.GroupResource{Resource: "namespaces"}, "test"))
|
||||
nsClient.On("Create", namespace).Return(namespace, apierrors.NewAlreadyExists(schema.GroupResource{Resource: "namespaces"}, "test"))
|
||||
}
|
||||
|
||||
if test.expectCreate {
|
||||
@@ -160,9 +160,9 @@ func TestEnsureNamespaceExistsAndIsReady(t *testing.T) {
|
||||
func TestGetVolumeDirectorySuccess(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
pod *corev1.Pod
|
||||
pvc *corev1.PersistentVolumeClaim
|
||||
pv *corev1.PersistentVolume
|
||||
pod *corev1api.Pod
|
||||
pvc *corev1api.PersistentVolumeClaim
|
||||
pv *corev1api.PersistentVolume
|
||||
want string
|
||||
}{
|
||||
{
|
||||
@@ -183,7 +183,7 @@ func TestGetVolumeDirectorySuccess(t *testing.T) {
|
||||
name: "Block CSI volume with a PVC/PV does not append '/mount' to the volume name",
|
||||
pod: builder.ForPod("ns-1", "my-pod").Volumes(builder.ForVolume("my-vol").PersistentVolumeClaimSource("my-pvc").Result()).Result(),
|
||||
pvc: builder.ForPersistentVolumeClaim("ns-1", "my-pvc").VolumeName("a-pv").Result(),
|
||||
pv: builder.ForPersistentVolume("a-pv").CSI("csi.test.com", "provider-volume-id").VolumeMode(corev1.PersistentVolumeBlock).Result(),
|
||||
pv: builder.ForPersistentVolume("a-pv").CSI("csi.test.com", "provider-volume-id").VolumeMode(corev1api.PersistentVolumeBlock).Result(),
|
||||
want: "a-pv",
|
||||
},
|
||||
{
|
||||
@@ -237,23 +237,23 @@ func TestGetVolumeDirectorySuccess(t *testing.T) {
|
||||
func TestGetVolumeModeSuccess(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
pod *corev1.Pod
|
||||
pvc *corev1.PersistentVolumeClaim
|
||||
pv *corev1.PersistentVolume
|
||||
pod *corev1api.Pod
|
||||
pvc *corev1api.PersistentVolumeClaim
|
||||
pv *corev1api.PersistentVolume
|
||||
want uploader.PersistentVolumeMode
|
||||
}{
|
||||
{
|
||||
name: "Filesystem PVC volume",
|
||||
pod: builder.ForPod("ns-1", "my-pod").Volumes(builder.ForVolume("my-vol").PersistentVolumeClaimSource("my-pvc").Result()).Result(),
|
||||
pvc: builder.ForPersistentVolumeClaim("ns-1", "my-pvc").VolumeName("a-pv").Result(),
|
||||
pv: builder.ForPersistentVolume("a-pv").VolumeMode(corev1.PersistentVolumeFilesystem).Result(),
|
||||
pv: builder.ForPersistentVolume("a-pv").VolumeMode(corev1api.PersistentVolumeFilesystem).Result(),
|
||||
want: uploader.PersistentVolumeFilesystem,
|
||||
},
|
||||
{
|
||||
name: "Block PVC volume",
|
||||
pod: builder.ForPod("ns-1", "my-pod").Volumes(builder.ForVolume("my-vol").PersistentVolumeClaimSource("my-pvc").Result()).Result(),
|
||||
pvc: builder.ForPersistentVolumeClaim("ns-1", "my-pvc").VolumeName("a-pv").Result(),
|
||||
pv: builder.ForPersistentVolume("a-pv").VolumeMode(corev1.PersistentVolumeBlock).Result(),
|
||||
pv: builder.ForPersistentVolume("a-pv").VolumeMode(corev1api.PersistentVolumeBlock).Result(),
|
||||
want: uploader.PersistentVolumeBlock,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -22,7 +22,6 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
|
||||
@@ -384,17 +383,17 @@ func TestGetVolumesByPod(t *testing.T) {
|
||||
|
||||
func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
objs := []runtime.Object{
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod1",
|
||||
Namespace: "default",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -402,7 +401,7 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod2",
|
||||
Namespace: "default",
|
||||
@@ -410,12 +409,12 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
"backup.velero.io/backup-volumes": "csi-vol1",
|
||||
},
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -423,33 +422,33 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod3",
|
||||
Namespace: "default",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
EmptyDir: &v1.EmptyDirVolumeSource{},
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
EmptyDir: &corev1api.EmptyDirVolumeSource{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "awesome-pod-1",
|
||||
Namespace: "awesome-ns",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "awesome-csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -457,17 +456,17 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "awesome-pod-2",
|
||||
Namespace: "awesome-ns",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "awesome-csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -475,7 +474,7 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod1",
|
||||
Namespace: "uploader-ns",
|
||||
@@ -483,12 +482,12 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
"backup.velero.io/backup-volumes": "csi-vol1",
|
||||
},
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -496,7 +495,7 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod2",
|
||||
Namespace: "uploader-ns",
|
||||
@@ -504,12 +503,12 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
"backup.velero.io/backup-volumes": "csi-vol1",
|
||||
},
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -575,36 +574,36 @@ func TestIsPVCDefaultToFSBackup(t *testing.T) {
|
||||
func TestGetPodVolumeNameForPVC(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
pod v1.Pod
|
||||
pod corev1api.Pod
|
||||
pvcName string
|
||||
expectError bool
|
||||
expectedVolumeName string
|
||||
}{
|
||||
{
|
||||
name: "should get volume name for pod with multiple PVCs",
|
||||
pod: v1.Pod{
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
pod: corev1api.Pod{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "csi-vol2",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc2",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "csi-vol3",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc3",
|
||||
},
|
||||
},
|
||||
@@ -618,13 +617,13 @@ func TestGetPodVolumeNameForPVC(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "should get volume name from pod using exactly one PVC",
|
||||
pod: v1.Pod{
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
pod: corev1api.Pod{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -638,21 +637,21 @@ func TestGetPodVolumeNameForPVC(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "should return error for pod with no PVCs",
|
||||
pod: v1.Pod{
|
||||
Spec: v1.PodSpec{},
|
||||
pod: corev1api.Pod{
|
||||
Spec: corev1api.PodSpec{},
|
||||
},
|
||||
pvcName: "csi-pvc2",
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
name: "should return error for pod with no matching PVC",
|
||||
pod: v1.Pod{
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
pod: corev1api.Pod{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -679,17 +678,17 @@ func TestGetPodVolumeNameForPVC(t *testing.T) {
|
||||
|
||||
func TestGetPodsUsingPVC(t *testing.T) {
|
||||
objs := []runtime.Object{
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod1",
|
||||
Namespace: "default",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -697,17 +696,17 @@ func TestGetPodsUsingPVC(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod2",
|
||||
Namespace: "default",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
@@ -715,33 +714,33 @@ func TestGetPodsUsingPVC(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod3",
|
||||
Namespace: "default",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
EmptyDir: &v1.EmptyDirVolumeSource{},
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
EmptyDir: &corev1api.EmptyDirVolumeSource{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
&v1.Pod{
|
||||
&corev1api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "pod1",
|
||||
Namespace: "awesome-ns",
|
||||
},
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "csi-vol1",
|
||||
VolumeSource: v1.VolumeSource{
|
||||
PersistentVolumeClaim: &v1.PersistentVolumeClaimVolumeSource{
|
||||
VolumeSource: corev1api.VolumeSource{
|
||||
PersistentVolumeClaim: &corev1api.PersistentVolumeClaimVolumeSource{
|
||||
ClaimName: "csi-pvc1",
|
||||
},
|
||||
},
|
||||
|
||||
+15
-15
@@ -17,27 +17,27 @@ limitations under the License.
|
||||
package velero
|
||||
|
||||
import (
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
appsv1api "k8s.io/api/apps/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
// GetNodeSelectorFromVeleroServer get the node selector from the Velero server deployment
|
||||
func GetNodeSelectorFromVeleroServer(deployment *appsv1.Deployment) map[string]string {
|
||||
func GetNodeSelectorFromVeleroServer(deployment *appsv1api.Deployment) map[string]string {
|
||||
return deployment.Spec.Template.Spec.NodeSelector
|
||||
}
|
||||
|
||||
// GetTolerationsFromVeleroServer get the tolerations from the Velero server deployment
|
||||
func GetTolerationsFromVeleroServer(deployment *appsv1.Deployment) []v1.Toleration {
|
||||
func GetTolerationsFromVeleroServer(deployment *appsv1api.Deployment) []corev1api.Toleration {
|
||||
return deployment.Spec.Template.Spec.Tolerations
|
||||
}
|
||||
|
||||
// GetAffinityFromVeleroServer get the affinity from the Velero server deployment
|
||||
func GetAffinityFromVeleroServer(deployment *appsv1.Deployment) *v1.Affinity {
|
||||
func GetAffinityFromVeleroServer(deployment *appsv1api.Deployment) *corev1api.Affinity {
|
||||
return deployment.Spec.Template.Spec.Affinity
|
||||
}
|
||||
|
||||
// GetEnvVarsFromVeleroServer get the environment variables from the Velero server deployment
|
||||
func GetEnvVarsFromVeleroServer(deployment *appsv1.Deployment) []v1.EnvVar {
|
||||
func GetEnvVarsFromVeleroServer(deployment *appsv1api.Deployment) []corev1api.EnvVar {
|
||||
for _, container := range deployment.Spec.Template.Spec.Containers {
|
||||
// We only have one container in the Velero server deployment
|
||||
return container.Env
|
||||
@@ -46,7 +46,7 @@ func GetEnvVarsFromVeleroServer(deployment *appsv1.Deployment) []v1.EnvVar {
|
||||
}
|
||||
|
||||
// GetEnvFromSourcesFromVeleroServer get the environment sources from the Velero server deployment
|
||||
func GetEnvFromSourcesFromVeleroServer(deployment *appsv1.Deployment) []v1.EnvFromSource {
|
||||
func GetEnvFromSourcesFromVeleroServer(deployment *appsv1api.Deployment) []corev1api.EnvFromSource {
|
||||
for _, container := range deployment.Spec.Template.Spec.Containers {
|
||||
// We only have one container in the Velero server deployment
|
||||
return container.EnvFrom
|
||||
@@ -55,7 +55,7 @@ func GetEnvFromSourcesFromVeleroServer(deployment *appsv1.Deployment) []v1.EnvFr
|
||||
}
|
||||
|
||||
// GetVolumeMountsFromVeleroServer get the volume mounts from the Velero server deployment
|
||||
func GetVolumeMountsFromVeleroServer(deployment *appsv1.Deployment) []v1.VolumeMount {
|
||||
func GetVolumeMountsFromVeleroServer(deployment *appsv1api.Deployment) []corev1api.VolumeMount {
|
||||
for _, container := range deployment.Spec.Template.Spec.Containers {
|
||||
// We only have one container in the Velero server deployment
|
||||
return container.VolumeMounts
|
||||
@@ -64,32 +64,32 @@ func GetVolumeMountsFromVeleroServer(deployment *appsv1.Deployment) []v1.VolumeM
|
||||
}
|
||||
|
||||
// GetVolumesFromVeleroServer get the volumes from the Velero server deployment
|
||||
func GetVolumesFromVeleroServer(deployment *appsv1.Deployment) []v1.Volume {
|
||||
func GetVolumesFromVeleroServer(deployment *appsv1api.Deployment) []corev1api.Volume {
|
||||
return deployment.Spec.Template.Spec.Volumes
|
||||
}
|
||||
|
||||
// GetServiceAccountFromVeleroServer get the service account from the Velero server deployment
|
||||
func GetServiceAccountFromVeleroServer(deployment *appsv1.Deployment) string {
|
||||
func GetServiceAccountFromVeleroServer(deployment *appsv1api.Deployment) string {
|
||||
return deployment.Spec.Template.Spec.ServiceAccountName
|
||||
}
|
||||
|
||||
// getVeleroServerImage get the image of the Velero server deployment
|
||||
func GetVeleroServerImage(deployment *appsv1.Deployment) string {
|
||||
func GetVeleroServerImage(deployment *appsv1api.Deployment) string {
|
||||
return deployment.Spec.Template.Spec.Containers[0].Image
|
||||
}
|
||||
|
||||
// GetVeleroServerLables get the labels of the Velero server deployment
|
||||
func GetVeleroServerLables(deployment *appsv1.Deployment) map[string]string {
|
||||
func GetVeleroServerLables(deployment *appsv1api.Deployment) map[string]string {
|
||||
return deployment.Spec.Template.Labels
|
||||
}
|
||||
|
||||
// GetVeleroServerAnnotations get the annotations of the Velero server deployment
|
||||
func GetVeleroServerAnnotations(deployment *appsv1.Deployment) map[string]string {
|
||||
func GetVeleroServerAnnotations(deployment *appsv1api.Deployment) map[string]string {
|
||||
return deployment.Spec.Template.Annotations
|
||||
}
|
||||
|
||||
// GetVeleroServerLabelValue returns the value of specified label of Velero server deployment
|
||||
func GetVeleroServerLabelValue(deployment *appsv1.Deployment, key string) string {
|
||||
func GetVeleroServerLabelValue(deployment *appsv1api.Deployment, key string) string {
|
||||
if deployment.Spec.Template.Labels == nil {
|
||||
return ""
|
||||
}
|
||||
@@ -98,7 +98,7 @@ func GetVeleroServerLabelValue(deployment *appsv1.Deployment, key string) string
|
||||
}
|
||||
|
||||
// GetVeleroServerAnnotationValue returns the value of specified annotation of Velero server deployment
|
||||
func GetVeleroServerAnnotationValue(deployment *appsv1.Deployment, key string) string {
|
||||
func GetVeleroServerAnnotationValue(deployment *appsv1api.Deployment, key string) string {
|
||||
if deployment.Spec.Template.Annotations == nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
+159
-159
@@ -21,23 +21,23 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
appsv1api "k8s.io/api/apps/v1"
|
||||
corev1api "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
func TestGetNodeSelectorFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
deploy *appsv1api.Deployment
|
||||
want map[string]string
|
||||
}{
|
||||
{
|
||||
name: "no node selector",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
NodeSelector: map[string]string{},
|
||||
},
|
||||
},
|
||||
@@ -47,10 +47,10 @@ func TestGetNodeSelectorFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "node selector",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
NodeSelector: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -82,29 +82,29 @@ func TestGetNodeSelectorFromVeleroServer(t *testing.T) {
|
||||
func TestGetTolerationsFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
want []v1.Toleration
|
||||
deploy *appsv1api.Deployment
|
||||
want []corev1api.Toleration
|
||||
}{
|
||||
{
|
||||
name: "no tolerations",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Tolerations: []v1.Toleration{},
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Tolerations: []corev1api.Toleration{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.Toleration{},
|
||||
want: []corev1api.Toleration{},
|
||||
},
|
||||
{
|
||||
name: "tolerations",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Tolerations: []v1.Toleration{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Tolerations: []corev1api.Toleration{
|
||||
{
|
||||
Key: "foo",
|
||||
Operator: "Exists",
|
||||
@@ -114,7 +114,7 @@ func TestGetTolerationsFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.Toleration{
|
||||
want: []corev1api.Toleration{
|
||||
{
|
||||
Key: "foo",
|
||||
Operator: "Exists",
|
||||
@@ -141,15 +141,15 @@ func TestGetTolerationsFromVeleroServer(t *testing.T) {
|
||||
func TestGetAffinityFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
want *v1.Affinity
|
||||
deploy *appsv1api.Deployment
|
||||
want *corev1api.Affinity
|
||||
}{
|
||||
{
|
||||
name: "no affinity",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Affinity: nil,
|
||||
},
|
||||
},
|
||||
@@ -159,16 +159,16 @@ func TestGetAffinityFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "affinity",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Affinity: &v1.Affinity{
|
||||
NodeAffinity: &v1.NodeAffinity{
|
||||
RequiredDuringSchedulingIgnoredDuringExecution: &v1.NodeSelector{
|
||||
NodeSelectorTerms: []v1.NodeSelectorTerm{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Affinity: &corev1api.Affinity{
|
||||
NodeAffinity: &corev1api.NodeAffinity{
|
||||
RequiredDuringSchedulingIgnoredDuringExecution: &corev1api.NodeSelector{
|
||||
NodeSelectorTerms: []corev1api.NodeSelectorTerm{
|
||||
{
|
||||
MatchExpressions: []v1.NodeSelectorRequirement{
|
||||
MatchExpressions: []corev1api.NodeSelectorRequirement{
|
||||
{
|
||||
Key: "foo",
|
||||
Operator: "In",
|
||||
@@ -184,12 +184,12 @@ func TestGetAffinityFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
want: &v1.Affinity{
|
||||
NodeAffinity: &v1.NodeAffinity{
|
||||
RequiredDuringSchedulingIgnoredDuringExecution: &v1.NodeSelector{
|
||||
NodeSelectorTerms: []v1.NodeSelectorTerm{
|
||||
want: &corev1api.Affinity{
|
||||
NodeAffinity: &corev1api.NodeAffinity{
|
||||
RequiredDuringSchedulingIgnoredDuringExecution: &corev1api.NodeSelector{
|
||||
NodeSelectorTerms: []corev1api.NodeSelectorTerm{
|
||||
{
|
||||
MatchExpressions: []v1.NodeSelectorRequirement{
|
||||
MatchExpressions: []corev1api.NodeSelectorRequirement{
|
||||
{
|
||||
Key: "foo",
|
||||
Operator: "In",
|
||||
@@ -248,35 +248,35 @@ func TestGetAffinityFromVeleroServer(t *testing.T) {
|
||||
func TestGetEnvVarsFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
want []v1.EnvVar
|
||||
deploy *appsv1api.Deployment
|
||||
want []corev1api.EnvVar
|
||||
}{
|
||||
{
|
||||
name: "no env vars",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
Env: []v1.EnvVar{},
|
||||
Env: []corev1api.EnvVar{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.EnvVar{},
|
||||
want: []corev1api.EnvVar{},
|
||||
},
|
||||
{
|
||||
name: "env vars",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
Env: []v1.EnvVar{
|
||||
Env: []corev1api.EnvVar{
|
||||
{
|
||||
Name: "foo",
|
||||
Value: "bar",
|
||||
@@ -288,7 +288,7 @@ func TestGetEnvVarsFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.EnvVar{
|
||||
want: []corev1api.EnvVar{
|
||||
{
|
||||
Name: "foo",
|
||||
Value: "bar",
|
||||
@@ -315,38 +315,38 @@ func TestGetEnvVarsFromVeleroServer(t *testing.T) {
|
||||
func TestGetEnvFromSourcesFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
expected []v1.EnvFromSource
|
||||
deploy *appsv1api.Deployment
|
||||
expected []corev1api.EnvFromSource
|
||||
}{
|
||||
{
|
||||
name: "no env vars",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
EnvFrom: []v1.EnvFromSource{},
|
||||
EnvFrom: []corev1api.EnvFromSource{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: []v1.EnvFromSource{},
|
||||
expected: []corev1api.EnvFromSource{},
|
||||
},
|
||||
{
|
||||
name: "configmap",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
EnvFrom: []v1.EnvFromSource{
|
||||
EnvFrom: []corev1api.EnvFromSource{
|
||||
{
|
||||
ConfigMapRef: &v1.ConfigMapEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{
|
||||
ConfigMapRef: &corev1api.ConfigMapEnvSource{
|
||||
LocalObjectReference: corev1api.LocalObjectReference{
|
||||
Name: "foo",
|
||||
},
|
||||
},
|
||||
@@ -358,10 +358,10 @@ func TestGetEnvFromSourcesFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: []v1.EnvFromSource{
|
||||
expected: []corev1api.EnvFromSource{
|
||||
{
|
||||
ConfigMapRef: &v1.ConfigMapEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{
|
||||
ConfigMapRef: &corev1api.ConfigMapEnvSource{
|
||||
LocalObjectReference: corev1api.LocalObjectReference{
|
||||
Name: "foo",
|
||||
},
|
||||
},
|
||||
@@ -370,16 +370,16 @@ func TestGetEnvFromSourcesFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "secret",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
EnvFrom: []v1.EnvFromSource{
|
||||
EnvFrom: []corev1api.EnvFromSource{
|
||||
{
|
||||
SecretRef: &v1.SecretEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{
|
||||
SecretRef: &corev1api.SecretEnvSource{
|
||||
LocalObjectReference: corev1api.LocalObjectReference{
|
||||
Name: "foo",
|
||||
},
|
||||
},
|
||||
@@ -391,10 +391,10 @@ func TestGetEnvFromSourcesFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: []v1.EnvFromSource{
|
||||
expected: []corev1api.EnvFromSource{
|
||||
{
|
||||
SecretRef: &v1.SecretEnvSource{
|
||||
LocalObjectReference: v1.LocalObjectReference{
|
||||
SecretRef: &corev1api.SecretEnvSource{
|
||||
LocalObjectReference: corev1api.LocalObjectReference{
|
||||
Name: "foo",
|
||||
},
|
||||
},
|
||||
@@ -414,35 +414,35 @@ func TestGetEnvFromSourcesFromVeleroServer(t *testing.T) {
|
||||
func TestGetVolumeMountsFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
want []v1.VolumeMount
|
||||
deploy *appsv1api.Deployment
|
||||
want []corev1api.VolumeMount
|
||||
}{
|
||||
{
|
||||
name: "no volume mounts",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
VolumeMounts: []v1.VolumeMount{},
|
||||
VolumeMounts: []corev1api.VolumeMount{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.VolumeMount{},
|
||||
want: []corev1api.VolumeMount{},
|
||||
},
|
||||
{
|
||||
name: "volume mounts",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
VolumeMounts: []v1.VolumeMount{
|
||||
VolumeMounts: []corev1api.VolumeMount{
|
||||
{
|
||||
Name: "foo",
|
||||
MountPath: "/bar",
|
||||
@@ -454,7 +454,7 @@ func TestGetVolumeMountsFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.VolumeMount{
|
||||
want: []corev1api.VolumeMount{
|
||||
{
|
||||
Name: "foo",
|
||||
MountPath: "/bar",
|
||||
@@ -481,29 +481,29 @@ func TestGetVolumeMountsFromVeleroServer(t *testing.T) {
|
||||
func TestGetVolumesFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
want []v1.Volume
|
||||
deploy *appsv1api.Deployment
|
||||
want []corev1api.Volume
|
||||
}{
|
||||
{
|
||||
name: "no volumes",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{},
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.Volume{},
|
||||
want: []corev1api.Volume{},
|
||||
},
|
||||
{
|
||||
name: "volumes",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Volumes: []v1.Volume{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Volumes: []corev1api.Volume{
|
||||
{
|
||||
Name: "foo",
|
||||
},
|
||||
@@ -512,7 +512,7 @@ func TestGetVolumesFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
want: []v1.Volume{
|
||||
want: []corev1api.Volume{
|
||||
{
|
||||
Name: "foo",
|
||||
},
|
||||
@@ -538,15 +538,15 @@ func TestGetVolumesFromVeleroServer(t *testing.T) {
|
||||
func TestGetServiceAccountFromVeleroServer(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
deploy *appsv1api.Deployment
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "no service account",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
ServiceAccountName: "",
|
||||
},
|
||||
},
|
||||
@@ -556,10 +556,10 @@ func TestGetServiceAccountFromVeleroServer(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "service account",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
ServiceAccountName: "foo",
|
||||
},
|
||||
},
|
||||
@@ -582,16 +582,16 @@ func TestGetServiceAccountFromVeleroServer(t *testing.T) {
|
||||
func TestGetVeleroServerImage(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deploy *appsv1.Deployment
|
||||
deploy *appsv1api.Deployment
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "velero server image",
|
||||
deploy: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
deploy: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
Spec: corev1api.PodSpec{
|
||||
Containers: []corev1api.Container{
|
||||
{
|
||||
Image: "velero/velero:latest",
|
||||
},
|
||||
@@ -617,14 +617,14 @@ func TestGetVeleroServerImage(t *testing.T) {
|
||||
func TestGetVeleroServerLables(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deployment *appsv1.Deployment
|
||||
deployment *appsv1api.Deployment
|
||||
expected map[string]string
|
||||
}{
|
||||
{
|
||||
name: "Empty Labels",
|
||||
deployment: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
deployment: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: map[string]string{},
|
||||
},
|
||||
@@ -635,9 +635,9 @@ func TestGetVeleroServerLables(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "Non-empty Labels",
|
||||
deployment: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
deployment: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"app": "velero",
|
||||
@@ -666,14 +666,14 @@ func TestGetVeleroServerLables(t *testing.T) {
|
||||
func TestGetVeleroServerAnnotations(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deployment *appsv1.Deployment
|
||||
deployment *appsv1api.Deployment
|
||||
expected map[string]string
|
||||
}{
|
||||
{
|
||||
name: "Empty Labels",
|
||||
deployment: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
deployment: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Annotations: map[string]string{},
|
||||
},
|
||||
@@ -684,9 +684,9 @@ func TestGetVeleroServerAnnotations(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "Non-empty Labels",
|
||||
deployment: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
deployment: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Annotations: map[string]string{
|
||||
"app": "velero",
|
||||
@@ -715,19 +715,19 @@ func TestGetVeleroServerAnnotations(t *testing.T) {
|
||||
func TestGetVeleroServerLabelValue(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
deployment *appsv1.Deployment
|
||||
deployment *appsv1api.Deployment
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
name: "nil Labels",
|
||||
deployment: &appsv1.Deployment{},
|
||||
deployment: &appsv1api.Deployment{},
|
||||
expected: "",
|
||||
},
|
||||
{
|
||||
name: "no label key",
|
||||
deployment: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
deployment: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: map[string]string{},
|
||||
},
|
||||
@@ -738,9 +738,9 @@ func TestGetVeleroServerLabelValue(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "with label key",
|
||||
deployment: &appsv1.Deployment{
|
||||
Spec: appsv1.DeploymentSpec{
|
||||
Template: v1.PodTemplateSpec{
|
||||
deployment: &appsv1api.Deployment{
|
||||
Spec: appsv1api.DeploymentSpec{
|
||||
Template: corev1api.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: map[string]string{"fake-key": "fake-value"},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user