summaryrefslogtreecommitdiff
path: root/sysutils/py-salt/files/patch-salt_grains_disks.py
blob: d10ce2a3e411dfa1d8d0355c9607fa0e57fbe21b (plain) (blame)
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
--- salt/grains/disks.py.orig	2016-05-25 22:30:31 UTC
+++ salt/grains/disks.py
@@ -57,18 +57,27 @@ class _geomconsts(object):
 
     _datatypes = {
         MEDIASIZE: ('re_int', r'(\d+)'),
-        SECTORSIZE: 'int',
-        STRIPESIZE: 'int',
-        STRIPEOFFSET: 'int',
-        ROTATIONRATE: 'int',
+        SECTORSIZE: 'try_int',
+        STRIPESIZE: 'try_int',
+        STRIPEOFFSET: 'try_int',
+        ROTATIONRATE: 'try_int',
     }
 
 
 def _datavalue(datatype, data):
-    if datatype == 'int':
-        return int(data)
-    elif datatype and datatype[0] == 're_int':
-        return int(re.search(datatype[1], data).group(1))
+    if datatype == 'try_int':
+        try:
+            return int(data)
+        except ValueError:
+            return None
+    elif datatype is tuple and datatype[0] == 're_int':
+        search = re.search(datatype[1], data)
+        if search:
+            try:
+                return int(search.group(1))
+            except ValueError:
+                return None
+        return None
     else:
         return data
 
@@ -97,9 +106,11 @@ def _freebsd_geom():
                         tmp[_geomconsts._aliases[attrib]] = value
 
         name = tmp.pop(_geomconsts.GEOMNAME)
+        if name.startswith('cd'):
+            return
 
         ret['disks'][name] = tmp
-        if tmp[_geomconsts.ROTATIONRATE] == 0:
+        if tmp.get(_geomconsts.ROTATIONRATE) == 0:
             log.trace('Device {0} reports itself as an SSD'.format(device))
             ret['SSDs'].append(name)