@@ -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