Merge pull request #181 from zosman1/enhancement-systemd-service-wrapper

Allow multiple services to be enabled at once
This commit is contained in:
Anton Hvornum 2021-04-11 08:44:37 +00:00 committed by GitHub
commit 75b6ab396e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 8 deletions

View File

@ -19,3 +19,5 @@ class PermissionError(BaseException):
pass pass
class UserError(BaseException): class UserError(BaseException):
pass pass
class ServiceException(BaseException):
pass

View File

@ -178,9 +178,11 @@ class Installer():
if self.enable_service('ntpd'): if self.enable_service('ntpd'):
return True return True
def enable_service(self, service): def enable_service(self, *services):
self.log(f'Enabling service {service}', level=LOG_LEVELS.Info) for service in services:
return self.arch_chroot(f'systemctl enable {service}').exit_code == 0 self.log(f'Enabling service {service}', level=LOG_LEVELS.Info)
if (output := self.arch_chroot(f'systemctl enable {service}')).exit_code != 0:
raise ServiceException(f"Unable to start service {service}: {output}")
def run_command(self, cmd, *args, **kwargs): def run_command(self, cmd, *args, **kwargs):
return sys_command(f'/usr/bin/arch-chroot {self.target} {cmd}') return sys_command(f'/usr/bin/arch-chroot {self.target} {cmd}')
@ -245,14 +247,12 @@ class Installer():
# If we haven't installed the base yet (function called pre-maturely) # If we haven't installed the base yet (function called pre-maturely)
if self.helper_flags.get('base', False) is False: if self.helper_flags.get('base', False) is False:
def post_install_enable_networkd_resolved(*args, **kwargs): def post_install_enable_networkd_resolved(*args, **kwargs):
self.enable_service('systemd-networkd') self.enable_service('systemd-networkd', 'systemd-resolved')
self.enable_service('systemd-resolved')
self.post_base_install.append(post_install_enable_networkd_resolved) self.post_base_install.append(post_install_enable_networkd_resolved)
# Otherwise, we can go ahead and enable the services # Otherwise, we can go ahead and enable the services
else: else:
self.enable_service('systemd-networkd') self.enable_service('systemd-networkd', 'systemd-resolved')
self.enable_service('systemd-resolved')
return True return True

View File

@ -91,3 +91,13 @@ Exceptions
.. autofunction:: archinstall.ProfileError .. autofunction:: archinstall.ProfileError
.. autofunction:: archinstall.SysCallError .. autofunction:: archinstall.SysCallError
.. autofunction:: archinstall.ProfileNotFound
.. autofunction:: archinstall.HardwareIncompatibilityError
.. autofunction:: archinstall.PermissionError
.. autofunction:: archinstall.UserError
.. autofunction:: archinstall.ServiceException