From fb43474945d4e7de6cc93984f2a120fb0f589ccf Mon Sep 17 00:00:00 2001 From: Olivier Gayot Date: Wed, 13 Dec 2023 14:09:44 +0100 Subject: [PATCH] Also return information about NVMe controllers Signed-off-by: Olivier Gayot --- probert/nvme.py | 35 +++++++++++++++++++++++++++++++++++ probert/storage.py | 3 ++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 probert/nvme.py diff --git a/probert/nvme.py b/probert/nvme.py new file mode 100644 index 0000000..ede7cc4 --- /dev/null +++ b/probert/nvme.py @@ -0,0 +1,35 @@ +# Copyright 2023 Canonical, Ltd. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import logging + +import pyudev + +from probert.utils import udev_get_attributes + +log = logging.getLogger('probert.nvme') + + +async def probe(context=None, **kw): + if not context: + context = pyudev.Context() + + nvme_controllers = {} + for controller in context.list_devices(subsystem='nvme'): + props = dict(controller.properties) + props['attrs'] = udev_get_attributes(controller) + nvme_controllers[controller.sys_name] = props + + return nvme_controllers diff --git a/probert/storage.py b/probert/storage.py index 0457f3a..453ddac 100644 --- a/probert/storage.py +++ b/probert/storage.py @@ -26,7 +26,7 @@ udev_get_attributes, ) from probert import (bcache, dasd, dmcrypt, filesystem, lvm, mount, multipath, - os, raid, zfs) + nvme, os, raid, zfs) log = logging.getLogger('probert.storage') @@ -198,6 +198,7 @@ class Storage(): 'lvm': Probe(lvm.probe), 'mount': Probe(mount.probe), 'multipath': Probe(multipath.probe), + 'nvme': Probe(nvme.probe), 'os': Probe(os.probe, in_default_set=False), 'filesystem_sizing': Probe(null_probe, in_default_set=False), 'raid': Probe(raid.probe),