mirror of https://github.com/zulip/zulip.git
scripts: Re-implement list_supervisor_processes using API.
This commit is contained in:
parent
8e35cdb3da
commit
7243c3c73d
|
@ -25,3 +25,29 @@ def rpc() -> client.ServerProxy:
|
||||||
return client.ServerProxy(
|
return client.ServerProxy(
|
||||||
"http://localhost", transport=UnixStreamTransport("/var/run/supervisor.sock")
|
"http://localhost", transport=UnixStreamTransport("/var/run/supervisor.sock")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def list_supervisor_processes(*filter_names: str) -> List[str]:
|
||||||
|
results = []
|
||||||
|
processes = rpc().supervisor.getAllProcessInfo()
|
||||||
|
assert isinstance(processes, list)
|
||||||
|
for process in processes:
|
||||||
|
if process["group"] != process["name"]:
|
||||||
|
name = f"{process['group']}:{process['name']}"
|
||||||
|
else:
|
||||||
|
name = process["name"]
|
||||||
|
|
||||||
|
if filter_names:
|
||||||
|
match = False
|
||||||
|
for filter_name in filter_names:
|
||||||
|
if filter_name.endswith(":*") and name.startswith(filter_name[:-1]):
|
||||||
|
match = True
|
||||||
|
break
|
||||||
|
if name == filter_name:
|
||||||
|
match = True
|
||||||
|
break
|
||||||
|
if not match:
|
||||||
|
continue
|
||||||
|
|
||||||
|
results.append(name)
|
||||||
|
return results
|
||||||
|
|
|
@ -617,25 +617,6 @@ def has_application_server(once: bool = False) -> bool:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def list_supervisor_processes(*args: str) -> List[str]:
|
|
||||||
worker_status = subprocess.run(
|
|
||||||
["supervisorctl", "status", *args],
|
|
||||||
text=True,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
)
|
|
||||||
# `supervisorctl status` returns 3 if any are stopped, which is
|
|
||||||
# fine here; and exit code 4 is for no such process, which is
|
|
||||||
# handled below.
|
|
||||||
if worker_status.returncode not in (0, 3, 4):
|
|
||||||
worker_status.check_returncode()
|
|
||||||
|
|
||||||
processes = []
|
|
||||||
for status_line in worker_status.stdout.splitlines():
|
|
||||||
if not re.search(r"ERROR \(no such (process|group)\)", status_line):
|
|
||||||
processes.append(status_line.split()[0])
|
|
||||||
return processes
|
|
||||||
|
|
||||||
|
|
||||||
def has_process_fts_updates() -> bool:
|
def has_process_fts_updates() -> bool:
|
||||||
return (
|
return (
|
||||||
# Current path
|
# Current path
|
||||||
|
|
|
@ -8,6 +8,7 @@ import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
|
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
|
||||||
|
from scripts.lib.supervisor import list_supervisor_processes
|
||||||
from scripts.lib.zulip_tools import (
|
from scripts.lib.zulip_tools import (
|
||||||
DEPLOYMENTS_DIR,
|
DEPLOYMENTS_DIR,
|
||||||
ENDC,
|
ENDC,
|
||||||
|
@ -18,7 +19,6 @@ from scripts.lib.zulip_tools import (
|
||||||
get_tornado_ports,
|
get_tornado_ports,
|
||||||
has_application_server,
|
has_application_server,
|
||||||
has_process_fts_updates,
|
has_process_fts_updates,
|
||||||
list_supervisor_processes,
|
|
||||||
overwrite_symlink,
|
overwrite_symlink,
|
||||||
start_arg_parser,
|
start_arg_parser,
|
||||||
)
|
)
|
||||||
|
|
|
@ -7,13 +7,13 @@ import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
|
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
|
||||||
|
from scripts.lib.supervisor import list_supervisor_processes
|
||||||
from scripts.lib.zulip_tools import (
|
from scripts.lib.zulip_tools import (
|
||||||
ENDC,
|
ENDC,
|
||||||
OKGREEN,
|
OKGREEN,
|
||||||
WARNING,
|
WARNING,
|
||||||
has_application_server,
|
has_application_server,
|
||||||
has_process_fts_updates,
|
has_process_fts_updates,
|
||||||
list_supervisor_processes,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
deploy_path = os.path.realpath(os.path.join(os.path.dirname(__file__), ".."))
|
deploy_path = os.path.realpath(os.path.join(os.path.dirname(__file__), ".."))
|
||||||
|
|
Loading…
Reference in New Issue