Skip to content

Commit cd459a3

Browse files
authored
📝 Improve Getting Started Section (#135)
* Improve Getting Started Section * Add missed change from apache/airflow * Sync with pre-commit from airflow
1 parent cb15507 commit cd459a3

File tree

1 file changed

+42
-12
lines changed

1 file changed

+42
-12
lines changed

README.md

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,6 @@ For details on enabling/configuring CORS, see
178178
To be able to meet the requirements of many organizations, Airflow supports many authentication methods,
179179
and it is even possible to add your own method.
180180

181-
If you want to check which auth backend is currently set, you can use
182-
`airflow config get-value api auth_backends` command as in the example below.
183-
184-
```bash
185-
$ airflow config get-value api auth_backends
186-
airflow.providers.fab.auth_manager.api.auth.backend.basic_auth
187-
```
188-
189181
The default is to deny all requests.
190182

191183
For details on configuring the authentication, see
@@ -279,24 +271,62 @@ import airflow_client.client
279271

280272
## Getting Started
281273

274+
Before attempting the following examples ensure you have an account with API access.
275+
As an example you can create an account for usage with the API as follows using the Airflow CLI.
276+
277+
```bash
278+
airflow users create -u admin-api -e admin-api@example.com -f admin-api -l admin-api -p $PASSWORD -r Admin
279+
```
280+
282281
Please follow the [installation procedure](#installation--usage) and then run the following:
283282

284283
```python
285284
import airflow_client.client
285+
import requests
286286
from airflow_client.client.rest import ApiException
287287
from pprint import pprint
288+
from pydantic import BaseModel
289+
290+
291+
# What we expect back from auth/token
292+
class AirflowAccessTokenResponse(BaseModel):
293+
access_token: str
294+
295+
296+
# An optional helper function to retrieve an access token
297+
def get_airflow_client_access_token(
298+
host: str,
299+
username: str,
300+
password: str,
301+
) -> str:
302+
url = f"{host}/auth/token"
303+
payload = {
304+
"username": username,
305+
"password": password,
306+
}
307+
headers = {"Content-Type": "application/json"}
308+
response = requests.post(url, json=payload, headers=headers)
309+
if response.status_code != 201:
310+
raise RuntimeError(f"Failed to get access token: {response.status_code} {response.text}")
311+
response_success = AirflowAccessTokenResponse(**response.json())
312+
return response_success.access_token
313+
288314

289315
# Defining the host is optional and defaults to http://localhost
290316
# See configuration.py for a list of all supported configuration parameters.
291-
configuration = airflow_client.client.Configuration(host="http://localhost")
317+
host = "http://localhost"
318+
configuration = airflow_client.client.Configuration(host=host)
292319

293320
# The client must configure the authentication and authorization parameters
294321
# in accordance with the API server security policy.
295322
# Examples for each auth method are provided below, use the example that
296323
# satisfies your auth use case.
297324

298-
configuration.access_token = os.environ["ACCESS_TOKEN"]
299-
325+
configuration.access_token = get_airflow_client_access_token(
326+
host=host,
327+
username="admin-api",
328+
password=os.environ["PASSWORD"],
329+
)
300330

301331
# Enter a context with an instance of the API client
302332
with airflow_client.client.ApiClient(configuration) as api_client:
@@ -599,7 +629,7 @@ You can also set it by env variable: `export AIRFLOW__CORE__LOAD_EXAMPLES=True`
599629

600630
* optionally expose configuration (NOTE! that this is dangerous setting). The script will happily run with
601631
the default setting, but if you want to see the configuration, you need to expose it.
602-
In the `[webserver]` section of your `airflow.cfg` set:
632+
In the `[api]` section of your `airflow.cfg` set:
603633

604634
```ini
605635
[api]

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy