Skip to content

Commit

Permalink
Merge pull request kubevirt#13823 from ksimon1/annotations
Browse files Browse the repository at this point in the history
feat: move instance types annotations unit tests to correct packages
  • Loading branch information
kubevirt-bot authored Feb 1, 2025
2 parents a1ed64e + fd9b1e0 commit 138f4cd
Show file tree
Hide file tree
Showing 9 changed files with 172 additions and 94 deletions.
3 changes: 0 additions & 3 deletions pkg/instancetype/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@ go_library(
importpath = "kubevirt.io/kubevirt/pkg/instancetype",
visibility = ["//visibility:public"],
deps = [
"//pkg/instancetype/annotations:go_default_library",
"//pkg/instancetype/apply:go_default_library",
"//pkg/instancetype/conflict:go_default_library",
"//pkg/instancetype/expand:go_default_library",
"//pkg/instancetype/find:go_default_library",
"//pkg/instancetype/infer:go_default_library",
"//pkg/instancetype/preference/annotations:go_default_library",
"//pkg/instancetype/preference/apply:go_default_library",
"//pkg/instancetype/preference/find:go_default_library",
"//pkg/instancetype/preference/validation:go_default_library",
Expand Down Expand Up @@ -42,7 +40,6 @@ go_test(
"//pkg/pointer:go_default_library",
"//pkg/testutils:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/api/instancetype:go_default_library",
"//staging/src/kubevirt.io/api/instancetype/v1beta1:go_default_library",
"//staging/src/kubevirt.io/client-go/api:go_default_library",
"//staging/src/kubevirt.io/client-go/kubecli:go_default_library",
Expand Down
19 changes: 18 additions & 1 deletion pkg/instancetype/annotations/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")

go_library(
name = "go_default_library",
Expand All @@ -11,3 +11,20 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
)

go_test(
name = "go_default_test",
srcs = [
"annotations_suite_test.go",
"annotations_test.go",
],
deps = [
":go_default_library",
"//pkg/libvmi:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/api/instancetype:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
)
13 changes: 13 additions & 0 deletions pkg/instancetype/annotations/annotations_suite_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package annotations_test

import (
"testing"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)

func TestAnnotations(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Annotations Suite")
}
55 changes: 55 additions & 0 deletions pkg/instancetype/annotations/annotations_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package annotations_test

import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "kubevirt.io/api/core/v1"
apiinstancetype "kubevirt.io/api/instancetype"

"kubevirt.io/kubevirt/pkg/instancetype/annotations"
"kubevirt.io/kubevirt/pkg/libvmi"
)

var _ = Describe("Annotations", func() {
var (
vm *v1.VirtualMachine
meta *metav1.ObjectMeta
)

const instancetypeName = "instancetype-name"

BeforeEach(func() {
vm = libvmi.NewVirtualMachine(libvmi.New(), libvmi.WithInstancetype(instancetypeName))

meta = &metav1.ObjectMeta{}
})

It("should add instancetype name annotation", func() {
vm.Spec.Instancetype.Kind = apiinstancetype.SingularResourceName

annotations.Set(vm, meta)

Expect(meta.Annotations).To(HaveKeyWithValue(v1.InstancetypeAnnotation, instancetypeName))
Expect(meta.Annotations).ToNot(HaveKey(v1.ClusterInstancetypeAnnotation))
})

It("should add cluster instancetype name annotation", func() {
vm.Spec.Instancetype.Kind = apiinstancetype.ClusterSingularResourceName

annotations.Set(vm, meta)

Expect(meta.Annotations).ToNot(HaveKey(v1.InstancetypeAnnotation))
Expect(meta.Annotations).To(HaveKeyWithValue(v1.ClusterInstancetypeAnnotation, instancetypeName))
})

It("should add cluster name annotation, if instancetype.kind is empty", func() {
vm.Spec.Instancetype.Kind = ""

annotations.Set(vm, meta)

Expect(meta.Annotations).ToNot(HaveKey(v1.InstancetypeAnnotation))
Expect(meta.Annotations).To(HaveKeyWithValue(v1.ClusterInstancetypeAnnotation, instancetypeName))
})
})
10 changes: 0 additions & 10 deletions pkg/instancetype/instancetype.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,11 @@ import (
instancetypev1beta1 "kubevirt.io/api/instancetype/v1beta1"
"kubevirt.io/client-go/kubecli"

"kubevirt.io/kubevirt/pkg/instancetype/annotations"
"kubevirt.io/kubevirt/pkg/instancetype/apply"
"kubevirt.io/kubevirt/pkg/instancetype/conflict"
"kubevirt.io/kubevirt/pkg/instancetype/expand"
"kubevirt.io/kubevirt/pkg/instancetype/find"
"kubevirt.io/kubevirt/pkg/instancetype/infer"
preferenceAnnotations "kubevirt.io/kubevirt/pkg/instancetype/preference/annotations"
preferenceApply "kubevirt.io/kubevirt/pkg/instancetype/preference/apply"
preferenceFind "kubevirt.io/kubevirt/pkg/instancetype/preference/find"
"kubevirt.io/kubevirt/pkg/instancetype/preference/validation"
Expand Down Expand Up @@ -107,14 +105,6 @@ func (m *InstancetypeMethods) InferDefaultPreference(vm *virtv1.VirtualMachine)
return infer.New(m.Clientset).Preference(vm)
}

func AddInstancetypeNameAnnotations(vm *virtv1.VirtualMachine, target metav1.Object) {
annotations.Set(vm, target)
}

func AddPreferenceNameAnnotations(vm *virtv1.VirtualMachine, target metav1.Object) {
preferenceAnnotations.Set(vm, target)
}

func ApplyDevicePreferences(preferenceSpec *instancetypev1beta1.VirtualMachinePreferenceSpec, vmiSpec *virtv1.VirtualMachineInstanceSpec) {
preferenceApply.ApplyDevicePreferences(preferenceSpec, vmiSpec)
}
Expand Down
79 changes: 0 additions & 79 deletions pkg/instancetype/instancetype_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"kubevirt.io/kubevirt/pkg/testutils"

v1 "kubevirt.io/api/core/v1"
apiinstancetype "kubevirt.io/api/instancetype"
instancetypev1beta1 "kubevirt.io/api/instancetype/v1beta1"
)

Expand Down Expand Up @@ -84,84 +83,6 @@ var _ = Describe("Instancetype and Preferences", func() {
vm.Namespace = k8sv1.NamespaceDefault
})

Context("Add instancetype name annotations", func() {
const instancetypeName = "instancetype-name"

BeforeEach(func() {
vm = kubecli.NewMinimalVM("testvm")
vm.Spec.Instancetype = &v1.InstancetypeMatcher{Name: instancetypeName}
})

It("should add instancetype name annotation", func() {
vm.Spec.Instancetype.Kind = apiinstancetype.SingularResourceName

meta := &metav1.ObjectMeta{}
instancetype.AddInstancetypeNameAnnotations(vm, meta)

Expect(meta.Annotations[v1.InstancetypeAnnotation]).To(Equal(instancetypeName))
Expect(meta.Annotations[v1.ClusterInstancetypeAnnotation]).To(Equal(""))
})

It("should add cluster instancetype name annotation", func() {
vm.Spec.Instancetype.Kind = apiinstancetype.ClusterSingularResourceName

meta := &metav1.ObjectMeta{}
instancetype.AddInstancetypeNameAnnotations(vm, meta)

Expect(meta.Annotations[v1.InstancetypeAnnotation]).To(Equal(""))
Expect(meta.Annotations[v1.ClusterInstancetypeAnnotation]).To(Equal(instancetypeName))
})

It("should add cluster name annotation, if instancetype.kind is empty", func() {
vm.Spec.Instancetype.Kind = ""

meta := &metav1.ObjectMeta{}
instancetype.AddInstancetypeNameAnnotations(vm, meta)

Expect(meta.Annotations[v1.InstancetypeAnnotation]).To(Equal(""))
Expect(meta.Annotations[v1.ClusterInstancetypeAnnotation]).To(Equal(instancetypeName))
})
})

Context("Add preference name annotations", func() {
const preferenceName = "preference-name"

BeforeEach(func() {
vm = kubecli.NewMinimalVM("testvm")
vm.Spec.Preference = &v1.PreferenceMatcher{Name: preferenceName}
})

It("should add preference name annotation", func() {
vm.Spec.Preference.Kind = apiinstancetype.SingularPreferenceResourceName

meta := &metav1.ObjectMeta{}
instancetype.AddPreferenceNameAnnotations(vm, meta)

Expect(meta.Annotations[v1.PreferenceAnnotation]).To(Equal(preferenceName))
Expect(meta.Annotations[v1.ClusterPreferenceAnnotation]).To(Equal(""))
})

It("should add cluster preference name annotation", func() {
vm.Spec.Preference.Kind = apiinstancetype.ClusterSingularPreferenceResourceName

meta := &metav1.ObjectMeta{}
instancetype.AddPreferenceNameAnnotations(vm, meta)

Expect(meta.Annotations[v1.PreferenceAnnotation]).To(Equal(""))
Expect(meta.Annotations[v1.ClusterPreferenceAnnotation]).To(Equal(preferenceName))
})

It("should add cluster name annotation, if preference.kind is empty", func() {
vm.Spec.Preference.Kind = ""

meta := &metav1.ObjectMeta{}
instancetype.AddPreferenceNameAnnotations(vm, meta)

Expect(meta.Annotations[v1.PreferenceAnnotation]).To(Equal(""))
Expect(meta.Annotations[v1.ClusterPreferenceAnnotation]).To(Equal(preferenceName))
})
})

Context("Apply", func() {
var (
instancetypeSpec *instancetypev1beta1.VirtualMachineInstancetypeSpec
Expand Down
19 changes: 18 additions & 1 deletion pkg/instancetype/preference/annotations/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")

go_library(
name = "go_default_library",
Expand All @@ -11,3 +11,20 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
)

go_test(
name = "go_default_test",
srcs = [
"annotations_suite_test.go",
"annotations_test.go",
],
deps = [
":go_default_library",
"//pkg/libvmi:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/api/instancetype:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
)
13 changes: 13 additions & 0 deletions pkg/instancetype/preference/annotations/annotations_suite_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package annotations_test

import (
"testing"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)

func TestAnnotations(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Annotations Suite")
}
55 changes: 55 additions & 0 deletions pkg/instancetype/preference/annotations/annotations_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package annotations_test

import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "kubevirt.io/api/core/v1"
apiinstancetype "kubevirt.io/api/instancetype"

"kubevirt.io/kubevirt/pkg/instancetype/preference/annotations"
"kubevirt.io/kubevirt/pkg/libvmi"
)

var _ = Describe("Preferences - annotations", func() {
var (
vm *v1.VirtualMachine
meta *metav1.ObjectMeta
)

const preferenceName = "preference-name"

BeforeEach(func() {
vm = libvmi.NewVirtualMachine(libvmi.New(), libvmi.WithPreference(preferenceName))

meta = &metav1.ObjectMeta{}
})

It("should add preference name annotation", func() {
vm.Spec.Preference.Kind = apiinstancetype.SingularPreferenceResourceName

annotations.Set(vm, meta)

Expect(meta.Annotations).To(HaveKeyWithValue(v1.PreferenceAnnotation, preferenceName))
Expect(meta.Annotations).ToNot(HaveKey(v1.ClusterPreferenceAnnotation))
})

It("should add cluster preference name annotation", func() {
vm.Spec.Preference.Kind = apiinstancetype.ClusterSingularPreferenceResourceName

annotations.Set(vm, meta)

Expect(meta.Annotations).ToNot(HaveKey(v1.PreferenceAnnotation))
Expect(meta.Annotations).To(HaveKeyWithValue(v1.ClusterPreferenceAnnotation, preferenceName))
})

It("should add cluster name annotation, if preference.kind is empty", func() {
vm.Spec.Preference.Kind = ""

annotations.Set(vm, meta)

Expect(meta.Annotations).ToNot(HaveKey(v1.PreferenceAnnotation))
Expect(meta.Annotations).To(HaveKeyWithValue(v1.ClusterPreferenceAnnotation, preferenceName))
})
})

0 comments on commit 138f4cd

Please sign in to comment.