Skip to content

Commit f4257d2

Browse files
committed
Do not use os.Getenv or pkg/lib for config
This patch removes the usage of both os.Getenv and pkg/lib from throughout the codebase as a means to configure VM Operator. This method was fragile and resulted in a serial test design. The new package pkg/config is used to define the VM Operator configuration as well as store/retrieve the config from a Go context.
1 parent 6577803 commit f4257d2

File tree

179 files changed

+2093
-1591
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+2093
-1591
lines changed

.golangci.yml

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ linters-settings:
2121
alias: corev1
2222
- pkg: github.com/vmware-tanzu/vm-operator/api/v1alpha1
2323
alias: vmopv1
24+
- pkg: "github.com/vmware-tanzu/vm-operator/pkg/config"
25+
alias: pkgconfig
2426

2527
linters:
2628
disable-all: true

controllers/contentlibrary/controllers.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import (
88

99
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1"
1010
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha2"
11+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
1112
"github.com/vmware-tanzu/vm-operator/pkg/context"
12-
"github.com/vmware-tanzu/vm-operator/pkg/lib"
1313
)
1414

1515
// AddToManager adds the controller to the provided manager.
1616
func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) error {
17-
if lib.IsVMServiceV1Alpha2FSSEnabled() {
17+
if pkgconfig.FromContext(ctx).Features.VMOpV1Alpha2 {
1818
return v1alpha2.AddToManager(ctx, mgr)
1919
}
2020
return v1alpha1.AddToManager(ctx, mgr)

controllers/contentlibrary/v1alpha1/clustercontentlibraryitem/clustercontentlibraryitem_controller.go

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
vmopv1 "github.com/vmware-tanzu/vm-operator/api/v1alpha1"
2525
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1/utils"
2626
"github.com/vmware-tanzu/vm-operator/pkg/conditions"
27+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
2728
"github.com/vmware-tanzu/vm-operator/pkg/context"
2829
"github.com/vmware-tanzu/vm-operator/pkg/metrics"
2930
"github.com/vmware-tanzu/vm-operator/pkg/record"
@@ -41,6 +42,7 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
4142
)
4243

4344
r := NewReconciler(
45+
ctx,
4446
mgr.GetClient(),
4547
ctrl.Log.WithName("controllers").WithName(cclItemTypeName),
4648
record.New(mgr.GetEventRecorderFor(controllerNameLong)),
@@ -56,12 +58,14 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
5658
}
5759

5860
func NewReconciler(
61+
ctx goctx.Context,
5962
client client.Client,
6063
logger logr.Logger,
6164
recorder record.Recorder,
6265
vmProvider vmprovider.VirtualMachineProviderInterface) *Reconciler {
6366

6467
return &Reconciler{
68+
Context: ctx,
6569
Client: client,
6670
Logger: logger,
6771
Recorder: recorder,
@@ -74,6 +78,7 @@ func NewReconciler(
7478
// by creating/updating the corresponding VM-Service's ClusterVirtualMachineImage resource.
7579
type Reconciler struct {
7680
client.Client
81+
Context goctx.Context
7782
Logger logr.Logger
7883
Recorder record.Recorder
7984
VMProvider vmprovider.VirtualMachineProviderInterface
@@ -86,6 +91,8 @@ type Reconciler struct {
8691
// +kubebuilder:rbac:groups=vmoperator.vmware.com,resources=clustervirtualmachineimages/status,verbs=get;update;patch
8792

8893
func (r *Reconciler) Reconcile(ctx goctx.Context, req ctrl.Request) (_ ctrl.Result, reterr error) {
94+
ctx = pkgconfig.JoinContext(ctx, r.Context)
95+
8996
logger := r.Logger.WithValues("cclItemName", req.Name)
9097
logger.Info("Reconciling ClusterContentLibraryItem")
9198

controllers/contentlibrary/v1alpha1/clustercontentlibraryitem/clustercontentlibraryitem_controller_unit_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func unitTestsReconcile() {
5252
JustBeforeEach(func() {
5353
ctx = suite.NewUnitTestContextForController(initObjects...)
5454
reconciler = clustercontentlibraryitem.NewReconciler(
55+
ctx,
5556
ctx.Client,
5657
ctx.Logger,
5758
ctx.Recorder,

controllers/contentlibrary/v1alpha1/contentlibraryitem/contentlibraryitem_controller.go

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
vmopv1 "github.com/vmware-tanzu/vm-operator/api/v1alpha1"
2525
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1/utils"
2626
"github.com/vmware-tanzu/vm-operator/pkg/conditions"
27+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
2728
"github.com/vmware-tanzu/vm-operator/pkg/context"
2829
"github.com/vmware-tanzu/vm-operator/pkg/metrics"
2930
"github.com/vmware-tanzu/vm-operator/pkg/record"
@@ -41,6 +42,7 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
4142
)
4243

4344
r := NewReconciler(
45+
ctx,
4446
mgr.GetClient(),
4547
ctrl.Log.WithName("controllers").WithName(clItemTypeName),
4648
record.New(mgr.GetEventRecorderFor(controllerNameLong)),
@@ -56,12 +58,14 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
5658
}
5759

5860
func NewReconciler(
61+
ctx goctx.Context,
5962
client client.Client,
6063
logger logr.Logger,
6164
recorder record.Recorder,
6265
vmProvider vmprovider.VirtualMachineProviderInterface) *Reconciler {
6366

6467
return &Reconciler{
68+
Context: ctx,
6569
Client: client,
6670
Logger: logger,
6771
Recorder: recorder,
@@ -74,6 +78,7 @@ func NewReconciler(
7478
// by creating/updating the corresponding VM-Service's VirtualMachineImage resource.
7579
type Reconciler struct {
7680
client.Client
81+
Context goctx.Context
7782
Logger logr.Logger
7883
Recorder record.Recorder
7984
VMProvider vmprovider.VirtualMachineProviderInterface
@@ -86,6 +91,8 @@ type Reconciler struct {
8691
// +kubebuilder:rbac:groups=vmoperator.vmware.com,resources=virtualmachineimages/status,verbs=get;update;patch
8792

8893
func (r *Reconciler) Reconcile(ctx goctx.Context, req ctrl.Request) (_ ctrl.Result, reterr error) {
94+
ctx = pkgconfig.JoinContext(ctx, r.Context)
95+
8996
logger := r.Logger.WithValues("clItemName", req.Name, "namespace", req.Namespace)
9097
logger.Info("Reconciling ContentLibraryItem")
9198

controllers/contentlibrary/v1alpha1/contentlibraryitem/contentlibraryitem_controller_suite_test.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,27 @@ import (
1010
ctrlmgr "sigs.k8s.io/controller-runtime/pkg/manager"
1111

1212
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1/contentlibraryitem"
13+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
1314
ctrlContext "github.com/vmware-tanzu/vm-operator/pkg/context"
14-
"github.com/vmware-tanzu/vm-operator/pkg/lib"
1515
providerfake "github.com/vmware-tanzu/vm-operator/pkg/vmprovider/fake"
1616
"github.com/vmware-tanzu/vm-operator/test/builder"
1717
)
1818

1919
var intgFakeVMProvider = providerfake.NewVMProvider()
2020

21-
var suite = builder.NewTestSuiteForControllerWithFSS(
21+
var suite = builder.NewTestSuiteForControllerWithContext(
22+
pkgconfig.SetContext(
23+
pkgconfig.NewContextWithDefaultConfig(),
24+
func(in pkgconfig.Config) (out pkgconfig.Config) {
25+
out = in
26+
out.Features.ImageRegistry = true
27+
return
28+
}),
2229
contentlibraryitem.AddToManager,
2330
func(ctx *ctrlContext.ControllerManagerContext, _ ctrlmgr.Manager) error {
2431
ctx.VMProvider = intgFakeVMProvider
2532
return nil
2633
},
27-
map[string]bool{lib.VMImageRegistryFSS: true},
2834
)
2935

3036
func TestContentLibraryItem(t *testing.T) {

controllers/contentlibrary/v1alpha1/contentlibraryitem/contentlibraryitem_controller_unit_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func unitTestsReconcile() {
5252
JustBeforeEach(func() {
5353
ctx = suite.NewUnitTestContextForController(initObjects...)
5454
reconciler = contentlibraryitem.NewReconciler(
55+
ctx,
5556
ctx.Client,
5657
ctx.Logger,
5758
ctx.Recorder,

controllers/contentlibrary/v1alpha1/contentsource/contentsource_controller.go

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424

2525
vmopv1 "github.com/vmware-tanzu/vm-operator/api/v1alpha1"
2626

27+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
2728
"github.com/vmware-tanzu/vm-operator/pkg/context"
2829
"github.com/vmware-tanzu/vm-operator/pkg/metrics"
2930
"github.com/vmware-tanzu/vm-operator/pkg/record"
@@ -45,6 +46,7 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
4546
)
4647

4748
r := NewReconciler(
49+
ctx,
4850
mgr.GetClient(),
4951
ctrl.Log.WithName("controllers").WithName(controlledTypeName),
5052
record.New(mgr.GetEventRecorderFor(controllerNameLong)),
@@ -59,11 +61,13 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
5961
}
6062

6163
func NewReconciler(
64+
ctx goctx.Context,
6265
client client.Client,
6366
logger logr.Logger,
6467
recorder record.Recorder,
6568
vmProvider vmprovider.VirtualMachineProviderInterface) *Reconciler {
6669
return &Reconciler{
70+
Context: ctx,
6771
Client: client,
6872
Logger: logger,
6973
Recorder: recorder,
@@ -75,6 +79,7 @@ func NewReconciler(
7579
// Reconciler reconciles a ContentSource object.
7680
type Reconciler struct {
7781
client.Client
82+
Context goctx.Context
7883
Logger logr.Logger
7984
Recorder record.Recorder
8085
VMProvider vmprovider.VirtualMachineProviderInterface
@@ -441,6 +446,8 @@ func (r *Reconciler) ReconcileDelete(ctx goctx.Context, contentSource *vmopv1.Co
441446
// +kubebuilder:rbac:groups=vmoperator.vmware.com,resources=virtualmachineimages/status,verbs=get;update;patch
442447

443448
func (r *Reconciler) Reconcile(ctx goctx.Context, request ctrl.Request) (ctrl.Result, error) {
449+
ctx = pkgconfig.JoinContext(ctx, r.Context)
450+
444451
r.Logger.Info("Received reconcile request", "name", request.Name)
445452

446453
instance := &vmopv1.ContentSource{}

controllers/contentlibrary/v1alpha1/contentsource/contentsource_controller_suite_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@ import (
1010
ctrlmgr "sigs.k8s.io/controller-runtime/pkg/manager"
1111

1212
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1/contentsource"
13+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
1314
ctrlContext "github.com/vmware-tanzu/vm-operator/pkg/context"
14-
"github.com/vmware-tanzu/vm-operator/pkg/lib"
1515
providerfake "github.com/vmware-tanzu/vm-operator/pkg/vmprovider/fake"
1616
"github.com/vmware-tanzu/vm-operator/test/builder"
1717
)
1818

1919
var intgFakeVMProvider = providerfake.NewVMProvider()
2020

21-
var suite = builder.NewTestSuiteForControllerWithFSS(
21+
var suite = builder.NewTestSuiteForControllerWithContext(
22+
pkgconfig.WithConfig(pkgconfig.Config{Features: pkgconfig.FeatureStates{ImageRegistry: false}}),
2223
contentsource.AddToManager,
2324
func(ctx *ctrlContext.ControllerManagerContext, _ ctrlmgr.Manager) error {
2425
ctx.VMProvider = intgFakeVMProvider
2526
return nil
2627
},
27-
map[string]bool{lib.VMImageRegistryFSS: false},
2828
)
2929

3030
func TestContentSource(t *testing.T) {

controllers/contentlibrary/v1alpha1/contentsource/contentsource_controller_unit_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ func reconcileProviderRef() {
6262
JustBeforeEach(func() {
6363
ctx = suite.NewUnitTestContextForController(initObjects...)
6464
reconciler = contentsource.NewReconciler(
65+
ctx,
6566
ctx.Client,
6667
ctx.Logger,
6768
ctx.Recorder,
@@ -193,6 +194,7 @@ func unitTestsCRUDImage() {
193194
JustBeforeEach(func() {
194195
ctx = suite.NewUnitTestContextForController(initObjects...)
195196
reconciler = contentsource.NewReconciler(
197+
ctx,
196198
ctx.Client,
197199
ctx.Logger,
198200
ctx.Recorder,

controllers/contentlibrary/v1alpha1/controllers.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import (
1010
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1/clustercontentlibraryitem"
1111
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1/contentlibraryitem"
1212
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha1/contentsource"
13+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
1314
"github.com/vmware-tanzu/vm-operator/pkg/context"
14-
"github.com/vmware-tanzu/vm-operator/pkg/lib"
1515
)
1616

1717
// AddToManager adds the controllers to the provided manager.
1818
func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) error {
19-
if lib.IsWCPVMImageRegistryEnabled() {
19+
if pkgconfig.FromContext(ctx).Features.ImageRegistry {
2020
if err := clustercontentlibraryitem.AddToManager(ctx, mgr); err != nil {
2121
return errors.Wrap(err, "failed to initialize ClusterContentLibraryItem controller")
2222
}

controllers/contentlibrary/v1alpha2/clustercontentlibraryitem/clustercontentlibraryitem_controller.go

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/vmware-tanzu/vm-operator/api/v1alpha2/common"
2525
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha2/utils"
2626
conditions "github.com/vmware-tanzu/vm-operator/pkg/conditions2"
27+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
2728
"github.com/vmware-tanzu/vm-operator/pkg/context"
2829
metrics "github.com/vmware-tanzu/vm-operator/pkg/metrics2"
2930
"github.com/vmware-tanzu/vm-operator/pkg/record"
@@ -41,6 +42,7 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
4142
)
4243

4344
r := NewReconciler(
45+
ctx,
4446
mgr.GetClient(),
4547
ctrl.Log.WithName("controllers").WithName(cclItemTypeName),
4648
record.New(mgr.GetEventRecorderFor(controllerNameLong)),
@@ -56,12 +58,14 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
5658
}
5759

5860
func NewReconciler(
61+
ctx goctx.Context,
5962
client client.Client,
6063
logger logr.Logger,
6164
recorder record.Recorder,
6265
vmProvider vmprovider.VirtualMachineProviderInterfaceA2) *Reconciler {
6366

6467
return &Reconciler{
68+
Context: ctx,
6569
Client: client,
6670
Logger: logger,
6771
Recorder: recorder,
@@ -74,6 +78,7 @@ func NewReconciler(
7478
// by creating/updating the corresponding VM-Service's ClusterVirtualMachineImage resource.
7579
type Reconciler struct {
7680
client.Client
81+
Context goctx.Context
7782
Logger logr.Logger
7883
Recorder record.Recorder
7984
VMProvider vmprovider.VirtualMachineProviderInterfaceA2
@@ -86,6 +91,8 @@ type Reconciler struct {
8691
// +kubebuilder:rbac:groups=vmoperator.vmware.com,resources=clustervirtualmachineimages/status,verbs=get;update;patch
8792

8893
func (r *Reconciler) Reconcile(ctx goctx.Context, req ctrl.Request) (_ ctrl.Result, reterr error) {
94+
ctx = pkgconfig.JoinContext(ctx, r.Context)
95+
8996
logger := r.Logger.WithValues("cclItemName", req.Name)
9097
logger.Info("Reconciling ClusterContentLibraryItem")
9198

controllers/contentlibrary/v1alpha2/clustercontentlibraryitem/clustercontentlibraryitem_controller_suite_test.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,27 @@ import (
1111
ctrlmgr "sigs.k8s.io/controller-runtime/pkg/manager"
1212

1313
"github.com/vmware-tanzu/vm-operator/controllers/contentlibrary/v1alpha2/clustercontentlibraryitem"
14+
pkgconfig "github.com/vmware-tanzu/vm-operator/pkg/config"
1415
ctrlContext "github.com/vmware-tanzu/vm-operator/pkg/context"
15-
"github.com/vmware-tanzu/vm-operator/pkg/lib"
1616
providerfake "github.com/vmware-tanzu/vm-operator/pkg/vmprovider/fake"
1717
"github.com/vmware-tanzu/vm-operator/test/builder"
1818
)
1919

2020
var intgFakeVMProvider = providerfake.NewVMProviderA2()
2121

22-
var suite = builder.NewTestSuiteForControllerWithFSS(
22+
var suite = builder.NewTestSuiteForControllerWithContext(
23+
pkgconfig.SetContext(
24+
pkgconfig.NewContextWithDefaultConfig(),
25+
func(in pkgconfig.Config) (out pkgconfig.Config) {
26+
out = in
27+
out.Features.VMOpV1Alpha2 = true
28+
return
29+
}),
2330
clustercontentlibraryitem.AddToManager,
2431
func(ctx *ctrlContext.ControllerManagerContext, _ ctrlmgr.Manager) error {
2532
ctx.VMProviderA2 = intgFakeVMProvider
2633
return nil
27-
},
28-
map[string]bool{lib.VMServiceV1Alpha2FSS: true})
34+
})
2935

3036
func TestClusterContentLibraryItem(t *testing.T) {
3137
suite.Register(t, "ClusterContentLibraryItem controller suite", intgTests, unitTests)

controllers/contentlibrary/v1alpha2/clustercontentlibraryitem/clustercontentlibraryitem_controller_unit_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ func unitTestsReconcile() {
4848
ctx = suite.NewUnitTestContextForController()
4949

5050
reconciler = clustercontentlibraryitem.NewReconciler(
51+
ctx,
5152
ctx.Client,
5253
ctx.Logger,
5354
ctx.Recorder,

0 commit comments

Comments
 (0)