summaryrefslogtreecommitdiffstats
path: root/test/TEST-64-UDEV-STORAGE/nvme_subsystem.configure
blob: eb601a6843b8597a629a9864d4be20b53e58ec68 (plain)
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
#!/usr/bin/python3
# SPDX-License-Identifier: LGPL-2.1-or-later

import json
import os
import subprocess
import sys


config = json.load(sys.stdin)

qemu = f"qemu-system-{os.environ["QEMU_ARCHITECTURE"]}"
result = subprocess.run([qemu, '-device', 'help'], check=True, text=True, stdout=subprocess.PIPE)
if 'name "nvme"' not in result.stdout:
    print("nvme device driver is not available, skipping test...", file=sys.stderr)
    exit(77)

for id in ("nvme0", "nvme1"):
    config["QemuDrives"] += [
        {
            "Id": id,
            "Size": "1M",
            "Options": "cache=unsafe",
        }

    ]

config["QemuArgs"] += [
    # Create an NVM Subsystem Device
    "-device", "nvme-subsys,id=nvme-subsys-64,nqn=subsys64",
    # Attach two NVM controllers to it
    "-device", "nvme,subsys=nvme-subsys-64,serial=deadbeef",
    "-device", "nvme,subsys=nvme-subsys-64,serial=deadbeef",
    # And create two shared namespaces attached to both controllers
    "-device", "nvme-ns,drive=nvme0,nsid=16,shared=on",
    "-device", "nvme-ns,drive=nvme1,nsid=17,shared=on",
]

json.dump(config, sys.stdout)