@@ -73,7 +73,7 @@ def validate_common_arguments(self):
7373 )
7474
7575 # Validate revision and get the appropriate revision name
76- revision_name = validate_revision_and_get_name (
76+ revision_name , _ = validate_revision_and_get_name (
7777 cmd = self .cmd ,
7878 resource_group_name = resource_group_name ,
7979 container_app_name = name ,
@@ -186,23 +186,17 @@ def validate_arguments(self):
186186 )
187187
188188 revision_name = self .get_argument_revision_name ()
189- revision_name = validate_revision_and_get_name (
189+ revision_name , active_revision_mode = validate_revision_and_get_name (
190190 cmd = self .cmd ,
191191 resource_group_name = self .get_argument_resource_group_name (),
192192 container_app_name = self .get_argument_container_app_name (),
193193 provided_revision_name = revision_name
194194 )
195195
196- min_replicas = get_min_replicas_from_revision (
197- cmd = self .cmd ,
198- resource_group_name = self .get_argument_resource_group_name (),
199- container_app_name = self .get_argument_container_app_name (),
200- revision_name = revision_name
201- )
202- if min_replicas is not None and min_replicas == 0 :
203- raise CLIError (f"The revision '{ revision_name } ' has minimum replicas set to 0. Ensure that there is at least one replica to fetch invocation details. To update minimum replica: Run 'az containerapp update --name { self .get_argument_container_app_name ()} --resource-group { self .get_argument_resource_group_name ()} --min-replica 1'" )
204196 # Update the revision name with the validated value
205197 self .set_argument_revision_name (revision_name )
198+ # Store active revision mode for use in query building
199+ self .active_revision_mode = active_revision_mode
206200 self .validate_function_name_requirement ()
207201
208202 def _get_app_insights_id (self , resource_group_name , container_app_name , revision_name ):
@@ -277,15 +271,24 @@ def get_summary(self):
277271 # Fetch the app insights resource app id
278272 app_id = self ._get_app_insights_id (resource_group_name , container_app_name , revision_name )
279273
280- # Use application insights query to get function invocations summary
281- invocation_summary_query = (
282- f"requests | extend functionNameFromCustomDimension = tostring(customDimensions['faas.name']) "
283- f"| where timestamp >= ago({ timespan } ) "
284- f"| where cloud_RoleName =~ '{ container_app_name } ' "
285- f"| where cloud_RoleInstance contains '{ revision_name } ' "
286- f"| where operation_Name =~ '{ function_name } ' or functionNameFromCustomDimension =~ '{ function_name } ' "
287- f"| summarize SuccessCount = coalesce(countif(success == true), 0), ErrorCount = coalesce(countif(success == false), 0)"
288- )
274+ # Build query based on active revision mode
275+ if self .active_revision_mode .lower () == "single" :
276+ invocation_summary_query = (
277+ f"requests | extend functionNameFromCustomDimension = tostring(customDimensions['faas.name']) "
278+ f"| where timestamp >= ago({ timespan } ) "
279+ f"| where cloud_RoleName =~ '{ container_app_name } ' "
280+ f"| where operation_Name =~ '{ function_name } ' or functionNameFromCustomDimension =~ '{ function_name } ' "
281+ f"| summarize SuccessCount = coalesce(countif(success == true), 0), ErrorCount = coalesce(countif(success == false), 0)"
282+ )
283+ else :
284+ invocation_summary_query = (
285+ f"requests | extend functionNameFromCustomDimension = tostring(customDimensions['faas.name']) "
286+ f"| where timestamp >= ago({ timespan } ) "
287+ f"| where cloud_RoleName =~ '{ container_app_name } ' "
288+ f"| where cloud_RoleInstance contains '{ revision_name } ' "
289+ f"| where operation_Name =~ '{ function_name } ' or functionNameFromCustomDimension =~ '{ function_name } ' "
290+ f"| summarize SuccessCount = coalesce(countif(success == true), 0), ErrorCount = coalesce(countif(success == false), 0)"
291+ )
289292
290293 result = self ._execute_app_insights_query (app_id , invocation_summary_query , "getLast30DaySummary" )
291294
@@ -309,18 +312,30 @@ def get_traces(self):
309312 # Fetch the app insights resource app id
310313 app_id = self ._get_app_insights_id (resource_group_name , container_app_name , revision_name )
311314
312- # Use application insights query to get function invocations traces
313- invocation_traces_query = (
314- f"requests | extend functionNameFromCustomDimension = tostring(customDimensions['faas.name']) "
315- f"| project timestamp, id, operation_Name, success, resultCode, duration, operation_Id, functionNameFromCustomDimension, "
316- f"cloud_RoleName, cloud_RoleInstance, invocationId=coalesce(tostring(customDimensions['InvocationId']), tostring(customDimensions['faas.invocation_id'])) "
317- f"| where timestamp > ago({ timespan } ) "
318- f"| where cloud_RoleName =~ '{ container_app_name } ' "
319- f"| where cloud_RoleInstance contains '{ revision_name } ' "
320- f"| where operation_Name =~ '{ function_name } ' or functionNameFromCustomDimension =~ '{ function_name } ' "
321- f"| order by timestamp desc | take { limit } "
322- f"| project timestamp, success, resultCode, durationInMilliSeconds=duration, invocationId, operationId=operation_Id, operationName=operation_Name, functionNameFromCustomDimension "
323- )
315+ # Build query based on active revision mode
316+ if self .active_revision_mode .lower () == "single" :
317+ invocation_traces_query = (
318+ f"requests | extend functionNameFromCustomDimension = tostring(customDimensions['faas.name']) "
319+ f"| project timestamp, id, operation_Name, success, resultCode, duration, operation_Id, functionNameFromCustomDimension, "
320+ f"cloud_RoleName, cloud_RoleInstance, invocationId=coalesce(tostring(customDimensions['InvocationId']), tostring(customDimensions['faas.invocation_id'])) "
321+ f"| where timestamp > ago({ timespan } ) "
322+ f"| where cloud_RoleName =~ '{ container_app_name } ' "
323+ f"| where operation_Name =~ '{ function_name } ' or functionNameFromCustomDimension =~ '{ function_name } ' "
324+ f"| order by timestamp desc | take { limit } "
325+ f"| project timestamp, success, resultCode, durationInMilliSeconds=duration, invocationId, operationId=operation_Id, operationName=operation_Name, functionNameFromCustomDimension "
326+ )
327+ else :
328+ invocation_traces_query = (
329+ f"requests | extend functionNameFromCustomDimension = tostring(customDimensions['faas.name']) "
330+ f"| project timestamp, id, operation_Name, success, resultCode, duration, operation_Id, functionNameFromCustomDimension, "
331+ f"cloud_RoleName, cloud_RoleInstance, invocationId=coalesce(tostring(customDimensions['InvocationId']), tostring(customDimensions['faas.invocation_id'])) "
332+ f"| where timestamp > ago({ timespan } ) "
333+ f"| where cloud_RoleName =~ '{ container_app_name } ' "
334+ f"| where cloud_RoleInstance contains '{ revision_name } ' "
335+ f"| where operation_Name =~ '{ function_name } ' or functionNameFromCustomDimension =~ '{ function_name } ' "
336+ f"| order by timestamp desc | take { limit } "
337+ f"| project timestamp, success, resultCode, durationInMilliSeconds=duration, invocationId, operationId=operation_Id, operationName=operation_Name, functionNameFromCustomDimension "
338+ )
324339
325340 result = self ._execute_app_insights_query (app_id , invocation_traces_query , "getInvocationTraces" )
326341
0 commit comments