This is an automated email from the ASF dual-hosted git repository.
Lee-W pushed a commit to branch airflow-ctl/v0-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/airflow-ctl/v0-1-test by this
push:
new 42b84d2c5a6 [airflow-ctl/v0-1-test] Fix wrong command and API wording
in airflowctl docs and help (#75058) (#75202)
42b84d2c5a6 is described below
commit 42b84d2c5a6a3076471c66a42a4e905582c7b6b0
Author: W. H. Wang <[email protected]>
AuthorDate: Tue Oct 20 17:46:37 2026 +0800
[airflow-ctl/v0-1-test] Fix wrong command and API wording in airflowctl
docs and help (#75058) (#75202)
---
airflow-ctl/README.md | 2 +-
airflow-ctl/docs/howto/index.rst | 2 +-
airflow-ctl/docs/images/command_hashes.txt | 4 +-
airflow-ctl/docs/images/output_auth.svg | 76 ++++++++++----------
airflow-ctl/docs/images/output_auth_login.svg | 100 ++++++++++++++------------
airflow-ctl/src/airflowctl/ctl/cli_config.py | 10 ++-
6 files changed, 105 insertions(+), 89 deletions(-)
diff --git a/airflow-ctl/README.md b/airflow-ctl/README.md
index 809929b94a2..a7bb8c1c71e 100644
--- a/airflow-ctl/README.md
+++ b/airflow-ctl/README.md
@@ -67,4 +67,4 @@ You can check each command with `airflowctl <command> --help`
to see the availab
#### Implemented Commands
Implemented commands are the ones which are not auto generated and need to be
implemented manually.
-You can check the implemented commands under
`airflow-ctl/src/airflowctl/clt/commands/`.
+You can check the implemented commands under
`airflow-ctl/src/airflowctl/ctl/commands/`.
diff --git a/airflow-ctl/docs/howto/index.rst b/airflow-ctl/docs/howto/index.rst
index 59f806d4f44..fdb239f32e2 100644
--- a/airflow-ctl/docs/howto/index.rst
+++ b/airflow-ctl/docs/howto/index.rst
@@ -43,7 +43,7 @@ Let's take example of triggering a Dag run with a logical
date, run after and a
.. code-block:: bash
- airflowctl dagrun trigger --dag-id="example_bash_operator"
--logical-date="2025-09-06T00:00:00+00:00"
--run-after="2025-09-06T00:00:00+00:00" --note="Triggered from airflowctl"
+ airflowctl dags trigger example_bash_operator
--logical-date="2025-09-06T00:00:00+00:00"
--run-after="2025-09-06T00:00:00+00:00" --note="Triggered from airflowctl"
Login
diff --git a/airflow-ctl/docs/images/command_hashes.txt
b/airflow-ctl/docs/images/command_hashes.txt
index 765b0bd02e1..87d05b1991b 100644
--- a/airflow-ctl/docs/images/command_hashes.txt
+++ b/airflow-ctl/docs/images/command_hashes.txt
@@ -1,6 +1,6 @@
main:27a22c00dcf32e7a1a4f06672dc8e3c8
assets:4ec546634ac98b220969450db85b98d1
-auth:d79e9c7d00c432bdbcbc2a86e2e32053
+auth:5aeefc79ee662adbd7cbfb51e1c1de4b
backfill:74c8737b0a62a86ed3605fa9e6165874
config:a3d936cb15fe3b547bf6c82cf93d923f
connections:942f9f88cb908c28bf5c19159fc5065b
@@ -12,4 +12,4 @@ providers:34502fe09dc0b8b0a13e7e46efdffda6
variables:f8fc76d3d398b2780f4e97f7cd816646
version:31f4efdf8de0dbaaa4fac71ff7efecc3
plugins:4864fd8f356704bd2b3cd1aec3567e35
-auth login:9fe2bb1dd5c602beea2eefb33a2b20a8
+auth login:963355e38ab1c133f2cf9495d00d99f6
diff --git a/airflow-ctl/docs/images/output_auth.svg
b/airflow-ctl/docs/images/output_auth.svg
index 7e697a2bb1a..847bb612c09 100644
--- a/airflow-ctl/docs/images/output_auth.svg
+++ b/airflow-ctl/docs/images/output_auth.svg
@@ -19,69 +19,69 @@
font-weight: 700;
}
- .terminal-3430150180-matrix {
+ .terminal-859105761-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3430150180-title {
+ .terminal-859105761-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3430150180-r1 { fill: #ff8700 }
-.terminal-3430150180-r2 { fill: #c5c8c6 }
-.terminal-3430150180-r3 { fill: #808080 }
-.terminal-3430150180-r4 { fill: #68a0b3 }
+ .terminal-859105761-r1 { fill: #ff8700 }
+.terminal-859105761-r2 { fill: #c5c8c6 }
+.terminal-859105761-r3 { fill: #808080 }
+.terminal-859105761-r4 { fill: #68a0b3 }
</style>
<defs>
- <clipPath id="terminal-3430150180-clip-terminal">
+ <clipPath id="terminal-859105761-clip-terminal">
<rect x="0" y="0" width="914.0" height="365.0" />
</clipPath>
- <clipPath id="terminal-3430150180-line-0">
+ <clipPath id="terminal-859105761-line-0">
<rect x="0" y="1.5" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-1">
+<clipPath id="terminal-859105761-line-1">
<rect x="0" y="25.9" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-2">
+<clipPath id="terminal-859105761-line-2">
<rect x="0" y="50.3" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-3">
+<clipPath id="terminal-859105761-line-3">
<rect x="0" y="74.7" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-4">
+<clipPath id="terminal-859105761-line-4">
<rect x="0" y="99.1" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-5">
+<clipPath id="terminal-859105761-line-5">
<rect x="0" y="123.5" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-6">
+<clipPath id="terminal-859105761-line-6">
<rect x="0" y="147.9" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-7">
+<clipPath id="terminal-859105761-line-7">
<rect x="0" y="172.3" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-8">
+<clipPath id="terminal-859105761-line-8">
<rect x="0" y="196.7" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-9">
+<clipPath id="terminal-859105761-line-9">
<rect x="0" y="221.1" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-10">
+<clipPath id="terminal-859105761-line-10">
<rect x="0" y="245.5" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-11">
+<clipPath id="terminal-859105761-line-11">
<rect x="0" y="269.9" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-12">
+<clipPath id="terminal-859105761-line-12">
<rect x="0" y="294.3" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-3430150180-line-13">
+<clipPath id="terminal-859105761-line-13">
<rect x="0" y="318.7" width="915" height="24.65"/>
</clipPath>
</defs>
@@ -93,24 +93,24 @@
<circle cx="44" cy="0" r="7" fill="#28c840"/>
</g>
- <g transform="translate(9, 41)"
clip-path="url(#terminal-3430150180-clip-terminal)">
+ <g transform="translate(9, 41)"
clip-path="url(#terminal-859105761-clip-terminal)">
- <g class="terminal-3430150180-matrix">
- <text class="terminal-3430150180-r1" x="0" y="20" textLength="73.2"
clip-path="url(#terminal-3430150180-line-0)">Usage:</text><text
class="terminal-3430150180-r3" x="85.4" y="20" textLength="183"
clip-path="url(#terminal-3430150180-line-0)">airflowctl auth</text><text
class="terminal-3430150180-r2" x="268.4" y="20" textLength="24.4"
clip-path="url(#terminal-3430150180-line-0)"> [</text><text
class="terminal-3430150180-r4" x="292.8" y="20" textLength="24.4"
clip-path="url(#t [...]
-</text><text class="terminal-3430150180-r2" x="915" y="44.4" textLength="12.2"
clip-path="url(#terminal-3430150180-line-1)">
-</text><text class="terminal-3430150180-r2" x="0" y="68.8" textLength="805.2"
clip-path="url(#terminal-3430150180-line-2)">Manage authentication for CLI. Either pass token from environment </text><text
class="terminal-3430150180-r2" x="915" y="68.8" textLength="12.2"
clip-path="url(#terminal-3430150180-line-2)">
-</text><text class="terminal-3430150180-r2" x="0" y="93.2" textLength="597.8"
clip-path="url(#terminal-3430150180-line-3)">variable/parameter or pass username and password.</text><text
class="terminal-3430150180-r2" x="915" y="93.2" textLength="12.2"
clip-path="url(#terminal-3430150180-line-3)">
-</text><text class="terminal-3430150180-r2" x="915" y="117.6"
textLength="12.2" clip-path="url(#terminal-3430150180-line-4)">
-</text><text class="terminal-3430150180-r1" x="0" y="142" textLength="256.2"
clip-path="url(#terminal-3430150180-line-5)">Positional Arguments:</text><text
class="terminal-3430150180-r2" x="915" y="142" textLength="12.2"
clip-path="url(#terminal-3430150180-line-5)">
-</text><text class="terminal-3430150180-r4" x="24.4" y="166.4"
textLength="85.4"
clip-path="url(#terminal-3430150180-line-6)">COMMAND</text><text
class="terminal-3430150180-r2" x="915" y="166.4" textLength="12.2"
clip-path="url(#terminal-3430150180-line-6)">
-</text><text class="terminal-3430150180-r4" x="48.8" y="190.8"
textLength="109.8"
clip-path="url(#terminal-3430150180-line-7)">list-envs</text><text
class="terminal-3430150180-r2" x="915" y="190.8" textLength="12.2"
clip-path="url(#terminal-3430150180-line-7)">
-</text><text class="terminal-3430150180-r2" x="170.8" y="215.2"
textLength="671"
clip-path="url(#terminal-3430150180-line-8)">List all CLI environments that the user has logged into</text><text
class="terminal-3430150180-r2" x="915" y="215.2" textLength="12.2"
clip-path="url(#terminal-3430150180-line-8)">
-</text><text class="terminal-3430150180-r4" x="48.8" y="239.6" textLength="61"
clip-path="url(#terminal-3430150180-line-9)">login</text><text
class="terminal-3430150180-r2" x="170.8" y="239.6" textLength="744.2"
clip-path="url(#terminal-3430150180-line-9)">Login to the metadata database for personal usage. JWT Token </text><text
class="terminal-3430150180-r2" x="915" y="239.6" textLength="12.2"
clip-path="url(#terminal-3430150180-line-9)">
-</text><text class="terminal-3430150180-r2" x="0" y="264" textLength="378.2"
clip-path="url(#terminal-3430150180-line-10)">must be provided via parameter.</text><text
class="terminal-3430150180-r2" x="915" y="264" textLength="12.2"
clip-path="url(#terminal-3430150180-line-10)">
-</text><text class="terminal-3430150180-r4" x="48.8" y="288.4" textLength="61"
clip-path="url(#terminal-3430150180-line-11)">token</text><text
class="terminal-3430150180-r2" x="170.8" y="288.4" textLength="683.2"
clip-path="url(#terminal-3430150180-line-11)">Generate and print a JWT token for the given credentials</text><text
class="terminal-3430150180-r2" x="915" y="288.4" textLength="12.2"
clip-path="url(#terminal-3430150180-line-11)">
-</text><text class="terminal-3430150180-r2" x="915" y="312.8"
textLength="12.2" clip-path="url(#terminal-3430150180-line-12)">
-</text><text class="terminal-3430150180-r1" x="0" y="337.2" textLength="97.6"
clip-path="url(#terminal-3430150180-line-13)">Options:</text><text
class="terminal-3430150180-r2" x="915" y="337.2" textLength="12.2"
clip-path="url(#terminal-3430150180-line-13)">
-</text><text class="terminal-3430150180-r4" x="24.4" y="361.6"
textLength="24.4" clip-path="url(#terminal-3430150180-line-14)">-h</text><text
class="terminal-3430150180-r2" x="48.8" y="361.6" textLength="24.4"
clip-path="url(#terminal-3430150180-line-14)">, </text><text
class="terminal-3430150180-r4" x="73.2" y="361.6" textLength="73.2"
clip-path="url(#terminal-3430150180-line-14)">--help</text><text
class="terminal-3430150180-r2" x="170.8" y="361.6" textLength="378.2"
clip-path="ur [...]
+ <g class="terminal-859105761-matrix">
+ <text class="terminal-859105761-r1" x="0" y="20" textLength="73.2"
clip-path="url(#terminal-859105761-line-0)">Usage:</text><text
class="terminal-859105761-r3" x="85.4" y="20" textLength="183"
clip-path="url(#terminal-859105761-line-0)">airflowctl auth</text><text
class="terminal-859105761-r2" x="268.4" y="20" textLength="24.4"
clip-path="url(#terminal-859105761-line-0)"> [</text><text
class="terminal-859105761-r4" x="292.8" y="20" textLength="24.4"
clip-path="url(#terminal [...]
+</text><text class="terminal-859105761-r2" x="915" y="44.4" textLength="12.2"
clip-path="url(#terminal-859105761-line-1)">
+</text><text class="terminal-859105761-r2" x="0" y="68.8" textLength="805.2"
clip-path="url(#terminal-859105761-line-2)">Manage authentication for CLI. Either pass token from environment </text><text
class="terminal-859105761-r2" x="915" y="68.8" textLength="12.2"
clip-path="url(#terminal-859105761-line-2)">
+</text><text class="terminal-859105761-r2" x="0" y="93.2" textLength="597.8"
clip-path="url(#terminal-859105761-line-3)">variable/parameter or pass username and password.</text><text
class="terminal-859105761-r2" x="915" y="93.2" textLength="12.2"
clip-path="url(#terminal-859105761-line-3)">
+</text><text class="terminal-859105761-r2" x="915" y="117.6" textLength="12.2"
clip-path="url(#terminal-859105761-line-4)">
+</text><text class="terminal-859105761-r1" x="0" y="142" textLength="256.2"
clip-path="url(#terminal-859105761-line-5)">Positional Arguments:</text><text
class="terminal-859105761-r2" x="915" y="142" textLength="12.2"
clip-path="url(#terminal-859105761-line-5)">
+</text><text class="terminal-859105761-r4" x="24.4" y="166.4"
textLength="85.4"
clip-path="url(#terminal-859105761-line-6)">COMMAND</text><text
class="terminal-859105761-r2" x="915" y="166.4" textLength="12.2"
clip-path="url(#terminal-859105761-line-6)">
+</text><text class="terminal-859105761-r4" x="48.8" y="190.8"
textLength="109.8"
clip-path="url(#terminal-859105761-line-7)">list-envs</text><text
class="terminal-859105761-r2" x="915" y="190.8" textLength="12.2"
clip-path="url(#terminal-859105761-line-7)">
+</text><text class="terminal-859105761-r2" x="170.8" y="215.2"
textLength="671"
clip-path="url(#terminal-859105761-line-8)">List all CLI environments that the user has logged into</text><text
class="terminal-859105761-r2" x="915" y="215.2" textLength="12.2"
clip-path="url(#terminal-859105761-line-8)">
+</text><text class="terminal-859105761-r4" x="48.8" y="239.6" textLength="61"
clip-path="url(#terminal-859105761-line-9)">login</text><text
class="terminal-859105761-r2" x="170.8" y="239.6" textLength="683.2"
clip-path="url(#terminal-859105761-line-9)">Log in to the Airflow API server with an API token or a </text><text
class="terminal-859105761-r2" x="915" y="239.6" textLength="12.2"
clip-path="url(#terminal-859105761-line-9)">
+</text><text class="terminal-859105761-r2" x="0" y="264" textLength="256.2"
clip-path="url(#terminal-859105761-line-10)">username and password</text><text
class="terminal-859105761-r2" x="915" y="264" textLength="12.2"
clip-path="url(#terminal-859105761-line-10)">
+</text><text class="terminal-859105761-r4" x="48.8" y="288.4" textLength="61"
clip-path="url(#terminal-859105761-line-11)">token</text><text
class="terminal-859105761-r2" x="170.8" y="288.4" textLength="683.2"
clip-path="url(#terminal-859105761-line-11)">Generate and print a JWT token for the given credentials</text><text
class="terminal-859105761-r2" x="915" y="288.4" textLength="12.2"
clip-path="url(#terminal-859105761-line-11)">
+</text><text class="terminal-859105761-r2" x="915" y="312.8" textLength="12.2"
clip-path="url(#terminal-859105761-line-12)">
+</text><text class="terminal-859105761-r1" x="0" y="337.2" textLength="97.6"
clip-path="url(#terminal-859105761-line-13)">Options:</text><text
class="terminal-859105761-r2" x="915" y="337.2" textLength="12.2"
clip-path="url(#terminal-859105761-line-13)">
+</text><text class="terminal-859105761-r4" x="24.4" y="361.6"
textLength="24.4" clip-path="url(#terminal-859105761-line-14)">-h</text><text
class="terminal-859105761-r2" x="48.8" y="361.6" textLength="24.4"
clip-path="url(#terminal-859105761-line-14)">, </text><text
class="terminal-859105761-r4" x="73.2" y="361.6" textLength="73.2"
clip-path="url(#terminal-859105761-line-14)">--help</text><text
class="terminal-859105761-r2" x="170.8" y="361.6" textLength="378.2"
clip-path="url(#term [...]
</text>
</g>
</g>
diff --git a/airflow-ctl/docs/images/output_auth_login.svg
b/airflow-ctl/docs/images/output_auth_login.svg
index 754353b3c68..a4f8ae9fe3e 100644
--- a/airflow-ctl/docs/images/output_auth_login.svg
+++ b/airflow-ctl/docs/images/output_auth_login.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 933 440.4"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 933 513.5999999999999"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -19,103 +19,115 @@
font-weight: 700;
}
- .terminal-2514228680-matrix {
+ .terminal-503257502-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2514228680-title {
+ .terminal-503257502-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2514228680-r1 { fill: #ff8700 }
-.terminal-2514228680-r2 { fill: #c5c8c6 }
-.terminal-2514228680-r3 { fill: #808080 }
-.terminal-2514228680-r4 { fill: #68a0b3 }
-.terminal-2514228680-r5 { fill: #00af87 }
+ .terminal-503257502-r1 { fill: #ff8700 }
+.terminal-503257502-r2 { fill: #c5c8c6 }
+.terminal-503257502-r3 { fill: #808080 }
+.terminal-503257502-r4 { fill: #68a0b3 }
+.terminal-503257502-r5 { fill: #00af87 }
</style>
<defs>
- <clipPath id="terminal-2514228680-clip-terminal">
- <rect x="0" y="0" width="914.0" height="389.4" />
+ <clipPath id="terminal-503257502-clip-terminal">
+ <rect x="0" y="0" width="914.0" height="462.59999999999997" />
</clipPath>
- <clipPath id="terminal-2514228680-line-0">
+ <clipPath id="terminal-503257502-line-0">
<rect x="0" y="1.5" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-1">
+<clipPath id="terminal-503257502-line-1">
<rect x="0" y="25.9" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-2">
+<clipPath id="terminal-503257502-line-2">
<rect x="0" y="50.3" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-3">
+<clipPath id="terminal-503257502-line-3">
<rect x="0" y="74.7" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-4">
+<clipPath id="terminal-503257502-line-4">
<rect x="0" y="99.1" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-5">
+<clipPath id="terminal-503257502-line-5">
<rect x="0" y="123.5" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-6">
+<clipPath id="terminal-503257502-line-6">
<rect x="0" y="147.9" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-7">
+<clipPath id="terminal-503257502-line-7">
<rect x="0" y="172.3" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-8">
+<clipPath id="terminal-503257502-line-8">
<rect x="0" y="196.7" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-9">
+<clipPath id="terminal-503257502-line-9">
<rect x="0" y="221.1" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-10">
+<clipPath id="terminal-503257502-line-10">
<rect x="0" y="245.5" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-11">
+<clipPath id="terminal-503257502-line-11">
<rect x="0" y="269.9" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-12">
+<clipPath id="terminal-503257502-line-12">
<rect x="0" y="294.3" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-13">
+<clipPath id="terminal-503257502-line-13">
<rect x="0" y="318.7" width="915" height="24.65"/>
</clipPath>
-<clipPath id="terminal-2514228680-line-14">
+<clipPath id="terminal-503257502-line-14">
<rect x="0" y="343.1" width="915" height="24.65"/>
</clipPath>
+<clipPath id="terminal-503257502-line-15">
+ <rect x="0" y="367.5" width="915" height="24.65"/>
+ </clipPath>
+<clipPath id="terminal-503257502-line-16">
+ <rect x="0" y="391.9" width="915" height="24.65"/>
+ </clipPath>
+<clipPath id="terminal-503257502-line-17">
+ <rect x="0" y="416.3" width="915" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="931" height="438.4" rx="8"/>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="931" height="511.6" rx="8"/>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
<circle cx="44" cy="0" r="7" fill="#28c840"/>
</g>
- <g transform="translate(9, 41)"
clip-path="url(#terminal-2514228680-clip-terminal)">
+ <g transform="translate(9, 41)"
clip-path="url(#terminal-503257502-clip-terminal)">
- <g class="terminal-2514228680-matrix">
- <text class="terminal-2514228680-r1" x="0" y="20" textLength="73.2"
clip-path="url(#terminal-2514228680-line-0)">Usage:</text><text
class="terminal-2514228680-r3" x="85.4" y="20" textLength="256.2"
clip-path="url(#terminal-2514228680-line-0)">airflowctl auth login</text><text
class="terminal-2514228680-r2" x="341.6" y="20" textLength="24.4"
clip-path="url(#terminal-2514228680-line-0)"> [</text><text
class="terminal-2514228680-r4" x="366" y="20" textLength="24.4" clip-p [...]
-</text><text class="terminal-2514228680-r2" x="0" y="44.4" textLength="366"
clip-path="url(#terminal-2514228680-line-1)">                             [</text><text
class="terminal-2514228680-r4" x="366" y="44.4" textLength="109.8"
clip-path="url(#terminal-2514228680-line-1)">--api-url</text><text
class="terminal-2514228680-r5" x="488" y="44.4" t [...]
-</text><text class="terminal-2514228680-r2" x="0" y="68.8" textLength="366"
clip-path="url(#terminal-2514228680-line-2)">                             [</text><text
class="terminal-2514228680-r4" x="366" y="68.8" textLength="122"
clip-path="url(#terminal-2514228680-line-2)">--password</text><text
class="terminal-2514228680-r5" x="500.2" y="68.8" [...]
-</text><text class="terminal-2514228680-r2" x="0" y="93.2" textLength="366"
clip-path="url(#terminal-2514228680-line-3)">                             [</text><text
class="terminal-2514228680-r4" x="366" y="93.2" textLength="122"
clip-path="url(#terminal-2514228680-line-3)">--username</text><text
class="terminal-2514228680-r5" x="500.2" y="93.2" [...]
-</text><text class="terminal-2514228680-r2" x="915" y="117.6"
textLength="12.2" clip-path="url(#terminal-2514228680-line-4)">
-</text><text class="terminal-2514228680-r2" x="0" y="142" textLength="366"
clip-path="url(#terminal-2514228680-line-5)">Login to the metadata database</text><text
class="terminal-2514228680-r2" x="915" y="142" textLength="12.2"
clip-path="url(#terminal-2514228680-line-5)">
-</text><text class="terminal-2514228680-r2" x="915" y="166.4"
textLength="12.2" clip-path="url(#terminal-2514228680-line-6)">
-</text><text class="terminal-2514228680-r1" x="0" y="190.8" textLength="97.6"
clip-path="url(#terminal-2514228680-line-7)">Options:</text><text
class="terminal-2514228680-r2" x="915" y="190.8" textLength="12.2"
clip-path="url(#terminal-2514228680-line-7)">
-</text><text class="terminal-2514228680-r4" x="24.4" y="215.2"
textLength="24.4" clip-path="url(#terminal-2514228680-line-8)">-h</text><text
class="terminal-2514228680-r2" x="48.8" y="215.2" textLength="24.4"
clip-path="url(#terminal-2514228680-line-8)">, </text><text
class="terminal-2514228680-r4" x="73.2" y="215.2" textLength="73.2"
clip-path="url(#terminal-2514228680-line-8)">--help</text><text
class="terminal-2514228680-r2" x="292.8" y="215.2" textLength="378.2"
clip-path="url(# [...]
-</text><text class="terminal-2514228680-r4" x="24.4" y="239.6"
textLength="134.2"
clip-path="url(#terminal-2514228680-line-9)">--api-token</text><text
class="terminal-2514228680-r5" x="170.8" y="239.6" textLength="109.8"
clip-path="url(#terminal-2514228680-line-9)">API_TOKEN</text><text
class="terminal-2514228680-r2" x="915" y="239.6" textLength="12.2"
clip-path="url(#terminal-2514228680-line-9)">
-</text><text class="terminal-2514228680-r2" x="292.8" y="264" textLength="427"
clip-path="url(#terminal-2514228680-line-10)">The token to use for authentication</text><text
class="terminal-2514228680-r2" x="915" y="264" textLength="12.2"
clip-path="url(#terminal-2514228680-line-10)">
-</text><text class="terminal-2514228680-r4" x="24.4" y="288.4"
textLength="109.8"
clip-path="url(#terminal-2514228680-line-11)">--api-url</text><text
class="terminal-2514228680-r5" x="146.4" y="288.4" textLength="85.4"
clip-path="url(#terminal-2514228680-line-11)">API_URL</text><text
class="terminal-2514228680-r2" x="292.8" y="288.4" textLength="439.2"
clip-path="url(#terminal-2514228680-line-11)">The URL of the metadata database API</text><text
class="termi [...]
-</text><text class="terminal-2514228680-r4" x="24.4" y="312.8"
textLength="24.4" clip-path="url(#terminal-2514228680-line-12)">-e</text><text
class="terminal-2514228680-r2" x="48.8" y="312.8" textLength="24.4"
clip-path="url(#terminal-2514228680-line-12)">, </text><text
class="terminal-2514228680-r4" x="73.2" y="312.8" textLength="61"
clip-path="url(#terminal-2514228680-line-12)">--env</text><text
class="terminal-2514228680-r5" x="146.4" y="312.8" textLength="36.6"
clip-path="url(#t [...]
-</text><text class="terminal-2514228680-r4" x="24.4" y="337.2"
textLength="122"
clip-path="url(#terminal-2514228680-line-13)">--password</text><text
class="terminal-2514228680-r5" x="158.6" y="337.2" textLength="97.6"
clip-path="url(#terminal-2514228680-line-13)">PASSWORD</text><text
class="terminal-2514228680-r2" x="292.8" y="337.2" textLength="463.6"
clip-path="url(#terminal-2514228680-line-13)">The password to use for authentication</text><text
class="terminal [...]
-</text><text class="terminal-2514228680-r4" x="24.4" y="361.6"
textLength="170.8"
clip-path="url(#terminal-2514228680-line-14)">--skip-keyring</text><text
class="terminal-2514228680-r2" x="292.8" y="361.6" textLength="427"
clip-path="url(#terminal-2514228680-line-14)">Skip storing credentials in keyring</text><text
class="terminal-2514228680-r2" x="915" y="361.6" textLength="12.2"
clip-path="url(#terminal-2514228680-line-14)">
-</text><text class="terminal-2514228680-r4" x="24.4" y="386" textLength="122"
clip-path="url(#terminal-2514228680-line-15)">--username</text><text
class="terminal-2514228680-r5" x="158.6" y="386" textLength="97.6"
clip-path="url(#terminal-2514228680-line-15)">USERNAME</text><text
class="terminal-2514228680-r2" x="292.8" y="386" textLength="463.6"
clip-path="url(#terminal-2514228680-line-15)">The username to use for authentication</text><text
class="terminal-25142 [...]
+ <g class="terminal-503257502-matrix">
+ <text class="terminal-503257502-r1" x="0" y="20" textLength="73.2"
clip-path="url(#terminal-503257502-line-0)">Usage:</text><text
class="terminal-503257502-r3" x="85.4" y="20" textLength="256.2"
clip-path="url(#terminal-503257502-line-0)">airflowctl auth login</text><text
class="terminal-503257502-r2" x="341.6" y="20" textLength="24.4"
clip-path="url(#terminal-503257502-line-0)"> [</text><text
class="terminal-503257502-r4" x="366" y="20" textLength="24.4" clip-path="ur
[...]
+</text><text class="terminal-503257502-r2" x="0" y="44.4" textLength="366"
clip-path="url(#terminal-503257502-line-1)">                             [</text><text
class="terminal-503257502-r4" x="366" y="44.4" textLength="109.8"
clip-path="url(#terminal-503257502-line-1)">--api-url</text><text
class="terminal-503257502-r5" x="488" y="44.4" textLe [...]
+</text><text class="terminal-503257502-r2" x="0" y="68.8" textLength="366"
clip-path="url(#terminal-503257502-line-2)">                             [</text><text
class="terminal-503257502-r4" x="366" y="68.8" textLength="122"
clip-path="url(#terminal-503257502-line-2)">--password</text><text
class="terminal-503257502-r5" x="500.2" y="68.8" textL [...]
+</text><text class="terminal-503257502-r2" x="0" y="93.2" textLength="366"
clip-path="url(#terminal-503257502-line-3)">                             [</text><text
class="terminal-503257502-r4" x="366" y="93.2" textLength="122"
clip-path="url(#terminal-503257502-line-3)">--username</text><text
class="terminal-503257502-r5" x="500.2" y="93.2" textL [...]
+</text><text class="terminal-503257502-r2" x="915" y="117.6" textLength="12.2"
clip-path="url(#terminal-503257502-line-4)">
+</text><text class="terminal-503257502-r2" x="0" y="142" textLength="915"
clip-path="url(#terminal-503257502-line-5)">Log in to the Airflow API server and store the credentials for the selected</text><text
class="terminal-503257502-r2" x="915" y="142" textLength="12.2"
clip-path="url(#terminal-503257502-line-5)">
+</text><text class="terminal-503257502-r2" x="0" y="166.4" textLength="219.6"
clip-path="url(#terminal-503257502-line-6)">environment. Pass </text><text
class="terminal-503257502-r4" x="219.6" y="166.4" textLength="134.2"
clip-path="url(#terminal-503257502-line-6)">--api-token</text><text
class="terminal-503257502-r2" x="353.8" y="166.4" textLength="390.4"
clip-path="url(#terminal-503257502-line-6)"> (or set AIRFLOW_CLI_TOKEN), or </text><text
class="te [...]
+</text><text class="terminal-503257502-r4" x="0" y="190.8" textLength="122"
clip-path="url(#terminal-503257502-line-7)">--password</text><text
class="terminal-503257502-r2" x="122" y="190.8" textLength="695.4"
clip-path="url(#terminal-503257502-line-7)">; missing credentials are prompted for when running in a </text><text
class="terminal-503257502-r2" x="915" y="190.8" textLength="12.2"
clip-path="url(#terminal-503257502-line-7)">
+</text><text class="terminal-503257502-r2" x="0" y="215.2" textLength="109.8"
clip-path="url(#terminal-503257502-line-8)">terminal.</text><text
class="terminal-503257502-r2" x="915" y="215.2" textLength="12.2"
clip-path="url(#terminal-503257502-line-8)">
+</text><text class="terminal-503257502-r2" x="915" y="239.6" textLength="12.2"
clip-path="url(#terminal-503257502-line-9)">
+</text><text class="terminal-503257502-r1" x="0" y="264" textLength="97.6"
clip-path="url(#terminal-503257502-line-10)">Options:</text><text
class="terminal-503257502-r2" x="915" y="264" textLength="12.2"
clip-path="url(#terminal-503257502-line-10)">
+</text><text class="terminal-503257502-r4" x="24.4" y="288.4"
textLength="24.4" clip-path="url(#terminal-503257502-line-11)">-h</text><text
class="terminal-503257502-r2" x="48.8" y="288.4" textLength="24.4"
clip-path="url(#terminal-503257502-line-11)">, </text><text
class="terminal-503257502-r4" x="73.2" y="288.4" textLength="73.2"
clip-path="url(#terminal-503257502-line-11)">--help</text><text
class="terminal-503257502-r2" x="292.8" y="288.4" textLength="378.2"
clip-path="url(#term [...]
+</text><text class="terminal-503257502-r4" x="24.4" y="312.8"
textLength="134.2"
clip-path="url(#terminal-503257502-line-12)">--api-token</text><text
class="terminal-503257502-r5" x="170.8" y="312.8" textLength="109.8"
clip-path="url(#terminal-503257502-line-12)">API_TOKEN</text><text
class="terminal-503257502-r2" x="915" y="312.8" textLength="12.2"
clip-path="url(#terminal-503257502-line-12)">
+</text><text class="terminal-503257502-r2" x="292.8" y="337.2"
textLength="427"
clip-path="url(#terminal-503257502-line-13)">The token to use for authentication</text><text
class="terminal-503257502-r2" x="915" y="337.2" textLength="12.2"
clip-path="url(#terminal-503257502-line-13)">
+</text><text class="terminal-503257502-r4" x="24.4" y="361.6"
textLength="109.8"
clip-path="url(#terminal-503257502-line-14)">--api-url</text><text
class="terminal-503257502-r5" x="146.4" y="361.6" textLength="85.4"
clip-path="url(#terminal-503257502-line-14)">API_URL</text><text
class="terminal-503257502-r2" x="292.8" y="361.6" textLength="402.6"
clip-path="url(#terminal-503257502-line-14)">The URL of the Airflow API server</text><text
class="terminal-50325 [...]
+</text><text class="terminal-503257502-r4" x="24.4" y="386" textLength="24.4"
clip-path="url(#terminal-503257502-line-15)">-e</text><text
class="terminal-503257502-r2" x="48.8" y="386" textLength="24.4"
clip-path="url(#terminal-503257502-line-15)">, </text><text
class="terminal-503257502-r4" x="73.2" y="386" textLength="61"
clip-path="url(#terminal-503257502-line-15)">--env</text><text
class="terminal-503257502-r5" x="146.4" y="386" textLength="36.6"
clip-path="url(#terminal-5032575 [...]
+</text><text class="terminal-503257502-r4" x="24.4" y="410.4" textLength="122"
clip-path="url(#terminal-503257502-line-16)">--password</text><text
class="terminal-503257502-r5" x="158.6" y="410.4" textLength="97.6"
clip-path="url(#terminal-503257502-line-16)">PASSWORD</text><text
class="terminal-503257502-r2" x="292.8" y="410.4" textLength="463.6"
clip-path="url(#terminal-503257502-line-16)">The password to use for authentication</text><text
class="terminal-50325 [...]
+</text><text class="terminal-503257502-r4" x="24.4" y="434.8"
textLength="170.8"
clip-path="url(#terminal-503257502-line-17)">--skip-keyring</text><text
class="terminal-503257502-r2" x="292.8" y="434.8" textLength="427"
clip-path="url(#terminal-503257502-line-17)">Skip storing credentials in keyring</text><text
class="terminal-503257502-r2" x="915" y="434.8" textLength="12.2"
clip-path="url(#terminal-503257502-line-17)">
+</text><text class="terminal-503257502-r4" x="24.4" y="459.2" textLength="122"
clip-path="url(#terminal-503257502-line-18)">--username</text><text
class="terminal-503257502-r5" x="158.6" y="459.2" textLength="97.6"
clip-path="url(#terminal-503257502-line-18)">USERNAME</text><text
class="terminal-503257502-r2" x="292.8" y="459.2" textLength="463.6"
clip-path="url(#terminal-503257502-line-18)">The username to use for authentication</text><text
class="terminal-50325 [...]
</text>
</g>
</g>
diff --git a/airflow-ctl/src/airflowctl/ctl/cli_config.py
b/airflow-ctl/src/airflowctl/ctl/cli_config.py
index 56057098aaa..d8f372f6ef5 100755
--- a/airflow-ctl/src/airflowctl/ctl/cli_config.py
+++ b/airflow-ctl/src/airflowctl/ctl/cli_config.py
@@ -248,7 +248,7 @@ ARG_AUTH_URL = Arg(
type=str,
default="http://localhost:8080",
dest="api_url",
- help="The URL of the metadata database API",
+ help="The URL of the Airflow API server",
)
ARG_AUTH_TOKEN = Arg(
flags=("--api-token",),
@@ -945,8 +945,12 @@ command_factory = CommandFactory()
AUTH_COMMANDS = (
ActionCommand(
name="login",
- help="Login to the metadata database for personal usage. JWT Token
must be provided via parameter.",
- description="Login to the metadata database",
+ help="Log in to the Airflow API server with an API token or a username
and password",
+ description=(
+ "Log in to the Airflow API server and store the credentials for
the selected environment. "
+ "Pass --api-token (or set AIRFLOW_CLI_TOKEN), or --username and
--password; "
+ "missing credentials are prompted for when running in a terminal."
+ ),
func=lazy_load_command("airflowctl.ctl.commands.auth_command.login"),
args=(
ARG_AUTH_URL,