From 530850f971e36f4b0ef216cec9d889a99474ca0e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 27 Nov 2018 21:39:42 +0000 Subject: OVF: identify label iso9660 filesystems with label 'OVF ENV'. When deploying an OVA, at least some versions of vmware attach a cdrom with an ISO9660 filesystem label of 'OVF ENV'. This was seen on Vmware vCenter Server, 6.0.0, 2776510. In order to accomplish this we had to change the content of the DI_ISO9660_DEVS variable to be comma delimited rather than space delimited. --- tools/ds-identify | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'tools') diff --git a/tools/ds-identify b/tools/ds-identify index 5afe5aa1..1acfeeb9 100755 --- a/tools/ds-identify +++ b/tools/ds-identify @@ -237,7 +237,7 @@ read_fs_info() { case "${line}" in DEVNAME=*) [ -n "$dev" -a "$ftype" = "iso9660" ] && - isodevs="${isodevs} ${dev}=$label" + isodevs="${isodevs},${dev}=$label" ftype=""; dev=""; label=""; dev=${line#DEVNAME=};; LABEL=*) label="${line#LABEL=}"; @@ -247,11 +247,11 @@ read_fs_info() { esac done [ -n "$dev" -a "$ftype" = "iso9660" ] && - isodevs="${isodevs} ${dev}=$label" + isodevs="${isodevs},${dev}=$label" DI_FS_LABELS="${labels%${delim}}" DI_FS_UUIDS="${uuids%${delim}}" - DI_ISO9660_DEVS="${isodevs# }" + DI_ISO9660_DEVS="${isodevs#,}" } cached() { @@ -735,9 +735,10 @@ is_cdrom_ovf() { return 1;; esac + debug 1 "got label=$label" # fast path known 'OVF' labels case "$label" in - OVF-TRANSPORT|ovf-transport|OVFENV|ovfenv) return 0;; + OVF-TRANSPORT|ovf-transport|OVFENV|ovfenv|OVF\ ENV|ovf\ env) return 0;; esac # explicitly skip known labels of other types. rd_rdfe is azure. @@ -757,9 +758,13 @@ dscheck_OVF() { # Azure provides ovf. Skip false positive by dis-allowing. is_azure_chassis && return $DS_NOT_FOUND - # DI_ISO9660_DEVS is =label, like /dev/sr0=OVF-TRANSPORT + # DI_ISO9660_DEVS is =label,=label2 + # like /dev/sr0=OVF-TRANSPORT,/dev/other=with spaces if [ "${DI_ISO9660_DEVS#${UNAVAILABLE}:}" = "${DI_ISO9660_DEVS}" ]; then - for tok in ${DI_ISO9660_DEVS}; do + local oifs="$IFS" + # shellcheck disable=2086 + { IFS=","; set -- ${DI_ISO9660_DEVS}; IFS="$oifs"; } + for tok in "$@"; do is_cdrom_ovf "${tok%%=*}" "${tok#*=}" && return $DS_FOUND done fi -- cgit v1.2.3