Shawnsuun opened a new pull request, #76134:
URL: https://github.com/apache/airflow/pull/76134
<!-- SPDX-License-Identifier: Apache-2.0
https://www.apache.org/licenses/LICENSE-2.0 -->
`airflowctl auth token` prints a JWT to stdout so it can be captured, e.g.
`TOKEN=$(airflowctl auth token --api-url ...)`. Three things got in the way
of that:
- The username prompt used `input("Username: ")`, which writes to stdout.
When stdout was
captured, the user never saw the prompt, and the prompt text ended up in
`TOKEN`.
- Without a TTY (CI, cron, `</dev/null`) and without
`--username`/`--password`, the command
crashed with an `EOFError` traceback.
- `Token generation failed: ...` went to stdout.
Changes:
- The username prompt is written to stderr. The password prompt already uses
`getpass`.
- If `--username` or `--password` is missing and stdin is not a TTY, the
command exits 1 with a
clear message on stderr. `airflowctl auth login` already does this check.
- The failure message goes to stderr.
When the username and password are passed as flags, nothing changes. The
integration test command
`auth token --username ... --password ...` is unaffected.
Behaviour change to note: with no TTY, a missing password now gives a clear
error. Before, `getpass`
fell back to reading stdin (with a `GetPassWarning`) only when no
controlling terminal existed.
This matches `auth login`, which already refuses that case.
Tests: interactive prompt goes to stderr and stdout holds only the token;
missing credentials
without a TTY (none / username only / password only) exit 1 with empty
stdout and a clear stderr
message, and never prompt; a failed token request is reported on stderr. As
with every command,
the client's generic `Server error` structlog warning on an API error still
goes to stdout. That
is left for a separate change.
---
##### Was generative AI tooling used to co-author this PR?
<!--
If generative AI tooling has been used in the process of authoring this PR,
please
change below checkbox to `[X]` followed by the name of the tool, uncomment
the "Generated-by".
-->
- [X] Yes (please specify the tool below)
Generated-by: GitHub Copilot (Claude Opus 5.5) following [the
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
---
* Read the **[Pull Request
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
for more information. Note: commit author/co-author name and email in commits
become permanently public when merged.
* For fundamental code changes, an Airflow Improvement Proposal
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
is needed.
* When adding dependency, check compliance with the [ASF 3rd Party License
Policy](https://www.apache.org/legal/resolved.html#category-x).
* For significant user-facing changes create newsfragment:
`{pr_number}.significant.rst`, in
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
You can add this file in a follow-up commit after the PR is created so you
know the PR number.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]