WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
  • VKS
  • Homelab
    • Hardware Options
    • Hardware Reviews
    • Lab Deployment Scripts
    • Nested Virtualization
    • Homelab Podcasts
  • VMware Nostalgia
  • Apple

Exploring VSAN APIs Part 2 – Query available SSDs

03.05.2014 by William Lam // Leave a Comment

When enabling VSAN, users have the option to specify how the disks (SSD/HDD) will be added to VSAN either automatically (recommended) or manually claimed by the end user.

vsan-disk-query-0
If you decide to manually claim your disks on each ESXi host within the VSAN cluster, then you will probably need to figure out which disks are SSD and HDD for you to create your VSAN disk groups. If you have used the vSphere Web Client to perform this operation, you will notice there is a toggle for displaying "eligible" disks for VSAN which can also be obtained programmatically using the vSphere API.

vsan-disk-query-1
On each ESXi host, there is a vsanSystem manager that provides various methods for disk management and the one that we are interested in is called QueryDisksForVsan(). To demonstrate this functionality, I have created the following sample vSphere SDK for Perl script called vsanQueryDisksForUse.pl. The script will query each ESXi host in a vSphere Cluster and return a list of disks which specifies if they are eligible for use with VSAN and whether the disk is an SSD or not.

Disclaimer:  These scripts are provided for informational and educational purposes only. It should be thoroughly tested before attempting to use in a production environment.

To check for the list of available SSD/HDD, run the following command:

./vsanQueryDisksForUse.pl --server vcenter55-1 --username root --cluster VSAN-Cluster

vsan-disk-query-2
Using this information, you can then use the AddDisks_Task() method to create your own VSAN Disk Groups on each ESXi host. As you can see, it is a couple more steps if you opted for manual mode and I would recommend letting the vSphere platform automatically take care of this for you.

  1. Exploring VSAN APIs Part 1 – Enable VSAN Cluster
  2. Exploring VSAN APIs Part 2 – Query available SSDs
  3. Exploring VSAN APIs Part 3 – Enable VSAN Traffic Type
  4. Exploring VSAN APIs Part 4 – VSAN Disk Mappings
  5. Exploring VSAN APIs Part 5 – VSAN Host Status
  6. Exploring VSAN APIs Part 6 – Modifying Virtual Machine VM Storage Policy
  7. Exploring VSAN APIs Part 7 – VSAN Datastore Folder Management
  8. Exploring VSAN APIs Part 8 – Maintenance Mode
  9. Exploring VSAN APIs Part 9 – VSAN Component count
  10. Exploring VSAN APIs Part 10 – VSAN Disk Health

Categories // VSAN, vSphere Tags // ssd, VSAN, vSphere 5.5, vSphere API

Exploring VSAN APIs Part 1 - Enable VSAN Cluster

03.04.2014 by William Lam // Leave a Comment

A couple of weeks back I had provided an overview on some the most common VSAN operations and the specific vSphere APIs that were required to perform the operation. It was no surprise to me that there were some folks already interested in automating the management and consumption of VSAN, I know that was one of the first thing I thought about when playing with VSAN in my home lab.

The great thing about having an API is that it can be consumed in a variety of ways, you can use one of the vSphere SDKs supporting languages like Java, .NET, Perl and even PowerShell with the new VSAN specific cmdlets. I thought it might be useful to explore some of these APIs in greater detail and even provide some working sample scripts that can help others looking to automate VSAN. I know for myself, I learn best when I can see working examples.

Disclaimer:  These scripts are provided for informational and educational purposes only. It should be thoroughly tested before attempting to use in a production environment.

VSAN is enabled at the vSphere Cluster level and just like you do today with vSphere HA/DRS, it is just a couple of clicks. To demonstrate the ability to enable, disable and to check current state of VSAN on a vSphere Cluster, I have created the following sample vSphere SDK for Perl script called vsanClusterManagement.pl

