Ubuntu Pastebin

Paste from smoser at Tue, 12 Dec 2017 15:38:45 +0000

Download as text
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
commit 75eaa4d20584eb52969acc1b011816d7d7d099c4 (HEAD -> bug/lp-1731868-unset-var-in-ds-identify)
Author: Scott Moser <smoser@ubuntu.com>
Date:   Tue Dec 12 10:21:22 2017 -0500

    ds-identify: failure in NoCloud due to unset variable usage.
    
    The previous OVF datasource change added a debug message that
    referenced an un-used variable.  The failure path would be triggered
    if an image was booted with a iso9660 filesystem attached to a device
    that was not a cdrom.
    
    A unit test is added for the specific failure found.
    
    Additional safety to avoid 'cidata' labels is also added to the OVF
    checker.
    
    LP: #1737704

diff --git a/tests/unittests/test_ds_identify.py b/tests/unittests/test_ds_identify.py
index 3f1a6712..55ca85ad 100644
--- a/tests/unittests/test_ds_identify.py
+++ b/tests/unittests/test_ds_identify.py
@@ -27,6 +27,14 @@ TYPE=ext4
 PARTUUID=30c65c77-e07d-4039-b2fb-88b1fb5fa1fc
 """
 
+# this is a 16.04 disk.img output (dual uefi and bios bootable)
+BLKID_UEFI_UBUNTU = [
+    {'DEVNAME': 'vda1', 'TYPE': 'ext4', 'PARTUUID': uuid4(), 'UUID': uuid4()},
+    {'DEVNAME': 'vda14', 'PARTUUID': uuid4()},
+    {'DEVNAME': 'vda15', 'TYPE': 'vfat', 'LABEL': 'UEFI', 'PARTUUID': uuid4(),
+     'UUID': '5F55-129B'}]
+
+
 POLICY_FOUND_ONLY = "search,found=all,maybe=none,notfound=disabled"
 POLICY_FOUND_OR_MAYBE = "search,found=all,maybe=all,notfound=disabled"
 DI_DEFAULT_POLICY = "search,found=all,maybe=all,notfound=enabled"
@@ -340,6 +348,10 @@ class TestDsIdentify(CiTestCase):
             self._check_via_dict(
                 ovf_cdrom_by_label, rc=RC_FOUND, dslist=['OVF', DS_NONE])
 
+    def test_default_nocloud_as_vdb_iso9660(self):
+        """NoCloud is found with iso9660 filesystem on non-cdrom disk."""
+        self._test_ds_found('NoCloud')
+
 
 def blkid_out(disks=None):
     """Convert a list of disk dictionaries into blkid content."""
@@ -422,6 +434,19 @@ VALID_CFG = {
         'files': {P_PRODUCT_SERIAL: 'GoogleCloud-8f2e88f\n'},
         'mocks': [MOCK_VIRT_IS_KVM],
     },
+    'NoCloud': {
+        'ds': 'NoCloud',
+        'mocks': [
+            MOCK_VIRT_IS_KVM,
+            {'name': 'blkid', 'ret': 0,
+             'out': blkid_out(
+                 BLKID_UEFI_UBUNTU +
+                 [{'DEVNAME': 'vdb', 'TYPE': 'iso9660', 'LABEL': 'cidata'}])},
+        ],
+        'files': {
+            'dev/vdb': 'pretend iso content for cidata\n',
+        }
+    },
     'OpenStack': {
         'ds': 'OpenStack',
         'files': {P_PRODUCT_NAME: 'OpenStack Nova\n'},
diff --git a/tools/ds-identify b/tools/ds-identify
index 4c59d7bc..5893a761 100755
--- a/tools/ds-identify
+++ b/tools/ds-identify
@@ -657,7 +657,7 @@ is_cdrom_ovf() {
     # skip devices that don't look like cdrom paths.
     case "$dev" in
         /dev/sr[0-9]|/dev/hd[a-z]) :;;
-        *) debug 1 "skipping iso dev $d"
+        *) debug 1 "skipping iso dev $dev"
            return 1;;
     esac
 
@@ -666,7 +666,7 @@ is_cdrom_ovf() {
 
     # explicitly skip known labels of other types. rd_rdfe is azure.
     case "$label" in
-        config-2|rd_rdfe_stable*) return 1;;
+        config-2|rd_rdfe_stable*|cidata) return 1;;
     esac
 
     local idstr="http://schemas.dmtf.org/ovf/environment/1"
Download as text