@@ -22,7 +22,7 @@ def _get_service_manager():
2222 try :
2323 link = os .path .realpath ("/sbin/init" )
2424 service = os .path .basename (link )
25- match service :
25+ match service_manager :
2626 case "openrc-init" :
2727 return "openrc"
2828 case _:
@@ -153,16 +153,36 @@ def setuid(user : UserType = UserType.HOST_USER):
153153 raise Exception ("Unknown user type" )
154154
155155async def service_active (service_name : str ) -> bool :
156- res , _ , _ = await run (["systemctl" , "is-active" , service_name ], stdout = DEVNULL , stderr = DEVNULL )
156+ match service_manager :
157+ case "systemd" :
158+ cmd = ["systemctl" , "is-active" , service_name ]
159+ case "openrc" :
160+ cmd = ["rc-service" ]
161+ if _get_effective_user_id () != 0 : cmd .append ("--user" )
162+ cmd .append (service_name )
163+ cmd .append ("status" )
164+ case _:
165+ return True # Stub unsupported services
166+
167+ res , _ , _ = await run (cmd , stdout = DEVNULL , stderr = DEVNULL )
157168 return res .returncode == 0
158169
159170async def service_restart (service_name : str , block : bool = True ) -> bool :
160- await run (["systemctl" , "daemon-reload" ])
161- logger .info ("Systemd reload done." )
162- cmd = ["systemctl" , "restart" , service_name ]
163-
164- if not block :
165- cmd .append ("--no-block" )
171+ match service_manager :
172+ case "systemd" :
173+ await run (["systemctl" , "daemon-reload" ])
174+ logger .info ("Systemd reload done." )
175+ cmd = ["systemctl" , "restart" , service_name ]
176+
177+ if not block :
178+ cmd .append ("--no-block" )
179+ case "openrc" :
180+ cmd = ["rc-service" ]
181+ if _get_effective_user_id () != 0 : cmd .append ("--user" )
182+ cmd .append (service_name )
183+ cmd .append ("restart" )
184+ case _:
185+ return True # Stub unsupported services
166186
167187 res , _ , _ = await run (cmd , stdout = PIPE , stderr = STDOUT )
168188 return res .returncode == 0
@@ -172,7 +192,17 @@ async def service_stop(service_name : str) -> bool:
172192 # Service isn't running. pretend we stopped it
173193 return True
174194
175- cmd = ["systemctl" , "stop" , service_name ]
195+ match service_manager :
196+ case "systemd" :
197+ cmd = ["systemctl" , "stop" , service_name ]
198+ case "openrc" :
199+ cmd = ["rc-service" ]
200+ if _get_effective_user_id () != 0 : cmd .append ("--user" )
201+ cmd .append (service_name )
202+ cmd .append ("stop" )
203+ case _:
204+ return True # Stub unsupported services
205+
176206 res , _ , _ = await run (cmd , stdout = PIPE , stderr = STDOUT )
177207 return res .returncode == 0
178208
@@ -181,7 +211,17 @@ async def service_start(service_name : str) -> bool:
181211 # Service is running. pretend we started it
182212 return True
183213
184- cmd = ["systemctl" , "start" , service_name ]
214+ match service_manager :
215+ case "systemd" :
216+ cmd = ["systemctl" , "start" , service_name ]
217+ case "openrc" :
218+ cmd = ["rc-service" ]
219+ if _get_effective_user_id () != 0 : cmd .append ("--user" )
220+ cmd .append (service_name )
221+ cmd .append ("start" )
222+ case _:
223+ return True # Stub unsupported services
224+
185225 res , _ , _ = await run (cmd , stdout = PIPE , stderr = STDOUT )
186226 return res .returncode == 0
187227
0 commit comments