diff --git a/admin/create_secrets_files.py b/admin/create_secrets_files.py index 4e7afd0d6..5e6cc43c5 100644 --- a/admin/create_secrets_files.py +++ b/admin/create_secrets_files.py @@ -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: @@ -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() diff --git a/pyproject.toml b/pyproject.toml index 642054c2c..dead7dba2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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", ] @@ -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" ] diff --git a/vuforia_secrets.env.example b/vuforia_secrets.env.example index 7133b01f1..5e843a117 100644 --- a/vuforia_secrets.env.example +++ b/vuforia_secrets.env.example @@ -13,3 +13,8 @@ INACTIVE_VUFORIA_SERVER_SECRET_KEY= INACTIVE_VUFORIA_CLIENT_ACCESS_KEY= INACTIVE_VUFORIA_CLIENT_SECRET_KEY= + +VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME= + +VUMARK_VUFORIA_SERVER_ACCESS_KEY= +VUMARK_VUFORIA_SERVER_SECRET_KEY=