Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP7:GA
pacemaker.34780
rh#2045096-0001-Low-libcrmservice-Additional-me...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File rh#2045096-0001-Low-libcrmservice-Additional-metadata-fix-for-system.patch of Package pacemaker.34780
From 13d00a740769d12f2a41e95903448cd6c088c73d Mon Sep 17 00:00:00 2001 From: Chris Lumens <clumens@redhat.com> Date: Tue, 15 Feb 2022 12:05:34 -0500 Subject: [PATCH] Low: libcrmservice: Additional metadata fix for systemd templates. A previous patch for this did not handle the possibility of templates used with a unit file suffix. For example, chrony-dnssrv@ would work but chrony-dnssrv@.template would not. This patch takes care of the extra case. Additionally, it uses the "pacemaker" instance name for both cases. See: rhbz#2045096 --- lib/services/systemd.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/services/systemd.c b/lib/services/systemd.c index d87b28742..5010fa545 100644 --- a/lib/services/systemd.c +++ b/lib/services/systemd.c @@ -208,21 +208,39 @@ systemd_unit_extension(const char *name) static char * systemd_service_name(const char *name, bool add_instance_name) { + const char *dot = NULL; + if (pcmk__str_empty(name)) { return NULL; } - if (systemd_unit_extension(name)) { - return strdup(name); - /* Services that end with an @ sign are systemd templates. They expect an * instance name to follow the service name. If no instance name was - * provided, just add "x" to the string as the instance name. It doesn't - * seem to matter for purposes of looking up whether a service exists or - * not. + * provided, just add "pacemaker" to the string as the instance name. It + * doesn't seem to matter for purposes of looking up whether a service + * exists or not. + * + * A template can be specified either with or without the unit extension, + * so this block handles both cases. */ + dot = systemd_unit_extension(name); + + if (dot) { + if (dot != name && *(dot-1) == '@') { + char *s = NULL; + + if (asprintf(&s, "%.*spacemaker%s", (int) (dot-name), name, dot) == -1) { + /* If asprintf fails, just return name. */ + return strdup(name); + } + + return s; + } else { + return strdup(name); + } + } else if (add_instance_name && *(name+strlen(name)-1) == '@') { - return crm_strdup_printf("%sx.service", name); + return crm_strdup_printf("%spacemaker.service", name); } else { return crm_strdup_printf("%s.service", name); -- 2.34.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor