Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 110 additions & 36 deletions admin/create_secrets_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,101 @@

if TYPE_CHECKING:
from selenium.webdriver.remote.webdriver import WebDriver
from vws_web_tools import DatabaseDict, VuMarkDatabaseDict


def _create_and_get_database_details(
driver: "WebDriver",
email_address: str,
password: str,
license_name: str,
database_name: str,
) -> "DatabaseDict | None":
"""Create a cloud database and get its details.

Returns database details or None if a timeout occurs.
"""
vws_web_tools.log_in(
driver=driver,
email_address=email_address,
password=password,
)
vws_web_tools.wait_for_logged_in(driver=driver)
try:
vws_web_tools.create_license(driver=driver, license_name=license_name)
except TimeoutException:
sys.stderr.write("Timed out waiting for license creation\n")
return None

vws_web_tools.create_cloud_database(
driver=driver,
database_name=database_name,
license_name=license_name,
)

try:
return vws_web_tools.get_database_details(
driver=driver,
database_name=database_name,
)
except TimeoutException:
sys.stderr.write("Timed out waiting for database to be created\n")
return None


def _create_and_get_vumark_details(
driver: "WebDriver",
vumark_database_name: str,
) -> "VuMarkDatabaseDict | None":
"""Create a VuMark database and get its details.

Returns VuMark database details or None if a timeout occurs.
"""
try:
vws_web_tools.create_vumark_database(
driver=driver,
database_name=vumark_database_name,
)
except TimeoutException:
sys.stderr.write("Timed out waiting for VuMark database creation\n")
return None

try:
return vws_web_tools.get_vumark_database_details(
driver=driver,
database_name=vumark_database_name,
)
except TimeoutException:
sys.stderr.write(
"Timed out waiting for VuMark database to be created\n"
)
return None


def _generate_secrets_file_content(
database_details: "DatabaseDict",
vumark_details: "VuMarkDatabaseDict",
) -> str:
"""Generate the content of a secrets file."""
return textwrap.dedent(
text=f"""\
VUFORIA_TARGET_MANAGER_DATABASE_NAME={database_details["database_name"]}
VUFORIA_SERVER_ACCESS_KEY={database_details["server_access_key"]}
VUFORIA_SERVER_SECRET_KEY={database_details["server_secret_key"]}
VUFORIA_CLIENT_ACCESS_KEY={database_details["client_access_key"]}
VUFORIA_CLIENT_SECRET_KEY={database_details["client_secret_key"]}

INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME={os.environ["INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME"]}
INACTIVE_VUFORIA_SERVER_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_SERVER_ACCESS_KEY"]}
INACTIVE_VUFORIA_SERVER_SECRET_KEY={os.environ["INACTIVE_VUFORIA_SERVER_SECRET_KEY"]}
INACTIVE_VUFORIA_CLIENT_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_ACCESS_KEY"]}
INACTIVE_VUFORIA_CLIENT_SECRET_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_SECRET_KEY"]}

VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={vumark_details["database_name"]}
VUMARK_VUFORIA_SERVER_ACCESS_KEY={vumark_details["server_access_key"]}
VUMARK_VUFORIA_SERVER_SECRET_KEY={vumark_details["server_secret_key"]}
""",
)


def main() -> None:
Expand Down Expand Up @@ -50,57 +145,36 @@ def main() -> None:
)
license_name = f"my-license-{time}"
database_name = f"my-database-{time}"
vumark_database_name = f"my-vumark-database-{time}"

vws_web_tools.log_in(
database_details = _create_and_get_database_details(
driver=driver,
email_address=email_address,
password=password,
license_name=license_name,
database_name=database_name,
)
vws_web_tools.wait_for_logged_in(driver=driver)
try:
vws_web_tools.create_license(
driver=driver, license_name=license_name
)
except TimeoutException:
sys.stderr.write("Timed out waiting for license creation\n")
if database_details is None:
driver.quit()
driver = None
continue

vws_web_tools.create_cloud_database(
vumark_details = _create_and_get_vumark_details(
driver=driver,
database_name=database_name,
license_name=license_name,
vumark_database_name=vumark_database_name,
)

try:
database_details = vws_web_tools.get_database_details(
driver=driver,
database_name=database_name,
)
except TimeoutException:
sys.stderr.write("Timed out waiting for database to be created\n")
continue
finally:
if vumark_details is None:
driver.quit()
driver = None
continue

file_contents = textwrap.dedent(
text=f"""\
VUFORIA_TARGET_MANAGER_DATABASE_NAME={database_details["database_name"]}
VUFORIA_SERVER_ACCESS_KEY={database_details["server_access_key"]}
VUFORIA_SERVER_SECRET_KEY={database_details["server_secret_key"]}
VUFORIA_CLIENT_ACCESS_KEY={database_details["client_access_key"]}
VUFORIA_CLIENT_SECRET_KEY={database_details["client_secret_key"]}

INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME={os.environ["INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME"]}
INACTIVE_VUFORIA_SERVER_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_SERVER_ACCESS_KEY"]}
INACTIVE_VUFORIA_SERVER_SECRET_KEY={os.environ["INACTIVE_VUFORIA_SERVER_SECRET_KEY"]}
INACTIVE_VUFORIA_CLIENT_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_ACCESS_KEY"]}
INACTIVE_VUFORIA_CLIENT_SECRET_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_SECRET_KEY"]}
""",
)
driver.quit()
driver = None

file_contents = _generate_secrets_file_content(
database_details=database_details,
vumark_details=vumark_details,
)
file.write_text(data=file_contents)
sys.stdout.write(f"Created database {file.name}\n")
files_to_create.pop()
Expand Down
5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ optional-dependencies.dev = [
"vulture==2.14",
"vws-python==2026.2.15",
"vws-test-fixtures==2023.3.5",
"vws-web-tools==2026.2.16",
"vws-web-tools==2026.2.16.1",
"yamlfix==1.19.1",
"zizmor==1.22.0",
]
Expand Down Expand Up @@ -440,6 +440,9 @@ ignore_names = [
"REQUEST_QUOTA_REACHED",
# pydantic-settings
"model_config",
# Used in TYPE_CHECKING for type hints
"DatabaseDict",
"VuMarkDatabaseDict",
]
# Duplicate some of .gitignore
exclude = [ ".venv" ]
Expand Down
5 changes: 5 additions & 0 deletions vuforia_secrets.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,8 @@ INACTIVE_VUFORIA_SERVER_SECRET_KEY=<INACTIVE_SERVER_SECRET_KEY>

INACTIVE_VUFORIA_CLIENT_ACCESS_KEY=<INACTIVE_CLIENT_ACCESS_KEY>
INACTIVE_VUFORIA_CLIENT_SECRET_KEY=<INACTIVE_CLIENT_SECRET_KEY>

VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME=<VUMARK_DATABASE_NAME>

VUMARK_VUFORIA_SERVER_ACCESS_KEY=<VUMARK_SERVER_ACCESS_KEY>
VUMARK_VUFORIA_SERVER_SECRET_KEY=<VUMARK_SERVER_SECRET_KEY>