in sdw_updater/UpdaterApp.py [0:0]
def run_full_update(self):
# Pre-populate results with all available steps for early exits
results = {
"dom0": UpdateStatus.UPDATES_REQUIRED,
"apply_dom0": UpdateStatus.UPDATES_REQUIRED,
"apply_all": UpdateStatus.UPDATES_REQUIRED,
"templates": UpdateStatus.UPDATES_REQUIRED,
}
# Update dom0 first, then apply dom0 state. If full state run
# is required, the dom0 state will drop a flag.
self.progress_signal.emit(5)
results["dom0"] = Updater.apply_updates_dom0()
if results["dom0"] == UpdateStatus.UPDATES_FAILED:
return results # Fail early
# apply dom0 state
self.progress_signal.emit(10)
# add to results dict, if it fails it will show error message
results["apply_dom0"] = Updater.apply_dom0_state()
if results["apply_dom0"] == UpdateStatus.UPDATES_FAILED:
return results # Fail early
self.progress_signal.emit(15)
# rerun full config if dom0 checks determined it's required
if Updater.migration_is_required():
# Progress bar will freeze for ~15m during full state run
self.progress_signal.emit(35)
# add to results dict, if it fails it will show error message
results["apply_all"] = Updater.run_full_install()
if results["apply_all"] == UpdateStatus.UPDATES_FAILED:
return results # Fail early
self.progress_signal.emit(75)
templates_progress_callback = self.templates_progress_callback_factory(
progress_start=75,
progress_end=90,
)
else:
results["apply_all"] = UpdateStatus.UPDATES_OK # No updates
templates_progress_callback = self.templates_progress_callback_factory(
progress_start=15,
progress_end=90,
)
results["templates"] = Updater.apply_updates_templates(
current_templates,
templates_progress_callback,
)
return results