load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("//bazel/go:go_test.bzl", "go_test")

go_library(
    name = "controllers",
    srcs = [
        "autoscalingstrategy_controller.go",
        "joiningnode_controller.go",
        "nodeversion_controller.go",
        "nodeversion_watches.go",
        "pendingnode_controller.go",
        "scalinggroup_controller.go",
    ],
    importpath = "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator/v2/controllers",
    visibility = ["//visibility:public"],
    deps = [
        "//3rdparty/node-maintenance-operator/api/v1beta1",
        "//internal/constants",
        "//internal/versions/components",
        "//operators/constellation-node-operator/api/v1alpha1",
        "//operators/constellation-node-operator/internal/node",
        "//operators/constellation-node-operator/internal/patch",
        "@io_k8s_api//apps/v1:apps",
        "@io_k8s_api//core/v1:core",
        "@io_k8s_apimachinery//pkg/api/errors",
        "@io_k8s_apimachinery//pkg/api/meta",
        "@io_k8s_apimachinery//pkg/apis/meta/v1:meta",
        "@io_k8s_apimachinery//pkg/fields",
        "@io_k8s_apimachinery//pkg/runtime",
        "@io_k8s_apimachinery//pkg/types",
        "@io_k8s_apimachinery//pkg/version",
        "@io_k8s_client_go//tools/reference",
        "@io_k8s_client_go//util/retry",
        "@io_k8s_sigs_controller_runtime//:controller-runtime",
        "@io_k8s_sigs_controller_runtime//pkg/builder",
        "@io_k8s_sigs_controller_runtime//pkg/client",
        "@io_k8s_sigs_controller_runtime//pkg/event",
        "@io_k8s_sigs_controller_runtime//pkg/handler",
        "@io_k8s_sigs_controller_runtime//pkg/log",
        "@io_k8s_sigs_controller_runtime//pkg/predicate",
        "@io_k8s_sigs_controller_runtime//pkg/reconcile",
        "@io_k8s_utils//clock",
        "@org_golang_x_mod//semver",
    ],
)

go_test(
    name = "controllers_test",
    srcs = [
        "client_test.go",
        "nodeversion_controller_test.go",
        "nodeversion_watches_test.go",
        "pendingnode_controller_test.go",
        "scalinggroup_controller_test.go",
        "schemes_test.go",
    ],
    embed = [":controllers"],
    deps = [
        "//3rdparty/node-maintenance-operator/api/v1beta1",
        "//internal/constants",
        "//operators/constellation-node-operator/api/v1alpha1",
        "@com_github_stretchr_testify//assert",
        "@com_github_stretchr_testify//require",
        "@io_k8s_api//core/v1:core",
        "@io_k8s_apimachinery//pkg/api/errors",
        "@io_k8s_apimachinery//pkg/api/meta",
        "@io_k8s_apimachinery//pkg/apis/meta/v1:meta",
        "@io_k8s_apimachinery//pkg/runtime",
        "@io_k8s_apimachinery//pkg/runtime/schema",
        "@io_k8s_apimachinery//pkg/types",
        "@io_k8s_apimachinery//pkg/version",
        "@io_k8s_client_go//kubernetes/scheme",
        "@io_k8s_sigs_controller_runtime//pkg/client",
        "@io_k8s_sigs_controller_runtime//pkg/event",
        "@io_k8s_sigs_controller_runtime//pkg/reconcile",
    ],
)