summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/sources/DataSourceOVF.py21
-rw-r--r--tests/unittests/test_ds_identify.py10
-rwxr-xr-xtools/ds-identify3
3 files changed, 28 insertions, 6 deletions
diff --git a/cloudinit/sources/DataSourceOVF.py b/cloudinit/sources/DataSourceOVF.py
index 6e62f984..dc914a72 100644
--- a/cloudinit/sources/DataSourceOVF.py
+++ b/cloudinit/sources/DataSourceOVF.py
@@ -95,11 +95,20 @@ class DataSourceOVF(sources.DataSource):
"VMware Customization support")
elif not util.get_cfg_option_bool(
self.sys_cfg, "disable_vmware_customization", True):
- deployPkgPluginPath = search_file("/usr/lib/vmware-tools",
- "libdeployPkgPlugin.so")
- if not deployPkgPluginPath:
- deployPkgPluginPath = search_file("/usr/lib/open-vm-tools",
- "libdeployPkgPlugin.so")
+
+ search_paths = (
+ "/usr/lib/vmware-tools", "/usr/lib64/vmware-tools",
+ "/usr/lib/open-vm-tools", "/usr/lib64/open-vm-tools")
+
+ plugin = "libdeployPkgPlugin.so"
+ deployPkgPluginPath = None
+ for path in search_paths:
+ deployPkgPluginPath = search_file(path, plugin)
+ if deployPkgPluginPath:
+ LOG.debug("Found the customization plugin at %s",
+ deployPkgPluginPath)
+ break
+
if deployPkgPluginPath:
# When the VM is powered on, the "VMware Tools" daemon
# copies the customization specification file to
@@ -111,6 +120,8 @@ class DataSourceOVF(sources.DataSource):
msg="waiting for configuration file",
func=wait_for_imc_cfg_file,
args=("cust.cfg", max_wait))
+ else:
+ LOG.debug("Did not find the customization plugin.")
if vmwareImcConfigFilePath:
LOG.debug("Found VMware Customization Config File at %s",
diff --git a/tests/unittests/test_ds_identify.py b/tests/unittests/test_ds_identify.py
index 21258347..9be3f964 100644
--- a/tests/unittests/test_ds_identify.py
+++ b/tests/unittests/test_ds_identify.py
@@ -337,6 +337,16 @@ class TestDsIdentify(CiTestCase):
"""OVF is identified when vmware customization is enabled."""
self._test_ds_found('OVF-vmware-customization')
+ def test_ovf_on_vmware_iso_found_open_vm_tools_64(self):
+ """OVF is identified when open-vm-tools installed in /usr/lib64."""
+ cust64 = copy.deepcopy(VALID_CFG['OVF-vmware-customization'])
+ p32 = 'usr/lib/vmware-tools/plugins/vmsvc/libdeployPkgPlugin.so'
+ open64 = 'usr/lib64/open-vm-tools/plugins/vmsvc/libdeployPkgPlugin.so'
+ cust64['files'][open64] = cust64['files'][p32]
+ del cust64['files'][p32]
+ return self._check_via_dict(
+ cust64, RC_FOUND, dslist=[cust64.get('ds'), DS_NONE])
+
def test_ovf_on_vmware_iso_found_by_cdrom_with_matching_fs_label(self):
"""OVF is identified by well-known iso9660 labels."""
ovf_cdrom_by_label = copy.deepcopy(VALID_CFG['OVF'])
diff --git a/tools/ds-identify b/tools/ds-identify
index 5da51bcc..ec368d58 100755
--- a/tools/ds-identify
+++ b/tools/ds-identify
@@ -650,8 +650,9 @@ ovf_vmware_guest_customization() {
# we have to have the plugin to do vmware customization
local found="" pkg="" pre="${PATH_ROOT}/usr/lib"
+ local ppath="plugins/vmsvc/libdeployPkgPlugin.so"
for pkg in vmware-tools open-vm-tools; do
- if [ -f "$pre/$pkg/plugins/vmsvc/libdeployPkgPlugin.so" ]; then
+ if [ -f "$pre/$pkg/$ppath" -o -f "${pre}64/$pkg/$ppath" ]; then
found="$pkg"; break;
fi
done