feat(proxy): rewrite the meta module to support hot spares
This commit is contained in:
parent
9f726731c6
commit
8115966aca
4 changed files with 327 additions and 99 deletions
|
@ -93,7 +93,8 @@ class ProxyAutomation(TerraformAutomation):
|
|||
self.template,
|
||||
groups=groups,
|
||||
proxies=Proxy.query.filter(
|
||||
Proxy.provider == self.provider, Proxy.destroyed.is_(None)).all(), subgroups=self.get_subgroups(),
|
||||
Proxy.provider == self.provider, Proxy.destroyed.is_(None)).all(),
|
||||
subgroups=self.get_subgroups(),
|
||||
global_namespace=app.config['GLOBAL_NAMESPACE'], bypass_token=app.config['BYPASS_TOKEN'],
|
||||
terraform_modules_path=os.path.join(*list(os.path.split(app.root_path))[:-1], 'terraform-modules'),
|
||||
backend_config=f"""backend "http" {{
|
||||
|
@ -157,25 +158,3 @@ class ProxyAutomation(TerraformAutomation):
|
|||
for row in result:
|
||||
subgroups[row[0]][row[1]] = row[2]
|
||||
return subgroups
|
||||
|
||||
@classmethod
|
||||
def next_subgroup(cls, group_id: int) -> Optional[int]:
|
||||
provider = cls() # Some attributes are set by constructor
|
||||
conn = db.engine.connect()
|
||||
stmt = text("""
|
||||
SELECT proxy.psg, COUNT(proxy.id) FROM proxy, origin
|
||||
WHERE proxy.origin_id = origin.id
|
||||
AND proxy.destroyed IS NULL
|
||||
AND origin.group_id = :group_id
|
||||
AND proxy.provider = :provider
|
||||
GROUP BY proxy.psg ORDER BY proxy.psg;
|
||||
""")
|
||||
stmt = stmt.bindparams(provider=provider.short_name, group_id=group_id)
|
||||
result = conn.execute(stmt).all()
|
||||
subgroups = {
|
||||
row[0]: row[1] for row in result
|
||||
}
|
||||
for subgroup in range(0, provider.subgroup_count_max):
|
||||
if subgroups.get(subgroup, 0) < provider.subgroup_members_max:
|
||||
return subgroup
|
||||
return None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue