raise
self._wait_for_ready()
self._fix_hostname()
+ self._verify_installed_os()
self.log.info("Deploy complete!")
def do_request(self, url_suffix, data=None, method='GET', verify=True):
check_status=False,
)
+ def _verify_installed_os(self):
+ # What we call "CentOS X.Stream", we will see as "CentOS X"
+ os_version = self.os_version.lower()
+ # When we drop support for python 3.8, str.removesuffix() is helpful
+ if os_version.endswith(".stream"):
+ os_version = os_version[:-len(".stream")]
+ if self.remote.os.name.lower() != self.os_type.lower() or \
+ self.remote.os.version.lower() != os_version:
+ raise RuntimeError(
+ f"Expected {self.remote.shortname}'s OS to be {self.os_type} {os_version} but "
+ f"found {self.remote.os.name} {self.remote.os.version}"
+ )
+
def destroy(self):
"""A no-op; we just leave idle nodes as-is"""
pass
cancel_deploy_task=DEFAULT,
_wait_for_ready=DEFAULT,
_fix_hostname=DEFAULT,
+ _verify_installed_os=DEFAULT,
) as local_mocks:
local_mocks['get_host_data'].return_value = dict(id=host_id)
local_mocks['schedule_deploy_task'].return_value = task_id