Skip to content

Commit 4c5dc93

Browse files
committed
add minio auth plugin --skip-tests
1 parent 2c014f9 commit 4c5dc93

File tree

5 files changed

+89
-0
lines changed

5 files changed

+89
-0
lines changed

cwm_worker_operator/cli.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,5 +178,14 @@ def send_agg_metrics(worker_id, minutes_json):
178178
CwmApiManager().send_agg_metrics(worker_id, json.loads(minutes_json))
179179

180180

181+
@main.command(short_help="Start Minio Auth Server for development")
182+
def start_minio_auth_server_devel():
183+
"""
184+
Start Minio Auth Server for development
185+
"""
186+
import uvicorn
187+
uvicorn.run('cwm_worker_operator.minio_auth_plugin.app:app', host='0.0.0.0', port=5000, reload=True)
188+
189+
181190
if __name__ == '__main__':
182191
main()

cwm_worker_operator/minio_auth_plugin/__init__.py

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from fastapi import FastAPI, Request
2+
3+
app = FastAPI()
4+
5+
6+
@app.post("/")
7+
async def root(request: Request):
8+
body = await request.json()
9+
print(body)
10+
return {"result": True}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# copied from https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/gunicorn_conf.py August 24, 2021
2+
import json
3+
import multiprocessing
4+
import os
5+
6+
workers_per_core_str = os.getenv("WORKERS_PER_CORE", "1")
7+
max_workers_str = os.getenv("MAX_WORKERS")
8+
use_max_workers = None
9+
if max_workers_str:
10+
use_max_workers = int(max_workers_str)
11+
web_concurrency_str = os.getenv("WEB_CONCURRENCY", None)
12+
13+
host = os.getenv("HOST", "0.0.0.0")
14+
port = os.getenv("PORT", "80")
15+
bind_env = os.getenv("BIND", None)
16+
use_loglevel = os.getenv("LOG_LEVEL", "info")
17+
if bind_env:
18+
use_bind = bind_env
19+
else:
20+
use_bind = f"{host}:{port}"
21+
22+
cores = multiprocessing.cpu_count()
23+
workers_per_core = float(workers_per_core_str)
24+
default_web_concurrency = workers_per_core * cores
25+
if web_concurrency_str:
26+
web_concurrency = int(web_concurrency_str)
27+
assert web_concurrency > 0
28+
else:
29+
web_concurrency = max(int(default_web_concurrency), 2)
30+
if use_max_workers:
31+
web_concurrency = min(web_concurrency, use_max_workers)
32+
accesslog_var = os.getenv("ACCESS_LOG", "-")
33+
use_accesslog = accesslog_var or None
34+
errorlog_var = os.getenv("ERROR_LOG", "-")
35+
use_errorlog = errorlog_var or None
36+
graceful_timeout_str = os.getenv("GRACEFUL_TIMEOUT", "120")
37+
timeout_str = os.getenv("TIMEOUT", "120")
38+
keepalive_str = os.getenv("KEEP_ALIVE", "5")
39+
40+
# Gunicorn config variables
41+
loglevel = use_loglevel
42+
workers = web_concurrency
43+
bind = use_bind
44+
errorlog = use_errorlog
45+
worker_tmp_dir = "/dev/shm"
46+
accesslog = use_accesslog
47+
graceful_timeout = int(graceful_timeout_str)
48+
timeout = int(timeout_str)
49+
keepalive = int(keepalive_str)
50+
51+
52+
# For debugging and testing
53+
log_data = {
54+
"loglevel": loglevel,
55+
"workers": workers,
56+
"bind": bind,
57+
"graceful_timeout": graceful_timeout,
58+
"timeout": timeout,
59+
"keepalive": keepalive,
60+
"errorlog": errorlog,
61+
"accesslog": accesslog,
62+
# Additional, non-gunicorn variables
63+
"workers_per_core": workers_per_core,
64+
"use_max_workers": use_max_workers,
65+
"host": host,
66+
"port": port,
67+
}
68+
print(json.dumps(log_data))

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ prometheus-client==0.8.0
44
pytz==2021.1
55
boto3==1.17.49
66
click==7.1.2
7+
uvicorn[standard]==0.27.0.post1
8+
fastapi==0.109.1

0 commit comments

Comments
 (0)