Skip to content

Commit 2bbe138

Browse files
authored
Merge pull request #3501 from k8s-infra-cherrypick-robot/cherry-pick-3498-to-release-1.11
[release-1.11] 🐛 StoragePolicy should ignore datastores in maintenance mode
2 parents 1bf30fc + 4b61b08 commit 2bbe138

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"
@@ -239,12 +240,28 @@ func Clone(ctx context.Context, vmCtx *capvcontext.VMContext, bootstrapData []by
239240
if err != nil {
240241
return errors.Wrapf(err, "failed to get owning cluster of resourcepool %q to calculate datastore based on storage policy", pool)
241242
}
242-
dsGetter := object.NewComputeResource(vmCtx.Session.Client.Client, cluster.Reference())
243-
datastores, err := dsGetter.Datastores(ctx)
243+
244+
dsList, err := object.NewComputeResource(vmCtx.Session.Client.Client, cluster.Reference()).Datastores(ctx)
244245
if err != nil {
245246
return errors.Wrapf(err, "unable to list datastores from owning cluster of requested resourcepool")
246247
}
248+
249+
var refs []types.ManagedObjectReference
250+
for i := range dsList {
251+
refs = append(refs, dsList[i].Reference())
252+
}
253+
254+
var datastores []mo.Datastore
255+
if err := property.DefaultCollector(vmCtx.Session.Client.Client).Retrieve(ctx, refs, []string{"summary"}, &datastores); err != nil {
256+
return errors.Wrapf(err, "unable to collect datastore properties to validate maintenance mode")
257+
}
258+
247259
for _, ds := range datastores {
260+
if ds.Summary.MaintenanceMode != string(types.DatastoreSummaryMaintenanceModeStateNormal) {
261+
log.V(4).Info("datastore is in maintenance mode, skipping", "datastore", ds.Summary.Name)
262+
continue
263+
}
264+
248265
hubs = append(hubs, pbmTypes.PbmPlacementHub{
249266
HubType: ds.Reference().Type,
250267
HubId: ds.Reference().Value,

0 commit comments

Comments
 (0)