VMware Cloud Community
JeremySW
Contributor
Contributor
Jump to solution

Setting vSphere HA heartbeat datastore to "Automatically select datastores" ("AllFeasibleDs")?

I want to set the vSphere HA heartbeat datastore setting to "Automatically select datastores accessible from the hosts" via PowerCLI. Here's what I've tried:

 

 

$cluster = Get-Cluster -Name <name>
$haConf = $cluster.ExtensionData.RetrieveDasAdvancedRuntimeInfo()
$Spec = New-Object VMware.Vim.ClusterConfigSpec
$Spec.DasConfig = New-Object VMware.Vim.ClusterDasConfigInfo
$Spec.DasConfig.HBDatastoreCandidatePolicy = 'AllFeasibleDS'
$cluster.ExtensionData.ReconfigureCluster($Spec, $true)

 

 


 When Reconfiguring the cluster, I get this error:

"A general system error occurred: AllFeasibleDS"

According to VMware, "allFeasibleDs" is a valid value, so I'm not sure why it's failing.

When I set that setting manually via the GUI, then go back and check in PowerCLI, the value is now set to "allFeasibleDs".

Any ideas?

Edit: I think I figured it out:

$cluster = Get-Cluster -Name <name>
$haConf = $cluster.ExtensionData.RetrieveDasAdvancedRuntimeInfo()
$Spec = New-Object VMware.Vim.ClusterConfigSpec
$Spec.DasConfig = New-Object VMware.Vim.ClusterDasConfigInfo
$Spec.DasConfig.HBDatastoreCandidatePolicy = New-Object VMware.Vim.ClusterDasConfigInfoHBDatastoreCandidate
$Spec.DasConfig.HBDatastoreCandidatePolicy.value__ = 1
$cluster.ExtensionData.ReconfigureCluster($Spec, $true)

I haven't been able to test it yet, but it seems to work offline. When I create a "ClusterDasConfigInfoHBDatastoreCandidate" object and set the value to 1, it changes to 'allFeasibleDs'. So I'm pretty sure this is the fix, but if anyone can confirm I'd appreciate it.

 

0 Kudos
1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

It's always tricky to provide the _value when there is an enum available.
That value can change in a new API version.

Use the enum

$cluster = Get-Cluster -Name <clustername>

$Spec = New-Object VMware.Vim.ClusterConfigSpec
$Spec.DasConfig = New-Object VMware.Vim.ClusterDasConfigInfo
$Spec.DasConfig.HBDatastoreCandidatePolicy = [VMware.Vim.ClusterDasConfigInfoHBDatastoreCandidate]::allFeasibleDs

$cluster.ExtensionData.ReconfigureCluster($Spec, $true)


 


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

0 Kudos
2 Replies
LucD
Leadership
Leadership
Jump to solution

It's always tricky to provide the _value when there is an enum available.
That value can change in a new API version.

Use the enum

$cluster = Get-Cluster -Name <clustername>

$Spec = New-Object VMware.Vim.ClusterConfigSpec
$Spec.DasConfig = New-Object VMware.Vim.ClusterDasConfigInfo
$Spec.DasConfig.HBDatastoreCandidatePolicy = [VMware.Vim.ClusterDasConfigInfoHBDatastoreCandidate]::allFeasibleDs

$cluster.ExtensionData.ReconfigureCluster($Spec, $true)


 


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos
JeremySW
Contributor
Contributor
Jump to solution

This way is much better, thank you!

0 Kudos