@@ -130,24 +130,29 @@ def _build_rpcurl(self, username: Optional[str], password: Optional[str]) -> str
130
130
def getAllProcessInfo (self ) -> List [ProcessInfo ]:
131
131
return [ProcessInfo (** _ ) for _ in self ._client .supervisor .getAllProcessInfo ()]
132
132
133
- def getState (self ):
133
+ def getState (self ) -> SupervisorState :
134
134
return SupervisorState (self ._client .supervisor .getState ()["statecode" ])
135
135
136
136
# def readLog(self):
137
137
# return self._client.supervisor.readLog(0, 0)
138
138
139
- def restart (self ):
140
- return self ._client .supervisor .restart ()
139
+ def restart (self ) -> SupervisorState :
140
+ self ._client .supervisor .restart ()
141
+ return self .getState ()
141
142
142
- def shutdown (self ):
143
- return self ._client .supervisor .shutdown ()
143
+ def shutdown (self ) -> SupervisorState :
144
+ self ._client .supervisor .shutdown ()
145
+ return self .getState ()
144
146
145
147
###################
146
148
# process methods #
147
149
###################
148
- def getProcessInfo (self , name : str ):
150
+ def getProcessInfo (self , name : str ) -> ProcessInfo :
149
151
if name not in self ._cfg .program :
150
152
raise RuntimeError (f"Unknown process: { name } " )
153
+ return self ._getProcessInfoInternal (name )
154
+
155
+ def _getProcessInfoInternal (self , name : str ) -> ProcessInfo :
151
156
return ProcessInfo (** self ._client .supervisor .getProcessInfo (name ))
152
157
153
158
def readProcessLog (self , name : str ):
@@ -191,17 +196,32 @@ def stopAllProcesses(self) -> Dict[str, ProcessInfo]:
191
196
def stopProcess (self , name : str ) -> ProcessInfo :
192
197
if name not in self ._cfg .program :
193
198
raise RuntimeError (f"Unknown process: { name } " )
199
+ return self ._stopProcessInternal (name )
200
+
201
+ def _stopProcessInternal (self , name : str ) -> ProcessInfo :
194
202
try :
195
203
if self ._client .supervisor .stopProcess (name ):
196
- return self .getProcessInfo (name )
204
+ return self ._getProcessInfoInternal (name )
197
205
except Fault as f :
198
206
if f .faultCode == SupervisorMethodResult .NOT_RUNNING .value :
199
- return self .getProcessInfo (name )
207
+ return self ._getProcessInfoInternal (name )
200
208
raise f
201
- return self .getProcessInfo (name )
202
-
203
- # def reloadConfig(self):
204
- # return self._client.supervisor.reloadConfig()
209
+ return self ._getProcessInfoInternal (name )
210
+
211
+ def reloadConfig (self , start_new : bool = False ) -> SupervisorState :
212
+ added , changed , removed = self ._client .supervisor .reloadConfig ()[0 ]
213
+ proc_infos = []
214
+ for name in removed :
215
+ proc_infos .append (self ._stopProcessInternal (name ))
216
+ for name in changed :
217
+ self ._stopProcessInternal (name )
218
+ proc_infos .append (self .startProcess (name ))
219
+ # Don't need to start as we'll do this separately
220
+ for name in added :
221
+ self ._client .supervisor .addProcessGroup (name )
222
+ if start_new :
223
+ proc_infos .append (self .startProcess (name ))
224
+ return proc_infos
205
225
206
226
# def signalAllProcesses(self, signal):
207
227
# return self._client.supervisor.signalAllProcesses()
0 commit comments