Comment 2 for bug 1788487

Revision history for this message
Mark (praseodym) wrote :

Let me try to clarify the original issue. Commit https://git.launchpad.net/cloud-init/commit/?id=1efa8a0a030794cec68197100f31a856d0d264ab introduced a mechanism where, for performance reasons, the OpenStack metadata service is never queried if the host platform does not _look like_ OpenStack from a DMI information check. This check happens even when `datasource_list` explicitly contains `OpenStack`.

OpenStack exists in many forms, both on-premises [1, 2] and at hosting providers [3, 4]. Every one of those platforms is slightly different, for example in choice of hypervisor. The cloud-init DMI information check only takes into account a few different DMI fields and values. This means that it is very likely to fail to identify one of those different platforms as OpenStack, even though most (if not all) expose the OpenStack metadata service. LP #1784685 (already fixed) provides one such example of a platform (Oracle Cloud) that was not correctly detected.

VMware Integrated OpenStack (VIO) [5] is another platform that is currently not identified as an OpenStack platform. Because the DMI check returns false, the metadata service is never queried and cloud-init fails to retrieve any data. Unfortunately it is not possible to discern a VIO VM from a regular VMware VM through DMI information, as can be seen from the paste in LP: #1669875. I therefore propose to extend the DMI check by including `VMware Virtual Platform` in the `VALID_DMI_PRODUCT_NAMES` variable.

I do not currently have access to other OpenStack (cloud) platforms to verify whether they are being detected by cloud-init, so the scope of this bug is limited to OpenStack on VMware.

[1] https://www.openstack.org/marketplace/distros/
[2] https://www.openstack.org/marketplace/remotely-managed-private-clouds/
[3] https://www.openstack.org/marketplace/hosted-private-clouds/
[4] https://www.openstack.org/marketplace/public-clouds/
[5] https://www.vmware.com/products/openstack.html