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
47 changes: 30 additions & 17 deletions admin/create_secrets_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from typing import TYPE_CHECKING

import vws_web_tools
from dotenv import load_dotenv
from selenium.common.exceptions import TimeoutException

if TYPE_CHECKING:
Expand Down Expand Up @@ -123,6 +122,25 @@ def _create_and_get_vumark_target_id(
)


def _fetch_inactive_database_details(
driver: "WebDriver",
email_address: str,
password: str,
database_name: str,
) -> "DatabaseDict":
"""Fetch details for an existing inactive database."""
vws_web_tools.log_in(
driver=driver,
email_address=email_address,
password=password,
)
vws_web_tools.wait_for_logged_in(driver=driver)
return vws_web_tools.get_database_details(
driver=driver,
database_name=database_name,
)


def _create_vuforia_resource_names() -> tuple[str, str, str, str]:
"""Create names for Vuforia resources."""
time = datetime.datetime.now(tz=datetime.UTC).strftime(
Expand All @@ -141,23 +159,18 @@ def main() -> None:
email_address = os.environ["VWS_EMAIL_ADDRESS"]
password = os.environ["VWS_PASSWORD"]
new_secrets_dir = Path(os.environ["NEW_SECRETS_DIR"]).expanduser()
existing_secrets_file = Path(
os.environ["EXISTING_SECRETS_FILE"]
).expanduser()
if not existing_secrets_file.exists():
msg = f"Existing secrets file does not exist: {existing_secrets_file}"
raise FileNotFoundError(msg)
load_dotenv(dotenv_path=existing_secrets_file)
inactive_database_details: DatabaseDict = {
"database_name": os.environ[
"INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME"
],
"server_access_key": os.environ["INACTIVE_VUFORIA_SERVER_ACCESS_KEY"],
"server_secret_key": os.environ["INACTIVE_VUFORIA_SERVER_SECRET_KEY"],
"client_access_key": os.environ["INACTIVE_VUFORIA_CLIENT_ACCESS_KEY"],
"client_secret_key": os.environ["INACTIVE_VUFORIA_CLIENT_SECRET_KEY"],
}
inactive_database_name = os.environ[
"INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME"
]
new_secrets_dir.mkdir(exist_ok=True)
inactive_driver = vws_web_tools.create_chrome_driver()
inactive_database_details = _fetch_inactive_database_details(
driver=inactive_driver,
email_address=email_address,
password=password,
database_name=inactive_database_name,
)
inactive_driver.quit()

num_databases = 100
required_files = [
Expand Down
2 changes: 1 addition & 1 deletion docs/source/contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ To create databases without using the browser, use :file:`admin/create_secrets_f
$ export VWS_EMAIL_ADDRESS=...
$ export VWS_PASSWORD=...
$ export NEW_SECRETS_DIR=...
$ export EXISTING_SECRETS_FILE=/existing/file/with/inactive/db/creds
$ export INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME=...
# You may have to run this a few times, but it is idempotent.
$ python admin/create_secrets_files.py
# Each generated file gets its own Cloud database credentials and shares
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ optional-dependencies.dev = [
"pytest==9.0.2",
"pytest-retry==1.7.0",
"pytest-xdist==3.8.0",
"python-dotenv==1.2.1",
"pyyaml==6.0.3",
"requests-mock-flask==2026.2.16",
"ruff==0.15.1",
Expand Down Expand Up @@ -107,7 +106,7 @@ optional-dependencies.dev = [
"vulture==2.14",
"vws-python==2026.2.21",
"vws-test-fixtures==2023.3.5",
"vws-web-tools==2026.2.20",
"vws-web-tools==2026.2.22",
"yamlfix==1.19.1",
"zizmor==1.22.0",
]
Expand Down Expand Up @@ -453,6 +452,7 @@ ignore_names = [
"model_config",
# Used in TYPE_CHECKING for type hints
"CloudDatabaseDict",
"DatabaseDict",
"VuMarkDatabaseDict",
"VuMarkTargetDict",
]
Expand Down