summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxiaofengw-vmware <42736879+xiaofengw-vmware@users.noreply.github.com>2021-10-12 11:54:31 +0800
committerGitHub <noreply@github.com>2021-10-11 22:54:31 -0500
commit76166caff42b82aa55c6bcd9528f2c1e3575232a (patch)
treedf1b497b9bc2caa4e6a0ce0022be289f502d9909
parentca0da042e73d1cf078435befa02a6e09d004b62d (diff)
downloadvyos-cloud-init-76166caff42b82aa55c6bcd9528f2c1e3575232a.tar.gz
vyos-cloud-init-76166caff42b82aa55c6bcd9528f2c1e3575232a.zip
VMWARE: search the deployPkg plugin in multiarch dir (#1061)
Due to multiarch, the libdeployPkgPlugin.so is deployed into dir /usr/lib/<multiarch name>/open-vm-tools, we need to add this path into search_paths. LP: #1944946
-rw-r--r--cloudinit/sources/DataSourceOVF.py4
-rw-r--r--tests/unittests/test_ds_identify.py24
-rwxr-xr-xtools/ds-identify5
3 files changed, 32 insertions, 1 deletions
diff --git a/cloudinit/sources/DataSourceOVF.py b/cloudinit/sources/DataSourceOVF.py
index 3e436dfa..08a205f1 100644
--- a/cloudinit/sources/DataSourceOVF.py
+++ b/cloudinit/sources/DataSourceOVF.py
@@ -115,7 +115,9 @@ class DataSourceOVF(sources.DataSource):
else:
search_paths = (
"/usr/lib/vmware-tools", "/usr/lib64/vmware-tools",
- "/usr/lib/open-vm-tools", "/usr/lib64/open-vm-tools")
+ "/usr/lib/open-vm-tools", "/usr/lib64/open-vm-tools",
+ "/usr/lib/x86_64-linux-gnu/open-vm-tools",
+ "/usr/lib/aarch64-linux-gnu/open-vm-tools")
plugin = "libdeployPkgPlugin.so"
deployPkgPluginPath = None
diff --git a/tests/unittests/test_ds_identify.py b/tests/unittests/test_ds_identify.py
index 8617d7bd..43603ea5 100644
--- a/tests/unittests/test_ds_identify.py
+++ b/tests/unittests/test_ds_identify.py
@@ -534,6 +534,30 @@ class TestDsIdentify(DsIdentifyBase):
return self._check_via_dict(
cust64, RC_FOUND, dslist=[cust64.get('ds'), DS_NONE])
+ def test_ovf_on_vmware_iso_found_open_vm_tools_x86_64_linux_gnu(self):
+ """OVF is identified when open-vm-tools installed in
+ /usr/lib/x86_64-linux-gnu."""
+ cust64 = copy.deepcopy(VALID_CFG['OVF-vmware-customization'])
+ p32 = 'usr/lib/vmware-tools/plugins/vmsvc/libdeployPkgPlugin.so'
+ x86 = 'usr/lib/x86_64-linux-gnu/open-vm-tools/plugins/vmsvc/' \
+ 'libdeployPkgPlugin.so'
+ cust64['files'][x86] = 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_open_vm_tools_aarch64_linux_gnu(self):
+ """OVF is identified when open-vm-tools installed in
+ /usr/lib/aarch64-linux-gnu."""
+ cust64 = copy.deepcopy(VALID_CFG['OVF-vmware-customization'])
+ p32 = 'usr/lib/vmware-tools/plugins/vmsvc/libdeployPkgPlugin.so'
+ aarch64 = 'usr/lib/aarch64-linux-gnu/open-vm-tools/plugins/vmsvc/' \
+ 'libdeployPkgPlugin.so'
+ cust64['files'][aarch64] = 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 63d2f0c8..c2f710e9 100755
--- a/tools/ds-identify
+++ b/tools/ds-identify
@@ -899,11 +899,16 @@ ovf_vmware_guest_customization() {
# we have to have the plugin to do vmware customization
local found="" pkg="" pre="${PATH_ROOT}/usr/lib"
+ local x86="x86_64-linux-gnu" aarch="aarch64-linux-gnu"
local ppath="plugins/vmsvc/libdeployPkgPlugin.so"
for pkg in vmware-tools open-vm-tools; do
if [ -f "$pre/$pkg/$ppath" -o -f "${pre}64/$pkg/$ppath" ]; then
found="$pkg"; break;
fi
+ # search in multiarch dir
+ if [ -f "$pre/$x86/$pkg/$ppath" -o -f "$pre/$aarch/$pkg/$ppath" ]; then
+ found="$pkg"; break;
+ fi
done
[ -n "$found" ] || return 1
# vmware customization is disabled by default