Skip to content

Commit eeecdb7

Browse files
committed
performance optimizations
1 parent 0103c7f commit eeecdb7

File tree

4 files changed

+57
-25
lines changed

4 files changed

+57
-25
lines changed

stackql_deploy/cmd/base.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ def process_exports_from_result(self, resource, exports_result, expected_exports
200200

201201
export = exports_result[0] if len(exports_result) > 0 else {}
202202
export_data = {}
203-
203+
204204
for item in expected_exports:
205205
if all_dicts:
206206
for key, val in item.items():
@@ -216,7 +216,7 @@ def process_exports_from_result(self, resource, exports_result, expected_exports
216216
export_data[item] = export[item]['String']
217217
else:
218218
export_data[item] = export.get(item, '')
219-
219+
220220
export_vars(self, resource, export_data, expected_exports, all_dicts, protected_exports)
221221

222222
def check_if_resource_exists(
@@ -316,14 +316,15 @@ def check_state_using_exports_proxy(
316316
"""
317317
if dry_run:
318318
self.logger.info(
319-
f"🔎 dry run state check using exports proxy for [{resource['name']}]:\n\n/* exports as statecheck proxy */\n{exports_query}\n"
319+
f"🔎 dry run state check using exports proxy for [{resource['name']}]:\n\n"
320+
f"/* exports as statecheck proxy */\n{exports_query}\n"
320321
)
321322
return True
322323
else:
323324
self.logger.info(f"🔎 running state check using exports proxy for [{resource['name']}]...")
324325
show_query(show_queries, exports_query, self.logger)
325326
custom_auth, env_vars = self.process_custom_auth(resource, full_context)
326-
327+
327328
# Run exports query with error suppression
328329
exports_result = run_stackql_query(
329330
exports_query,
@@ -335,15 +336,19 @@ def check_state_using_exports_proxy(
335336
retries=exports_retries,
336337
delay=exports_retry_delay
337338
)
338-
339+
339340
# Use exports result as statecheck proxy
340341
is_correct_state = check_exports_as_statecheck_proxy(exports_result, self.logger)
341-
342+
342343
if is_correct_state:
343-
self.logger.info(f"👍 [{resource['name']}] exports proxy indicates resource is in the desired state")
344+
self.logger.info(
345+
f"👍 [{resource['name']}] exports proxy indicates resource is in the desired state"
346+
)
344347
else:
345-
self.logger.info(f"👎 [{resource['name']}] exports proxy indicates resource is not in the desired state")
346-
348+
self.logger.info(
349+
f"👎 [{resource['name']}] exports proxy indicates resource is not in the desired state"
350+
)
351+
347352
return is_correct_state, exports_result
348353

349354
def create_resource(

stackql_deploy/cmd/build.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,16 @@ def run(self, dry_run, show_queries, on_failure):
162162
# OPTIMIZED exists and state check - try exports first for happy path
163163
#
164164
exports_result_from_proxy = None # Track exports result if used as proxy
165-
165+
166166
if createorupdate_query:
167167
pass
168168
else:
169169
# OPTIMIZATION: Try exports first if available for one-query solution
170170
if exports_query:
171-
self.logger.info(f"🔄 trying exports query first for optimal single-query validation for [{resource['name']}]")
171+
self.logger.info(
172+
f"🔄 trying exports query first for optimal single-query validation "
173+
f"for [{resource['name']}]"
174+
)
172175
is_correct_state, exports_result_from_proxy = self.check_state_using_exports_proxy(
173176
resource,
174177
full_context,
@@ -179,13 +182,18 @@ def run(self, dry_run, show_queries, on_failure):
179182
show_queries
180183
)
181184
resource_exists = is_correct_state
182-
185+
183186
# If exports succeeded, we're done with validation for happy path
184187
if is_correct_state:
185-
self.logger.info(f"✅ [{resource['name']}] validated successfully with single exports query")
188+
self.logger.info(
189+
f"✅ [{resource['name']}] validated successfully with single exports query"
190+
)
186191
else:
187192
# If exports failed, fall back to traditional exists check
188-
self.logger.info(f"📋 exports validation failed, falling back to exists check for [{resource['name']}]")
193+
self.logger.info(
194+
f"📋 exports validation failed, falling back to exists check "
195+
f"for [{resource['name']}]"
196+
)
189197
if exists_query:
190198
resource_exists = self.check_if_resource_exists(
191199
False, # Reset this since exports failed
@@ -238,7 +246,10 @@ def run(self, dry_run, show_queries, on_failure):
238246
)
239247
resource_exists = is_correct_state
240248
else:
241-
catch_error_and_exit("iql file must include either 'exists', 'statecheck', or 'exports' anchor.", self.logger)
249+
catch_error_and_exit(
250+
"iql file must include either 'exists', 'statecheck', or 'exports' anchor.",
251+
self.logger
252+
)
242253

243254
#
244255
# state check with optimizations (only if we haven't already validated via exports)
@@ -324,7 +335,10 @@ def run(self, dry_run, show_queries, on_failure):
324335
)
325336
elif exports_query:
326337
# OPTIMIZATION: Use exports as statecheck proxy for post-deploy validation
327-
self.logger.info(f"🔄 using exports query as proxy for post-deploy statecheck for [{resource['name']}]")
338+
self.logger.info(
339+
f"🔄 using exports query as proxy for post-deploy statecheck "
340+
f"for [{resource['name']}]"
341+
)
328342
is_correct_state, _ = self.check_state_using_exports_proxy(
329343
resource,
330344
full_context,

stackql_deploy/cmd/test.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def run(self, dry_run, show_queries, on_failure):
8181
# statecheck check with optimizations
8282
#
8383
exports_result_from_proxy = None # Track exports result if used as proxy
84-
84+
8585
if type in ('resource', 'multi'):
8686
if 'skip_validation' in resource:
8787
self.logger.info(f"Skipping statecheck for {resource['name']}")
@@ -100,7 +100,10 @@ def run(self, dry_run, show_queries, on_failure):
100100
)
101101
elif exports_query:
102102
# OPTIMIZATION: Use exports as statecheck proxy for test
103-
self.logger.info(f"🔄 using exports query as proxy for statecheck test for [{resource['name']}]")
103+
self.logger.info(
104+
f"🔄 using exports query as proxy for statecheck test "
105+
f"for [{resource['name']}]"
106+
)
104107
is_correct_state, exports_result_from_proxy = self.check_state_using_exports_proxy(
105108
resource,
106109
full_context,
@@ -111,7 +114,10 @@ def run(self, dry_run, show_queries, on_failure):
111114
show_queries
112115
)
113116
else:
114-
catch_error_and_exit("iql file must include either 'statecheck' or 'exports' anchor for validation.", self.logger)
117+
catch_error_and_exit(
118+
"iql file must include either 'statecheck' or 'exports' anchor for validation.",
119+
self.logger
120+
)
115121

116122
if not is_correct_state and not dry_run:
117123
catch_error_and_exit(f"❌ test failed for {resource['name']}.", self.logger)
@@ -131,7 +137,8 @@ def run(self, dry_run, show_queries, on_failure):
131137
else:
132138
# Run exports normally
133139
self.process_exports(
134-
resource, full_context, exports_query, exports_retries, exports_retry_delay, dry_run, show_queries
140+
resource, full_context, exports_query, exports_retries,
141+
exports_retry_delay, dry_run, show_queries
135142
)
136143

137144
if type == 'resource' and not dry_run:

stackql_deploy/lib/utils.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -489,23 +489,29 @@ def check_exports_as_statecheck_proxy(exports_result, logger):
489489
False if exports indicate statecheck failed (empty result).
490490
"""
491491
logger.debug(f"(utils.check_exports_as_statecheck_proxy) checking exports result: {exports_result}")
492-
492+
493493
# If exports is None or empty list, consider statecheck failed
494494
if exports_result is None or len(exports_result) == 0:
495495
logger.debug("(utils.check_exports_as_statecheck_proxy) empty exports result, treating as statecheck failure")
496496
return False
497-
497+
498498
# Check for error conditions in exports result
499499
if len(exports_result) >= 1 and isinstance(exports_result[0], dict):
500500
# Check for our custom error wrapper
501501
if '_stackql_deploy_error' in exports_result[0]:
502-
logger.debug("(utils.check_exports_as_statecheck_proxy) error in exports result, treating as statecheck failure")
502+
logger.debug(
503+
"(utils.check_exports_as_statecheck_proxy) error in exports result, "
504+
"treating as statecheck failure"
505+
)
503506
return False
504507
# Check for direct error in result
505508
elif 'error' in exports_result[0]:
506-
logger.debug("(utils.check_exports_as_statecheck_proxy) error in exports result, treating as statecheck failure")
509+
logger.debug(
510+
"(utils.check_exports_as_statecheck_proxy) error in exports result, "
511+
"treating as statecheck failure"
512+
)
507513
return False
508-
514+
509515
# If we have a valid non-empty result, consider statecheck passed
510516
logger.debug("(utils.check_exports_as_statecheck_proxy) valid exports result, treating as statecheck success")
511517
return True

0 commit comments

Comments
 (0)