There is a vsanClusterConfigInfo property that is part of a vSphere Cluster (ComputeResource) that specifies whether VSAN is enabled and if it is configured to auto-claim or manual mode. To make changes to a vSphere Cluster, you will need to use the ReconfigureComputeResource_Task() method which is demonstrated in the sample script.

To check the current VSAN configuration for a given vSphere Cluster, you can run the "query" operation:

./vsanClusterManagement.pl --server vcenter55-1 --operation query --cluster VSAN-Cluster

vsan-cluster-mgmt-0
To enable VSAN, you can run the "enable" operation along with an optional --autoclaim option which defaults to enable for automatic claiming:

./vsanClusterManagement.pl --server vcenter55-1 --operation enable --cluster VSAN-Cluster

vsan-cluster-mgmt-1
If we re-run the query operation, you will now notice there is more information about the VSAN Cluster including VSAN Cluster UUID, the current claim mode and all the ESXi nodes in the cluster along with their VSAN NODE UUID.

vsan-cluster-mgmt-2
If login to your vSphere Web Client, we should see that VSAN has been successfully enabled just like you would if you were to manually perform the operation through the UI.

vsan-cluster-mgmt-3
If you decided to select "manual" instead of having VSAN automatically claim the SSD and HDD for you, then you will probably need to know which disks are eligible for VSAN. In Part 2 of this series, we will take a look a look at how we can identify available SSDs for use with VSAN.

  1. Exploring VSAN APIs Part 1 – Enable VSAN Cluster
  2. Exploring VSAN APIs Part 2 – Query available SSDs
  3. Exploring VSAN APIs Part 3 – Enable VSAN Traffic Type
  4. Exploring VSAN APIs Part 4 – VSAN Disk Mappings
  5. Exploring VSAN APIs Part 5 – VSAN Host Status
  6. Exploring VSAN APIs Part 6 – Modifying Virtual Machine VM Storage Policy
  7. Exploring VSAN APIs Part 7 – VSAN Datastore Folder Management
  8. Exploring VSAN APIs Part 8 – Maintenance Mode
  9. Exploring VSAN APIs Part 9 – VSAN Component count
  10. Exploring VSAN APIs Part 10 – VSAN Disk Health

Categories // VSAN, vSphere Tags // VSAN, vSphere 5.5, vSphere API

VMware VSAN APIs

02.11.2014 by William Lam // 15 Comments

For customers who are currently evaluating VMware VSAN, the vSphere Web Client is the primary interface for managing and configuring VSAN. However, these exact same VSAN operations can also be accessed programmatically from an Automation perspective. Given that I had spent quite a bit of time playing with VSAN in the lab and exploring some of its APIs, I thought it might be useful to share some of the common VSAN operations mapped to their respective APIs.

There are two main categories of operations that you should be aware of when working with VSAN:

  • VSAN specific operations
  • VM Storage Policy operations

VSAN Operations

The VSAN specific operations are available as part of the vSphere 5.5 API and the list below are the supported operations:

Enable/Disable VSAN on a vSphere Cluster (automatic claiming):

  • Use the ReconfigureComputeResource_Task() and set spec->vsanConfig->enabled to either true or false & spec->vsanConfig->defaultConfig->autoClaimStorage to true

Manual Disk Claiming for an ESXi host:

  • Each ESXi host provides a vsanSystem manager at configManager->vsanSystem which provides the following methods for disk management
    • AddDisks_Task()
    • InitializeDisks_Task()
    • QueryDisksForVsan()
    • QueryHostStatus()
    • RemoveDisk_Task()
    • RemoveDiskMapping_Task()
    • UpdateVsan_Task()

Enable VSAN traffic type for a VMkernel interface

  • Use the ReconfigureComputeResource_Task() and set spec->vsanHostConfigSpec->HostSystem to the ESXi host you wish to configure and  spec->vsanHostConfigSpec->networkInfo->port->device to the specific VMkernel interface you wish to enable VSAN traffic type on

