Ver código fonte

Add weighting support.

master
rewby 8 meses atrás
pai
commit
f2c6609457
1 arquivos alterados com 16 adições e 16 exclusões
  1. +16
    -16
      main.py

+ 16
- 16
main.py Ver arquivo

@@ -17,22 +17,22 @@ def hello_world():
return "Target offload dispatcher"


prom = get_prom_client()


@app.route("/offload_target")
def offload_target():
expected_size = int(request.args.get("SIZE_HINT", 20*1024*1024*1024))
targets = copy.deepcopy(app.config["TARGETS"])
random.shuffle(targets)
prom = get_prom_client()
for target in targets:
app.logger.info(f"Considering target {target['url']}...")
result = prom.custom_query(query=target["free_space"]["query"])
if len(result) != 1:
continue
result = result[0]
target_free_space = int(result['value'][1])
expected_free_space = target_free_space - expected_size
app.logger.info(f"Available space: {target_free_space} Expected size: {expected_size}")
if expected_free_space < target["free_space"].get("minimum", 1024 * 1024 * 1024 * 500):
continue
return {"url": target["url"]}
return "Unable to allocate target", 500
weights = [x.get("weight", 100) for x in app.config["TARGETS"]]
target = random.choices(app.config["TARGETS"], weights=weights)[0]
app.logger.info(f"Considering target {target['url']}...")
result = prom.custom_query(query=target["free_space"]["query"])
if len(result) != 1:
return "Unable to allocate target. Can't get space info.", 500
result = result[0]
target_free_space = int(result['value'][1])
expected_free_space = target_free_space - expected_size
app.logger.info(f"Available space: {target_free_space} Expected size: {expected_size}")
if expected_free_space < target["free_space"].get("minimum", 1024 * 1024 * 1024 * 500):
return "Unable to allocate target. Not enough space on selected machine.", 507
return {"url": target["url"]}

Carregando…
Cancelar
Salvar