Skip to content

Commit 3333b08

Browse files
authored
Merge pull request #3498 from rikatz/avoid-datastores-in-maintenance
🐛 StoragePolicy should ignore datastores in maintenance mode
2 parents 9219d2f + fd30c7f commit 3333b08

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

pkg/services/govmomi/vcenter/clone.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/vmware/govmomi/object"
2828
"github.com/vmware/govmomi/pbm"
2929
pbmTypes "github.com/vmware/govmomi/pbm/types"
30+
"github.com/vmware/govmomi/property"
3031
"github.com/vmware/govmomi/vim25/mo"
3132
"github.com/vmware/govmomi/vim25/types"
3233
"k8s.io/utils/ptr"
@@ -254,12 +255,28 @@ func Clone(ctx context.Context, vmCtx *capvcontext.VMContext, bootstrapData []by
254255
if err != nil {
255256
return errors.Wrapf(err, "failed to get owning cluster of resourcepool %q to calculate datastore based on storage policy", pool)
256257
}
257-
dsGetter := object.NewComputeResource(vmCtx.Session.Client.Client, cluster.Reference())
258-
datastores, err := dsGetter.Datastores(ctx)
258+
259+
dsList, err := object.NewComputeResource(vmCtx.Session.Client.Client, cluster.Reference()).Datastores(ctx)
259260
if err != nil {
260261
return errors.Wrapf(err, "unable to list datastores from owning cluster of requested resourcepool")
261262
}
263+
264+
var refs []types.ManagedObjectReference
265+
for i := range dsList {
266+
refs = append(refs, dsList[i].Reference())
267+
}
268+
269+
var datastores []mo.Datastore
270+
if err := property.DefaultCollector(vmCtx.Session.Client.Client).Retrieve(ctx, refs, []string{"summary"}, &datastores); err != nil {
271+
return errors.Wrapf(err, "unable to collect datastore properties to validate maintenance mode")
272+
}
273+
262274
for _, ds := range datastores {
275+
if ds.Summary.MaintenanceMode != string(types.DatastoreSummaryMaintenanceModeStateNormal) {
276+
log.V(4).Info("datastore is in maintenance mode, skipping", "datastore", ds.Summary.Name)
277+
continue
278+
}
279+
263280
hubs = append(hubs, pbmTypes.PbmPlacementHub{
264281
HubType: ds.Reference().Type,
265282
HubId: ds.Reference().Value,

0 commit comments

Comments
 (0)