Internal VSAN manager for accessing low level CMMDS (Clustering Monitoring, Membership and Directory Services), object & disk management APIs:

  • Each ESXi host provides a vsanInternalSystem manager at configManager->vsanInternalSystem which provides the following methods for working with the lower level system of VSAN
    • QueryCmmds()
    • QueryObjectsOnPhysicalVsanDisk()
    • QueryPhysicalVsanDisks()
    • QueryVsanObjects()

Change the VM Storage Policy for a Virtual Machine Home OR Virtual Machine Home and Virtual Disk:

  • Use the ReconfigVM_Task() and set spec->vmProfile to the VM Storage Policy ID

Change the VM Storage Policy for Virtual Machine Virtual Disk:

  • Use the ReconfigVM_Task() and set spec->deviceChange->device to the specif Virtual Disk to be reconfigured and set  spec->deviceChange->vmProfile to the VM Storage Policy ID

Enter Maintenance Mode for an ESXi host in a VSAN Cluster:

  • Use the EnterMaintenanceMode_Task() and set spec->
    maintenanceSpec->vsanMode->objectAction to the specific data accessibility mode defined here

Create and Delete directories on a VSAN Datastore:

  • Use the DatastoreNamespaceManager which provides the following two methods
    • CreateDirectory()
    • DeleteDirectory()

SPBM

For VM Storage Policies, VSAN leverages the SPBM (Storage Policy Based Management) framework which allows administrators to create policies that define specific storage capabilities such as performance and reliability that can then be applied to a Virtual Machine. The SPBM API is exposed as a separate API endpoint in vCenter Server and will be required if you wish to create additional VM Storage Policy leveraging VSAN storage capabilities.

Query list of available VM Storage Profiles defined:

  • Use PbmQueryProfile()

Create VM Storage Policy:

  • Use PbmCreate()

Delete VM Storage Policy:

  • Use PbmDelete()

Check VM Storage Policy Compliance:

  • Use PbmCheckCompliance()

Given a Virtual Machine Home or Virtual Disk, provide associated VM Storage Profile:

  • Use PbmQueryAssociatedEntity()

Given a VM Storage Profile, provide the associated Virtual Machine Home or Virtual Disk:

PbmQueryAssociatedEntity
  • Use PbmQueryAssociatedProfiles()
PbmQueryAssociatedProfiles

Hopefully this provides a good overview of some of the common VSAN / SPBM operations and their associated API methods. If I have some spare cycles, I may create some sample scripts leveraging some of these API methods. In the meantime, you can check out these RVC (vSphere SDK for Ruby) modules leveraging both VSAN and SPBM APIs here and here.

Additional Resources:

  • If you wish to evaluate VSAN and its associated APIs, please sign up for the public beta here.
  • Sign up for a special VSAN event here
  • VM Storage Policy APIs aka Storage Profile APIs will be available in vSphere 5.5
  • SPBM (Storage Policy Based Management) MOB in vSphere 5.5

Categories // VSAN Tags // rvc, spbm, VSAN, vSphere 5.5, vSphere API

  • « Previous Page
  • 1
  • …
  • 26
  • 27
  • 28
  • 29
  • Next Page »

Search

Thank Author

Author

William is Distinguished Platform Engineering Architect in the VMware Cloud Foundation (VCF) Division at Broadcom. His primary focus is helping customers and partners build, run and operate a modern Private Cloud using the VMware Cloud Foundation (VCF) platform.

Connect

  • Bluesky
  • Email
  • GitHub
  • LinkedIn
  • Mastodon
  • Reddit
  • RSS
  • Twitter
  • Vimeo

Recent

  • Ultimate Lab Resource for VCF 9.0 06/25/2025
  • VMware Cloud Foundation (VCF) on ASUS NUC 15 Pro (Cyber Canyon) 06/25/2025
  • VMware Cloud Foundation (VCF) on Minisforum MS-A2 06/25/2025
  • VCF 9.0 Offline Depot using Synology 06/25/2025
  • Deploying VCF 9.0 on a single ESXi host? 06/24/2025

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2025

 

Loading Comments...