containerized-data-importer/tests/BUILD.bazel
Arnon Gilboa 221469d062
Add PVC spec mutating webhook rendering based on StorageProfiles (#2813)
* Add PVC mutating webhook using StorageProfiles

The webhook mutates the PVC Spec based on the available StorageProfiles,
so for example you can create PVC without accessModes and it will be
auto-completed.

To use this feature, enable the `WebhookPvcRendering` feature gate.

For any PVC you want to use StorageProfile, label it with:
    cdi.kubevirt.io/useStorageProfile: "true"

If you want to use volumeMode preferred by CDI according to
StorageProfiles, set it to FromStorageProfile. Otherwise if not
explicitly set to Block, it will be Filesystem by k8s default.

E.g.:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-test
  labels:
    cdi.kubevirt.io/useStorageProfile: "true"
spec:
  storageClassName: rook-ceph-block
  volumeMode: FromStorageProfile
  resources:
    requests:
      storage: 1Mi

Signed-off-by: Arnon Gilboa <agilboa@redhat.com>

* Move webhook create/delete to callback

plus some CR fixes and cleanups

Signed-off-by: Arnon Gilboa <agilboa@redhat.com>

* Move webhook CR creation to sit with callbacks

Signed-off-by: Arnon Gilboa <agilboa@redhat.com>

* Update existing webhook if modified

Signed-off-by: Arnon Gilboa <agilboa@redhat.com>

* Eliminate unnecessary CR update

Signed-off-by: Arnon Gilboa <agilboa@redhat.com>

---------

Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
2024-02-12 15:26:28 +01:00

162 lines
6.9 KiB
Python

load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
load("@io_bazel_rules_docker//container:container.bzl", "container_image")
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
go_library(
name = "go_default_library",
srcs = ["imageio-inventory.go"],
importpath = "kubevirt.io/containerized-data-importer/tests",
visibility = ["//visibility:public"],
deps = [
"//tests/framework:go_default_library",
"//tests/utils:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = [
"adopt-volume_test.go",
"api_validation_test.go",
"apiserver_test.go",
"badserver_test.go",
"basic_sanity_test.go",
"cdiconfig_test.go",
"certrotation_test.go",
"clone-populator_test.go",
"cloner_test.go",
"csiclone_test.go",
"dataimportcron_test.go",
"datasource_test.go",
"datavolume_test.go",
"explain_test.go",
"external_population_test.go",
"import_proxy_test.go",
"import_test.go",
"local_volume_test.go",
"monitoring_test.go",
"operator_test.go",
"rbac_test.go",
"smartclone_test.go",
"static-volume_test.go",
"tests_suite_test.go",
"transfer_test.go",
"transport_test.go",
"upgrade_test.go",
"upload_test.go",
"webhook_test.go",
],
embed = [":go_default_library"],
deps = [
"//pkg/client/clientset/versioned:go_default_library",
"//pkg/common:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/clone:go_default_library",
"//pkg/controller/common:go_default_library",
"//pkg/controller/datavolume:go_default_library",
"//pkg/controller/populators:go_default_library",
"//pkg/feature-gates:go_default_library",
"//pkg/image:go_default_library",
"//pkg/operator/resources/utils:go_default_library",
"//pkg/storagecapabilities:go_default_library",
"//pkg/token:go_default_library",
"//pkg/util:go_default_library",
"//pkg/util/cert:go_default_library",
"//pkg/util/naming:go_default_library",
"//staging/src/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1:go_default_library",
"//tests/framework:go_default_library",
"//tests/reporter:go_default_library",
"//tests/utils:go_default_library",
"//vendor/github.com/ghodss/yaml:go_default_library",
"//vendor/github.com/google/uuid:go_default_library",
"//vendor/github.com/kubernetes-csi/external-snapshotter/client/v6/apis/volumesnapshot/v1:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2/reporters:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/github.com/onsi/gomega/types:go_default_library",
"//vendor/github.com/openshift/api/config/v1:go_default_library",
"//vendor/github.com/openshift/api/route/v1:go_default_library",
"//vendor/github.com/openshift/client-go/config/clientset/versioned:go_default_library",
"//vendor/github.com/openshift/client-go/route/clientset/versioned:go_default_library",
"//vendor/github.com/openshift/client-go/security/clientset/versioned:go_default_library",
"//vendor/github.com/openshift/custom-resource-status/conditions/v1:go_default_library",
"//vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1:go_default_library",
"//vendor/k8s.io/api/admissionregistration/v1:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
"//vendor/k8s.io/api/authorization/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/networking/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/scheduling/v1:go_default_library",
"//vendor/k8s.io/api/storage/v1:go_default_library",
"//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/utils/ptr:go_default_library",
"//vendor/kubevirt.io/controller-lifecycle-operator-sdk/api:go_default_library",
"//vendor/kubevirt.io/controller-lifecycle-operator-sdk/pkg/sdk:go_default_library",
"//vendor/kubevirt.io/qe-tools/pkg/ginkgo-reporters:go_default_library",
"//vendor/sigs.k8s.io/controller-runtime/pkg/client:go_default_library",
"//vendor/sigs.k8s.io/controller-runtime/pkg/controller/controllerutil:go_default_library",
"//vendor/sigs.k8s.io/controller-runtime/pkg/log:go_default_library",
],
)
exports_files(
[
"images/tinyCore.iso",
"images/tinyCore.vdi",
"images/archive.tar",
"images/cirros-qcow2.img",
"images/cirros.raw",
"images/cirros-large-virtual-size.raw.xz",
"images/cirros-large-virtual-size.qcow2",
"images/cirros-large-physical-size.raw.xz",
"images/cirros-large-physical-size.qcow2",
"images/invalid_qcow_images/invalid-qcow-large-memory.img",
"images/cirros-snapshot1.qcow2",
"images/cirros-snapshot2.qcow2",
],
)
pkg_tar(
name = "tinycore-tar",
srcs = [":images/tinyCore.iso"],
owner = "107.107",
package_dir = "/disk",
strip_prefix = "/tests/images",
)
container_image(
name = "cdi-func-test-tinycore",
tars = [":tinycore-tar"],
visibility = ["//visibility:public"],
)
pkg_tar(
name = "cirros-qcow2-tar",
srcs = [":images/cirros-qcow2.img"],
owner = "107.107",
package_dir = "/disk",
strip_prefix = "/tests/images",
)
container_image(
name = "cdi-func-test-cirros-qcow2",
tars = [":cirros-qcow2-tar"],
visibility = ["//visibility:public"],
)