I had a meeting yesterday with a couple of Engineers to provide some feedback on a new project they were working on and they were interested in getting feedback on their  workflows but also my overall impression of the user experience (UX). One area that we had spent some time covering was on adding new resources such as an ESXi host which is performed using either a UI/API/CLI. In the case of adding an ESXi host, this was done sequentially and a user would need to specify multiple parameters like the hostname, IP Address, credentials, etc. and perform this task N-number of times until you had added all of the ESXi hosts that you wanted. Many of you are probably already familiar with this workflow as it exists in many of the current VMware products today when requiring to add a resource like an ESXi host.

I was wondering why this was the case and why not support a bulk add operation? This was not a new idea and in fact I and many others have asked about this in the past on why our own vSphere Web Client does not support bulk operations for some of the more common operations such as adding an ESXi host or provisioning a VM? In fact, I was actually reminded of this topic again this morning when I needed to mount an NFS Volume across multiple ESXi hosts and one of the new capabilities that was introduction in the vSphere Web Client over the vSphere C# Client was being able to bulk add an NFS Volume across multiple hosts.

Not only is this a useful capability to have but when you need to perform the same operation multiple times, there is also an increase of risk for making a mistake. Sure, if you mount the wrong NFS volume, you would have it wrong across all the hosts but this is no different if you were to Automate it from an API/CLI. I am sure some of you are probably saying, a simple for loop would do the trick and though I agree that would be the easiest way. However, it would be really nice that some of these operations would actually have native support for bulk operations from an API standpoint, that way this is not limited to just a UI-only feature which it is today. Even in the case of a simple for-loop, you are still executing the individual operation N-number of times versus being able to pass in a list and perform a single request and then rely on the backend implementation to properly handle the operation which could be done in parallel or sequentially depending on the type of operation.

Thinking about this a bit more, it may not be as simple as just adding bulk operation support into an API but there are also other things to consider. What happens when the resource you are adding has varying configurations, a classic example of this is adding multiple ESXi hosts. If they all have the same username and password, then you can provide the credentials once and then a list of ESXi hosts. What happens when they differ or in the worse case scenario, they all have different passwords? What happens when only a subset of the hosts are added, do you continue or fail all together?

I am actually curious to hear what others think about this and what your expectations would be? Both from a UI standpoint as well as from an Automation standpoint which includes API/CLI. Would a simple JSON/YAML configuration file that contains all hosts and credentials be acceptable with the option of having common global configurations and ability to override for individual entries? Would love to hear your thoughts on this and what you would be expecting? Perhaps this is something I can also share back with the Engineering teams as this is something I have been wanting to see for quite some time, especially when it comes to common operations like adding ESXi hosts and provisioning VMs.

4 thoughts on “How should bulk operations such as adding ESXi hosts work?

  1. William – I too love the bulk add NFS option and was surprised when I first saw it in the Web Client. Even though it’s pretty straight forward to mount it to 3 – 4 hosts, the ease of just checking boxes was really convenient. To that effect, it’d be awesome to be able to add hosts and just hit a [+] button with a new user/password line for each hostname. Drop them in all or different clusters, etc.

  2. Being able to bulk add the hosts through the UI and through API/CLI would be awesome. I think one way you could handle the username/password thing would be able to check a box stating that all the Usernames/Passwords are the same across the hosts you are adding.

    If the box is not checked, then you could be taken to a screen to type in the username and password combo for each. Even if all of your passwords were different, it would still be more efficient than going through the wizard for each individual host. There are probably more elegant solutions than this, but this idea was the first that popped into my head while reading your post.

  3. For the API I wouldnt mind seeing the Folder have a method added to it that like: addStandaloneHosts_Task() that took some kind of HashMap of connection info, or an array of what it currently takes. Since each host addition would be a new task the return value from that call would be an array of task mors so you can track the status of each of those tasks.. So if host 1 fails host 2 keeps going etc.. Seems logical to me based on how the current vsphere api works.

Thanks for the comment!