Support transport type as a root device hint
Adds a tran field to the block device and allow to use it as a root device hint. Change-Id: I3fc83730a6100abb2b2aa98fc894713ecbbe3043 Closes-Bug: #2100951 Signed-off-by: Kaifeng Wang <kaifeng.w@gmail.com>
This commit is contained in:
@@ -26,7 +26,7 @@ LOG = logging.getLogger(__name__)
|
||||
VALID_ROOT_DEVICE_HINTS = {
|
||||
'size': int, 'model': str, 'wwn': str, 'serial': str, 'vendor': str,
|
||||
'wwn_with_extension': str, 'wwn_vendor_extension': str, 'name': str,
|
||||
'rotational': bool, 'hctl': str, 'by_path': str,
|
||||
'rotational': bool, 'hctl': str, 'by_path': str, 'tran': str,
|
||||
}
|
||||
|
||||
ROOT_DEVICE_HINTS_GRAMMAR = specs_matcher.make_grammar()
|
||||
|
@@ -731,6 +731,7 @@ def list_all_block_devices(block_type='disk',
|
||||
partuuid=device_raw['partuuid'],
|
||||
logical_sectors=device_raw['log-sec'],
|
||||
physical_sectors=device_raw['phy-sec'],
|
||||
tran=device_raw['tran'] or None,
|
||||
**extra))
|
||||
return devices
|
||||
|
||||
@@ -794,13 +795,13 @@ class BlockDevice(encoding.SerializableComparable):
|
||||
serializable_fields = ('name', 'model', 'size', 'rotational',
|
||||
'wwn', 'serial', 'vendor', 'wwn_with_extension',
|
||||
'wwn_vendor_extension', 'hctl', 'by_path',
|
||||
'logical_sectors', 'physical_sectors')
|
||||
'logical_sectors', 'physical_sectors', 'tran')
|
||||
|
||||
def __init__(self, name, model, size, rotational, wwn=None, serial=None,
|
||||
vendor=None, wwn_with_extension=None,
|
||||
wwn_vendor_extension=None, hctl=None, by_path=None,
|
||||
uuid=None, partuuid=None,
|
||||
logical_sectors=None, physical_sectors=None):
|
||||
logical_sectors=None, physical_sectors=None, tran=None):
|
||||
self.name = name
|
||||
self.model = model
|
||||
self.size = size
|
||||
@@ -816,6 +817,7 @@ class BlockDevice(encoding.SerializableComparable):
|
||||
self.partuuid = partuuid
|
||||
self.logical_sectors = logical_sectors
|
||||
self.physical_sectors = physical_sectors
|
||||
self.tran = tran
|
||||
|
||||
|
||||
class NetworkInterface(encoding.SerializableComparable):
|
||||
|
@@ -834,7 +834,7 @@ Boot0004* ironic1 HD(1,GPT,55db8d03-c8f6-4a5b-9155-790dddc348fa,0x800,0x640
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,'
|
||||
+ 'TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
+ 'LOG-SEC,PHY-SEC',
|
||||
+ 'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('umount', self.fake_dir + '/boot/efi',
|
||||
attempts=3, delay_on_retry=True),
|
||||
@@ -958,7 +958,7 @@ Boot0004* ironic1 HD(1,GPT,55db8d03-c8f6-4a5b-9155-790dddc348fa,0x800,0x640
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,'
|
||||
+ 'TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
+ 'LOG-SEC,PHY-SEC',
|
||||
+ 'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('umount', self.fake_dir + '/boot/efi',
|
||||
attempts=3, delay_on_retry=True),
|
||||
|
@@ -102,44 +102,48 @@ BLK_DEVICE_TEMPLATE = """
|
||||
"blockdevices": [
|
||||
{"kname":"sda", "model":"TinyUSB Drive", "size":3116853504,
|
||||
"rota":false, "type":"disk", "serial":"sda123", "uuid":"F531-BDC3",
|
||||
"partuuid":null, "wwn":"wwn0", "log-sec": 512, "phy-sec": 512},
|
||||
"partuuid":null, "wwn":"wwn0", "log-sec": 512, "phy-sec": 512,
|
||||
"tran": "sas"},
|
||||
{"kname":"sdb", "model":"Fastable SD131 7", "size":10737418240,
|
||||
"rota":false, "type":"disk", "serial":"sdb123", "wwn":"wwn1",
|
||||
"uuid":"9a5e5cca-e03d-4cbd-9054-9e6ca9048222", "partuuid":null,
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": "sas"},
|
||||
{"kname":"sdc", "model":"NWD-BLP4-1600", "size":1765517033472,
|
||||
"rota":false, "type":"disk", "serial":"sdc123", "uuid":null,
|
||||
"partuuid":null, "wwn":"wwn2", "log-sec": 512, "phy-sec": 512},
|
||||
"partuuid":null, "wwn":"wwn2", "log-sec": 512, "phy-sec": 512,
|
||||
"tran": "sas"},
|
||||
{"kname":"sdd", "model":"NWD-BLP4-1600", "size":1765517033472,
|
||||
"rota":false, "type":"disk", "serial":"sdd123", "uuid":null,
|
||||
"partuuid":null, "wwn":"wwn3", "log-sec": 512, "phy-sec": 512},
|
||||
"partuuid":null, "wwn":"wwn3", "log-sec": 512, "phy-sec": 512,
|
||||
"tran": "sas"},
|
||||
{"kname":"loop0", "model":null, "size":109109248, "rota":true,
|
||||
"type":"loop", "serial":null, "uuid":null, "partuuid": null,
|
||||
"wwn":"wwn03", "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"wwn03", "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"zram0", "model":null, "size":0, "rota":false, "type":"disk",
|
||||
"serial":null, "uuid":null, "partuuid":null, "wwn":"wwn04",
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"ram0", "model":null, "size":8388608, "rota":false,
|
||||
"type":"disk", "serial":null, "uuid":null, "partuuid":null, "wwn":null,
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"ram1", "model":null, "size":8388608, "rota":false,
|
||||
"type":"disk", "serial":null, "uuid":null, "partuuid":null, "wwn":null,
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"ram2", "model":null, "size":8388608, "rota":false,
|
||||
"type":"disk", "serial":null, "uuid":null, "partuuid":null,"wwn":null,
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"ram3", "model":null, "size":8388608, "rota":false,
|
||||
"type":"disk", "serial":null, "uuid":null, "partuuid":null, "wwn":null,
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"fd1", "model":"magic", "size":4096, "rota":true,
|
||||
"type":"disk", "serial":null, "uuid":null, "partuuid":null, "wwn":null,
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"sdf", "model":"virtual floppy", "size":0, "rota":true,
|
||||
"type":"disk", "serial":null, "uuid":null, "partuuid":null, "wwn":null,
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": "sas"},
|
||||
{"kname":"dm-0", "model":"NWD-BLP4-1600", "size":"1765517033472",
|
||||
"rota":false, "type":"mpath", "serial":null, "uuid":null,
|
||||
"partuuid":null, "wwn":null , "log-sec": 512, "phy-sec": 512}
|
||||
"partuuid":null, "wwn":null , "log-sec": 512, "phy-sec": 512,
|
||||
"tran": "sas"}
|
||||
]
|
||||
}
|
||||
"""
|
||||
@@ -150,10 +154,10 @@ BLK_DEVICE_TEMPLATE_SMALL = """
|
||||
"blockdevices": [
|
||||
{"kname":"sda", "model":"TinyUSB Drive", "size":3116853504, "rota":false,
|
||||
"type":"disk", "serial":"123", "uuid":"F531-BDC", "partuuid":null,
|
||||
"wwn":"wwn0", "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"wwn0", "log-sec": 512, "phy-sec": 512, "tran": "sas"},
|
||||
{"kname":"sdb", "model":"AlmostBigEnough Drive", "size":"4294967295",
|
||||
"rota":false, "type":"disk", "serial":"456", "uuid":null, "partuuid":null,
|
||||
"wwn":"wwn1", "log-sec": 512, "phy-sec": 512}
|
||||
"wwn":"wwn1", "log-sec": 512, "phy-sec": 512, "tran": "sas"}
|
||||
]
|
||||
}
|
||||
"""
|
||||
@@ -165,10 +169,10 @@ BLK_INCOMPLETE_DEVICE_TEMPLATE_SMALL = """
|
||||
"blockdevices": [
|
||||
{"kname":"sda", "model":"TinyUSB Drive", "size":3116853504, "rota":false,
|
||||
"type":"disk", "serial":"", "uuid":"F531-BDC", "partuuid":null, "wwn":"",
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": "sas"},
|
||||
{"kname":"sdb", "model":"AlmostBigEnough Drive", "size":"4294967295",
|
||||
"rota":false, "type":"disk", "serial":"", "uuid":null, "partuuid":null,
|
||||
"wwn":null , "log-sec": 512, "phy-sec": 512}
|
||||
"wwn":null , "log-sec": 512, "phy-sec": 512, "tran": "sas"}
|
||||
]
|
||||
}
|
||||
"""
|
||||
@@ -185,31 +189,31 @@ RAID_BLK_DEVICE_TEMPLATE = ("""
|
||||
"blockdevices": [
|
||||
{"kname":"sda", "model":"DRIVE 0", "size":1765517033472, "rota":true,
|
||||
"type":"disk", "serial":"sda123", "uuid":null, "partuuid":null,
|
||||
"wwn":"wwn1234" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"wwn1234" , "log-sec": 512, "phy-sec": 512, "tran": "sas"},
|
||||
{"kname":"sda1", "model":"DRIVE 0", "size":107373133824, "rota":true,
|
||||
"type":"part", "serial":"sda1123", "uuid":null, "partuuid":null,
|
||||
"wwn":"wwn2222", "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"wwn2222", "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"sdb", "model":"DRIVE 1", "size":1765517033472, "rota":true,
|
||||
"type":"disk", "serial":"sdb123", "uuid":null, "partuuid":null,
|
||||
"wwn":"wwn333", "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"wwn333", "log-sec": 512, "phy-sec": 512, "tran": "sas"},
|
||||
{"kname":"sdb", "model":"DRIVE 1", "size":1765517033472, "rota":true,
|
||||
"type":"disk", "uuid":null, "partuuid":null, "wwn":"444", "log-sec": 512,
|
||||
"phy-sec": 512},
|
||||
"phy-sec": 512, "tran": "sas"},
|
||||
{"kname":"sdb1", "model":"DRIVE 1", "size":107373133824, "rota":true,
|
||||
"type":"part", "serial":"sdb1123", "uuid":null, "partuuid":null,
|
||||
"wwn":"wwn5", "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"wwn5", "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"md0p1", "model":"RAID", "size":107236818944, "rota":false,
|
||||
"type":"md", "serial":null, "uuid":null, "partuuid":null, "wwn":"wwn6",
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"md0", "model":"RAID", "size":1765517033470, "rota":false,
|
||||
"type":"raid1", "serial":null, "uuid":null, "partuuid":null, "wwn":"12",
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"md0", "model":"RAID", "size":1765517033470, "rota":false,
|
||||
"type":"raid1", "serial":null, "uuid":null, "partuuid":null, "wwn":"33",
|
||||
"log-sec": 512, "phy-sec": 512},
|
||||
"log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"md1", "model":"RAID", "size":0, "rota":false, "type":"raid1",
|
||||
"serial":null, "uuid":null, "partuuid":null, "wwn":null, "log-sec": 512,
|
||||
"phy-sec": 512}
|
||||
"phy-sec": 512, "tran": null}
|
||||
]
|
||||
}
|
||||
""")
|
||||
@@ -219,63 +223,65 @@ MULTIPATH_BLK_DEVICE_TEMPLATE = ("""
|
||||
"blockdevices": [
|
||||
{"kname":"sda", "model":"INTEL_SSDSC2CT060A3", "size":"60022480896",
|
||||
"rota":false, "type":"disk", "serial":"sda123", "uuid":null,
|
||||
"partuuid":null, "wwn":null , "log-sec": 512, "phy-sec": 512},
|
||||
"partuuid":null, "wwn":null , "log-sec": 512, "phy-sec": 512,
|
||||
"tran": "sas"},
|
||||
{"kname":"sda2", "model":null, "size":"59162722304", "rota":false,
|
||||
"type":"part", "uuid":"f8b55d59-96c3-3982-b129-1b6b2ee8da86",
|
||||
"partuuid":"c97c8aac-7796-4433-b1fc-9b5fac43edf3", "serial":"sda2123",
|
||||
"wwn":"" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"" , "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"sda3", "model":null, "size":"650002432", "rota":false,
|
||||
"type":"part", "uuid":"b3b03565-5f13-3c93-b2a6-6d90e25be926",
|
||||
"partuuid":"6c85beff-b2bd-4a1c-91b7-8abb5256459d", "serial":"sda3123",
|
||||
"wwn":"wwn1" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"wwn1" , "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"sda1", "model":null, "size":"209715200", "rota":false,
|
||||
"type":"part", "uuid":"0a83355d-7500-3f5f-9abd-66f6fd03714c",
|
||||
"partuuid":"eba28b26-b76a-402c-94dd-0b66a523a485", "serial":"sda1123",
|
||||
"wwn":"123" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"123" , "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"dm-0", "model":null, "size":"60022480896", "rota":false,
|
||||
"type":"mpath", "serial":null, "uuid":null, "partuuid":null,
|
||||
"wwn":"123aa" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"123aa" , "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"dm-4", "model":null, "size":"650002432", "rota":false,
|
||||
"type":"part", "uuid":"b3b03565-5f13-3c93-b2a6-6d90e25be926",
|
||||
"partuuid":"6c85beff-b2bd-4a1c-91b7-8abb5256459d", "serial":null,
|
||||
"wwn":"123bb" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"123bb" , "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"dm-2", "model":null, "size":"209715200", "rota":false,
|
||||
"type":"part", "uuid":"0a83355d-7500-3f5f-9abd-66f6fd03714c",
|
||||
"partuuid":"eba28b26-b76a-402c-94dd-0b66a523a485", "serial":null,
|
||||
"wwn":"123cc" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"123cc" , "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"dm-3", "model":null, "size":"59162722304", "rota":false,
|
||||
"type":"part", "uuid":"f8b55d59-96c3-3982-b129-1b6b2ee8da86",
|
||||
"partuuid":"c97c8aac-7796-4433-b1fc-9b5fac43edf3", "serial":null,
|
||||
"wwn":"123dd" , "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"123dd" , "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"sdb", "model":"INTEL_SSDSC2CT060A3", "size":"60022480896",
|
||||
"rota":false, "type":"disk", "serial":"sdb123", "uuid":null,
|
||||
"partuuid":null, "wwn":"123ee" , "log-sec": 512, "phy-sec": 512},
|
||||
"partuuid":null, "wwn":"123ee" , "log-sec": 512, "phy-sec": 512,
|
||||
"tran": "sas"},
|
||||
{"kname":"sdb2", "model":null, "size":"59162722304",
|
||||
"rota":false, "type":"part", "serial":"sdb2123",
|
||||
"uuid":"f8b55d59-96c3-3982-b129-1b6b2ee8da86", "wwn":"123gg",
|
||||
"partuuid":"c97c8aac-7796-4433-b1fc-9b5fac43edf3", "log-sec": 512,
|
||||
"phy-sec": 512},
|
||||
"phy-sec": 512, "tran": null},
|
||||
{"kname":"sdb3", "model":null, "size":"650002432",
|
||||
"rota":false, "type":"part", "serial":"sdv3123",
|
||||
"uuid":"b3b03565-5f13-3c93-b2a6-6d90e25be926", "wwn":"123zz",
|
||||
"partuuid":"6c85beff-b2bd-4a1c-91b7-8abb5256459d", "log-sec": 512,
|
||||
"phy-sec": 512},
|
||||
"phy-sec": 512, "tran": null},
|
||||
{"kname":"sdb1", "model":null, "size":"209715200",
|
||||
"rota":false, "type":"part", "serial":"sdb1123",
|
||||
"uuid":"0a83355d-7500-3f5f-9abd-66f6fd03714c", "wwn":"123ll",
|
||||
"partuuid":"eba28b26-b76a-402c-94dd-0b66a523a485", "log-sec": 512,
|
||||
"phy-sec": 512},
|
||||
"phy-sec": 512, "tran": null},
|
||||
{"kname":"sdc", "model":"ST1000DM003-1CH162", "size":"1000204886016",
|
||||
"rota":true, "type":"disk", "serial":"sdc123", "uuid":null, "wwn":"123g",
|
||||
"partuuid":null, "log-sec": 512, "phy-sec": 512},
|
||||
"partuuid":null, "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"sdc1", "model":null, "size":"899999072256",
|
||||
"rota":true, "type":"part", "serial":"sdc1123",
|
||||
"uuid":"457f7d3c-9376-4997-89bd-d1a7c8b04060", "wwn":"123kc",
|
||||
"partuuid":"c9433d2e-3bbc-47b4-92bf-43c1d80f06e0", "log-sec": 512,
|
||||
"phy-sec": 512},
|
||||
"phy-sec": 512, "tran": null},
|
||||
{"kname":"dm-1", "model":null, "size":"1000204886016", "rota":false,
|
||||
"type":"mpath", "serial":null, "uuid":null, "partuuid":null,
|
||||
"wwn":"sp0ng3b0b" , "log-sec": 512, "phy-sec": 512}
|
||||
"wwn":"sp0ng3b0b" , "log-sec": 512, "phy-sec": 512, "tran": null}
|
||||
]
|
||||
}
|
||||
""")
|
||||
@@ -285,10 +291,10 @@ PARTUUID_DEVICE_TEMPLATE = ("""
|
||||
"blockdevices": [
|
||||
{"kname":"sda", "model":"DRIVE 0", "size":1765517033472, "rota":true,
|
||||
"type":"disk", "serial":"sda123", "uuid":null, "partuuid":null,
|
||||
"wwn":"4d4m", "log-sec": 512, "phy-sec": 512},
|
||||
"wwn":"4d4m", "log-sec": 512, "phy-sec": 512, "tran": null},
|
||||
{"kname":"sda1", "model":"DRIVE 0", "size":107373133824, "rota":true,
|
||||
"type":"part", "serial":"sda1123", "uuid":"987654-3210", "wwn":"k4k1",
|
||||
"partuuid":"1234-5678", "log-sec": 512, "phy-sec": 512}
|
||||
"partuuid":"1234-5678", "log-sec": 512, "phy-sec": 512, "tran": null}
|
||||
]
|
||||
}
|
||||
""")
|
||||
|
@@ -53,12 +53,14 @@ BLK_DEVICE_TEMPLATE_SMALL_DEVICES = [
|
||||
size=3116853504, rotational=False,
|
||||
vendor="FooTastic", uuid="F531-BDC3",
|
||||
serial="123", wwn="wwn0",
|
||||
logical_sectors=512, physical_sectors=512),
|
||||
logical_sectors=512, physical_sectors=512,
|
||||
tran='sas'),
|
||||
hardware.BlockDevice(name='/dev/sdb', model='AlmostBigEnough Drive',
|
||||
size=4294967295, rotational=False,
|
||||
vendor="FooTastic", uuid="",
|
||||
serial="456", wwn="wwn1",
|
||||
logical_sectors=512, physical_sectors=512),
|
||||
logical_sectors=512, physical_sectors=512,
|
||||
tran='sas'),
|
||||
]
|
||||
|
||||
RAID_BLK_DEVICE_TEMPLATE_DEVICES = [
|
||||
@@ -66,22 +68,26 @@ RAID_BLK_DEVICE_TEMPLATE_DEVICES = [
|
||||
size=1765517033472, rotational=True,
|
||||
vendor="FooTastic", uuid="",
|
||||
serial="sda123", wwn="wwn1234",
|
||||
logical_sectors=512, physical_sectors=512),
|
||||
logical_sectors=512, physical_sectors=512,
|
||||
tran='sas'),
|
||||
hardware.BlockDevice(name='/dev/sdb', model='DRIVE 1',
|
||||
size=1765517033472, rotational=True,
|
||||
vendor="FooTastic", uuid="",
|
||||
serial="sdb123", wwn="wwn333",
|
||||
logical_sectors=512, physical_sectors=512),
|
||||
logical_sectors=512, physical_sectors=512,
|
||||
tran='sas'),
|
||||
hardware.BlockDevice(name='/dev/md0', model='RAID',
|
||||
size=1765517033470, rotational=False,
|
||||
vendor="FooTastic", uuid="",
|
||||
serial=None, wwn="12",
|
||||
logical_sectors=512, physical_sectors=512),
|
||||
logical_sectors=512, physical_sectors=512,
|
||||
tran=None),
|
||||
hardware.BlockDevice(name='/dev/md1', model='RAID',
|
||||
size=0, rotational=False,
|
||||
vendor="FooTastic", uuid="",
|
||||
serial=None, wwn=None,
|
||||
logical_sectors=512, physical_sectors=512),
|
||||
logical_sectors=512, physical_sectors=512,
|
||||
tran=None),
|
||||
]
|
||||
|
||||
BLK_DEVICE_TEMPLATE_PARTUUID_DEVICE = [
|
||||
@@ -89,7 +95,8 @@ BLK_DEVICE_TEMPLATE_PARTUUID_DEVICE = [
|
||||
size=107373133824, rotational=True,
|
||||
vendor="FooTastic", uuid="987654-3210",
|
||||
partuuid="1234-5678", serial="sda1123", wwn="k4k1",
|
||||
logical_sectors=512, physical_sectors=512),
|
||||
logical_sectors=512, physical_sectors=512,
|
||||
tran=None),
|
||||
]
|
||||
|
||||
|
||||
@@ -475,7 +482,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
expected = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('multipath', '-c', '/dev/sda'),
|
||||
mock.call('multipath', '-ll', '/dev/sda'),
|
||||
@@ -556,7 +563,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
expected = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('multipath', '-c', '/dev/sda'),
|
||||
mock.call('multipath', '-ll', '/dev/sda'),
|
||||
@@ -612,7 +619,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
expected = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
]
|
||||
|
||||
@@ -639,7 +646,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
expected = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
]
|
||||
|
||||
@@ -647,7 +654,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
mocked_execute.assert_called_once_with(
|
||||
'lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0])
|
||||
self.assertIn(str(4 * units.Gi), ex.details)
|
||||
mock_cached_node.assert_called_once_with()
|
||||
@@ -670,7 +677,8 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
wwn=['strangewwn', 'wwn0'],
|
||||
wwn_with_extension='wwn0ven0',
|
||||
wwn_vendor_extension='ven0',
|
||||
serial=['wongserial', 'wrng0', 'serial0']),
|
||||
serial=['wongserial', 'wrng0', 'serial0'],
|
||||
tran='sas'),
|
||||
hardware.BlockDevice(name='/dev/sdb',
|
||||
model=model,
|
||||
size=10737418240,
|
||||
@@ -680,7 +688,19 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
wwn_with_extension='fake-wwnven0',
|
||||
wwn_vendor_extension='ven0',
|
||||
serial=['fake-serial', 'serial1'],
|
||||
by_path='/dev/disk/by-path/1:0:0:0'),
|
||||
by_path='/dev/disk/by-path/1:0:0:0',
|
||||
tran='sas'),
|
||||
hardware.BlockDevice(name='/dev/nvme0n1',
|
||||
model=model,
|
||||
size=10737418240,
|
||||
rotational=False,
|
||||
vendor='fake-vendor',
|
||||
wwn=['fake-wwn'],
|
||||
wwn_with_extension='fake-wwnven0',
|
||||
wwn_vendor_extension='ven0',
|
||||
serial=['fake-serial', 'serial1'],
|
||||
by_path='',
|
||||
tran='nvme'),
|
||||
]
|
||||
|
||||
self.assertEqual(expected_device,
|
||||
@@ -730,6 +750,14 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
self._get_os_install_device_root_device_hints(
|
||||
{'by_path': '/dev/disk/by-path/1:0:0:0'}, '/dev/sdb')
|
||||
|
||||
def test_get_os_install_device_root_device_hints_by_tran_sas(self):
|
||||
self._get_os_install_device_root_device_hints(
|
||||
{'tran': 'sas'}, '/dev/sda')
|
||||
|
||||
def test_get_os_install_device_root_device_hints_by_tran_nvme(self):
|
||||
self._get_os_install_device_root_device_hints(
|
||||
{'tran': 'nvme'}, '/dev/nvme0n1')
|
||||
|
||||
@mock.patch.object(hardware, 'list_all_block_devices', autospec=True)
|
||||
@mock.patch.object(hardware, 'get_cached_node', autospec=True)
|
||||
def test_get_os_install_device_root_device_hints_no_device_found(
|
||||
@@ -1520,7 +1548,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
expected_calls = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('multipath', '-c', '/dev/sda'),
|
||||
mock.call('multipath', '-c', '/dev/sdb'),
|
||||
@@ -1653,7 +1681,7 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
||||
expected_calls = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('multipath', '-c', '/dev/sda'),
|
||||
mock.call('multipath', '-c', '/dev/sdb'),
|
||||
@@ -5945,7 +5973,7 @@ class TestModuleFunctions(base.IronicAgentTest):
|
||||
expected_calls = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('multipath', '-c', '/dev/sda'),
|
||||
mock.call('multipath', '-c', '/dev/sdb')
|
||||
@@ -5993,7 +6021,7 @@ class TestModuleFunctions(base.IronicAgentTest):
|
||||
expected_calls = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('multipath', '-c', '/dev/sda'),
|
||||
mock.call('multipath', '-c', '/dev/sda1'),
|
||||
@@ -6033,7 +6061,7 @@ class TestModuleFunctions(base.IronicAgentTest):
|
||||
expected_calls = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
mock.call('multipath', '-c', '/dev/sda'),
|
||||
mock.call('multipath', '-c', '/dev/sda1'),
|
||||
@@ -6057,7 +6085,7 @@ class TestModuleFunctions(base.IronicAgentTest):
|
||||
mocked_execute.assert_called_once_with(
|
||||
'lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0])
|
||||
self.assertEqual([], result)
|
||||
mocked_udev.assert_called_once_with()
|
||||
@@ -6072,7 +6100,7 @@ class TestModuleFunctions(base.IronicAgentTest):
|
||||
expected_calls = [
|
||||
mock.call('lsblk', '-bia', '--json',
|
||||
'-oKNAME,MODEL,SIZE,ROTA,TYPE,UUID,PARTUUID,SERIAL,WWN,'
|
||||
'LOG-SEC,PHY-SEC',
|
||||
'LOG-SEC,PHY-SEC,TRAN',
|
||||
check_exit_code=[0]),
|
||||
]
|
||||
mocked_execute.return_value = (
|
||||
@@ -6080,7 +6108,7 @@ class TestModuleFunctions(base.IronicAgentTest):
|
||||
self.assertRaisesRegex(
|
||||
errors.BlockDeviceError,
|
||||
r'Block device caused unknown error: kname, log-sec, partuuid, '
|
||||
r'phy-sec, rota, serial, size, uuid, wwn '
|
||||
r'phy-sec, rota, serial, size, tran, uuid, wwn '
|
||||
r'must be returned by lsblk.',
|
||||
hardware.list_all_block_devices)
|
||||
mocked_udev.assert_called_once_with()
|
||||
|
@@ -65,7 +65,7 @@ AGENT_PARAMS_CACHED = dict()
|
||||
|
||||
LSBLK_COLUMNS = ['KNAME', 'MODEL', 'SIZE', 'ROTA',
|
||||
'TYPE', 'UUID', 'PARTUUID', 'SERIAL', 'WWN',
|
||||
'LOG-SEC', 'PHY-SEC']
|
||||
'LOG-SEC', 'PHY-SEC', 'TRAN']
|
||||
|
||||
|
||||
DEVICE_EXTRACTOR = re.compile(r'^(?:(.*\d)p|(.*\D))(?:\d+)$')
|
||||
|
@@ -0,0 +1,6 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds device transport type ``tran`` that can be used as root device
|
||||
hint that typically suited for locate devices with different bus types
|
||||
like SSD and NVME.
|
Reference in New Issue
Block a user