Start GetEndpoints and populate db

This commit is contained in:
Santiago Lo Coco 2024-12-09 15:25:38 +01:00
parent a5babe6b15
commit e8aae5647c
5 changed files with 75 additions and 3 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "getendpoints"]
path = getendpoints
url = https://git.slc.ar/slococo-uni/getendpoints.git

1
getendpoints Submodule

@ -0,0 +1 @@
Subproject commit 7b778cbe9fd731bcb84edaa16e8c33bc93bab9fe

View File

@ -67,11 +67,19 @@ def generate_mediamtx_files(env_vars, num_servers):
print(f"Removed extra file: {file}") print(f"Removed extra file: {file}")
def generate_start_bat(num_servers): def generate_start_bat(env_vars, num_servers, getendpoints_env_vars):
with open("templates/start.bat", "r") as template_file: with open("templates/start.bat", "r") as template_file:
bat_template = template_file.read() bat_template = template_file.read()
ip = env_vars.get("IP")
getendpoints_hostname = (
getendpoints_env_vars.get("SERVICE_IP")
+ ":"
+ getendpoints_env_vars.get("SERVICE_PORT")
)
obs_instances = "" obs_instances = ""
post_requests = ""
for i in range(1, num_servers + 1): for i in range(1, num_servers + 1):
obs_instance = f""" obs_instance = f"""
echo Launching OBS instance {i} echo Launching OBS instance {i}
@ -80,7 +88,19 @@ timeout /t 1 >nul
""" # noqa: E501 """ # noqa: E501
obs_instances += obs_instance obs_instances += obs_instance
port = env_vars.get(f"PORT_{i}")
post_request = f"""
echo Registering WebRTC endpoint {i}
powershell -Command "Invoke-WebRequest -Uri http://{getendpoints_hostname}/api/endpoints/{i} -Method PUT -Headers @{{'Content-Type'='application/json'}} -Body '{{\\"url\\": \\"http://{ip}:{port}/mystream/\\"}}'"
timeout /t 1 >nul
""" # noqa: E501
post_requests += post_request
bat_content = bat_template.replace("{{OBS_INSTANCES}}", obs_instances) bat_content = bat_template.replace("{{OBS_INSTANCES}}", obs_instances)
bat_content = bat_content.replace(
"{{GETENDPOINTS_HOSTNAME}}", getendpoints_hostname
)
bat_content = bat_content.replace("{{POST_REQUESTS}}", post_requests)
with open("start.bat", "w") as f: with open("start.bat", "w") as f:
f.write(bat_content) f.write(bat_content)

View File

@ -1,3 +1,5 @@
import os
from dotenv import dotenv_values from dotenv import dotenv_values
from config import ( from config import (
@ -15,7 +17,16 @@ def main():
generate_docker_compose(env_vars, num_servers) generate_docker_compose(env_vars, num_servers)
generate_mediamtx_files(env_vars, num_servers) generate_mediamtx_files(env_vars, num_servers)
generate_start_bat(num_servers)
if not os.path.exists("./getendpoints/src/.env"):
print(
"File not found: /getendpoints/src/.env. Read the README.md file for more information."
)
raise SystemExit
getendpoints_env_vars = dotenv_values("./getendpoints/src/.env")
generate_start_bat(env_vars, num_servers, getendpoints_env_vars)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -21,11 +21,48 @@ if errorlevel 1 (
) )
echo Starting docker compose echo Starting docker compose
cd ".\mediamtx"
docker compose up -d docker compose up -d
timeout /t 3 >nul timeout /t 3 >nul
{{OBS_INSTANCES}} {{OBS_INSTANCES}}
powershell -Command ^
"try { ^
$response = Invoke-WebRequest -Uri http://{{GETENDPOINTS_HOSTNAME}}/api/health; ^
if ($response.StatusCode -eq 200) { ^
exit 0 ^
} else { ^
exit 1 ^
} ^
} catch { ^
exit 1 ^
}"
if errorlevel 1 (
echo Starting GetEndpoints
cd ".\getendpoints"
start cmd /k run.bat
)
:waitForGetEndpoints
powershell -Command ^
"try { ^
$response = Invoke-WebRequest -Uri http://{{GETENDPOINTS_HOSTNAME}}/api/health; ^
if ($response.StatusCode -eq 200) { ^
exit 0 ^
} else { ^
exit 1 ^
} ^
} catch { ^
exit 1 ^
}"
if errorlevel 1 (
timeout /t 1 >nul
goto waitForGetEndpoints
)
{{POST_REQUESTS}}
pause pause