1212
1313import vws_web_tools
1414from dotenv import load_dotenv
15- from selenium import webdriver
1615from selenium .common .exceptions import TimeoutException
1716
1817if TYPE_CHECKING :
1918 from selenium .webdriver .remote .webdriver import WebDriver
19+ from vws_web_tools import DatabaseDict , VuMarkDatabaseDict
20+
21+
22+ def _create_and_get_database_details (
23+ driver : "WebDriver" ,
24+ email_address : str ,
25+ password : str ,
26+ license_name : str ,
27+ database_name : str ,
28+ ) -> "DatabaseDict | None" :
29+ """Create a cloud database and get its details.
30+
31+ Returns database details or None if a timeout occurs.
32+ """
33+ vws_web_tools .log_in (
34+ driver = driver ,
35+ email_address = email_address ,
36+ password = password ,
37+ )
38+ vws_web_tools .wait_for_logged_in (driver = driver )
39+ try :
40+ vws_web_tools .create_license (driver = driver , license_name = license_name )
41+ except TimeoutException :
42+ sys .stderr .write ("Timed out waiting for license creation\n " )
43+ return None
44+
45+ vws_web_tools .create_cloud_database (
46+ driver = driver ,
47+ database_name = database_name ,
48+ license_name = license_name ,
49+ )
50+
51+ try :
52+ return vws_web_tools .get_database_details (
53+ driver = driver ,
54+ database_name = database_name ,
55+ )
56+ except TimeoutException :
57+ sys .stderr .write ("Timed out waiting for database to be created\n " )
58+ return None
59+
60+
61+ def _create_and_get_vumark_details (
62+ driver : "WebDriver" ,
63+ vumark_database_name : str ,
64+ ) -> "VuMarkDatabaseDict | None" :
65+ """Create a VuMark database and get its details.
66+
67+ Returns VuMark database details or None if a timeout occurs.
68+ """
69+ try :
70+ vws_web_tools .create_vumark_database (
71+ driver = driver ,
72+ database_name = vumark_database_name ,
73+ )
74+ except TimeoutException :
75+ sys .stderr .write ("Timed out waiting for VuMark database creation\n " )
76+ return None
77+
78+ try :
79+ return vws_web_tools .get_vumark_database_details (
80+ driver = driver ,
81+ database_name = vumark_database_name ,
82+ )
83+ except TimeoutException :
84+ sys .stderr .write (
85+ "Timed out waiting for VuMark database to be created\n "
86+ )
87+ return None
88+
89+
90+ def _generate_secrets_file_content (
91+ database_details : "DatabaseDict" ,
92+ vumark_details : "VuMarkDatabaseDict" ,
93+ ) -> str :
94+ """Generate the content of a secrets file."""
95+ return textwrap .dedent (
96+ text = f"""\
97+ VUFORIA_TARGET_MANAGER_DATABASE_NAME={ database_details ["database_name" ]}
98+ VUFORIA_SERVER_ACCESS_KEY={ database_details ["server_access_key" ]}
99+ VUFORIA_SERVER_SECRET_KEY={ database_details ["server_secret_key" ]}
100+ VUFORIA_CLIENT_ACCESS_KEY={ database_details ["client_access_key" ]}
101+ VUFORIA_CLIENT_SECRET_KEY={ database_details ["client_secret_key" ]}
102+
103+ INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME={ os .environ ["INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME" ]}
104+ INACTIVE_VUFORIA_SERVER_ACCESS_KEY={ os .environ ["INACTIVE_VUFORIA_SERVER_ACCESS_KEY" ]}
105+ INACTIVE_VUFORIA_SERVER_SECRET_KEY={ os .environ ["INACTIVE_VUFORIA_SERVER_SECRET_KEY" ]}
106+ INACTIVE_VUFORIA_CLIENT_ACCESS_KEY={ os .environ ["INACTIVE_VUFORIA_CLIENT_ACCESS_KEY" ]}
107+ INACTIVE_VUFORIA_CLIENT_SECRET_KEY={ os .environ ["INACTIVE_VUFORIA_CLIENT_SECRET_KEY" ]}
108+
109+ VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={ vumark_details ["database_name" ]}
110+ VUMARK_VUFORIA_SERVER_ACCESS_KEY={ vumark_details ["server_access_key" ]}
111+ VUMARK_VUFORIA_SERVER_SECRET_KEY={ vumark_details ["server_secret_key" ]}
112+
113+ INACTIVE_VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={ os .environ ["INACTIVE_VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME" ]}
114+ INACTIVE_VUMARK_VUFORIA_SERVER_ACCESS_KEY={ os .environ ["INACTIVE_VUMARK_VUFORIA_SERVER_ACCESS_KEY" ]}
115+ INACTIVE_VUMARK_VUFORIA_SERVER_SECRET_KEY={ os .environ ["INACTIVE_VUMARK_VUFORIA_SERVER_SECRET_KEY" ]}
116+ """ ,
117+ )
20118
21119
22120def main () -> None :
@@ -43,66 +141,44 @@ def main() -> None:
43141
44142 while files_to_create :
45143 if driver is None :
46- # With Safari we get a bunch of errors / timeouts.
47- driver = webdriver .Chrome ()
144+ driver = vws_web_tools .create_chrome_driver ()
48145 file = files_to_create [- 1 ]
49146 sys .stdout .write (f"Creating database { file .name } \n " )
50147 time = datetime .datetime .now (tz = datetime .UTC ).strftime (
51148 format = "%Y-%m-%d-%H-%M-%S" ,
52149 )
53150 license_name = f"my-license-{ time } "
54151 database_name = f"my-database-{ time } "
152+ vumark_database_name = f"my-vumark-database-{ time } "
55153
56- vws_web_tools . log_in (
154+ database_details = _create_and_get_database_details (
57155 driver = driver ,
58156 email_address = email_address ,
59157 password = password ,
158+ license_name = license_name ,
159+ database_name = database_name ,
60160 )
61- vws_web_tools .wait_for_logged_in (driver = driver )
62- try :
63- vws_web_tools .create_license (
64- driver = driver , license_name = license_name
65- )
66- except TimeoutException :
67- sys .stderr .write ("Timed out waiting for license creation\n " )
161+ if database_details is None :
68162 driver .quit ()
69163 driver = None
70164 continue
71165
72- vws_web_tools . create_database (
166+ vumark_details = _create_and_get_vumark_details (
73167 driver = driver ,
74- database_name = database_name ,
75- license_name = license_name ,
168+ vumark_database_name = vumark_database_name ,
76169 )
77-
78- try :
79- database_details = vws_web_tools .get_database_details (
80- driver = driver ,
81- database_name = database_name ,
82- )
83- except TimeoutException :
84- sys .stderr .write ("Timed out waiting for database to be created\n " )
85- continue
86- finally :
170+ if vumark_details is None :
87171 driver .quit ()
88172 driver = None
173+ continue
89174
90- file_contents = textwrap .dedent (
91- text = f"""\
92- VUFORIA_TARGET_MANAGER_DATABASE_NAME={ database_details ["database_name" ]}
93- VUFORIA_SERVER_ACCESS_KEY={ database_details ["server_access_key" ]}
94- VUFORIA_SERVER_SECRET_KEY={ database_details ["server_secret_key" ]}
95- VUFORIA_CLIENT_ACCESS_KEY={ database_details ["client_access_key" ]}
96- VUFORIA_CLIENT_SECRET_KEY={ database_details ["client_secret_key" ]}
97-
98- INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME={ os .environ ["INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME" ]}
99- INACTIVE_VUFORIA_SERVER_ACCESS_KEY={ os .environ ["INACTIVE_VUFORIA_SERVER_ACCESS_KEY" ]}
100- INACTIVE_VUFORIA_SERVER_SECRET_KEY={ os .environ ["INACTIVE_VUFORIA_SERVER_SECRET_KEY" ]}
101- INACTIVE_VUFORIA_CLIENT_ACCESS_KEY={ os .environ ["INACTIVE_VUFORIA_CLIENT_ACCESS_KEY" ]}
102- INACTIVE_VUFORIA_CLIENT_SECRET_KEY={ os .environ ["INACTIVE_VUFORIA_CLIENT_SECRET_KEY" ]}
103- """ ,
104- )
175+ driver .quit ()
176+ driver = None
105177
178+ file_contents = _generate_secrets_file_content (
179+ database_details = database_details ,
180+ vumark_details = vumark_details ,
181+ )
106182 file .write_text (data = file_contents )
107183 sys .stdout .write (f"Created database { file .name } \n " )
108184 files_to_create .pop ()
0 commit comments