mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Merge pull request #611 from bourreP/enh-add-reload-and-restart-service
[enh] add reload and restart service
This commit is contained in:
commit
ff1286885d
3 changed files with 89 additions and 3 deletions
|
@ -1178,6 +1178,33 @@ service:
|
||||||
nargs: "+"
|
nargs: "+"
|
||||||
metavar: NAME
|
metavar: NAME
|
||||||
|
|
||||||
|
### service_reload()
|
||||||
|
reload:
|
||||||
|
action_help: Reload one or more services
|
||||||
|
arguments:
|
||||||
|
names:
|
||||||
|
help: Service name to reload
|
||||||
|
nargs: "+"
|
||||||
|
metavar: NAME
|
||||||
|
|
||||||
|
### service_restart()
|
||||||
|
restart:
|
||||||
|
action_help: Restart one or more services. If the services are not running yet, they will be started.
|
||||||
|
arguments:
|
||||||
|
names:
|
||||||
|
help: Service name to restart
|
||||||
|
nargs: "+"
|
||||||
|
metavar: NAME
|
||||||
|
|
||||||
|
### service_reload_or_restart()
|
||||||
|
reload_or_restart:
|
||||||
|
action_help: Reload one or more services if they support it. If not, restart them instead. If the services are not running yet, they will be started.
|
||||||
|
arguments:
|
||||||
|
names:
|
||||||
|
help: Service name to reload or restart
|
||||||
|
nargs: "+"
|
||||||
|
metavar: NAME
|
||||||
|
|
||||||
### service_enable()
|
### service_enable()
|
||||||
enable:
|
enable:
|
||||||
action_help: Enable one or more services
|
action_help: Enable one or more services
|
||||||
|
|
|
@ -222,7 +222,6 @@
|
||||||
"log_help_to_get_log": "To view the log of the operation '{desc}', use the command 'yunohost log display {name}'",
|
"log_help_to_get_log": "To view the log of the operation '{desc}', use the command 'yunohost log display {name}'",
|
||||||
"log_link_to_failed_log": "The operation '{desc}' has failed! To get help, please <a href=\"#/tools/logs/{name}\">provide the full log of this operation by clicking here</a>",
|
"log_link_to_failed_log": "The operation '{desc}' has failed! To get help, please <a href=\"#/tools/logs/{name}\">provide the full log of this operation by clicking here</a>",
|
||||||
"log_help_to_get_failed_log": "The operation '{desc}' has failed! To get help, please share the full log of this operation using the command 'yunohost log display {name} --share'",
|
"log_help_to_get_failed_log": "The operation '{desc}' has failed! To get help, please share the full log of this operation using the command 'yunohost log display {name} --share'",
|
||||||
"log_category_404": "The log category '{category}' does not exist",
|
|
||||||
"log_does_exists": "There is not operation log with the name '{log}', use 'yunohost log list to see all available operation logs'",
|
"log_does_exists": "There is not operation log with the name '{log}', use 'yunohost log list to see all available operation logs'",
|
||||||
"log_operation_unit_unclosed_properly": "Operation unit has not been closed properly",
|
"log_operation_unit_unclosed_properly": "Operation unit has not been closed properly",
|
||||||
"log_app_addaccess": "Add access to '{}'",
|
"log_app_addaccess": "Add access to '{}'",
|
||||||
|
@ -444,6 +443,12 @@
|
||||||
"service_regenconf_pending_applying": "Applying pending configuration for service '{service}'…",
|
"service_regenconf_pending_applying": "Applying pending configuration for service '{service}'…",
|
||||||
"service_remove_failed": "Unable to remove service '{service:s}'",
|
"service_remove_failed": "Unable to remove service '{service:s}'",
|
||||||
"service_removed": "The service '{service:s}' has been removed",
|
"service_removed": "The service '{service:s}' has been removed",
|
||||||
|
"service_reload_failed": "Unable to reload service '{service:s}'\n\nRecent service logs:{logs:s}",
|
||||||
|
"service_reloaded": "The service '{service:s}' has been reloaded",
|
||||||
|
"service_restart_failed": "Unable to restart service '{service:s}'\n\nRecent service logs:{logs:s}",
|
||||||
|
"service_restarted": "The service '{service:s}' has been restarted",
|
||||||
|
"service_reload_or_restart_failed": "Unable to reload or restart service '{service:s}'\n\nRecent service logs:{logs:s}",
|
||||||
|
"service_reloaded_or_restarted": "The service '{service:s}' has been reloaded or restarted",
|
||||||
"service_start_failed": "Unable to start service '{service:s}'\n\nRecent service logs:{logs:s}",
|
"service_start_failed": "Unable to start service '{service:s}'\n\nRecent service logs:{logs:s}",
|
||||||
"service_started": "The service '{service:s}' has been started",
|
"service_started": "The service '{service:s}' has been started",
|
||||||
"service_status_failed": "Unable to determine status of service '{service:s}'",
|
"service_status_failed": "Unable to determine status of service '{service:s}'",
|
||||||
|
|
|
@ -152,6 +152,60 @@ def service_stop(names):
|
||||||
logger.debug(m18n.n('service_already_stopped', service=name))
|
logger.debug(m18n.n('service_already_stopped', service=name))
|
||||||
|
|
||||||
|
|
||||||
|
def service_reload(names):
|
||||||
|
"""
|
||||||
|
Reload one or more services
|
||||||
|
|
||||||
|
Keyword argument:
|
||||||
|
name -- Services name to reload
|
||||||
|
|
||||||
|
"""
|
||||||
|
if isinstance(names, str):
|
||||||
|
names = [names]
|
||||||
|
for name in names:
|
||||||
|
if _run_service_command('reload', name):
|
||||||
|
logger.success(m18n.n('service_reloaded', service=name))
|
||||||
|
else:
|
||||||
|
if service_status(name)['status'] != 'inactive':
|
||||||
|
raise YunohostError('service_reload_failed', service=name, logs=_get_journalctl_logs(name))
|
||||||
|
|
||||||
|
|
||||||
|
def service_restart(names):
|
||||||
|
"""
|
||||||
|
Restart one or more services. If the services are not running yet, they will be started.
|
||||||
|
|
||||||
|
Keyword argument:
|
||||||
|
name -- Services name to restart
|
||||||
|
|
||||||
|
"""
|
||||||
|
if isinstance(names, str):
|
||||||
|
names = [names]
|
||||||
|
for name in names:
|
||||||
|
if _run_service_command('restart', name):
|
||||||
|
logger.success(m18n.n('service_restarted', service=name))
|
||||||
|
else:
|
||||||
|
if service_status(name)['status'] != 'inactive':
|
||||||
|
raise YunohostError('service_restart_failed', service=name, logs=_get_journalctl_logs(name))
|
||||||
|
|
||||||
|
|
||||||
|
def service_reload_or_restart(names):
|
||||||
|
"""
|
||||||
|
Reload one or more services if they support it. If not, restart them instead. If the services are not running yet, they will be started.
|
||||||
|
|
||||||
|
Keyword argument:
|
||||||
|
name -- Services name to reload or restart
|
||||||
|
|
||||||
|
"""
|
||||||
|
if isinstance(names, str):
|
||||||
|
names = [names]
|
||||||
|
for name in names:
|
||||||
|
if _run_service_command('reload-or-restart', name):
|
||||||
|
logger.success(m18n.n('service_reloaded_or_restarted', service=name))
|
||||||
|
else:
|
||||||
|
if service_status(name)['status'] != 'inactive':
|
||||||
|
raise YunohostError('service_reload_or_restart_failed', service=name, logs=_get_journalctl_logs(name))
|
||||||
|
|
||||||
|
|
||||||
@is_unit_operation()
|
@is_unit_operation()
|
||||||
def service_enable(operation_logger, names):
|
def service_enable(operation_logger, names):
|
||||||
"""
|
"""
|
||||||
|
@ -597,14 +651,14 @@ def _run_service_command(action, service):
|
||||||
if service not in services.keys():
|
if service not in services.keys():
|
||||||
raise YunohostError('service_unknown', service=service)
|
raise YunohostError('service_unknown', service=service)
|
||||||
|
|
||||||
possible_actions = ['start', 'stop', 'restart', 'reload', 'enable', 'disable']
|
possible_actions = ['start', 'stop', 'restart', 'reload', 'reload-or-restart', 'enable', 'disable']
|
||||||
if action not in possible_actions:
|
if action not in possible_actions:
|
||||||
raise ValueError("Unknown action '%s', available actions are: %s" % (action, ", ".join(possible_actions)))
|
raise ValueError("Unknown action '%s', available actions are: %s" % (action, ", ".join(possible_actions)))
|
||||||
|
|
||||||
cmd = 'systemctl %s %s' % (action, service)
|
cmd = 'systemctl %s %s' % (action, service)
|
||||||
|
|
||||||
need_lock = services[service].get('need_lock', False) \
|
need_lock = services[service].get('need_lock', False) \
|
||||||
and action in ['start', 'stop', 'restart', 'reload']
|
and action in ['start', 'stop', 'restart', 'reload', 'reload-or-restart']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Launch the command
|
# Launch the command
|
||||||
|
|
Loading…
Add table
Reference in a new issue