Skip to content

Commit 9e361dc

Browse files
committed
lib/host: add attribute in host to distinguish nested
Signed-off-by: Olivier Hoareau <olivier.hoareau@vates.tech>
1 parent b34ea56 commit 9e361dc

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

lib/host.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ def __init__(self, pool: Pool, hostname_or_ip: str):
8181
self.saved_packages_list: list[str] | None = None
8282
self.saved_rollback_id: int | None = None
8383
self.inventory = self._get_xensource_inventory()
84+
self._bios_vendor: str | None = None
8485
self.uuid = self.inventory['INSTALLATION_UUID']
8586
self.xcp_version = version.parse(self.inventory['PRODUCT_VERSION'])
8687
self.xcp_version_short = f"{self.xcp_version.major}.{self.xcp_version.minor}"
@@ -277,6 +278,26 @@ def _get_xensource_inventory(self) -> dict[str, str]:
277278
inventory[key] = raw_value.strip('\'')
278279
return inventory
279280

281+
def _get_bios_vendor(self) -> str:
282+
"""Get Bios Vendor information for Host.
283+
284+
Performs a dmidecode command to get this bios information::
285+
286+
dmidecode -s bios-vendor
287+
288+
>>> my_host._get_bios_vendor()
289+
Xen
290+
"""
291+
return self.ssh('dmidecode -s bios-vendor')
292+
293+
@property
294+
def is_nested(self) -> bool:
295+
"""The host is nested or not (physical).
296+
"""
297+
if self._bios_vendor is None:
298+
self._bios_vendor = self._get_bios_vendor()
299+
return 'Xen' in self._bios_vendor
300+
280301
def xo_get_server_id(self, store: bool = True) -> str | None:
281302
servers = xo_cli('server.getAll', use_json=True)
282303
assert isinstance(servers, list)

0 commit comments

Comments
 (0)