From 96735152773b2172bf0351190a60195d48df9513 Mon Sep 17 00:00:00 2001 From: Jan Jansen Date: Wed, 20 Oct 2021 11:37:33 +0200 Subject: [PATCH] Assign datacenter only if specified Signed-off-by: Jan Jansen --- ...redeploymentzone_controller_domain_test.go | 23 +++++++----- pkg/services/govmomi/create_test.go | 3 +- pkg/services/govmomi/vcenter/clone_test.go | 3 +- pkg/session/session.go | 35 +++++++++++++------ 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/controllers/vspheredeploymentzone_controller_domain_test.go b/controllers/vspheredeploymentzone_controller_domain_test.go index 63349df30e..5525b6e305 100644 --- a/controllers/vspheredeploymentzone_controller_domain_test.go +++ b/controllers/vspheredeploymentzone_controller_domain_test.go @@ -33,6 +33,10 @@ import ( "sigs.k8s.io/cluster-api-provider-vsphere/test/helpers" ) +const ( + defaultDatacenter string = "DC0" +) + func TestVsphereDeploymentZoneReconciler_Reconcile_VerifyFailureDomain(t *testing.T) { t.Run("for Compute Cluster Zone Failure Domain", ForComputeClusterZone) t.Run("for Host Group Zone Failure Domain", ForHostGroupZone) @@ -66,7 +70,8 @@ func ForComputeClusterZone(t *testing.T) { params := session.NewParams(). WithServer(simr.ServerURL().Host). - WithUserInfo(simr.Username(), simr.Password()) + WithUserInfo(simr.Username(), simr.Password()). + WithDatacenter(defaultDatacenter) authSession, err := session.GetOrCreate(controllerCtx, params) g.Expect(err).NotTo(HaveOccurred()) @@ -85,7 +90,7 @@ func ForComputeClusterZone(t *testing.T) { AutoConfigure: nil, }, Topology: infrav1.Topology{ - Datacenter: "DC0", + Datacenter: defaultDatacenter, ComputeCluster: pointer.String("DC0_C0"), }, }, @@ -146,7 +151,8 @@ func ForHostGroupZone(t *testing.T) { params := session.NewParams(). WithServer(simr.ServerURL().Host). - WithUserInfo(simr.Username(), simr.Password()) + WithUserInfo(simr.Username(), simr.Password()). + WithDatacenter(defaultDatacenter) authSession, err := session.GetOrCreate(controllerCtx, params) g.Expect(err).NotTo(HaveOccurred()) @@ -165,7 +171,7 @@ func ForHostGroupZone(t *testing.T) { AutoConfigure: nil, }, Topology: infrav1.Topology{ - Datacenter: "DC0", + Datacenter: defaultDatacenter, ComputeCluster: pointer.String("DC0_C0"), Hosts: &infrav1.FailureDomainHosts{ HostGroupName: "test_grp_1", @@ -217,7 +223,8 @@ func TestVsphereDeploymentZoneReconciler_Reconcile_CreateAndAttachMetadata(t *te controllerCtx := fake.NewControllerContext(mgmtContext) params := session.NewParams(). WithServer(simr.ServerURL().Host). - WithUserInfo(simr.Username(), simr.Password()) + WithUserInfo(simr.Username(), simr.Password()). + WithDatacenter(defaultDatacenter) authSession, err := session.GetOrCreate(controllerCtx, params) NewWithT(t).Expect(err).NotTo(HaveOccurred()) @@ -237,7 +244,7 @@ func TestVsphereDeploymentZoneReconciler_Reconcile_CreateAndAttachMetadata(t *te AutoConfigure: nil, }, Topology: infrav1.Topology{ - Datacenter: "DC0", + Datacenter: defaultDatacenter, ComputeCluster: nil, }, }, @@ -252,7 +259,7 @@ func TestVsphereDeploymentZoneReconciler_Reconcile_CreateAndAttachMetadata(t *te AutoConfigure: nil, }, Topology: infrav1.Topology{ - Datacenter: "DC0", + Datacenter: defaultDatacenter, ComputeCluster: pointer.String("DC0_C0"), }, }, @@ -267,7 +274,7 @@ func TestVsphereDeploymentZoneReconciler_Reconcile_CreateAndAttachMetadata(t *te AutoConfigure: pointer.Bool(true), }, Topology: infrav1.Topology{ - Datacenter: "DC0", + Datacenter: defaultDatacenter, ComputeCluster: pointer.String("DC0_C0"), Hosts: &infrav1.FailureDomainHosts{ HostGroupName: "group-one", diff --git a/pkg/services/govmomi/create_test.go b/pkg/services/govmomi/create_test.go index e45341e9c8..7a34d49477 100644 --- a/pkg/services/govmomi/create_test.go +++ b/pkg/services/govmomi/create_test.go @@ -45,7 +45,8 @@ func TestCreate(t *testing.T) { vmContext.Context, session.NewParams(). WithServer(vmContext.VSphereVM.Spec.Server). - WithUserInfo(simr.Username(), simr.Password())) + WithUserInfo(simr.Username(), simr.Password()). + WithDefaultDatacenter()) if err != nil { t.Fatal(err) } diff --git a/pkg/services/govmomi/vcenter/clone_test.go b/pkg/services/govmomi/vcenter/clone_test.go index da3afab18c..ba04369147 100644 --- a/pkg/services/govmomi/vcenter/clone_test.go +++ b/pkg/services/govmomi/vcenter/clone_test.go @@ -149,7 +149,8 @@ func initSimulator(t *testing.T) (*simulator.Model, *session.Session, *simulator ctx.TODO(), session.NewParams(). WithServer(server.URL.Host). - WithUserInfo(server.URL.User.Username(), pass)) + WithUserInfo(server.URL.User.Username(), pass). + WithDefaultDatacenter()) if err != nil { t.Fatal(err) } diff --git a/pkg/session/session.go b/pkg/session/session.go index e91997704a..155477618e 100644 --- a/pkg/session/session.go +++ b/pkg/session/session.go @@ -62,11 +62,12 @@ func DefaultFeature() Feature { } type Params struct { - server string - datacenter string - userinfo *url.Userinfo - thumbprint string - feature Feature + server string + datacenter string + tryDefaultDatacenter bool + userinfo *url.Userinfo + thumbprint string + feature Feature } func NewParams() *Params { @@ -85,6 +86,11 @@ func (p *Params) WithDatacenter(datacenter string) *Params { return p } +func (p *Params) WithDefaultDatacenter() *Params { + p.tryDefaultDatacenter = true + return p +} + func (p *Params) WithUserInfo(username, password string) *Params { p.userinfo = url.UserPassword(username, password) return p @@ -150,12 +156,21 @@ func GetOrCreate(ctx context.Context, params *Params) (*Session, error) { session.TagManager = manager // Assign the datacenter if one was specified. - dc, err := session.Finder.DatacenterOrDefault(ctx, params.datacenter) - if err != nil { - return nil, errors.Wrapf(err, "unable to find datacenter %q", params.datacenter) + if params.datacenter != "" { + dc, err := session.Finder.Datacenter(ctx, params.datacenter) + if err != nil { + return nil, errors.Wrapf(err, "unable to find datacenter %q", params.datacenter) + } + session.datacenter = dc + session.Finder.SetDatacenter(dc) + } else if params.tryDefaultDatacenter { + dc, err := session.Finder.DefaultDatacenter(ctx) + if err != nil { + return nil, errors.Wrapf(err, "unable to find default datacenter %q", params.datacenter) + } + session.datacenter = dc + session.Finder.SetDatacenter(dc) } - session.datacenter = dc - session.Finder.SetDatacenter(dc) // Cache the session. sessionCache[sessionKey] = session