diff options
author | Scott Moser <smoser@ubuntu.com> | 2018-11-27 21:39:42 +0000 |
---|---|---|
committer | Server Team CI Bot <josh.powers+server-team-bot@canonical.com> | 2018-11-27 21:39:42 +0000 |
commit | 530850f971e36f4b0ef216cec9d889a99474ca0e (patch) | |
tree | 6f62b2ae6d44c74e0f77cc8b9fd6d91aea572c4a /tools | |
parent | e9d57b80c51a9952d7efa27da3ce469cbdf414b1 (diff) | |
download | vyos-cloud-init-530850f971e36f4b0ef216cec9d889a99474ca0e.tar.gz vyos-cloud-init-530850f971e36f4b0ef216cec9d889a99474ca0e.zip |
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.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/ds-identify | 17 |
1 files changed, 11 insertions, 6 deletions
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 <device>=label, like /dev/sr0=OVF-TRANSPORT + # DI_ISO9660_DEVS is <device>=label,<device>=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 |