2424 applier_frontend
2525 , check_enabled
2626)
27+ import os
28+
29+ def select_runner () -> None | str :
30+ """
31+ Select runner to use for package applier
32+
33+ Returns:
34+ str if backend is selected
35+ None otherwise
36+ """
37+ proc = subprocess .run (['/usr/libexec/gpupdate/select_runner' ], stdout = subprocess .PIPE )
38+ if proc .returncode != 0 :
39+ return None
40+ return proc .stdout .decode ('utf-8' ).strip ()
2741
2842class package_applier (applier_frontend ):
2943 __module_name = 'PackagesApplier'
@@ -40,8 +54,16 @@ def __init__(self, storage):
4054 install_branch = '{}\\ {}%' .format (self .__hklm_branch , self .__install_key_name )
4155 remove_branch = '{}\\ {}%' .format (self .__hklm_branch , self .__remove_key_name )
4256 sync_branch = '{}\\ {}%' .format (self .__hklm_branch , self .__sync_key_name )
57+
58+ runner = select_runner ()
59+ if runner is None :
60+ log ('E81' )
61+ raise Exception ('No package runner selected' )
62+ log ('D236' , {'runner' : runner })
63+ self .runner = runner + '_runner'
64+
4365 self .fulcmd = []
44- self .fulcmd .append ('/usr/libexec/gpupdate/pkcon_runner' )
66+ self .fulcmd .append ('/usr/libexec/gpupdate/' + self . runner )
4567 self .fulcmd .append ('--loglevel' )
4668 logger = logging .getLogger ()
4769 self .fulcmd .append (str (logger .level ))
@@ -65,13 +87,19 @@ def run(self):
6587 subprocess .check_call (self .fulcmd )
6688 except Exception as exc :
6789 logdata = {'msg' : str (exc )}
68- log ('E55' , logdata )
90+ if self .runner == 'pkcon_runner' :
91+ log ('E55' , logdata )
92+ elif self .runner == 'apt1_runner' :
93+ log ('E79' , logdata )
6994 else :
7095 try :
7196 subprocess .Popen (self .fulcmd ,close_fds = False )
7297 except Exception as exc :
7398 logdata = {'msg' : str (exc )}
74- log ('E61' , logdata )
99+ if self .runner == 'pkcon_runner' :
100+ log ('E61' , logdata )
101+ elif self .runner == 'apt1_runner' :
102+ log ('E80' , logdata )
75103
76104 def apply (self ):
77105 if self .__module_enabled :
@@ -91,10 +119,17 @@ class package_applier_user(applier_frontend):
91119 __hkcu_branch = 'Software\\ BaseALT\\ Policies\\ Packages'
92120
93121 def __init__ (self , storage , username ):
122+ runner = select_runner ()
123+ if runner is None :
124+ log ('E81' )
125+ raise Exception ('No package applier runner found' )
126+ log ('D236' , {'runner' : runner })
127+ self .runner = runner + '_runner'
128+
94129 self .storage = storage
95130 self .username = username
96131 self .fulcmd = []
97- self .fulcmd .append ('/usr/libexec/gpupdate/pkcon_runner' )
132+ self .fulcmd .append ('/usr/libexec/gpupdate/' + self . runner )
98133 self .fulcmd .append ('--user' )
99134 self .fulcmd .append (self .username )
100135 self .fulcmd .append ('--loglevel' )
@@ -129,13 +164,19 @@ def run(self):
129164 subprocess .check_call (self .fulcmd )
130165 except Exception as exc :
131166 logdata = {'msg' : str (exc )}
132- log ('E60' , logdata )
167+ if self .runner == 'pkcon_runner' :
168+ log ('E60' , logdata )
169+ elif self .runner == 'apt1_runner' :
170+ log ('E77' , logdata )
133171 else :
134172 try :
135173 subprocess .Popen (self .fulcmd ,close_fds = False )
136174 except Exception as exc :
137175 logdata = {'msg' : str (exc )}
138- log ('E62' , logdata )
176+ if self .runner == 'pkcon_runner' :
177+ log ('E62' , logdata )
178+ elif self .runner == 'apt1_runner' :
179+ log ('E78' , logdata )
139180
140181 def admin_context_apply (self ):
141182 '''
0 commit comments