mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-09-19 04:59:01 +00:00
upgrades: Simplify dist upgrades checks using exceptions
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
parent
9ddfbc4fed
commit
32739bb8b7
@ -221,9 +221,23 @@ def try_start_dist_upgrade(test=False):
|
|||||||
"""Try to start dist upgrade."""
|
"""Try to start dist upgrade."""
|
||||||
from plinth.notification import Notification
|
from plinth.notification import Notification
|
||||||
|
|
||||||
result = privileged.start_dist_upgrade(test)
|
try:
|
||||||
dist_upgrade_started = result['dist_upgrade_started']
|
privileged.start_dist_upgrade(test, _log_error=False)
|
||||||
reason = result['reason']
|
except RuntimeError as exception:
|
||||||
|
reason = exception.args[0]
|
||||||
|
else:
|
||||||
|
logger.info('Started dist upgrade.')
|
||||||
|
title = gettext_noop('Distribution update started')
|
||||||
|
message = gettext_noop(
|
||||||
|
'Started update to next stable release. This may take a long '
|
||||||
|
'time to complete.')
|
||||||
|
Notification.update_or_create(id='upgrades-dist-upgrade-started',
|
||||||
|
app_id='upgrades', severity='info',
|
||||||
|
title=title, message=message, actions=[{
|
||||||
|
'type': 'dismiss'
|
||||||
|
}], group='admin')
|
||||||
|
return
|
||||||
|
|
||||||
if 'found-previous' in reason:
|
if 'found-previous' in reason:
|
||||||
logger.info(
|
logger.info(
|
||||||
'Found previous dist-upgrade. If it was interrupted, it will '
|
'Found previous dist-upgrade. If it was interrupted, it will '
|
||||||
@ -250,20 +264,8 @@ def try_start_dist_upgrade(test=False):
|
|||||||
title=title, message=message, actions=[{
|
title=title, message=message, actions=[{
|
||||||
'type': 'dismiss'
|
'type': 'dismiss'
|
||||||
}], group='admin')
|
}], group='admin')
|
||||||
elif 'started-dist-upgrade' in reason:
|
|
||||||
logger.info('Started dist upgrade.')
|
|
||||||
title = gettext_noop('Distribution update started')
|
|
||||||
message = gettext_noop(
|
|
||||||
'Started update to next stable release. This may take a long '
|
|
||||||
'time to complete.')
|
|
||||||
Notification.update_or_create(id='upgrades-dist-upgrade-started',
|
|
||||||
app_id='upgrades', severity='info',
|
|
||||||
title=title, message=message, actions=[{
|
|
||||||
'type': 'dismiss'
|
|
||||||
}], group='admin')
|
|
||||||
else:
|
else:
|
||||||
logger.warning('Unhandled result of start-dist-upgrade: %s, %s',
|
logger.warning('Unhandled result of start-dist-upgrade: %s', reason)
|
||||||
dist_upgrade_started, reason)
|
|
||||||
|
|
||||||
|
|
||||||
def is_backports_requested():
|
def is_backports_requested():
|
||||||
|
|||||||
@ -75,7 +75,7 @@ def _get_new_codename(test_upgrade: bool) -> str | None:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def check(test_upgrade=False) -> tuple[bool, str]:
|
def check(test_upgrade=False):
|
||||||
"""Check if a distribution upgrade be performed.
|
"""Check if a distribution upgrade be performed.
|
||||||
|
|
||||||
Check for new stable release, if updates are enabled, and if there is
|
Check for new stable release, if updates are enabled, and if there is
|
||||||
@ -87,30 +87,28 @@ def check(test_upgrade=False) -> tuple[bool, str]:
|
|||||||
if not.
|
if not.
|
||||||
"""
|
"""
|
||||||
if action_utils.service_is_running('freedombox-dist-upgrade'):
|
if action_utils.service_is_running('freedombox-dist-upgrade'):
|
||||||
return (True, 'found-previous')
|
raise RuntimeError('found-previous')
|
||||||
|
|
||||||
from plinth.modules.upgrades import get_current_release
|
from plinth.modules.upgrades import get_current_release
|
||||||
release, dist = get_current_release()
|
release, dist = get_current_release()
|
||||||
if release in ['unstable', 'testing', 'n/a']:
|
if release in ['unstable', 'testing', 'n/a']:
|
||||||
return (False, f'already-{release}')
|
raise RuntimeError(f'already-{release}')
|
||||||
|
|
||||||
codename = _get_new_codename(test_upgrade)
|
codename = _get_new_codename(test_upgrade)
|
||||||
if not codename:
|
if not codename:
|
||||||
return (False, 'codename-not-found')
|
raise RuntimeError('codename-not-found')
|
||||||
|
|
||||||
if codename == dist:
|
if codename == dist:
|
||||||
return (False, f'already-{dist}')
|
raise RuntimeError(f'already-{dist}')
|
||||||
|
|
||||||
if not utils.check_auto():
|
if not utils.check_auto():
|
||||||
return (False, 'upgrades-not-enabled')
|
raise RuntimeError('upgrades-not-enabled')
|
||||||
|
|
||||||
if not utils.is_sufficient_free_space():
|
if not utils.is_sufficient_free_space():
|
||||||
return (False, 'not-enough-free-space')
|
raise RuntimeError('not-enough-free-space')
|
||||||
|
|
||||||
_sources_list_update(dist, codename)
|
_sources_list_update(dist, codename)
|
||||||
|
|
||||||
return (True, 'started-dist-upgrade')
|
|
||||||
|
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def _snapshot_run_and_disable() -> Generator[None, None, None]:
|
def _snapshot_run_and_disable() -> Generator[None, None, None]:
|
||||||
|
|||||||
@ -236,7 +236,7 @@ def activate_backports(develop: bool = False):
|
|||||||
|
|
||||||
|
|
||||||
@privileged
|
@privileged
|
||||||
def start_dist_upgrade(test: bool = False) -> dict[str, str | bool]:
|
def start_dist_upgrade(test: bool = False):
|
||||||
"""Start dist upgrade process.
|
"""Start dist upgrade process.
|
||||||
|
|
||||||
Check if a new stable release is available, and start dist-upgrade process
|
Check if a new stable release is available, and start dist-upgrade process
|
||||||
@ -244,11 +244,8 @@ def start_dist_upgrade(test: bool = False) -> dict[str, str | bool]:
|
|||||||
"""
|
"""
|
||||||
_release_held_freedombox()
|
_release_held_freedombox()
|
||||||
|
|
||||||
upgrade_ready, reason = distupgrade.check(test)
|
distupgrade.check(test)
|
||||||
if upgrade_ready:
|
distupgrade.start_service()
|
||||||
distupgrade.start_service()
|
|
||||||
|
|
||||||
return {'dist_upgrade_started': upgrade_ready, 'reason': reason}
|
|
||||||
|
|
||||||
|
|
||||||
@privileged
|
@privileged
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user