Skip to content

Refactor internal/{api,module} #364

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions cmd/manager-hub/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package main
import (
"flag"

"github.com/kubernetes-sigs/kernel-module-management/internal/api"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
Expand All @@ -35,17 +36,14 @@ import (

"github.com/kubernetes-sigs/kernel-module-management/api-hub/v1beta1"
"github.com/kubernetes-sigs/kernel-module-management/controllers/hub"
"github.com/kubernetes-sigs/kernel-module-management/internal/build"
"github.com/kubernetes-sigs/kernel-module-management/internal/build/job"
"github.com/kubernetes-sigs/kernel-module-management/internal/cluster"
"github.com/kubernetes-sigs/kernel-module-management/internal/cmd"
"github.com/kubernetes-sigs/kernel-module-management/internal/constants"
"github.com/kubernetes-sigs/kernel-module-management/internal/filter"
"github.com/kubernetes-sigs/kernel-module-management/internal/manifestwork"
"github.com/kubernetes-sigs/kernel-module-management/internal/metrics"
"github.com/kubernetes-sigs/kernel-module-management/internal/module"
"github.com/kubernetes-sigs/kernel-module-management/internal/registry"
"github.com/kubernetes-sigs/kernel-module-management/internal/sign"
signjob "github.com/kubernetes-sigs/kernel-module-management/internal/sign/job"
"github.com/kubernetes-sigs/kernel-module-management/internal/statusupdater"
"github.com/kubernetes-sigs/kernel-module-management/internal/utils"
Expand Down Expand Up @@ -106,11 +104,10 @@ func main() {

registryAPI := registry.NewRegistry()
jobHelperAPI := utils.NewJobHelper(client)
buildHelper := build.NewHelper()

buildAPI := job.NewBuildManager(
client,
job.NewMaker(client, buildHelper, jobHelperAPI, scheme),
job.NewMaker(client, jobHelperAPI, scheme),
jobHelperAPI,
registryAPI,
)
Expand All @@ -130,7 +127,7 @@ func main() {
mcmr := hub.NewManagedClusterModuleReconciler(
client,
manifestwork.NewCreator(client, scheme),
cluster.NewClusterAPI(client, module.NewKernelMapper(buildHelper, sign.NewSignerHelper()), buildAPI, signAPI, operatorNamespace),
cluster.NewClusterAPI(client, api.NewModuleLoaderDataCreator(), buildAPI, signAPI, operatorNamespace),
statusupdater.NewManagedClusterModuleStatusUpdater(client),
filterAPI,
)
Expand Down
13 changes: 5 additions & 8 deletions cmd/manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"os"
"strconv"

"github.com/kubernetes-sigs/kernel-module-management/internal/api"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
Expand All @@ -37,17 +38,14 @@ import (

v1beta12 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
"github.com/kubernetes-sigs/kernel-module-management/controllers"
"github.com/kubernetes-sigs/kernel-module-management/internal/build"
"github.com/kubernetes-sigs/kernel-module-management/internal/build/job"
"github.com/kubernetes-sigs/kernel-module-management/internal/cmd"
"github.com/kubernetes-sigs/kernel-module-management/internal/constants"
"github.com/kubernetes-sigs/kernel-module-management/internal/daemonset"
"github.com/kubernetes-sigs/kernel-module-management/internal/filter"
"github.com/kubernetes-sigs/kernel-module-management/internal/metrics"
"github.com/kubernetes-sigs/kernel-module-management/internal/module"
"github.com/kubernetes-sigs/kernel-module-management/internal/preflight"
"github.com/kubernetes-sigs/kernel-module-management/internal/registry"
"github.com/kubernetes-sigs/kernel-module-management/internal/sign"
signjob "github.com/kubernetes-sigs/kernel-module-management/internal/sign/job"
"github.com/kubernetes-sigs/kernel-module-management/internal/statusupdater"
"github.com/kubernetes-sigs/kernel-module-management/internal/utils"
Expand Down Expand Up @@ -114,11 +112,10 @@ func main() {

registryAPI := registry.NewRegistry()
jobHelperAPI := utils.NewJobHelper(client)
buildHelperAPI := build.NewHelper()

buildAPI := job.NewBuildManager(
client,
job.NewMaker(client, buildHelperAPI, jobHelperAPI, scheme),
job.NewMaker(client, jobHelperAPI, scheme),
jobHelperAPI,
registryAPI,
)
Expand All @@ -131,14 +128,14 @@ func main() {
)

daemonAPI := daemonset.NewCreator(client, constants.KernelLabel, scheme)
kernelAPI := module.NewKernelMapper(buildHelperAPI, sign.NewSignerHelper())
mldCreator := api.NewModuleLoaderDataCreator()

mc := controllers.NewModuleReconciler(
client,
buildAPI,
signAPI,
daemonAPI,
kernelAPI,
mldCreator,
metricsAPI,
filterAPI,
statusupdater.NewModuleStatusUpdater(client),
Expand All @@ -164,7 +161,7 @@ func main() {
}

preflightStatusUpdaterAPI := statusupdater.NewPreflightStatusUpdater(client)
preflightAPI := preflight.NewPreflightAPI(client, buildAPI, signAPI, registryAPI, preflightStatusUpdaterAPI, kernelAPI)
preflightAPI := preflight.NewPreflightAPI(client, buildAPI, signAPI, registryAPI, preflightStatusUpdaterAPI, mldCreator)

if err = controllers.NewPreflightValidationReconciler(client, filterAPI, metricsAPI, preflightStatusUpdaterAPI, preflightAPI).SetupWithManager(mgr); err != nil {
cmd.FatalError(setupLogger, err, "unable to create controller", "name", controllers.PreflightValidationReconcilerName)
Expand Down
20 changes: 9 additions & 11 deletions controllers/module_reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import (
"github.com/kubernetes-sigs/kernel-module-management/internal/daemonset"
"github.com/kubernetes-sigs/kernel-module-management/internal/filter"
"github.com/kubernetes-sigs/kernel-module-management/internal/metrics"
"github.com/kubernetes-sigs/kernel-module-management/internal/module"
"github.com/kubernetes-sigs/kernel-module-management/internal/sign"
"github.com/kubernetes-sigs/kernel-module-management/internal/statusupdater"
"github.com/kubernetes-sigs/kernel-module-management/internal/utils"
Expand Down Expand Up @@ -66,13 +65,13 @@ func NewModuleReconciler(
buildAPI build.Manager,
signAPI sign.SignManager,
daemonAPI daemonset.DaemonSetCreator,
kernelAPI module.KernelMapper,
mldCreator api.ModuleLoaderDataCreator,
metricsAPI metrics.Metrics,
filter *filter.Filter,
statusUpdaterAPI statusupdater.ModuleStatusUpdater,
operatorNamespace string,
) *ModuleReconciler {
reconHelperAPI := newModuleReconcilerHelper(client, buildAPI, signAPI, daemonAPI, kernelAPI, metricsAPI)
reconHelperAPI := newModuleReconcilerHelper(client, buildAPI, signAPI, daemonAPI, mldCreator, metricsAPI)
return &ModuleReconciler{
daemonAPI: daemonAPI,
reconHelperAPI: reconHelperAPI,
Expand Down Expand Up @@ -200,22 +199,22 @@ type moduleReconcilerHelper struct {
buildAPI build.Manager
signAPI sign.SignManager
daemonAPI daemonset.DaemonSetCreator
kernelAPI module.KernelMapper
mldCreator api.ModuleLoaderDataCreator
metricsAPI metrics.Metrics
}

func newModuleReconcilerHelper(client client.Client,
buildAPI build.Manager,
signAPI sign.SignManager,
daemonAPI daemonset.DaemonSetCreator,
kernelAPI module.KernelMapper,
mldCreator api.ModuleLoaderDataCreator,
metricsAPI metrics.Metrics) moduleReconcilerHelperAPI {
return &moduleReconcilerHelper{
client: client,
buildAPI: buildAPI,
signAPI: signAPI,
daemonAPI: daemonAPI,
kernelAPI: kernelAPI,
mldCreator: mldCreator,
metricsAPI: metricsAPI,
}
}
Expand Down Expand Up @@ -243,7 +242,7 @@ func (mrh *moduleReconcilerHelper) getRelevantKernelMappingsAndNodes(ctx context
continue
}

mld, err := mrh.kernelAPI.GetModuleLoaderDataForKernel(mod, kernelVersion)
mld, err := mrh.mldCreator.FromModule(mod, kernelVersion)
if err != nil {
nodeLogger.Error(err, "failed to get and process kernel mapping")
continue
Expand Down Expand Up @@ -320,10 +319,9 @@ func (mrh *moduleReconcilerHelper) handleSigning(ctx context.Context, mld *api.M
return true, nil
}

// if we need to sign AND we've built, then we must have built the intermediate image so must figure out its name
previousImage := ""
if module.ShouldBeBuilt(mld) {
previousImage = module.IntermediateImageName(mld.Name, mld.Namespace, mld.ContainerImage)
previousImage, err := mld.UnsignedImage()
if err != nil {
return false, fmt.Errorf("could not determine the unsigned image: %v", err)
}

logger := log.FromContext(ctx).WithValues("kernel version", mld.KernelVersion, "image", mld.ContainerImage)
Expand Down
19 changes: 9 additions & 10 deletions controllers/module_reconciler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/kubernetes-sigs/kernel-module-management/internal/client"
"github.com/kubernetes-sigs/kernel-module-management/internal/daemonset"
"github.com/kubernetes-sigs/kernel-module-management/internal/metrics"
"github.com/kubernetes-sigs/kernel-module-management/internal/module"
"github.com/kubernetes-sigs/kernel-module-management/internal/sign"
"github.com/kubernetes-sigs/kernel-module-management/internal/statusupdater"
"github.com/kubernetes-sigs/kernel-module-management/internal/utils"
Expand Down Expand Up @@ -286,15 +285,15 @@ var _ = Describe("ModuleReconciler_getNodesListBySelector", func() {

var _ = Describe("ModuleReconciler_getRelevantKernelMappingsAndNodes", func() {
var (
ctrl *gomock.Controller
mockKM *module.MockKernelMapper
mhr moduleReconcilerHelperAPI
ctrl *gomock.Controller
mockMLDCreator *api.MockModuleLoaderDataCreator
mhr moduleReconcilerHelperAPI
)

BeforeEach(func() {
ctrl = gomock.NewController(GinkgoT())
mockKM = module.NewMockKernelMapper(ctrl)
mhr = newModuleReconcilerHelper(nil, nil, nil, nil, mockKM, nil)
mockMLDCreator = api.NewMockModuleLoaderDataCreator(ctrl)
mhr = newModuleReconcilerHelper(nil, nil, nil, nil, mockMLDCreator, nil)
})

node1 := v1.Node{
Expand Down Expand Up @@ -327,8 +326,8 @@ var _ = Describe("ModuleReconciler_getRelevantKernelMappingsAndNodes", func() {
expectedNodes := []v1.Node{node1, node2, node3}
expectedMappings := map[string]*api.ModuleLoaderData{"kernelVersion1": &mld1, "kernelVersion2": &mld2}
gomock.InOrder(
mockKM.EXPECT().GetModuleLoaderDataForKernel(&kmmv1beta1.Module{}, node1.Status.NodeInfo.KernelVersion).Return(&mld1, nil),
mockKM.EXPECT().GetModuleLoaderDataForKernel(&kmmv1beta1.Module{}, node2.Status.NodeInfo.KernelVersion).Return(&mld2, nil),
mockMLDCreator.EXPECT().FromModule(&kmmv1beta1.Module{}, node1.Status.NodeInfo.KernelVersion).Return(&mld1, nil),
mockMLDCreator.EXPECT().FromModule(&kmmv1beta1.Module{}, node2.Status.NodeInfo.KernelVersion).Return(&mld2, nil),
)

mappings, resNodes, err := mhr.getRelevantKernelMappingsAndNodes(context.Background(), &kmmv1beta1.Module{}, nodes)
Expand All @@ -344,8 +343,8 @@ var _ = Describe("ModuleReconciler_getRelevantKernelMappingsAndNodes", func() {
expectedNodes := []v1.Node{node1, node3}
expectedMappings := map[string]*api.ModuleLoaderData{"kernelVersion1": &mld1}
gomock.InOrder(
mockKM.EXPECT().GetModuleLoaderDataForKernel(&kmmv1beta1.Module{}, node1.Status.NodeInfo.KernelVersion).Return(&mld1, nil),
mockKM.EXPECT().GetModuleLoaderDataForKernel(&kmmv1beta1.Module{}, node2.Status.NodeInfo.KernelVersion).Return(nil, fmt.Errorf("some error")),
mockMLDCreator.EXPECT().FromModule(&kmmv1beta1.Module{}, node1.Status.NodeInfo.KernelVersion).Return(&mld1, nil),
mockMLDCreator.EXPECT().FromModule(&kmmv1beta1.Module{}, node2.Status.NodeInfo.KernelVersion).Return(nil, fmt.Errorf("some error")),
)

mappings, resNodes, err := mhr.getRelevantKernelMappingsAndNodes(context.Background(), &kmmv1beta1.Module{}, nodes)
Expand Down
3 changes: 1 addition & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.19
require (
github.com/a8m/envsubst v1.4.2
github.com/go-logr/logr v1.2.4
github.com/go-openapi/swag v0.22.3
github.com/golang/mock v1.6.0
github.com/google/go-cmp v0.5.9
github.com/google/go-containerregistry v0.14.0
Expand All @@ -13,7 +14,6 @@ require (
github.com/onsi/ginkgo/v2 v2.9.2
github.com/onsi/gomega v1.27.6
github.com/prometheus/client_golang v1.15.0
golang.org/x/exp v0.0.0-20220407100705-7b9b53b0aca4
k8s.io/api v0.26.3
k8s.io/apimachinery v0.27.1
k8s.io/client-go v0.26.3
Expand All @@ -38,7 +38,6 @@ require (
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.22.3 // indirect
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,6 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20220407100705-7b9b53b0aca4 h1:K3x+yU+fbot38x5bQbU2QqUAVyYLEktdNH2GxZLnM3U=
golang.org/x/exp v0.0.0-20220407100705-7b9b53b0aca4/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
Expand Down
Loading