Skip to content

Check for TTY existence before prompting #29087

@codepic

Description

@codepic

Describe the bug

I am running an Azure DevOps pipeline, more specifically az deployment group create.

The pipeline fails with a simple ERROR: and no details whatsoever.

I need to pass --debug into Azure CLI in order to get into the details of the error.

DEBUG: cli.knack.prompting: No tty available.
DEBUG: cli.azure.cli.core.azclierror: Traceback (most recent call last):
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 701, in _run_job
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 334, in __call__
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/custom.py", line 607, in deploy_arm_template_at_resource_group
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 71, in prompt_y_n
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 79, in _prompt_bool
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 28, in verify_is_a_tty
knack.prompting.NoTTYException

As you can see, the Azure CLI finds out there is something missing and will call knack.prompting in order to get user input.

Only then, knack.prompting will call verify_is_a_tty and throws knack.prompting.NoTTYException.

Related command

az deployment group create

Errors

DEBUG: cli.knack.prompting: No tty available.
DEBUG: cli.azure.cli.core.azclierror: Traceback (most recent call last):
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 701, in _run_job
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 334, in __call__
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/custom.py", line 607, in deploy_arm_template_at_resource_group
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 71, in prompt_y_n
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 79, in _prompt_bool
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 28, in verify_is_a_tty
knack.prompting.NoTTYException

Issue script & Debug output

exec {
    & az deployment group create (Get-BicepDeploymentArgs) `
        --name $deploymentName `
        --resource-group $rg_name `
        --template-file $bicepFile `
        --parameters `
        module=$Module `
        environment=$Environment `
        enable_ingress=$enable_ingress `
        enable_dapr=$enable_dapr `
        location=$Location `
        tags=$tags `
        container=$container `
        env=$vars `
        --verbose `
        --debug `
}
cd D:\a\1\s
$deploymentName: dep-mapapi-2024-06-04-09-04-27
$rg_name: al-tp-rg
$bicepFile: ./modules/_lib/ca/main.bicep
$Module: mapapi
$Environment: dev
$enable_ingress: true
$enable_dapr: true
$Location: swedencentral
$tags: {'Partner':'Amban Nordic Oy','CreatedBy':'fv-az372-492\\vssadministrator','Module':'MAPAPI','Created':'2024-06-04','Environment':'DEV'}
$container: [{'Name':'al-tp-mapapi','Image':'acrcaealtpdevswc.azurecr.io/al-tp-mapapi:refs-pull-110-merge','MinReplicas':2,'MaxReplicas':25,'Cpu':'1.75','Memory':'3.50','Scale':{'Http':{'ConcurrentRequests':200}}}]
$vars: [{'name':'Variable','value':'Value'}]
DEBUG: cli.knack.prompting: No tty available.
DEBUG: cli.azure.cli.core.azclierror: Traceback (most recent call last):
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 701, in _run_job
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 334, in __call__
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/custom.py", line 607, in deploy_arm_template_at_resource_group
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 71, in prompt_y_n
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 79, in _prompt_bool
  File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 28, in verify_is_a_tty
knack.prompting.NoTTYException

Expected behavior

Azure CLI checks if TTY exists when an argument is missing and simply throws an exception with the missing argument name when TTY cannot be found.

Environment Summary

azure-cli                         2.60.0 *

core                              2.60.0 *
telemetry                          1.1.0

Extensions:
azure-devops                       1.0.0

Dependencies:
msal                              1.28.0
azure-mgmt-resource             23.1.0b2

Additional context

Azure DevOps, ubuntu-latest and windows-latest.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Auto-AssignAuto assign by botAuto-ResolveAuto resolve by botAzure Deploymentsaz deployment/bicep/stack/deployment-scripts/ts/group exportPossible-SolutionService AttentionThis issue is responsible by Azure service team.Similar-Issueact-codegen-extensibility-squadbugThis issue requires a change to an existing behavior in the product in order to be resolved.customer-reportedIssues that are reported by GitHub users external to the Azure organization.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions