azure_cdn: use subgroups, attempt 2

This commit is contained in:
Iain Learmonth 2022-04-25 15:05:28 +01:00
parent b59d334689
commit 95a39f759a
2 changed files with 18 additions and 17 deletions

View file

@ -1,4 +1,5 @@
import datetime
from collections import defaultdict
from app import app
from app.extensions import db
@ -8,6 +9,20 @@ from app.terraform import BaseAutomation
class ProxyAutomation(BaseAutomation):
def get_subgroups(self):
conn = db.engine.connect()
result = conn.execute("""
SELECT origin.group_id, proxy.psg, COUNT(proxy.id) FROM proxy, origin
WHERE proxy.origin_id = origin.id
AND proxy.destroyed IS NULL
AND proxy.provider = :provider
GROUP BY origin.group_id, proxy.psg;
""", provider=self.provider)
subgroups = defaultdict(lambda: defaultdict(lambda: 0))
for row in result:
subgroups[row[0]][row[1]] = row[2]
return subgroups
def create_missing_proxies(self):
origins = Origin.query.all()
for origin in origins:
@ -44,6 +59,7 @@ class ProxyAutomation(BaseAutomation):
Proxy.provider == self.provider,
Proxy.destroyed == None
).all(),
subgroups = self.get_subgroups(),
global_namespace=app.config['GLOBAL_NAMESPACE'],
bypass_token=app.config['BYPASS_TOKEN'],
**{

View file

@ -1,7 +1,6 @@
import datetime
import string
import random
from collections import defaultdict
from azure.identity import ClientSecretCredential
from azure.mgmt.alertsmanagement import AlertsManagementClient
@ -11,7 +10,7 @@ from app import app
from app.alarms import get_proxy_alarm
from app.extensions import db
from app.models.base import Group
from app.models.mirrors import Proxy, Origin
from app.models.mirrors import Proxy
from app.models.alarms import AlarmState
from app.terraform.proxy import ProxyAutomation
@ -168,23 +167,9 @@ class ProxyAzureCdnAutomation(ProxyAutomation):
{% endfor %}
"""
def get_subgroup_counts(self):
conn = db.engine.connect()
result = conn.execute("""
SELECT origin.group_id, proxy.psg, COUNT(proxy.id) FROM proxy, origin
WHERE proxy.origin_id = origin.id
AND proxy.destroyed IS NULL
AND proxy.provider = 'azure_cdn'
GROUP BY origin.group_id, proxy.psg;
""")
subgroups = defaultdict(lambda: defaultdict(lambda: 0))
for row in result:
subgroups[row[0]][row[1]] = row[2]
return subgroups
def create_missing_proxies(self):
groups = Group.query.all()
subgroups = self.get_subgroup_counts()
subgroups = self.get_subgroups()
for group in groups:
subgroup = 0
for origin in group.origins: