You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
import asyncio |
|
import requests |
|
import json |
|
from typing import List |
|
import os |
|
|
|
|
|
def write_config_file( |
|
server_name: str, path_to_template_file: str, path_for_config: str |
|
) -> None: |
|
template: str = "" |
|
with open(path_to_template_file, "r") as file: |
|
template = file.read() |
|
|
|
config_body: str = template.replace("server_name _;", f"server_name {server_name};") |
|
condifg_full_path: str = os.path.abspath(path_for_config) |
|
config_filename: str = f"{server_name}.conf" |
|
|
|
if not os.path.isdir(condifg_full_path): |
|
os.mkdir(condifg_full_path) |
|
|
|
with open(os.path.join(condifg_full_path, config_filename), "w") as file: |
|
file.write(config_body) |
|
|
|
|
|
def send_request(server: str, columns: list, limit: int) -> dict: |
|
response = requests.get(server, json={"columns": columns, "limit": limit}) |
|
return response.json() |
|
|
|
|
|
def get_hosts(server_response: dict) -> List[str]: |
|
hosts: list = [] |
|
|
|
for host in server_response.get("result"): |
|
hosts.append(host.get("hostname")) |
|
|
|
return hosts |
|
|
|
|
|
def main(): |
|
TEMPLATE = "template_conf.conf" |
|
PATH_FOR_CONFIG = "ng" |
|
FREQUENCY_SEC = 10 |
|
|
|
resp = send_request( |
|
"http://127.0.0.1:5000/api/portal/get", columns=["hostname"], limit=9 |
|
) |
|
|
|
hosts = get_hosts(resp) |
|
|
|
for host in hosts: |
|
write_config_file( |
|
server_name=host, |
|
path_to_template_file=TEMPLATE, |
|
path_for_config=PATH_FOR_CONFIG, |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
main()
|
|
|