In this release we have changed our configuration management so it only installs the enabled PHP version during initial provisioning instead of all PHP versions. Previously we would install all available versions on all Hypernodes always in order to speed up switching between versions. But by only installing the enabled version on demand, the time it takes to configure a new node before it is ready for use will be decreased by around one minute. The trade-off is that switching between PHP versions will now take around 15 seconds longer, but since scaling up, scaling down and creating new Hypernodes are operations that are performed more often than switching between PHP versions, this results in a net positive.

Note that there are multiple variables that influence how long creating a new node takes. The down-time during migrations has been mostly consistent for nodes with external volumes since we implemented volume swap migrations, but before the migration process is at the point where it can start transferring data from the old node to the new one a lot of things need to have already happened. This change will decrease the time it takes to provision a new node on average, but other factors such as external mirror responsiveness and cloud resource availability have the largest (and most fluctuating) impact on how long it takes for a new node to become ready for use.

Other changes:
– The hypernode image optimizer can now handle paths with Unicode characters.

Errors such as this should no longer occur in the new 20180802.083011 version of hypernode-kamikaze3:

Traceback (most recent call last):
 File "/usr/bin/hypernode-image-optimizer", line 9, in 
   load_entry_point('kamikaze3==20180717.121919', 'console_scripts', 'hypernode-image-optimizer')()
 File "/usr/lib/python3/dist-packages/kamikaze3/analysis/image.py", line 310, in main
   path_profit, path_size = optimizer.optimize(path)
 File "/usr/lib/python3/dist-packages/kamikaze3/analysis/image.py", line 85, in optimize
   print("[{:2.0f}%] {} ({:.0f} KB smaller)".format(profit_rel, path, _to_kb(profit_abs)))
UnicodeEncodeError: 'utf-8' codec can't encode character 'udcdf' in position 34: surrogates not allowed