majuna/app/terraform/list/__init__.py

43 lines
1.4 KiB
Python
Raw Normal View History

2022-03-10 14:26:22 +00:00
import json
2022-05-16 11:44:03 +01:00
from typing import List
2022-03-10 14:26:22 +00:00
from app import app
2022-04-27 13:30:49 +01:00
from app.lists.mirror_mapping import mirror_mapping
from app.lists.bc2 import mirror_sites
from app.lists.bridgelines import bridgelines
2022-04-22 14:01:16 +01:00
from app.models.base import MirrorList
from app.terraform.terraform import TerraformAutomation
2022-03-10 14:26:22 +00:00
class ListAutomation(TerraformAutomation):
2022-05-16 11:44:03 +01:00
template: str
"""
Terraform configuration template using Jinja 2.
"""
template_parameters: List[str]
"""
List of parameters to be read from the application configuration for use
in the templating of the Terraform configuration.
"""
def tf_generate(self) -> None:
self.tf_write(
2022-03-10 14:26:22 +00:00
self.template,
lists=MirrorList.query.filter(
MirrorList.destroyed == None,
MirrorList.provider == self.provider,
).all(),
global_namespace=app.config['GLOBAL_NAMESPACE'],
**{
k: app.config[k.upper()]
for k in self.template_parameters
}
)
with open(self.working_directory('bc2.json'), 'w') as out:
json.dump(mirror_sites(), out, indent=2, sort_keys=True)
with open(self.working_directory('bca.json'), 'w') as out:
json.dump(mirror_mapping(), out, indent=2, sort_keys=True)
with open(self.working_directory('bridgelines.json'), 'w') as out:
json.dump(bridgelines(), out, indent=2, sort_keys=True)