multi-clone.py improvements & random-vmotion.py

For a project i needed a couple of tools, so i improved my multi-clone.py script and created a new script: random-vmotion.py

multi-clone.py: setting advanced configuration parameters

The multi-clone.py script is improved so you are able to set advanced configuration parameters of the created VMs, this can be used if you have other tools that need some metadata or configuration.

To accomplish this, you have to use the CSV feature. The fields in the CSV have been changed slightly in comparison with the previous version:

'<Clone name>';'[Resouce Pool]';'[Folder]';'[MAC Address]';'[Post-processing Script]';'[Advanced VM Parameters in JSON format]'

Fields indicated with <> are mandatory, fields indicated with [] can be left empty.

For a full documentation, you can visit the GitHub repository.

random-vmotion.py

For some testing i needed a script which would be able to vMotion a set of VMs randomly to a set of Hosts. This script does exactly that.

The script accepts a file which contains the names of the VMs to move, one per line:

VM01
VM02
VM03
VM04

It also accepts a file which contains the names of the Hosts to randomly move to, one per line:

host1.domain.tld
host2.domain.tld

In the default way of working, it will continue to vMotion the VMs to a random host over and over again. For example: if you use the files above with the command:

random-vmotion.py -H vcenter.domain.tld -t hosts.list -u [email protected] -V vms.list

It will start moving the first VM to one of the two hosts, wait 30 seconds and do the same for the second VM, and so on. Once it moved the fourth VM, it will start again with the first one.

There are more options which provide extra functionality:

The full documentation can be found on the GitHub page and an overview of the options can be found below:

usage: random-vmotion.py [-h] [-d] -H HOST [-i INTERVAL] [-l LOGFILE]
                         [-o PORT] [-p PASSWORD] [-S] -t TARGETFILE
                         [-T THREADS] -u USERNAME [-v] -V VMFILE

Randomly vMotion each VM from a list one by one to a random host from a list,
until stopped.

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           Enable debug output
  -H HOST, --host HOST  The vCenter or ESXi host to connect to
  -i INTERVAL, --interval INTERVAL
                        The amount of time to wait after a vMotion is finished
                        to schedule a new one (default 30 seconds)
  -l LOGFILE, --log-file LOGFILE
                        File to log to (default = stdout)
  -o PORT, --port PORT  Server port to connect to (default = 443)
  -p PASSWORD, --password PASSWORD
                        The password with which to connect to the host. If not
                        specified, the user is prompted at runtime for a
                        password
  -S, --disable-SSL-certificate-verification
                        Disable SSL certificate verification on connect
  -t TARGETFILE, --targets TARGETFILE
                        File with the list of target hosts to vMotion to
  -T THREADS, --threads THREADS
                        Amount of simultanious vMotions to execute at once.
                        (default = 1)
  -u USERNAME, --user USERNAME
                        The username with which to connect to the host
  -v, --verbose         Enable verbose output
  -V VMFILE, --vms VMFILE
                        File with the list of VMs to vMotion