ds-identify doesn't properly detect ISO

Bug #1749980 reported by Sankar Tanguturi on 2018-02-16
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
High
Scott Moser

Bug Description

I have a proper ISO image mounted for my virtual machine but still 'ds-identify' doesn't properly detect OVF datasource in my virtual machine. On further investigation, found a minor issue with 'read_fs_info()' function in ds-identify.

#################################################
In read_fs_info()

    out=$(blkid -c /dev/null -o export) || {
        ret=$?
        error "failed running [$ret]: blkid -c /dev/null -o export"
        DI_FS_LABELS="$UNAVAILABLE:error"
        DI_ISO9660_DEVS="$UNAVAILABLE:error"
        return $ret
    }
    IFS="$CR"
    set -- $out
    IFS="$oifs"
    for line in "$@" ""; do
        case "${line}" in
            DEVNAME=*) dev=${line#DEVNAME=};;
            LABEL=*) label="${line#LABEL=}";
                     labels="${labels}${line#LABEL=}${delim}";;
            TYPE=*) ftype=${line#TYPE=};;
            "") if [ "$ftype" = "iso9660" ]; then
                    isodevs="${isodevs} ${dev}=$label"
                fi
                ftype=""; devname=""; label="";
        esac
    done

This function parses the output for blkid and then sets the 'isodevs' _only_ when there is a proper blank line detected between the entry blocks.
#################################################

Inside the virtual machine:

$ sudo blkid -c /dev/null -o export

DEVNAME=/dev/sr0
UUID=2009-04-20-15-30-24-00
LABEL=OVF\ Customization
TYPE=iso9660

DEVNAME=/dev/sda1
UUID=2f09aea2-6411-444e-9d5b-32c0aa25c067
TYPE=ext4
PARTUUID=70ae1e13-01

It seems the blank line is not detected. Logging a bug to fix read_fs_info to properly parse the output of blkid.

Please let me know if any other information is required.

Thanks
Sankar.

Related branches

Sankar Tanguturi (sankaraditya) wrote :

> From the output of blkid in my virtual machine.

DEVNAME=/dev/sr0
UUID=2009-04-20-15-30-24-00
LABEL=OVF\ Customization
TYPE=iso9660

TYPE is printed at the end. And after that, no other entries were printed for 'ISO'. In the output, if
1. TYPE was displayed before UUID or
2. PARTUUID (not present now) was displayed after TYPE

the ds-identify would have detected 'OVF'.

So, the main issue is 'ds-identify' doesn't detect OVF if 'TYPE=iso9660' is the last line printed for a block device in blkid.

Sankar Tanguturi (sankaraditya) wrote :

Please ignore the first comment.

Had an offline discussion with Scott Moser. The blank line in the output of 'blkid' is not properly detected and this causes the issue.

description: updated
Chad Smith (chad.smith) on 2018-02-22
Changed in cloud-init:
assignee: nobody → Scott Moser (smoser)
status: New → Fix Committed
importance: Undecided → High
milestone: none → 18.1

This bug is believed to be fixed in cloud-init in 18.1. If this is still a problem for you, please make a comment and set the state back to New

Thank you.

Changed in cloud-init:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers