Azure / Azure/azure-cli

Check for TTY existence before prompting

Open
#29,087 6 comments 0 reactions 0 assignees View on GitHub
act-codegen-extensibility-squad Auto-Assign Auto-Resolve Azure Deployments bug customer-reported Possible-Solution Service Attention Similar-Issue
Dominant language
Python
Stars
4.6k
Forks
3.5k
Avg merge
3d 2h
Merged PRs (30d)
60

Description

### 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.

```bash
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

```bash
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

```pwsh
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'}]
```

```bash
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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.