From 88706d376e571be2e4de8239e25ae2c7e5fba747 Mon Sep 17 00:00:00 2001 From: pankajastro Date: Fri, 25 Oct 2024 15:06:32 +0530 Subject: [PATCH 01/11] Add astro cli project + kind Raycluster setup instruction Fix --- .gitignore | 4 + Makefile | 27 ++++ dev/.astro/config.yaml | 2 + dev/.astro/dag_integrity_exceptions.txt | 1 + dev/.astro/test_dag_integrity_default.py | 141 ++++++++++++++++++ dev/.dockerignore | 8 + dev/.gitignore | 11 ++ dev/Dockerfile | 14 ++ dev/README.md | 48 ++++++ dev/dags/.airflowignore | 0 .../dags}/ray_scripts/script-gpu.py | 0 .../dags}/ray_scripts/script.py | 0 .../dags}/ray_single_operator.py | 0 .../dags}/ray_taskflow_example.py | 0 .../ray_taskflow_example_existing_cluster.py | 0 .../dags}/scripts/ray-gpu.yaml | 0 {example_dags => dev/dags}/scripts/ray.yaml | 0 {example_dags => dev/dags}/setup-teardown.py | 0 dev/packages.txt | 0 dev/requirements.txt | 1 + dev/tests/dags/test_dag_example.py | 83 +++++++++++ docs/_static/basic_local_kubernetes_conn.png | Bin 0 -> 285334 bytes docs/getting_started/kind_ray.rst | 100 +++++++++++++ docs/getting_started/setup.rst | 8 + example_dags/dags | 1 + pyproject.toml | 6 + 26 files changed, 455 insertions(+) create mode 100644 Makefile create mode 100644 dev/.astro/config.yaml create mode 100644 dev/.astro/dag_integrity_exceptions.txt create mode 100644 dev/.astro/test_dag_integrity_default.py create mode 100644 dev/.dockerignore create mode 100644 dev/.gitignore create mode 100644 dev/Dockerfile create mode 100644 dev/README.md create mode 100644 dev/dags/.airflowignore rename {example_dags => dev/dags}/ray_scripts/script-gpu.py (100%) rename {example_dags => dev/dags}/ray_scripts/script.py (100%) rename {example_dags => dev/dags}/ray_single_operator.py (100%) rename {example_dags => dev/dags}/ray_taskflow_example.py (100%) rename {example_dags => dev/dags}/ray_taskflow_example_existing_cluster.py (100%) rename {example_dags => dev/dags}/scripts/ray-gpu.yaml (100%) rename {example_dags => dev/dags}/scripts/ray.yaml (100%) rename {example_dags => dev/dags}/setup-teardown.py (100%) create mode 100644 dev/packages.txt create mode 100644 dev/requirements.txt create mode 100644 dev/tests/dags/test_dag_example.py create mode 100644 docs/_static/basic_local_kubernetes_conn.png create mode 100644 docs/getting_started/kind_ray.rst create mode 120000 example_dags/dags diff --git a/.gitignore b/.gitignore index f004f00..047ef89 100644 --- a/.gitignore +++ b/.gitignore @@ -142,3 +142,7 @@ dmypy.json # Cython debug symbols cython_debug/ + +# asro-cli +dev/include/* +dev/dags/config diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bbbe623 --- /dev/null +++ b/Makefile @@ -0,0 +1,27 @@ +.PHONY: help +help: + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +.PHONY: setup-dev +setup-dev: ## Setup development environment + python3 -m venv venv + . venv/bin/activate && pip install .[tests] + @echo "To activate the virtual environment, run:" + @echo "source venv/bin/activate" + +.PHONY: build-whl +build-whl: setup-dev ## Build installable whl file + cd dev + python3 -m build --outdir dev/include/ + +.PHONY: docker-run +docker-run: build-whl ## Runs local Airflow for testing + @if ! lsof -i :8080 | grep LISTEN > /dev/null; then \ + cd dev && astro dev start; \ + else \ + cd dev && astro dev restart; \ + fi + +.PHONY: docker-stop +docker-stop: ## Stop Docker container + cd dev && astro dev stop diff --git a/dev/.astro/config.yaml b/dev/.astro/config.yaml new file mode 100644 index 0000000..259b054 --- /dev/null +++ b/dev/.astro/config.yaml @@ -0,0 +1,2 @@ +project: + name: dev diff --git a/dev/.astro/dag_integrity_exceptions.txt b/dev/.astro/dag_integrity_exceptions.txt new file mode 100644 index 0000000..c9a2a63 --- /dev/null +++ b/dev/.astro/dag_integrity_exceptions.txt @@ -0,0 +1 @@ +# Add dag files to exempt from parse test below. ex: dags/ \ No newline at end of file diff --git a/dev/.astro/test_dag_integrity_default.py b/dev/.astro/test_dag_integrity_default.py new file mode 100644 index 0000000..e433703 --- /dev/null +++ b/dev/.astro/test_dag_integrity_default.py @@ -0,0 +1,141 @@ +"""Test the validity of all DAGs. **USED BY DEV PARSE COMMAND DO NOT EDIT**""" + +from contextlib import contextmanager +import logging +import os + +import pytest + +from airflow.models import DagBag, Variable, Connection +from airflow.hooks.base import BaseHook +from airflow.utils.db import initdb + +# init airflow database +initdb() + +# The following code patches errors caused by missing OS Variables, Airflow Connections, and Airflow Variables + + +# =========== MONKEYPATCH BaseHook.get_connection() =========== +def basehook_get_connection_monkeypatch(key: str, *args, **kwargs): + print( + f"Attempted to fetch connection during parse returning an empty Connection object for {key}" + ) + return Connection(key) + + +BaseHook.get_connection = basehook_get_connection_monkeypatch +# # =========== /MONKEYPATCH BASEHOOK.GET_CONNECTION() =========== + + +# =========== MONKEYPATCH OS.GETENV() =========== +def os_getenv_monkeypatch(key: str, *args, **kwargs): + default = None + if args: + default = args[0] # os.getenv should get at most 1 arg after the key + if kwargs: + default = kwargs.get( + "default", None + ) # and sometimes kwarg if people are using the sig + + env_value = os.environ.get(key, None) + + if env_value: + return env_value # if the env_value is set, return it + if ( + key == "JENKINS_HOME" and default is None + ): # fix https://github.com/astronomer/astro-cli/issues/601 + return None + if default: + return default # otherwise return whatever default has been passed + return f"MOCKED_{key.upper()}_VALUE" # if absolutely nothing has been passed - return the mocked value + + +os.getenv = os_getenv_monkeypatch +# # =========== /MONKEYPATCH OS.GETENV() =========== + +# =========== MONKEYPATCH VARIABLE.GET() =========== + + +class magic_dict(dict): + def __init__(self, *args, **kwargs): + self.update(*args, **kwargs) + + def __getitem__(self, key): + return {}.get(key, "MOCKED_KEY_VALUE") + + +_no_default = object() # allow falsey defaults + + +def variable_get_monkeypatch(key: str, default_var=_no_default, deserialize_json=False): + print( + f"Attempted to get Variable value during parse, returning a mocked value for {key}" + ) + + if default_var is not _no_default: + return default_var + if deserialize_json: + return magic_dict() + return "NON_DEFAULT_MOCKED_VARIABLE_VALUE" + + +Variable.get = variable_get_monkeypatch +# # =========== /MONKEYPATCH VARIABLE.GET() =========== + + +@contextmanager +def suppress_logging(namespace): + """ + Suppress logging within a specific namespace to keep tests "clean" during build + """ + logger = logging.getLogger(namespace) + old_value = logger.disabled + logger.disabled = True + try: + yield + finally: + logger.disabled = old_value + + +def get_import_errors(): + """ + Generate a tuple for import errors in the dag bag, and include DAGs without errors. + """ + with suppress_logging("airflow"): + dag_bag = DagBag(include_examples=False) + + def strip_path_prefix(path): + return os.path.relpath(path, os.environ.get("AIRFLOW_HOME")) + + # Initialize an empty list to store the tuples + result = [] + + # Iterate over the items in import_errors + for k, v in dag_bag.import_errors.items(): + result.append((strip_path_prefix(k), v.strip())) + + # Check if there are DAGs without errors + for file_path in dag_bag.dags: + # Check if the file_path is not in import_errors, meaning no errors + if file_path not in dag_bag.import_errors: + result.append((strip_path_prefix(file_path), "No import errors")) + + return result + + +@pytest.mark.parametrize( + "rel_path, rv", get_import_errors(), ids=[x[0] for x in get_import_errors()] +) +def test_file_imports(rel_path, rv): + """Test for import errors on a file""" + if os.path.exists(".astro/dag_integrity_exceptions.txt"): + with open(".astro/dag_integrity_exceptions.txt", "r") as f: + exceptions = f.readlines() + print(f"Exceptions: {exceptions}") + if (rv != "No import errors") and rel_path not in exceptions: + # If rv is not "No import errors," consider it a failed test + raise Exception(f"{rel_path} failed to import with message \n {rv}") + else: + # If rv is "No import errors," consider it a passed test + print(f"{rel_path} passed the import test") diff --git a/dev/.dockerignore b/dev/.dockerignore new file mode 100644 index 0000000..a334663 --- /dev/null +++ b/dev/.dockerignore @@ -0,0 +1,8 @@ +astro +.git +.env +airflow_settings.yaml +logs/ +.venv +airflow.db +airflow.cfg diff --git a/dev/.gitignore b/dev/.gitignore new file mode 100644 index 0000000..0e8bcca --- /dev/null +++ b/dev/.gitignore @@ -0,0 +1,11 @@ +.git +.env +.DS_Store +airflow_settings.yaml +__pycache__/ +astro +.venv +airflow-webserver.pid +webserver_config.py +airflow.cfg +airflow.db diff --git a/dev/Dockerfile b/dev/Dockerfile new file mode 100644 index 0000000..a0e3fa0 --- /dev/null +++ b/dev/Dockerfile @@ -0,0 +1,14 @@ +FROM quay.io/astronomer/astro-runtime:12.2.0 + +USER root + +RUN curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && \ + chmod 700 get_helm.sh && \ + ./get_helm.sh + +USER astro + +RUN pip install /usr/local/airflow/include/*.whl + + + diff --git a/dev/README.md b/dev/README.md new file mode 100644 index 0000000..599d703 --- /dev/null +++ b/dev/README.md @@ -0,0 +1,48 @@ +Overview +======== + +Welcome to Astronomer! This project was generated after you ran 'astro dev init' using the Astronomer CLI. This readme describes the contents of the project, as well as how to run Apache Airflow on your local machine. + +Project Contents +================ + +Your Astro project contains the following files and folders: + +- dags: This folder contains the Python files for your Airflow DAGs. By default, this directory includes one example DAG: + - `example_astronauts`: This DAG shows a simple ETL pipeline example that queries the list of astronauts currently in space from the Open Notify API and prints a statement for each astronaut. The DAG uses the TaskFlow API to define tasks in Python, and dynamic task mapping to dynamically print a statement for each astronaut. For more on how this DAG works, see our [Getting started tutorial](https://www.astronomer.io/docs/learn/get-started-with-airflow). +- Dockerfile: This file contains a versioned Astro Runtime Docker image that provides a differentiated Airflow experience. If you want to execute other commands or overrides at runtime, specify them here. +- include: This folder contains any additional files that you want to include as part of your project. It is empty by default. +- packages.txt: Install OS-level packages needed for your project by adding them to this file. It is empty by default. +- requirements.txt: Install Python packages needed for your project by adding them to this file. It is empty by default. +- plugins: Add custom or community plugins for your project to this file. It is empty by default. +- airflow_settings.yaml: Use this local-only file to specify Airflow Connections, Variables, and Pools instead of entering them in the Airflow UI as you develop DAGs in this project. + +Deploy Your Project Locally +=========================== + +1. Start Airflow on your local machine by running 'astro dev start'. + +This command will spin up 4 Docker containers on your machine, each for a different Airflow component: + +- Postgres: Airflow's Metadata Database +- Webserver: The Airflow component responsible for rendering the Airflow UI +- Scheduler: The Airflow component responsible for monitoring and triggering tasks +- Triggerer: The Airflow component responsible for triggering deferred tasks + +2. Verify that all 4 Docker containers were created by running 'docker ps'. + +Note: Running 'astro dev start' will start your project with the Airflow Webserver exposed at port 8080 and Postgres exposed at port 5432. If you already have either of those ports allocated, you can either [stop your existing Docker containers or change the port](https://www.astronomer.io/docs/astro/cli/troubleshoot-locally#ports-are-not-available-for-my-local-airflow-webserver). + +3. Access the Airflow UI for your local Airflow project. To do so, go to http://localhost:8080/ and log in with 'admin' for both your Username and Password. + +You should also be able to access your Postgres Database at 'localhost:5432/postgres'. + +Deploy Your Project to Astronomer +================================= + +If you have an Astronomer account, pushing code to a Deployment on Astronomer is simple. For deploying instructions, refer to Astronomer documentation: https://www.astronomer.io/docs/astro/deploy-code/ + +Contact +======= + +The Astronomer CLI is maintained with love by the Astronomer team. To report a bug or suggest a change, reach out to our support. diff --git a/dev/dags/.airflowignore b/dev/dags/.airflowignore new file mode 100644 index 0000000..e69de29 diff --git a/example_dags/ray_scripts/script-gpu.py b/dev/dags/ray_scripts/script-gpu.py similarity index 100% rename from example_dags/ray_scripts/script-gpu.py rename to dev/dags/ray_scripts/script-gpu.py diff --git a/example_dags/ray_scripts/script.py b/dev/dags/ray_scripts/script.py similarity index 100% rename from example_dags/ray_scripts/script.py rename to dev/dags/ray_scripts/script.py diff --git a/example_dags/ray_single_operator.py b/dev/dags/ray_single_operator.py similarity index 100% rename from example_dags/ray_single_operator.py rename to dev/dags/ray_single_operator.py diff --git a/example_dags/ray_taskflow_example.py b/dev/dags/ray_taskflow_example.py similarity index 100% rename from example_dags/ray_taskflow_example.py rename to dev/dags/ray_taskflow_example.py diff --git a/example_dags/ray_taskflow_example_existing_cluster.py b/dev/dags/ray_taskflow_example_existing_cluster.py similarity index 100% rename from example_dags/ray_taskflow_example_existing_cluster.py rename to dev/dags/ray_taskflow_example_existing_cluster.py diff --git a/example_dags/scripts/ray-gpu.yaml b/dev/dags/scripts/ray-gpu.yaml similarity index 100% rename from example_dags/scripts/ray-gpu.yaml rename to dev/dags/scripts/ray-gpu.yaml diff --git a/example_dags/scripts/ray.yaml b/dev/dags/scripts/ray.yaml similarity index 100% rename from example_dags/scripts/ray.yaml rename to dev/dags/scripts/ray.yaml diff --git a/example_dags/setup-teardown.py b/dev/dags/setup-teardown.py similarity index 100% rename from example_dags/setup-teardown.py rename to dev/dags/setup-teardown.py diff --git a/dev/packages.txt b/dev/packages.txt new file mode 100644 index 0000000..e69de29 diff --git a/dev/requirements.txt b/dev/requirements.txt new file mode 100644 index 0000000..1bb359b --- /dev/null +++ b/dev/requirements.txt @@ -0,0 +1 @@ +# Astro Runtime includes the following pre-installed providers packages: https://www.astronomer.io/docs/astro/runtime-image-architecture#provider-packages diff --git a/dev/tests/dags/test_dag_example.py b/dev/tests/dags/test_dag_example.py new file mode 100644 index 0000000..6ff3552 --- /dev/null +++ b/dev/tests/dags/test_dag_example.py @@ -0,0 +1,83 @@ +"""Example DAGs test. This test ensures that all Dags have tags, retries set to two, and no import errors. This is an example pytest and may not be fit the context of your DAGs. Feel free to add and remove tests.""" + +import os +import logging +from contextlib import contextmanager +import pytest +from airflow.models import DagBag + + +@contextmanager +def suppress_logging(namespace): + logger = logging.getLogger(namespace) + old_value = logger.disabled + logger.disabled = True + try: + yield + finally: + logger.disabled = old_value + + +def get_import_errors(): + """ + Generate a tuple for import errors in the dag bag + """ + with suppress_logging("airflow"): + dag_bag = DagBag(include_examples=False) + + def strip_path_prefix(path): + return os.path.relpath(path, os.environ.get("AIRFLOW_HOME")) + + # prepend "(None,None)" to ensure that a test object is always created even if it's a no op. + return [(None, None)] + [ + (strip_path_prefix(k), v.strip()) for k, v in dag_bag.import_errors.items() + ] + + +def get_dags(): + """ + Generate a tuple of dag_id, in the DagBag + """ + with suppress_logging("airflow"): + dag_bag = DagBag(include_examples=False) + + def strip_path_prefix(path): + return os.path.relpath(path, os.environ.get("AIRFLOW_HOME")) + + return [(k, v, strip_path_prefix(v.fileloc)) for k, v in dag_bag.dags.items()] + + +@pytest.mark.parametrize( + "rel_path,rv", get_import_errors(), ids=[x[0] for x in get_import_errors()] +) +def test_file_imports(rel_path, rv): + """Test for import errors on a file""" + if rel_path and rv: + raise Exception(f"{rel_path} failed to import with message \n {rv}") + + +APPROVED_TAGS = {} + + +@pytest.mark.parametrize( + "dag_id,dag,fileloc", get_dags(), ids=[x[2] for x in get_dags()] +) +def test_dag_tags(dag_id, dag, fileloc): + """ + test if a DAG is tagged and if those TAGs are in the approved list + """ + assert dag.tags, f"{dag_id} in {fileloc} has no tags" + if APPROVED_TAGS: + assert not set(dag.tags) - APPROVED_TAGS + + +@pytest.mark.parametrize( + "dag_id,dag, fileloc", get_dags(), ids=[x[2] for x in get_dags()] +) +def test_dag_retries(dag_id, dag, fileloc): + """ + test if a DAG has retries set + """ + assert ( + dag.default_args.get("retries", None) >= 2 + ), f"{dag_id} in {fileloc} must have task retries >= 2." diff --git a/docs/_static/basic_local_kubernetes_conn.png b/docs/_static/basic_local_kubernetes_conn.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e58c7ca65c7442dec215f336645b8985381740 GIT binary patch literal 285334 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
I5#5NDvPNWz`o{#ch7kD00NpF!nwX^h5^tnpa z4W_stv6R_Ki4>vpq7dhZ2Y|78NCI^QFTb}cCAX7rNBb~8ib!9xTx)|Wr0t*}@2{0> zB$u<%d)L?C^877gm+OR;0B>>a*@{32=YE6zIm>GP=c)Wh{7eM@7)4$^NA6VEjwS*l zpCm~_9E{$8lOBXhVxf}~=ki@Gs&bxkUQIw)|S6XJD-D+G} zuJds_IL78Q1^{dmKNGODZw+JP81o@-uoveBg&TU$aCNd5fh983pa!1@Z}%QC_H;~K z`$88Ii**X#$A&iS91^+@&aUM!Ckf*p1K{M7v_6UGSr5r|<=_l<-hR2dJ9Oe8HX^0^ z+ow|}Gl??Xoq8THKCW$v4%Kh57tvw^Bvj*e$!${M8s1GkA?*}~?jSR`03>526j6R} zJ8fMby#FFYg4=(5&8>rZ;AP;{z!vA&glX&joM;N+r#}_BW>%bu9lyn%!3H3^6-gVy za!%CYJwQs`ggoTPKd9uv{-ZO_U!W`J89Vy-p5YGo_J>;!?#%1NEDZXx)AK3V3aiEy z_m@5H(3sA*KHc&DQlF#Kpc-7IukfQWE8+?|4C@A$SpV8aA@%Cs1W$8bUd6GF1$n(# z+9lpf+ZD=d;pP8xE(~Z^M`+oTzBmR+rMlVk28BxRw^t38t@P_!wDoq^w(fXg=|I3b zP`(R4oVOliq^-gY{#6_}jFp2iT|z_mUD^V137!BP15QQ-Wk{mZGYes-NfbiUu)_BefHmEoScA1UGX!qE&dO^HByUWe{N-aG z2gO}jXU88Rf`UYI)5*n!pu~}8M$AElO))>sEYnR^^Q$Xsi1mec!~^ zI`I^Hb^Se0Wr4`Y0m=`T$}p;36FhzHeozinytIqEWbVv+U3C>=T_n;QNs}ml!`Q9^ z;}OO%Wp@{=^$*zXhE)ri><`M2ii}Ep;L_yxWKN3UL{)ezAdI_2;rG68lWkMGeOpoY zKPg$QSdkXFT)! z0NrWwgKqVsDdd|EbqWZgW}PeTg?{r|SC&#?g%1zl2T?@Ex%rSkHma{2l(JfZ9lX)& z8zHpWbB^&>Z~Kjodfrn`h<8gbdt%`0Z+gjj#O-6cl=f^YVNgLLTZ?4d@*I%lt zZhs{0GHHhWwJ=Zft$WUg7YSD5o^jg#ZS|l77QKtoOg8bV<4u~+2485+#a@H^^c4FI z%?6U2_zppB{&+kLQ$*U~8 zI{wr52|8Tlj#5k(upK8Wg!rB|wxmu!Qae=7Y?XFHyt`0M9#NeQz=5!S4($?W9~Drp z47A%EaP-ls0!{JCDk?Bf8jx$**2++>`8e4g`Rt4Q<+blYor<80FRkREkD#Ml(K1o& zdTRRYfuYmb(&Z%W4d1yXRxz&4HYFxbZUVaV}O}?A%73U~8{-j%;d%bBWj>z=(@n9VHy#-NE(AdW}VKgX@1zN6aKRi|U2A5}Ab*cjrl(HhdB;wBZtAexN>?+n` z(5VFPnyOElp9pe_;{G3!vYPZ?IHo?mSKw81%=nZ$23*w43z7;8WI(mdAm%66KIv3$ zRW;TkWa|#^-vL~^`v`abk;FiIqIy09k=&=gdwFk8cTb8&0u%f<+r66&=U|vy%^~H% z)a42;2$!GP#LmloSxMd$2g>6+&iVyc4d)o0h{40kwOo-R+EFpdiT+0i@1pKu)NsAG zzL5)(awp|I`iNcqd{G^7Xd+$rGT~2&zoAU0PyI#bYdne(=&w`)tRO`A zq|{zjNkaHM4^ZKbGgB^TvdGht$UroWYgU$J^o_2u=frDiTObBHH z>)z2t0*Po>n9}|3A^8J`q26(fL?G4@J>}REc8^b6&*W-=?N2kCKy)QrYRrFj-@m&4 zu>C8Cp(VEU1P(t8ES(c9LrNwNLUfBn}# z=y!iOOj zxuRzQ?^?(fc_kCabXO5TFt3@T8&G3TWzQ;8hej>tkf*;n?BIDzF^)fKc5-GOpj5_) z!;!WG?mVCc`qmR4podpCyld%GGp_3PgPdJ8QeTB<93d|?DB^q7`WKh0|8eX7LRt>D zXtMiPUHAMaA$FjzfurX6&E9stOJ8+D6WEOZ#?b@JMUIYh2Xo=pBp`}>e&&PM&iM0R z8j-{O3E62gsi$#ru?`tEW2YGbUzO~nfPk;`4G*c{?;r2D6E#kq*YU(G@%#_2+V^{o zkMcN9G8ATl(*CA=^*?{x+J6-I&Yp%2grBzOnA?emdVN3Es#@iAz8GRAV9Lr++XYOa z!C~3ijVqpQ1Lm=&6)W+*k1n=eq_?2iIZXNA{=k1+LbMMMf2hwIW6nHQeI>Z8M9|1U zU+T8PJAPyAa)q+1QDHl^yXi^KbC=}`);M@TED(+u8f!`xi}o7#kjVJC5B*T&d`-v{ zkr!l;H%Q9>{DgM8VT@=OF!}TOAAf(d{wZwiA5ik)?Js;WUJvYk&orfxD$*@n7b~@y zQvGA%L%=1xJ-x-J#oIp}mg#B>q?y^MDz+s2+-T24KcLqwxXPBF`L{7R|AIAeAkP6o zvpXa8pufS*f4QN%s1J;x?(oY`Cn4IL2C}6mC4%_>6B957an;*D8&`NU{WKjATjYxVpP$};?>8Lj zz!)BEXJ-EQL;Tw}iLMvF2Kd8xxzXDH?x6o^#(by)0tzq14S)Hk-~Zbe6z_H#FL<;% zCHu2C^3@Gs3^oyu{*ATtznxO|#eV}HC!|h)%imPi{^gi%iUVW#KZAt(EX?IT62$QD zHuJ$he=~~g3Zx`tJQMoDr(ku$FTTn|4ebE|!m~YsyDC3B%W1W>3ZTA!TvhX%=tBaY zg68`t)lK*3BNNzt{ttp@Uw&vUNjF~VGxq5$w*!JzEs9KJT4ZQ`_9FSO-5eh&bD3yn zE@zX>fv|n)5|VI`52lr!=KI@+;9q^_%~o{*qm@|fvHlo=y1pB@SmK# z(BhluTrB$Y$TjL`QTW=;Kh8zEeYC(Fx{bDOr@n6f(g(~UyX>Ea^=scWfO)9W+amh2 zk5ZV}wdhLN{N&G~fjR?#X#2mTD}VM&U#$TEZ9dHYr!iTD<*oXJ#^b7gBfjvz1%m<@ zu&jjPK|j4R?wP2cvt+2RiT#&o@xNa1qUV3rEm*ICHUBIa{ohG&?*C4L|2ql(e=!N} z7!_nG1Uw2`h`uli_#elBNb~TH=AVY=4@FJ|P^gq)#?9*z9UBdvgJ~k4W-v4K7C@Z5 ze(+qNb=Gb7p*ky%pXStb`^_ohna}!@OZ;y2y%%kmkiuF=QH>MlyxBd@u^>u%3!riQCU5q{bLK3V^ z#iA<}NfzW-PUy(RpQW|GmtQye>UMQq*rJ)K+^73!1)yOcuVz1F`q`zKF1}OU+1c67 zyQcZ7R4ecu7|P9!hx9!9-`Mf|*G2h*?yuEd#F+$kq3BBK%q#!(#ee@kg$Mu}02QY7 zpAY>v2Hs%*<@CM(k6r=KsUqTgOF#Z~fzd zB8q`Qtb`b=z<^-TZD4@(3>_jO4bok!fP#QEpdbv2)X?1_h$vk{hk$epT|@lNi0r-3 zy?57m{&`-%@7+Iq?XEEMi4*U0&ikBCr^ezJtrfM}{;-Tity0k>7hwUnSBtYSb6i|^ z=T12uuUwH|MVl|U$jFeho^7XoRie4Q;5|3pm=1W4?U!WOWBK?|aUSg#roWn!`R@_@ zpOAuLK2dQV*UoJF!I%1jpAtLNj3qiUO~<(P-#<7o{b8!tVcfFvG+pKCBIn7Cp@%HD zX1;vNDeAq#P&@R0^TD5qK|jpG zQ7c2jm)4@j-9tO&(nMu|=n8&mO_~oUD&QSKPOEa%UtpnixG8p)@d|(Fc7LIT7uVip zHm!tN8gb-&d76V+-zkS?v;HLu+#~5>uIX+>V4j#lQyF#Hv?S2HdD(GafIMb>KFO^N z9P~_+v@ce|mowL3(k+w(Cxp*Gw2k7GVqxf=>fo}Pym9(C>yfAI8ZLA7OZLO&R51Bv zEkXDcN>Ok&-ZcY@Ky!`W_Q)ZR(Q+IqvmZ-%;?PNN94~*rUQqtma)(Q_yPU_!kaSws z(=Cp|=kHWK2o8pMHCB{zXo{+)WkFKxYz@tQzgKY(H32g*O}=vl2?gcdk^$HNS#o4lZ=-7b;;0>-4xxUJ8=KlJqkMfTE9X4t$O~c@Oyn86zlY$Y{5e;0Sgly<@?0e zub(Yi5W(4L8RB1G!uXdnI|+9?&-$4ZeNm7a@KIMc$w6@x%r!*nWN5)Q=Ixhyi^|nc zT)BPE+Rd~*{o!8T)-w&~B~dvF>|GskNrh@*MOEi2Xr}4$HS-dcj)Vx}3kYVNZX0XU%^$OFjT7+tS^Jm--}|s9Qg@gZx#Y~K7&fdecF`pj zu1G?0IH|zu=p-gU_+V1Og3%3(s7TMypt{L{5c9$^j@s~auU~t+&%^7`5{61{F9R<} zV$KSd(d;FYahy_uB?+5m+#b2myQ>xgQ_pG^C!8dmHMS?!h~Yb}`8zUOx}C~b#>~%j z7>|58oz=<6X7Eg{eYPrXWnlf)`Xl;znMa3bT?;$0xLYaE+c>x$jd7*t>$bnN$7N+i zK-$lCqP^^x_Yqntj+Dy|Hmu!Zv*mS<3n(!m-xo=L4>n zcjYB95GIP;_Nj^x#*>9_XLZ>INb`233k#DEDUhcMWTdxvP|U~M1jr}6rr4SVK&QDB za*Z^piMRXqv!xcX4S|l4*jp-C#;9LQcOaENtJ8(I+x4ssA_5VN#Hhxhs+`%4F?vo! zAWAwUFhJ2Dddw(ppyFy04a)b5KclK~0w}4GPmW!;#nl_3f;?Id0|PVpW?jt{Yp1i? zQyDE0+VR60ci$!TSMzm$)K_@G;^{EjXqGqMyi_iBgi}_U%DxP(t5NdCsmF$*>yAH^Utp@WKmR(y%n$T zGo=ln^Yzh=xEjET5u04jm#PKfpB`_^d= z=nu}Fuc>;SmF}wNj$n$eZE_rQ$=Vt1azvKybtcji+vG3Sdw;k!MRBB#{g-@^IL-D# z8&Yi2IRxs6WWQO_L^G%^SIHH&;fB1$v-LSU8PV-sZtGU716+$i`-ap!5aekJ3_`Xh zuN*#%`UvUoNk_IIH`nM^!&i7N0&_lQIyfjt=mq zaueY!9DZZ@U?^IQpz4fwVi+1jUx-1z99=rJav7WaT#b@-ZDn=VQfy72U?)o?rEDxt zzZ>T7{1%O|H44LY1_&%`#>D39-w$_GCWMgs_2|Jy1Qdn znaf)r?bt{s{*m{h15>yvT>i{aw_kF_+v$;?-2}yLCW}dlut~qpG^>j{l30E^dpvvjXf>}o>hitBiGqfEwvb#K;3>CFj02lVNEj?EoC}=q;jyn9C z)UlX!Wy(@iW{|e40B6CMtO3QMoT)b&)p6&9p{|ti?oZJHB^tmiful; z)W0&;>>D)nw&taN*a2ODxEP_CmBA*!g+vycBx#cGWZ4f44K+2&1Z0|a&>lIqE8oeoo7!h{=gEO*jlocY6jg1cN6 z+VtxQ!&(C=MTMXFQa=B&J1{^hv;r%G+atG^-dZAmYIWA31B|H8J;w!(t`ZaNjp+dI zese0(7fIm1W>PjtDc%>84!sAQ@~n1VI6LNe#+?a-!bl0xbCn-y6biWR#<^7O`2@>> z+VQ$ZR9~DUclgb~*;vIO5|rl9Jl;;}(Gii{<`pX;{-q)B_W%J7y15O%7B*?D=Jh=y zGI->9oQAp9Hl*F!bdCL#R0nt>Zrcvi#fpK7HOXhx!; z!}Z<$`&|5A7{r*|;tdmb#3v;$uN91oZMw;FsA{n}IEZUHkxkgc;klqlS1FCr?c*ia zB8^ApOL{c+mwHpxM)P(WM6~J#i1g1?a{7YvIE#@gA6cz31;}PG8XNtku{xN?ceZB3 zW>Q(L$_!tTT=xnghqKYr`^f6)FK82-L53P|F`p~Im(@jM{GEV$hT$yesW@vjR%`4& zig$Bkoy=Za$p0cZW?kEx-j?8Y3v-AVe=Rrca*=ri*k`9)^}dRKd1m*=jzIhb<*F=2 zOb!29`qJlnROjG6k5C%}QsM|8n&}T?+owwE$;QZW}n{89mTcKt1EhjW^D3bCHy7vrC zOog!EuVhC&t^mZ_C)Z`)zjt~`H$ZRoWRMzSg&K9AR?Xn`Oli!XiMP*S9oYCOq?R>j zs1QE;#1Y3~^ML~$<{J^Mpr@7Pv9tA8`}^Pca{8p;i!im(A~pQ8@haB!68&X#+K<>d zi{gdXv-<;*P+i0vWqnbPDiMbZ-$|?H4bXI&`?$7zINWjc6H9;YSYkCH%DrJk|JC6U zm*?&3<^?oE7&|jjjhi0ieXmHj=~k382eIo%?)GL{_f-L)C#Bezp{(ua%T*ZT>^!Kt z_68NFw48lT9EGJu(evM)`fR_@rn7wa8@l5bKA`Cw&Z z8|rO4%;*y6w1tWBVD?5K!6*S0M1uSB=~@4KQI_XJra3sJCkPRnkyJ?zt$3lVg-{84C-;UNU0!$mP8kM&5=-hP`X=?jfkwQPaArdat8*X_iJO^Tp#^5eMeNL zHv%)Bts9?Q;&T?PyTu}AgR#FnpteQfCY$FYNv+xQV6?BrIx5DlD2MQx-ii*j_2)J1 z7(Ci^k4kj^r?VOJ&FWkWZFWVSfUX((Q?4>sug$TbhSgj>2dwUnGgFB%e&Wi|3smKG zWVX6787=lHeXdY(*r;H>kinPEDKUSh;%puXD%h&0VDSSayPxIeM3UgtBs^0gsqmrH zZNup;0u{LscOt-tMp@%5GlZ|m{9k&gIoPW>i&Gp$*GwJWZksnTQ&+S;&ow@8U67HZaZyVuamsLdkt>bHA|*~hybjo&ktKj(Dbpb-0b>`jA( zBh&diH&y|K8F?lnl7d!U~N% zllDG`$O^e_H3E5zURXx;(de74pIl^PX_WE?N8@yd>!PJD%@{9Ej(ui28a%hBgmos9O9OPrnAekq zhdhTc0X=JzxvCehcI76}7{{kv=>&Cm7*|qv5wq(;V9V?k(E{`^B(+dh+RuGjzzfj1C zdM(?sZ*Qb;sE{4!AD1ZJH%M`58k_048-30hl7J$Ou_nF;AOFS&H|#t)++F^BF%h4i zUU!w*g}Oz{$|iq(WegA)1%p|-{66mtleX06j9O6whgrdVp#5q}`JG+bkqB+EwGr79 z%g9Wmp~=U`$1*M&j?tnMp7!FD_de7Qb2vq{(RRe?{S^k6Bw-#AZwhAnqr?DE4OP_O zUPi0VvCwIpq+*(ZtL#@C>htA%)S~5d8Z+i_SDwkFdP9jqiUkiIXbGb6iWZnEx-X@g zx8qBp*ss_DQZn3ur4JM_^iNNEqPrc(5)2BbN>XkdkWtIFUlTm->2iw3m{a5a6IxB{ zddJf|Hlt0yoxOGW5t9&adzLvJlaMV!`SuEyT#>|}>P3AH0<2nsZw}K5l!1}aX#qca z9)#%X=X(Z<+w0-S#iZPg2c6dY3j7|ztLJ=b8EPEu8OC&{)m`-mbu#>;Wiesf40m&8 z-#nYC*98CMie}xL?k}fv^7A35(_r&2IG{4WsCcTu+VWpQ`xL*boS7k-gPCSJN5_K+V-^Q-j@ zgX54elm2ocd+#ryUD!Ci7VM!{I^la0`~K>Z#Sb0WA8vGJj^GE08oVCtq|4|~mx zBz|=Z!4IHDbI4)8+4mp6`_EVE;Y9~~uvcXNB}W3{S9f{)_L$(0_wF+M)iM2>`2Nem zaOcAwN<-A1eD4SU;*>p3L7fSA`N;i_|GdTTi+Ff1`Suw4?k1mK-ogP;r&BXWJ9m8l z%l>8e-!}FC3zKlOaC^*X+Vw-z7QZYE&ZXOlIlIFCmD?dkcc>HcOBe;U?Vbs6jB)?! z(QY3^OxdJKlOe4JY<^kBK2U?2+;DOFRqC%C3M2$OqxQY2RDWgAJ^s6Z|DM2qPvE~N z@PFV0mYTQ6h^`Dre6UXE`&FZ?eJR{#tXW%k;Z?M292pXKG59=&{a4+uv!(}9BUY{L zD3m1#)>SOO2&+FE?}8kmM^f-Lo7V3AzY57l+2pEC9#bOcomqde#s#424B$eWyYZ(K zm@@h9|0*tWq(q))cuR&7VfHcn)uZKp1mKK`G43JKdtxupl749|;bFkw+Yu{{s`b7_ z|Em(S_ry_g6h*nwah#6RrN45M-}~^GXmOsj3y@=-ef{E>Iq#(qec|4v{2vt)Ih03z z#MN?Q5lk`a#>2zs?;vfse18tN#Keh9OG~F4)E{rpG-a4*&xjjKSN(t@N)wKwQ)UZ@ z2m2SZV4M#^syl$l?6~E7I#9bYsA>-Lb4MF~mRv!{eXfVdUx1?71H;CsGD`ON{na6S zn4yk?;n;1eJWocG3yysgVh`-j{J91x0si?=yfX_elx|fZ*Lgo0d)!q1XSCL1W#?NG z+}ucG|7@*T!1ZUR%HBUb6k*(wIGd0BDkask{bxMBN&FeN?NG zv<+!!M-wwxdp>#h_r&g>1C!!cM<&sDT) zX^ro82^-uEW;O1A=!^Kh-NN%tiYXuHjW5TpAn%#qyznzuM@qJr^)W&o$PdxetFyJ` zkOdc#Wmov$99YV{&cAXm_7ZmxDY`RgvGs<)1QQ;YY~W#OK@eF=c7B zqU_=*s-mP<3f0fsl+DbxY+*Ph{743nEe1$XG=W*a|IEFRc&o9cgoQ)laV4eShh5O^b{ClK9-1|vctjtu$^fRNEg&lG=zTpC~0*_!WfD% z+g<&U&29b6nK<|;o#Wy>V-%%_zX?w9IAkL3ME5cN)YcSf_lG0G{7F!X>ko4IHa{wy z4S)boWOT3APwj6M@(?K2U2?dAh+BKUE#l}!_loGPRsWFt{2W3&Tj8^$So8Ms=CyBm z8NZW|<4~DdIQc`L@$Cy^lHin%v52F30sz3eo!Jp7&J1Kkfwz3bm9j^N8)w&n zfOVTA_2Y4?f}mZ8PQ3?*GV>zSH0S~CX|*bw)kmM6-Ey4HQAu_we?U(6YD|Uh>m`U^ zqU5%AH-f_L^hh-31NhOe_R4vEd1!j3lB@in6vqK@!j)N~x*s0>ChBZYOnNs2weXs@ zzemKyE36(`Dl76Zlv&B*&Vcfvb7s$z4}J_mNzpm;h9gHBits0{Jo>oUo?|uS%xtB` z-c<`Ef+LO5vH`?8Qcp{jE{k+9bz_t?d(SKZs*y#rE<-{+4>>h+t7cq|7I@Evsb?6W zoNHe^!Rvkb_@utjg`ncPJdoB?<;4F}J-8268JfV-m3_6=jLa@`^66$>j$wmMHg{K; z3}SIC9Z1F1aO*3E9s&ifUDAW;W&_JfzTBxhZ_ML+xWN5t=9o-I->rM?%}C!hH2tnR zwT^G`{EFo9J*V}*>Gx{* zGvp8b1qNTNp5*mJJ1&gBOj;aiWNB8_4^`7`%q?2MCC%gaya@w8)gqB>)Tv@((PhrZ9X{KvG#h;Bi9ZrVo zm0!Np+%Bw*A0FEtLo8xjSWI8)N-`?P)Uoik-n^GYzmSl-p5(U1PGmB!h7o-&k+wGJ zrcQuF#BV3pTE`^?&x& z5QQHj$I^sL>by<2H6pSjBK!q`=ttIH&Sa+{8iY_t$ZR)yf<3=Bi`l61z*3(BRu{u9 z4|3X%9&d=%ET~qlF~(OsD_ouR7F#_A#Oq8It7;yrk1;dt%JVRuWBuCexTZiTC9Am1 z;a5pe~$o2|*qsc~8-%67Ra0*LJJ`-y~==N=>J6_k!VrpCXca za6vMf@<9}B_{vl%RsUlQvqmD~v8!<2^oNkkL7bYmn(`w0)(MkwHl|aLMQC-IGR2yYH03gQ4!F};fC{8Po-W*1*u)r#;1 zYTCA4JBd%R<=W2;hU;d#qq9r+?MzlZCVU9*`DPu;o8bzX&0OdM~g4|n@ zAVOtz;0|jw?Z>QcpNN1-6zI7n=s8q4 z1CwfBoIMfdww_}T>ZUt4y!b}3Tqeab2(61lYdp@^-@vFSaf}fZn4QIMJYw{>^hJZ9?@ypi$=*}j%fO36e+J}XU&xk z3db%zE4f@ND#W1$@=B~N!yGAka(Y%s)tR6;PY|+n-mn(CIO|2&**PU(1rmk=tz$w4cs|=LTdw{>vl9<6%`K)N%8Rb4& z+DFlO33Hepq{h*jbJDG#&$|;Q;h1+i3^6%)0`d0FjnIRb)q&cx(~m?QOt4pQqxqF@ z+USiXIFdhCW%X?ifZ@&-=h=o-)^gAjuzqeP>=~u)Fo0gw44>(lr@khs6E$aUM!7Em z!jk1Y$yy*%N<^LT=ReNdW!<>it!NNyhwsig-b7S9jRV+3)&Sv|YZ}heWe$^I3f0Gi zE~%YJ;B%ZC?sID8O#u@5^KD9zPS{Qs7pm)|iA|jOQzeXlfcCns_A}GrSQcX$kHjkA z>Rw+u;TdJyX;H35iUp51XrvaoYs9JDl`s)>Pk9@~zDGb&O|<^>QzTk(qNp9^jwC@* zo|td737YY?TI_P87wgasn6ZeRC4`tED1v!cx)+c8Nu6GMVD}k#ozP(u`FfybuCzbG ziTPO^|J!Fln((v}v|4;>DcV?Leh=&uIpDs>(w6`ahk7i&QRI|t7$brDLS&Ny%>(4} z=d$CEkZlbCK?ID8jKF2|A1eBb_#k|&rG{G8;@R@|UJPbP(NKgik<+u(agQpn7A+X- zSo%_b-WTb2D=5?s5t=w3T%rT+&h8a7#VoIG(1_iF+Ptr&7|Md!POwC{M1>1}wy(iS z;C1c86k^YTalksEM*{W0Bd5nSAtO~6Yl3PUoVy{ZJ4hSuxH?_lpMPtOJF4mF)s;Pk zs`twkLe$+6nizXY{0qlg=7=`6u@C7wvJ!C~L6>I}GOq`5e+A}pHXcUgG0mEGUHt1y z{rXND0Ea%2j`fx;hEQL2TpkFj+z3?iLYw6b1YX;SOr9Nyc9Va3*7Mc+T(npja07$l z1gmZD3A|ce!@DtO^|(4!O>|2tYC~T|zW$2cT2!A?`*{000ng0rwrY`cP>IOW)M7A6 zzL3Bcq-m=vjC8hJ9+7pU&zsCOPJlbK0?yK#<|PGm!ulGaT#`KjITrjg+{@yPTq1(q zWgtn4MIIP^puL{Dn#0IFT%lqa8(C3qHTG7n=C${#uqZ16NY#J><;VC@zw>Xj(0zHV zsOOI5b{%Y?exCcKp%RYe&Jjfi=ZhFo3G{=#$5CGV!^PWtnF+4JTwDN0%cw%5g8~{q zov#sQZ)U~HN7~j)&^1%?N7f;+J5WZ%R-HXLqoe$j*}A$HEefqquU*S=A?&Mn>6%Qr zkb)m4Ll)(H{^Khj{xtfMVl2H9+xzFuzX^ZAYD~WY>R8yBkQ$yAExH7?jNocC7uIZ| zS+`{-;~63BU{{`9z+$%(*FLfFx|!v4b2Z)0Y>NS_*z;K=xJSE~%d*#;-j{@!960S( zFZ5v|O_3wNW@S25RKH2BbTiI~2^7x&EHR#ZX*>^Km|-Tg#_$q>h{XCu2ClD-H^nN- zOU#C@nmYh%W_4+L8i0W?71O!f*W{mArfAS0T+Fk>mqZ^!!?P4FT7d?OciSLXd_3k| zWn+X5L?fgk@n>S6Hjk?jQI!kx-C|OKI!LlqYse$2L&0|rhM0%xIgnyiuf6)`EY9~L z^5;Y+?h{1~?cBvy9TRrX*#*&GT61+^i&qP)cX%Id66`q+y|AQ0y!6FJfsD43A1 zHn?R(N8Vdr8!H!EzAoR@Tbw=jwCBS%Drfn6qmDOyrL}IZ*Q&r>0Tyb`p7vsxY1hoP zerUC0&!Z`fO8~PJZ6@MLPKgH zU4L3eXw7%3&R1f<`{g#IdH(d3Ini9@BO&Xr&fgTb2L4@QUtLy=(tHJb(ih_p^Arh2 zhcEJH(>6SSI;y@g<-P3PG2#-a)}tu%37sQZj!v?|0u}s=nr)k2|G3qT%anlyGZmE< z7bVL4z;iT+o)={kHllqH>`CW;_z=tG>RV}4mZkMJvrszJLwY$U**sN^EuNH)uRS0u9Y+yd_C{5A@^!O}>c8f{c(oFe%eBUn91$ z>ToI>h*bTFd6U7q4?PduGmxV&4Oxs&O;Bq1>^; z*S){$4EGXEK6p z-VIW^jmDIw(8c*_8L4I!`=%s@1Qq#sQ+9q#lfxZ}nKV;HN;x8X%yrqfv{H8UsT5Zw zYHtNg;kfYh`~HDq>7klX-4;zJYE;-heMOVPBwc`xtg=qfG28d3QMR&t#5vcs zEi&kX_69uUU zXr7cv$3|jh*;r9Vv3+^~(RBOXKg^*=3cAhXl!Hn;BQ0zkLZQt@i+!yFW+Q}L#X6!C z6`#c!b*nnNv7v(Lh3)SqK0^PY^(h+cOwKta2uNmmV-=L3McC@GAgb*Ko`r`LTlJah zd&>4tR~tSG_eX94_ZP_wRL;tp0g8?t5V9# zCiCV$qK-A>0NxY|c2o60Fezt-iBS2go8<^7>}1anS!`!_oNG-GzTKWKt2^^0VAi5C z(3cj?OdA$WiHuFfiP-go4%Oz{Vog%YYh8nr(A|o9V2X|*P(Fx^3WWUpF1fYzoiUM% z&)Pp9QzrIbOG%ac@pbNp{DYJzZ8#!rm>BbjAEJJtO^TgsRs_m&KtoYu>_I)sa|NJb zIire#LH>%@Mjo8-e*p1rPW=40_}CYZ7|FX1-mju%Fyk3QMH7spLpw1CRe3r~W3^~w zal^;0F?zsC#BuIHSJ9r=(N5B@V;V9NHS-3GQMp6bNwH6H#U9(Bp-sjikp!17y0`yl zQj7D4AOYJMtl*9i`5@&==&+x9M^Pa=cVE=y*4jKDEAs}SXTxWjc$5zu(fxoQ$1;=?@adSIVqxw3|<1GIj+#4<$6DZ$x!?U7@0>YSeTEv51$Qatf3 zW5eAkBT*rP(BOsD@nh!WWHwhqT3y3uP#2FjL`uCn|Jj#P&QN^734w~n#*3pU??t9? z6;53wV%}JWjjXD37QLQy0~ycsjm|4SCxTerVgdajV`6aS>uUjxG4q0>ABmjQZZ7ij z%#Hd0XiFREA`IK>E=@Ueh@@kLQk-Q zK>T*ndnn-}w*b!l`6bDFJN8x#DegCf(3dmdu(ES4|Ch&?W{7#hBWxe%Y}6cUgJ^Z8 zkvMFVf;)TH>^`CK$Cnf$XNh$*VEFTU?PX9BL~A#Syd@g$S}Avs^aa+!o=Dr-YQCYC z3NddcTb0DSxFWX=mDuB#wFRzVz6WjoDY%|0LJ)J+%aE)H<~CGdwEpZdU?ee8nzKsD zemMx8_kOq@KR}`|vMrCu`i?B43Q*LGf_g11<@6zQA0zlzSN`aEPpolzudaT! zEW>L0O706W&2%94!)8OvR^{SahZLuuKa)^1r9k9j+wA9i5yTL^m~3~|!EkypR}DrD zc%El=!fNC7%f*CJ!4-znl_BJ>Bg3mX;?b32ht#n4PCCtQRIjmGbIXb3&zJH#8-` z5Or}(hw7p;r;UPV3^9KfP>|XuB$seuo}bu)xbFcmi}|FmhghewKqFDyEIIH6pv$|6Km*j%f`5+!~>_vLLop8<{#s@qvmoU z2l4^>jf1JK`ZFHBx<2}#A#yc$6sxI=KfayEiX3Y_UFd}OyKpZthNo~Q{F3)RiTPNm z8LE&tRSzTLG>F-IP9FdoAam9@T>iw?9;be<`;8Rq;6hkinXjY?S16034oftN6+}|r zc0oyz#-8wxS##-+8_bsZnTkpsH(+s}p$6)0$dUeY&_%N}QASq=@qH!Db4lii$*#Qe zUhj?L?X+T(2_~`a??UZ54-i|c69i%};x0&>jACA&@*e0#lVaBv#g0OMlmCFR6Fx)V z87#o^(hU0!iORs!x|o8+igLDWo63YNbUASl!ozeWBL>rSc}B28IbuY%`Z@c%!b_jG zE%UEkw^G*D^&76&%~FZ5PcYe7u63Isgu)=DWo!DPj>){CX*8Na!6t4_R0NvKc7Dz!8YAu^L-%lo`95%8&)R6n^ zlyrqhB=r>5_d5N?LdS`;t7?R}Nj+Nv@B18TPA9N}x+9T+!6&!3>>pF#WKkof!eKR_ zD51l+IOS#2Xje+xpJe)jz||J>9TOjj*qR1mKuIReBhCY(4Ty78ET;rfZ*IJ{`nid~ z;s?Q1?%y7>TDui~#Ds_|?v=w$O#1!Ql$0fHptB;va-kB~ceTgqTM=iJ$gpANvHJU3 z+16Ko16uToP|mBP3pc6?2rt<5`yS>`p`6DzVweMo??+no>|3({e*A+yekUf%cFHYd zw)huvd{Cmx6*w&MQ>t$b6-podW8ye#(Z`eDh*Spc01KrF%h^Id!#MCzB}Vjzz*vd> zR-@36pxBO#ihAKw_j*WgrQ(#IOg;4@d73cj%`q_4vfZQ>gpzZi?M56$+R+iJ_ zOt)6|kMH`s|I;LUwCoW)c(^~}ik}ZCb4}xMV34_VnLH!G35!Vn$?veC`%T2r`bL>;^C|{9Wd`cWB&*9PL9R{CMOW> z3M7KD@#a6pG6Jf~$*FE9d|9?d|6tAvvc2dl?}mPKm-=Qzy#J^ixd(B&fEN|>5nqnf zYaGBZ67bVjR8;f~<@l-Xh~MlcSHQ&*sZ6aYy1JuHvBYU1m!Xkt$l(|%R`4c$e=lA{xc^@k=D!`;{{t+{f7|nxb^Hsv^j|Ug_XGN`nEV?+`LCG# zKO!bKuKiTV|Iay_o*N#`3F^uNA5h^~$~cLi$;JIMIE#sMr$pL3{+~$b|DIV}7jv>B zGsop`xUE`oOR*|EVXNLbFiL;$oLEV3m zUW_=Z;$Df#kN?_#`uN8%4IjCSarWW!oAWpR_`&c0Pag#TFOvGBKJNocWTY@_mDm67 zqjCTpqKnUBuI*B){r!Kp!~Y)E|5mcZ9Vn|pg<4!!r?0B#+ozn?F3cBJuFl;rPC~l< zNB&S@Bd4UKjMpk~Y>tsXVchWclVnc7IQ8bTP!M&X{)j-!zTF;6;H!N?Q4Y-zrJk4MFc z$F(N=p_W%`aYt(F5dpSdf)R(N3a z?hkTaw{>T%9Qyk6mj}N7IBNk3DR#T<@@2_n$5R)!&e@W43Meq@FySWNtSk5R3bIDI zm~8VG{_;!y=`W7%><8;N0-|Ujy9ij={`7b8)i-tHU7N~aghps$!`{dR!h%b~MNNM*r!O+jj2{ujqax z@ZCe*(h}ALkobm*v&@_8`i~Axyao9FkV#p(|O^I|T^icV2B>^Y^|9R-~c|*OL%`HE``B z@c?5GWXn}M_jcH> z&9|r*IL<3HPVM;N14XMs0=>f7x{Z&hg&x?Wn-&IJa=4iHn^=lx0I+i(eMiB}aWMQ~ z^7^(q=ru6~p4YoPS&V3NfzzUqVXe%j`Pj0xe=W#JF^~%!{zY2(*PlT{MJDa%0*5(xL zi`tFiR3QSsUCxVLc9|83I2E`;<t~Z28HXk<>9UBsgG<>uNhsd(IEn zm+ljptGk(Z`_nQ6AWAa&OA25Hi9|!F>W|VRXP%yOxBH|aG%aJLF zkq>ci6(M2!Yy^|aO@`E~*VX!Fr8&WJc<6{eIT#;yeM@vbUhPI+b~joWZ{xlDSsaAz zrKaOZWHSsvPS%EYT&j(;*eibY%>Z+zYF`OhDQtL1USKCrgzhGDyKV>lC92ynZ#V-a z_IV{>D$}XY?~WNjHP7y4pv0xWw@ZKiZHzP7Ar_f*C^m4Ly!hZ||Dd8&v9JtiTLB5c zk6k~@m2~|gGH0i(VgD|ySNH#LN!> zJ&*`hS%da+ab8BpO+B~0PXabx=9`WGW?9!4FNr=`&!X+#w1uE~11yhgNl+F}_34I+ z41(4%JO*_~Z)8GiH3Og7E21L!^Y=YC{*IkWF2e|isERn8m@`Q41ayyhsUS{U7+C0~ z$Dv)=>9{z_RHAa?s(<=?i?*0^ZPAt}d`|=sN#fj>X}ToWNW1*_y7^a7-96E}2u)SSnyhpH?V-FJF<0%!x zDn%~N4%JfmKHL!l4RHss^0*lJ(#f2mBaLG)lG_BTK(Rc=%~c?YG@3m4t=sYer zizkWKsh$lzRc&JH(*aFGGtP(h$`1$%N3Maghh2SUvw6VDZ@^j6NGmO!!dzpIf5f$Q zDjt^mx6Gr$^$NQo0GSyqVfM$J8HH@)aY@=@`55S>*m;TV@_;lAb`%$<57(S#;4WE& zv2M7&040&u@C*0ip$KgY9UkrQs6jk5QDs75Y~{GU#Ggv=_YN!OJsAv44VDfS%=k!~ z2<;1*J+6c{!LfM7FNB$u@UuKdz=X^_5MGhNTDhrqM}>$uC;y{+rUCekTC-BhXigQa zR>|PFcy>0!8b+<)FrB01u?cw`Z+^<4c`Z_UH!Za>H{@9B=Z@$y!XhUN7o zBGWJ#P`oF_Ra78M)XOq~{yp~XF=4JNhI!EAV*(Vfbm(jD0O>NtTG{{=#;XpMn4ofG z3%Gs9b%>jh&y`z7!`yW>11Qyv!?o|hunS&Bx5qFR9TP|E%F%v`4ZN<-H#UmWsIqNr{qx)(DY1&?LV>NeWL&(5hlY zT}s{pg$N5>05+MxLuoy%|LQ9_f9iV+ zrThf+h=Kdk#l%+>!R&z<@5fA=-oNjw_b>i8?+=azjkw|h?FYw5a0O0w4Cn7W64_Xt zZGI!Mn*nA^8j0~#!_dH+pw1bffvr&H3tN#kN4}J#!6IWNanU=dj+lg)F` z_90APl;|y3ztjd7wXn#Q|0fvz&YF?7q<+k*KrSp*d9su#6U_aI7#^V!!jUe&i_?fT zIA7UZtux@elT$VS8b1&b9T*uM=#kQCt%07;I!IqMn9V|+)3oINu49ZguniU9;*Eb( z^*0~qu%~QbKtKnO6HR+dJe!ksF69CD)b~as=zpV?TEG#JaUeaNo?+O63E$W2m>VDk zh{pPx>R&AlHbPu9?E*3!>#t8uc=S#5P#1|%H+6FE=}9S*npXlkXJL{B6)C%m3ixU0 z;!@58UcG8pu8m?`{aiVt)r}>Wx#9Xu7$6Yo+Q0V)HIIZ0Ee#+|Pw2P_74cWZZJ?tM z{rSPrza}ok^>)kY<=ulxwplQXyAj4*>Jz(IGtD2W@ZA@T)9DH0#_qTrJAM5_l|0YfhAU(O8qT!bZZLw8J< zKq+=s)(6t61!A0MVMli$5#uTmCHSzBa!Za}0r zwXH|(LYHHvWUs^3P46TQvd>So0}T(60{O{EcfcmkALnIi8n#d`(;D z=IBhNcRM82bfq%)?-QK9e<(pWT84c!Gu3UH=zY@-8%xY!o^E?HL>W`A?M<<^@5qO| z7b#!*(c75jC{|&_di?Qr8h!JV1&gA#;})NyW%EBXN-vd8h9)e?WQFNQumq@6mJcv^tOdO=`F z4fy}Qvl=6=PJk0kzMxK&xY`WYz4Ov=zHTq;j^OiNsa>8O&x$^hk?S;JF2>{l!!&SR z_?zl03uBo^JCT!Jp{df+V)K{Fn9z}wKrzR&t zvwHRkwHYL25P<>5B2zQ3hL92R$$a5rcV2AmSVBu@Ft2IwO8%uF&gKl`mZqVKslhD$ zuw+lVy^?us#(r)%CBp`e33KO%#AB8dA)aACf0fpcrc#hVJ4B-U`I9%r8mAnd-WLA* zEnFcPZmPF*Jb|xgj}mygOduk*eK@W5c6=Q_mShTDlCk@7yI8^uoW@i1M;8YwgF2qG zF?T?7ix~hoXmZf3Rm(8b1ColAbOhfY>(B#KVh8_~QReHGX4m6TUdXB8+IUC$l0jvu zsM?^q`C5i_9G^;8JGIOP3_}LlQyhn(HtDvWmEC593CJ9Ve-xx93lUyEL6~clHHF-& zPOdaxM^&?iRrT@4Wp7n&7d@D-kd<`DMb9|C&?}?$_MwhDA*KqIE)WY+E}Hs?oOgA8 zA>r{>tH6ndGwC(7w>auJ&0V@zV%lllDD9HcYXcz=uS+|3qcPyBKVmN`0g}EU9ev1Y zWzMkID(%jg*9dh*@bbuwIPIcB(}H=ic+I>w{;@C5=L=-(2Q;M!&Zjq;0G>+$X3=}s z_2uX@-U~W_DP^k@@bh`W3%cNkxGY~$ClfxeQH@8Jj97OHTDKm*@l36_$2>J7pr&Zt zx7MULa;UW-Kx~h8l4H}f68>Yq3EIo=&9mtvMCA{shrAEgiy~BW({=xV_dEmlOLL{x zXVV()BqFL;J0mYB{1&Spa8E%>47lwR$)!}XE(?5A&;x_0OP{dqcp0S_B4n4S=`e7Y zFyqVR+|U$9Cb5koR0rNz+SB7#IDN$ln#xNEW?i-!;M$JyBy`8j;2ef9=IW-ndYHU% z`zq}YbQ8B*+MQ|>HJ#ts+5zL}25Fz=ps`ihKju^E?PcmC6Fsm`uzwF>NGwa*r2x_b z4Ce=Fokq&&6nmB#P%XK0sjr*!9jt_)t#WnjcoL=e{A5=LXZGjSskIdblbaD&G#R>q zUute!d77`I@(>H{%d5=kTtly%!iZtr>cWSyq>cv%l)V<2GFy-HW3k9|J;77;hHvnV z%`m3e4AJtWnw8vWuT}($BdP?!cKEwEuIsMVJ!hGm#HAyQmLK;C|4fa~`_1A2nx4V^qf1Ee5 zkYWpyG}`|t!LRXorhr+x!z5&rUgJ3?O&7kh$kWowp0wIRM{`jT>vfWg=X8H_hZ$eO zd0;bFLn|ngT{k*&R5AGaX-#*@3t7)(gpct!SUarw3-Q`iancL_Zt{$x%XtTRk?YDx z5~b3L4B;pWkL6QqNPJ~FS?Ibauuat*hX=` zXFf@%)LVV5*_860hSWq!i4h83DBe?K(`Cp)XepA>1}bkBJ|z=4@*Tt%0TvqRta~Ns zJS#NTbFy2kNfFXXx-)=aJXHryM7O2st8YA$rR-tjwq1l4Ea`}=(Fi# z(>Ks5>3gWECftfiZRhICZ|gBDJ@3`7q+1nZXN`A_q;(7b&^iZv*Edp4`{)}d3vhoY2|jq1YBQ^v{8Uq@XVwOgImag|QC9%1(M z2xm~NEL*>shlskUEydqe?#P@-rIaH!9oPcB z-gDWm^|kL_MsC)Oai|1$)+`ay5H^Nl5v05uHTrVN*GXA;mOpV^ucQuFK(TqYHVNNY zn7TyO24yf3M~U)dbg)rcm>!ekg{WO7ZSel#@+#%cqqXpy(b=EqvHpvJn2r`Sr!iRbKk9+j=o;1}0S zia7aRcEruHV$_S_sya9a14Pv$_7@s{t2*e z=~A3W4vIR~ouaQ2Se-gC{`u0r=}!rENhcI&;>>cF1E)UI?3EK)Y3+|S#1LxT#-l>6 zc-MBA<(cYS8`-01z3@kBuCHY!2ZjA6j> zjgAXTJwp}&!bau=%Ta#6S?Ilh1TU{`S@MQw8)Ok^U0VWJLY-45KpkTBXckW?x+9Jt z^TsBf#yd+8HzC&~tpabIYMTRa%fD7v&5l}L;eN38_K@sOW>m^(P2OZpg%-_agKrTK zdpH7#wQU37ZKAK|_|4$_CAj~`UtD87qhIq%uFic_ao4*Sd%lJR9>P2KhfBJv(f@w3 z%!$$ZrqKxWDF;A9o<(f!`YE;E*h+t)c6ZWkm!>31IWi8MNKBPh%bfc(0S(0&mEKyk zqFIo};$(1icyd!lSOclyPE2PnO#OfCy=PdH>DD$(ks>34BUnHI8%Pjvl%hxpASz7) zBp@I~QR!d-siBG}C?E((4?Tnuq)Q3Kf{JuPl_pXWq!R)O3GbCrXYXhB%-*`+Ki~Hr z&!0Ik40rCUt+lST&UK!Z=M9>}jSLL@iH}aU6{~Nbvjed0U%DIt;e%05Q6QoU@O99> zjD-lF2rlXlpT;+Ptty_9C3I%h?KXO`ChJpZ>4(Tew#{%-7i~=5JS80bO{U{GuS)yDzYZjg75e>OSFz zEeBLY6!rX7-NsT_3%KsAG*Qg>cEQo0(b5s3{Jjq3x%H{2;8WK@j2j!|zz}Rtk|$6E zG_U}XN1;=R?o{^_sMNF+3jB7Ev|idpzkX)6rsQ#r{aMc4gpilpRX%P%{TX{RQhCIu zOLrA8C*)O3rsdln7mH)`rz;Fn0Etgaiqe^Um->3u9^jM~EH({f^HcpO;y%OA9eRtf z1G~x?7mK1X(B$1YHLdLFhOuRX@C4Zn*cs*w0FpCoMLC^aun(=@d;fZ~p`?XA5qN^) zv6qFMb)HtaHLUPx70O$Xw%=ENfFjM-yb4w>;elXowJ*#rlP;@Q6o(HlU?buTRG*1EW&*F*6HPJ;mWk zojjm9?1?$DrS4_@%+B!nILsw{hK=6ft){}&2I~Cae)mV*&FyuCKuOsQWI81UZg=_$ z^4&}MKFs#>;>rF4U z*3rqaq6gFV)K4P6$P;TlW%nc*_g1`)9naNX&i;uNBGRZn^GtbKI(04BrSqeCONtz-Nt<;3cZ$Fe;|zf}z10GF<9 z0T{pUv^9BAPWdQ%AX^T*FtnW4c#PWbBtqwl|^Sn6ob}ld7V%A0v`%_#JjCf zqO|+BhvgtIGZ?N&Jemh=(VBt)idgh|m)y0tuXEom>j!B4vI$rVo!Y^*oRnl($usEK zb((bAD+wHJ7wX!0#Ox-Hu0Zkz2%|3_ms@{NIFZcDS9ACNaEb1((&W5b-Y0NF!k=)# z?OYiFu;uRiH+mr3bYxwIKLWT~%neMsB@HmDrLlBZ&B&F=_BvhyrHhSBSTAS~x2cn~ zaFmqme+81tq2|?r)+0cwSk|$x9kez73Q^BWRBfh#TZ-BPEoSUt(FA&;3tig7w*QEe zb`@!ocqTZB?;}HvO`RViX{=g774|^ARX)!Ow-DFaJ^H1;L|659oWsXV$Jvuo4}Lt` z{0}Gl?WX{H(5nY&U~c<8J+66V_nw=SI!3irqkQRsMXg#{!E_vf1>P~@`J;)hznaQO z@2_Z^80z@zUnSC@iqNuKVY}|)5r>S?p&I^}UxgIqw*HX8{i|G|kr%jDZry(CYegIK zqW;xG>Hd7|4HHni05CB53XqR91xYKTJ|ft=%?vUt+=%nwY(6bJvG6#zaaHDDleivCm%`r$YE=TSh#*}g)C#Cf<%{wN&(caQo@ z_|;!6@_+v9slhjV*b?fv;Qxj718ecu@TLE5gnv0%{0E9W7O!@(ev}{au?F{u61N_c zCb?k`YqRSy2*}ktkQN2dg6~cR@SGq`2B(5sH3K?J1u2$a3+~_%#sE}mCfQMnxPI_O zvmZ$1wl;e{o1bV(jyq;@l>r$+f?DC&C8x@<`#m5+Ub|+e0-i@M_gTN4XI@=i0NO3> zau%hLbt^A!jlVI1!A4b%c;PoMbeB&yD|MVZuD>GyFjL||GKw$U=85pqM%qDYo#S0e z-&Ue;`OPskGf)>Q0F~PQW0*cWw{0tWAnTXUAXUGZICtJDy1bxtImb+N1fd+@I`yu` zb2%Tx!;Fd%VvRk|uU9t1J7{hPAz|cv@e3XX{t~ybqzwYySOOh@J~wX8_pDp&O$b-5 zGRnD_+-`i$8>>^1-|0IwrPHabO--M*0Eu9&>i4gf5$qKn!l@qP@w`89yaS&3(^aN@ zXq&TJ&{z9>&VJATK{DzA_4ica67B%i;SK;4GOR?9l2x}Gjh7wxC)tu%(c^u zR~(SQ)?5wQcl&`8P~bd$$Q$4?z5w<;?0%nx1_mPNQ8QxH>CL0Pj3VP8NP8J{4S^lA z3UHkLx0?3bfMl~SvMn)2Tf{d7t)e`WU!v0nXO!rJ=kv*81CgNon)UWHQE+!%_6Ai4 zD_ye?s6_sFXKXmb!K1I}%H216ZSF<30nUPxEk@2G5;Y#cm+!8|f%5kUKrCx=;L3_4 zC4WgV6%uAvK4tx!BSH8F?iiS|-wOsR{}a#;9o~YYt(pP4Q9<>xy$C}4Xa{hoArLrV zv3w3<3CVnF(aY^6Ac$9R8Pqq~mEV9JaGYF$WUJA z!gesl_0u<<+

D!=P>lN=qM3kQef3KW&y$P(!H$s~n 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ǣSk78jt539+Z+8F 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 literal 0 HcmV?d00001 diff --git a/docs/getting_started/kind_ray.rst b/docs/getting_started/kind_ray.rst new file mode 100644 index 0000000..d307ddd --- /dev/null +++ b/docs/getting_started/kind_ray.rst @@ -0,0 +1,100 @@ +Setup RayCluster and Airflow +============================ + +This section describes the local setup for RayCluster and `Apache Airflow® `_. + +Prerequisites +------------- + +Install the following software: + +- Docker +- Enable Docker Desktop Kubernetes +- Kind +- Helm +- Kubectl +- Astro CLI + +Setup RayCluster +---------------- + +For detailed instructions, refer to the official guide: `RayCluster Quick Start `_. + +1. **Create a Kind Cluster** + +.. code-block:: bash + + kind create cluster --image=kindest/node:v1.26.0 + + +2. **Deploy a KubeRay Operator** + +.. code-block:: bash + + helm repo add kuberay https://ray-project.github.io/kuberay-helm/ + helm repo update + + # Install both CRDs and KubeRay operator v1.2.2. + helm install kuberay-operator kuberay/kuberay-operator --version 1.2.2 + + # Confirm that the operator is running in the namespace `default`. + kubectl get pods + # NAME READY STATUS RESTARTS AGE + # kuberay-operator-b498fcfdf-hsjvk 1/1 Running 0 29s + + +3. **Deploy a RayCluster Custom Resource** + +.. code-block:: bash + + # Deploy a sample RayCluster CR from the KubeRay Helm chart repo: + helm install raycluster kuberay/ray-cluster --version 1.2.2 --set 'image.tag=2.9.0-aarch64' + + # Once the RayCluster CR has been created, you can view it by running: + kubectl get rayclusters + # NAME DESIRED WORKERS AVAILABLE WORKERS CPUS MEMORY GPUS STATUS AGE + # raycluster-kuberay 1 1 2 3G 0 ready 99s + + # View the pods in the RayCluster named "raycluster-kuberay" + kubectl get pods --selector=ray.io/cluster=raycluster-kuberay + + # NAME READY STATUS RESTARTS AGE + # raycluster-kuberay-head-wvzh2 1/1 Running 0 XXs + # raycluster-kuberay-worker-workergroup-4dfsb 1/1 Running 0 XXs + +Wait for the pods to reach the Running state + +4. Expose the Port on Host Machine + +.. code-block:: bash + + kubectl get service raycluster-kuberay-head-svc + + # NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + # raycluster-kuberay-head-svc ClusterIP 10.96.1.92 8265/TCP,8080/TCP,8000/TCP,10001/TCP,6379/TCP 25m + + # Execute this in a separate shell. + kubectl port-forward service/raycluster-kuberay-head-svc 8265:8265 + +5. Access the Ray Dashboard + +Visit http://127.0.0.1:8265 in your browser + +Setup Apache Airflow® +---------------------- + +1. Start Airflow Instance + +.. code-block:: bash + + make docker-run + +2. Create Airflow Connection + +a. Visit http://localhost:8080/ in your browser. +b. Log in with username: admin and password: admin. +c. Click on Admin -> Connections -> Add a new record. Select Connection type `Ray` + +The most basic setup will look something like below: + +.. image:: ../_static/basic_local_kubernetes_conn.png diff --git a/docs/getting_started/setup.rst b/docs/getting_started/setup.rst index 4aea291..70b19e5 100644 --- a/docs/getting_started/setup.rst +++ b/docs/getting_started/setup.rst @@ -21,6 +21,14 @@ See the `installing Helm `_ page for other pip install astro-provider-ray +**3. (Optional) Set up RayCluster and Airflow** + +.. toctree:: + :maxdepth: 1 + + Setup RayCluster and Airflow + + **3. (Optional) Set up Cloud Authentication** .. toctree:: diff --git a/example_dags/dags b/example_dags/dags new file mode 120000 index 0000000..314da8b --- /dev/null +++ b/example_dags/dags @@ -0,0 +1 @@ +../dev/dags \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 005fac4..7ad368e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,11 @@ dependencies = [ "apache-airflow-providers-cncf-kubernetes" ] +[project.optional-dependencies] +tests = [ + "build", +] + [project.urls] Homepage = "https://astronomer.io" Source = "https://github.com/astronomer/astro-provider-ray/" @@ -68,6 +73,7 @@ docs = [ [tool.hatch.envs.tests] dependencies = [ + "astro-provider[tests]", "types-PyYAML", "types-attrs", "types-requests", From be254eecff4ede72eb164a27d32463b3cada27f9 Mon Sep 17 00:00:00 2001 From: pankajastro Date: Sat, 26 Oct 2024 00:39:37 +0530 Subject: [PATCH 02/11] Fix static checks --- dev/.astro/dag_integrity_exceptions.txt | 2 +- dev/.astro/test_dag_integrity_default.py | 27 +++++++----------------- dev/Dockerfile | 3 --- dev/tests/dags/test_dag_example.py | 23 ++++++-------------- pyproject.toml | 2 +- 5 files changed, 17 insertions(+), 40 deletions(-) diff --git a/dev/.astro/dag_integrity_exceptions.txt b/dev/.astro/dag_integrity_exceptions.txt index c9a2a63..0d6bd89 100644 --- a/dev/.astro/dag_integrity_exceptions.txt +++ b/dev/.astro/dag_integrity_exceptions.txt @@ -1 +1 @@ -# Add dag files to exempt from parse test below. ex: dags/ \ No newline at end of file +# Add dag files to exempt from parse test below. ex: dags/ diff --git a/dev/.astro/test_dag_integrity_default.py b/dev/.astro/test_dag_integrity_default.py index e433703..62dfd06 100644 --- a/dev/.astro/test_dag_integrity_default.py +++ b/dev/.astro/test_dag_integrity_default.py @@ -1,13 +1,12 @@ """Test the validity of all DAGs. **USED BY DEV PARSE COMMAND DO NOT EDIT**""" -from contextlib import contextmanager import logging import os +from contextlib import contextmanager import pytest - -from airflow.models import DagBag, Variable, Connection from airflow.hooks.base import BaseHook +from airflow.models import Connection, DagBag, Variable from airflow.utils.db import initdb # init airflow database @@ -18,9 +17,7 @@ # =========== MONKEYPATCH BaseHook.get_connection() =========== def basehook_get_connection_monkeypatch(key: str, *args, **kwargs): - print( - f"Attempted to fetch connection during parse returning an empty Connection object for {key}" - ) + print(f"Attempted to fetch connection during parse returning an empty Connection object for {key}") return Connection(key) @@ -34,17 +31,13 @@ def os_getenv_monkeypatch(key: str, *args, **kwargs): if args: default = args[0] # os.getenv should get at most 1 arg after the key if kwargs: - default = kwargs.get( - "default", None - ) # and sometimes kwarg if people are using the sig + default = kwargs.get("default", None) # and sometimes kwarg if people are using the sig env_value = os.environ.get(key, None) if env_value: return env_value # if the env_value is set, return it - if ( - key == "JENKINS_HOME" and default is None - ): # fix https://github.com/astronomer/astro-cli/issues/601 + if key == "JENKINS_HOME" and default is None: # fix https://github.com/astronomer/astro-cli/issues/601 return None if default: return default # otherwise return whatever default has been passed @@ -69,9 +62,7 @@ def __getitem__(self, key): def variable_get_monkeypatch(key: str, default_var=_no_default, deserialize_json=False): - print( - f"Attempted to get Variable value during parse, returning a mocked value for {key}" - ) + print(f"Attempted to get Variable value during parse, returning a mocked value for {key}") if default_var is not _no_default: return default_var @@ -124,13 +115,11 @@ def strip_path_prefix(path): return result -@pytest.mark.parametrize( - "rel_path, rv", get_import_errors(), ids=[x[0] for x in get_import_errors()] -) +@pytest.mark.parametrize("rel_path, rv", get_import_errors(), ids=[x[0] for x in get_import_errors()]) def test_file_imports(rel_path, rv): """Test for import errors on a file""" if os.path.exists(".astro/dag_integrity_exceptions.txt"): - with open(".astro/dag_integrity_exceptions.txt", "r") as f: + with open(".astro/dag_integrity_exceptions.txt") as f: exceptions = f.readlines() print(f"Exceptions: {exceptions}") if (rv != "No import errors") and rel_path not in exceptions: diff --git a/dev/Dockerfile b/dev/Dockerfile index a0e3fa0..e26ed5e 100644 --- a/dev/Dockerfile +++ b/dev/Dockerfile @@ -9,6 +9,3 @@ RUN curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/s USER astro RUN pip install /usr/local/airflow/include/*.whl - - - diff --git a/dev/tests/dags/test_dag_example.py b/dev/tests/dags/test_dag_example.py index 6ff3552..3336fbd 100644 --- a/dev/tests/dags/test_dag_example.py +++ b/dev/tests/dags/test_dag_example.py @@ -1,8 +1,9 @@ """Example DAGs test. This test ensures that all Dags have tags, retries set to two, and no import errors. This is an example pytest and may not be fit the context of your DAGs. Feel free to add and remove tests.""" -import os import logging +import os from contextlib import contextmanager + import pytest from airflow.models import DagBag @@ -29,9 +30,7 @@ def strip_path_prefix(path): return os.path.relpath(path, os.environ.get("AIRFLOW_HOME")) # prepend "(None,None)" to ensure that a test object is always created even if it's a no op. - return [(None, None)] + [ - (strip_path_prefix(k), v.strip()) for k, v in dag_bag.import_errors.items() - ] + return [(None, None)] + [(strip_path_prefix(k), v.strip()) for k, v in dag_bag.import_errors.items()] def get_dags(): @@ -47,9 +46,7 @@ def strip_path_prefix(path): return [(k, v, strip_path_prefix(v.fileloc)) for k, v in dag_bag.dags.items()] -@pytest.mark.parametrize( - "rel_path,rv", get_import_errors(), ids=[x[0] for x in get_import_errors()] -) +@pytest.mark.parametrize("rel_path,rv", get_import_errors(), ids=[x[0] for x in get_import_errors()]) def test_file_imports(rel_path, rv): """Test for import errors on a file""" if rel_path and rv: @@ -59,9 +56,7 @@ def test_file_imports(rel_path, rv): APPROVED_TAGS = {} -@pytest.mark.parametrize( - "dag_id,dag,fileloc", get_dags(), ids=[x[2] for x in get_dags()] -) +@pytest.mark.parametrize("dag_id,dag,fileloc", get_dags(), ids=[x[2] for x in get_dags()]) def test_dag_tags(dag_id, dag, fileloc): """ test if a DAG is tagged and if those TAGs are in the approved list @@ -71,13 +66,9 @@ def test_dag_tags(dag_id, dag, fileloc): assert not set(dag.tags) - APPROVED_TAGS -@pytest.mark.parametrize( - "dag_id,dag, fileloc", get_dags(), ids=[x[2] for x in get_dags()] -) +@pytest.mark.parametrize("dag_id,dag, fileloc", get_dags(), ids=[x[2] for x in get_dags()]) def test_dag_retries(dag_id, dag, fileloc): """ test if a DAG has retries set """ - assert ( - dag.default_args.get("retries", None) >= 2 - ), f"{dag_id} in {fileloc} must have task retries >= 2." + assert dag.default_args.get("retries", None) >= 2, f"{dag_id} in {fileloc} must have task retries >= 2." diff --git a/pyproject.toml b/pyproject.toml index 7ad368e..3a41512 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -73,7 +73,7 @@ docs = [ [tool.hatch.envs.tests] dependencies = [ - "astro-provider[tests]", + "astro-provider-ray[tests]", "types-PyYAML", "types-attrs", "types-requests", From 0f671d8a52d51e80f02787cdb5a2565906fa4359 Mon Sep 17 00:00:00 2001 From: pankajastro Date: Sat, 26 Oct 2024 00:44:48 +0530 Subject: [PATCH 03/11] Fix static checks --- docs/getting_started/kind_ray.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/kind_ray.rst b/docs/getting_started/kind_ray.rst index d307ddd..7ae3ff0 100644 --- a/docs/getting_started/kind_ray.rst +++ b/docs/getting_started/kind_ray.rst @@ -93,7 +93,7 @@ Setup Apache Airflow® a. Visit http://localhost:8080/ in your browser. b. Log in with username: admin and password: admin. -c. Click on Admin -> Connections -> Add a new record. Select Connection type `Ray` +c. Click on Admin -> Connections -> Add a new record. Select Connection type ``Ray`` The most basic setup will look something like below: From c5fb3880ce208837dcc65d6d1f9b45139cefba45 Mon Sep 17 00:00:00 2001 From: pankajastro Date: Sat, 26 Oct 2024 00:50:16 +0530 Subject: [PATCH 04/11] Fix static checks --- docs/getting_started/kind_ray.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/getting_started/kind_ray.rst b/docs/getting_started/kind_ray.rst index 7ae3ff0..3551cfa 100644 --- a/docs/getting_started/kind_ray.rst +++ b/docs/getting_started/kind_ray.rst @@ -97,4 +97,7 @@ c. Click on Admin -> Connections -> Add a new record. Select Connection type ``R The most basic setup will look something like below: +- Ray dashboard url: Kind Ray cluster dashboard url +- Kube config path: Provide the path to your Kubernetes config file and ensure it is accessible from the Airflow containers. + .. image:: ../_static/basic_local_kubernetes_conn.png From 108bb4a269c540a3018f39314325104c163e099c Mon Sep 17 00:00:00 2001 From: pankajastro Date: Sat, 26 Oct 2024 00:55:56 +0530 Subject: [PATCH 05/11] Add hypelink --- docs/getting_started/kind_ray.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/getting_started/kind_ray.rst b/docs/getting_started/kind_ray.rst index 3551cfa..1e039de 100644 --- a/docs/getting_started/kind_ray.rst +++ b/docs/getting_started/kind_ray.rst @@ -8,12 +8,12 @@ Prerequisites Install the following software: -- Docker -- Enable Docker Desktop Kubernetes -- Kind -- Helm -- Kubectl -- Astro CLI +- `Docker `_ +- `Enable Docker Desktop Kubernetes `_ +- `Kind `_ +- `Helm `_ +- `Kubectl `_ +- `Astro CLI `_ Setup RayCluster ---------------- From 22b331090f29e7460c72ae04e4204c375b209db0 Mon Sep 17 00:00:00 2001 From: pankajastro Date: Sat, 26 Oct 2024 01:20:34 +0530 Subject: [PATCH 06/11] Fix list --- docs/getting_started/setup.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/setup.rst b/docs/getting_started/setup.rst index 70b19e5..f0882fd 100644 --- a/docs/getting_started/setup.rst +++ b/docs/getting_started/setup.rst @@ -29,7 +29,7 @@ See the `installing Helm `_ page for other Setup RayCluster and Airflow -**3. (Optional) Set up Cloud Authentication** +**4. (Optional) Set up Cloud Authentication** .. toctree:: :maxdepth: 1 From 060f57b80e3961a73124a36c0ac53167a96e87ee Mon Sep 17 00:00:00 2001 From: pankajastro Date: Sat, 26 Oct 2024 01:21:37 +0530 Subject: [PATCH 07/11] Fix list --- docs/getting_started/setup.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/setup.rst b/docs/getting_started/setup.rst index f0882fd..6df50a2 100644 --- a/docs/getting_started/setup.rst +++ b/docs/getting_started/setup.rst @@ -36,7 +36,7 @@ See the `installing Helm `_ page for other Amazon Web Services (AWS) -**3. Setting up the Airflow connection** +**5. Setting up the Airflow connection** - Setup/Teardown a Ray cluster on Kubernetes From 88bad6ecd0735c1581f5a650116e376e43299742 Mon Sep 17 00:00:00 2001 From: pankajastro Date: Tue, 29 Oct 2024 21:53:46 +0530 Subject: [PATCH 08/11] Apply review suggestions --- dev/README.md | 48 --------------- ...nd_ray.rst => local_development_setup.rst} | 58 ++++++++++++------- docs/getting_started/setup.rst | 19 +++--- 3 files changed, 47 insertions(+), 78 deletions(-) delete mode 100644 dev/README.md rename docs/getting_started/{kind_ray.rst => local_development_setup.rst} (68%) diff --git a/dev/README.md b/dev/README.md deleted file mode 100644 index 599d703..0000000 --- a/dev/README.md +++ /dev/null @@ -1,48 +0,0 @@ -Overview -======== - -Welcome to Astronomer! This project was generated after you ran 'astro dev init' using the Astronomer CLI. This readme describes the contents of the project, as well as how to run Apache Airflow on your local machine. - -Project Contents -================ - -Your Astro project contains the following files and folders: - -- dags: This folder contains the Python files for your Airflow DAGs. By default, this directory includes one example DAG: - - `example_astronauts`: This DAG shows a simple ETL pipeline example that queries the list of astronauts currently in space from the Open Notify API and prints a statement for each astronaut. The DAG uses the TaskFlow API to define tasks in Python, and dynamic task mapping to dynamically print a statement for each astronaut. For more on how this DAG works, see our [Getting started tutorial](https://www.astronomer.io/docs/learn/get-started-with-airflow). -- Dockerfile: This file contains a versioned Astro Runtime Docker image that provides a differentiated Airflow experience. If you want to execute other commands or overrides at runtime, specify them here. -- include: This folder contains any additional files that you want to include as part of your project. It is empty by default. -- packages.txt: Install OS-level packages needed for your project by adding them to this file. It is empty by default. -- requirements.txt: Install Python packages needed for your project by adding them to this file. It is empty by default. -- plugins: Add custom or community plugins for your project to this file. It is empty by default. -- airflow_settings.yaml: Use this local-only file to specify Airflow Connections, Variables, and Pools instead of entering them in the Airflow UI as you develop DAGs in this project. - -Deploy Your Project Locally -=========================== - -1. Start Airflow on your local machine by running 'astro dev start'. - -This command will spin up 4 Docker containers on your machine, each for a different Airflow component: - -- Postgres: Airflow's Metadata Database -- Webserver: The Airflow component responsible for rendering the Airflow UI -- Scheduler: The Airflow component responsible for monitoring and triggering tasks -- Triggerer: The Airflow component responsible for triggering deferred tasks - -2. Verify that all 4 Docker containers were created by running 'docker ps'. - -Note: Running 'astro dev start' will start your project with the Airflow Webserver exposed at port 8080 and Postgres exposed at port 5432. If you already have either of those ports allocated, you can either [stop your existing Docker containers or change the port](https://www.astronomer.io/docs/astro/cli/troubleshoot-locally#ports-are-not-available-for-my-local-airflow-webserver). - -3. Access the Airflow UI for your local Airflow project. To do so, go to http://localhost:8080/ and log in with 'admin' for both your Username and Password. - -You should also be able to access your Postgres Database at 'localhost:5432/postgres'. - -Deploy Your Project to Astronomer -================================= - -If you have an Astronomer account, pushing code to a Deployment on Astronomer is simple. For deploying instructions, refer to Astronomer documentation: https://www.astronomer.io/docs/astro/deploy-code/ - -Contact -======= - -The Astronomer CLI is maintained with love by the Astronomer team. To report a bug or suggest a change, reach out to our support. diff --git a/docs/getting_started/kind_ray.rst b/docs/getting_started/local_development_setup.rst similarity index 68% rename from docs/getting_started/kind_ray.rst rename to docs/getting_started/local_development_setup.rst index 1e039de..52d7e97 100644 --- a/docs/getting_started/kind_ray.rst +++ b/docs/getting_started/local_development_setup.rst @@ -1,7 +1,19 @@ -Setup RayCluster and Airflow -============================ +Local Development Setup +####################### -This section describes the local setup for RayCluster and `Apache Airflow® `_. +This document describes the local setup for RayCluster and `Apache Airflow® `_. + +Table of Contents +================= + +- `Setup RayCluster`_ +- `Setup Apache Airflow®`_ + + +Setup RayCluster +================ + +This section describes how to set up RayCluster on Kind. For detailed instructions, please refer to the official guide: `RayCluster Quick Start `_. Prerequisites ------------- @@ -9,16 +21,9 @@ Prerequisites Install the following software: - `Docker `_ -- `Enable Docker Desktop Kubernetes `_ +- `Kubectl `_ - `Kind `_ - `Helm `_ -- `Kubectl `_ -- `Astro CLI `_ - -Setup RayCluster ----------------- - -For detailed instructions, refer to the official guide: `RayCluster Quick Start `_. 1. **Create a Kind Cluster** @@ -26,7 +31,6 @@ For detailed instructions, refer to the official guide: `RayCluster Quick Start kind create cluster --image=kindest/node:v1.26.0 - 2. **Deploy a KubeRay Operator** .. code-block:: bash @@ -62,9 +66,9 @@ For detailed instructions, refer to the official guide: `RayCluster Quick Start # raycluster-kuberay-head-wvzh2 1/1 Running 0 XXs # raycluster-kuberay-worker-workergroup-4dfsb 1/1 Running 0 XXs -Wait for the pods to reach the Running state +Wait for the pods to reach the ``Running`` state -4. Expose the Port on Host Machine +4. **Expose the Port on Host Machine** .. code-block:: bash @@ -81,19 +85,33 @@ Wait for the pods to reach the Running state Visit http://127.0.0.1:8265 in your browser Setup Apache Airflow® ----------------------- +===================== + +This section describes how to set up `Apache Airflow® `_ using Astro CLI. For detailed instructions, please refer to the official guide: `Astro CLI Quick Start `_. + +Prerequisites +------------- + +- `Docker `_ +- `Astro CLI `_ + +We have a `Makefile `_ that wraps the Astro CLI. It installs the necessary packages into your image to run the DAG locally. -1. Start Airflow Instance +1. **Start Airflow Instance** .. code-block:: bash make docker-run -2. Create Airflow Connection +To see other available Makefile targets, please run ``make help``. + +2. **Create Airflow Connection** + +- Visit http://localhost:8080/ in your browser. + +- Log in with username: admin and password: admin. -a. Visit http://localhost:8080/ in your browser. -b. Log in with username: admin and password: admin. -c. Click on Admin -> Connections -> Add a new record. Select Connection type ``Ray`` +- Click on Admin -> Connections -> Add a new record. Select Connection type ``Ray`` The most basic setup will look something like below: diff --git a/docs/getting_started/setup.rst b/docs/getting_started/setup.rst index 6df50a2..dc5a89c 100644 --- a/docs/getting_started/setup.rst +++ b/docs/getting_started/setup.rst @@ -21,22 +21,14 @@ See the `installing Helm `_ page for other pip install astro-provider-ray -**3. (Optional) Set up RayCluster and Airflow** - -.. toctree:: - :maxdepth: 1 - - Setup RayCluster and Airflow - - -**4. (Optional) Set up Cloud Authentication** +**3. (Optional) Set up Cloud Authentication** .. toctree:: :maxdepth: 1 Amazon Web Services (AWS) -**5. Setting up the Airflow connection** +**4. Setting up the Airflow connection** - Setup/Teardown a Ray cluster on Kubernetes @@ -56,3 +48,10 @@ See the `installing Helm `_ page for other .. image:: ../_static/connection.png :align: center + +**5. (Optional) Local Development Setup** + +.. toctree:: + :maxdepth: 1 + + Local Development Setup From 69bc95f54587c16e4c5e3afc462ad361859907ad Mon Sep 17 00:00:00 2001 From: pankajastro Date: Tue, 29 Oct 2024 21:55:43 +0530 Subject: [PATCH 09/11] Fix path --- docs/getting_started/code_samples.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/getting_started/code_samples.rst b/docs/getting_started/code_samples.rst index 622ae2f..6c0f3a3 100644 --- a/docs/getting_started/code_samples.rst +++ b/docs/getting_started/code_samples.rst @@ -18,7 +18,7 @@ In the example below (``ray_taskflow_example_existing_cluster.py``), the ``@ray. .. important:: **Set the Ray Dashboard URL connection parameter or RAY_ADDRESS on your airflow worker to connect to your cluster** -.. literalinclude:: ../../example_dags/ray_taskflow_example_existing_cluster.py +.. literalinclude:: ../../example_dags/dags/ray_taskflow_example_existing_cluster.py :language: python :linenos: @@ -30,7 +30,7 @@ Ray Cluster Sample Spec (YAML) Save this file in a location accessible to your Airflow installation, and reference it in your DAG code. -.. literalinclude:: ../../example_dags/scripts/ray.yaml +.. literalinclude:: ../../example_dags/dags/scripts/ray.yaml :language: yaml @@ -41,7 +41,7 @@ The below example showcases how to use the ``@ray.task`` decorator to manage the This approach is ideal for jobs that require a dedicated, short-lived cluster, optimizing resource usage by cleaning up after task completion. -.. literalinclude:: ../../example_dags/ray_taskflow_example.py +.. literalinclude:: ../../example_dags/dags/ray_taskflow_example.py :language: python :linenos: @@ -53,7 +53,7 @@ This example demonstrates how to use the ``SubmitRayJob`` operator to manage the This operator provides a more declarative way to define your Ray job within an Airflow DAG. -.. literalinclude:: ../../example_dags/ray_single_operator.py +.. literalinclude:: ../../example_dags/dags/ray_single_operator.py :language: python :linenos: @@ -76,6 +76,6 @@ This method is ideal for scenarios where you need fine-grained control over the .. important:: **The SubmitRayJob operator uses the xcom_task_key parameter "SetupRayCluster.dashboard" to retrieve the Ray dashboard URL. This URL, stored as an XCom variable by the SetupRayCluster task, is necessary for job submission.** -.. literalinclude:: ../../example_dags/setup-teardown.py +.. literalinclude:: ../../example_dags/dags/setup-teardown.py :language: python :linenos: From 110544fe23b3a22b1cd5f7db9b8469732f14cc2b Mon Sep 17 00:00:00 2001 From: pankajastro Date: Tue, 29 Oct 2024 22:17:45 +0530 Subject: [PATCH 10/11] Apply review suggestions --- docs/CONTRIBUTING.rst | 6 ++++++ docs/getting_started/local_development_setup.rst | 4 ++-- docs/getting_started/setup.rst | 7 ------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/CONTRIBUTING.rst b/docs/CONTRIBUTING.rst index fb70c17..d9a8a69 100644 --- a/docs/CONTRIBUTING.rst +++ b/docs/CONTRIBUTING.rst @@ -30,6 +30,12 @@ Pre-requisites pip install pytest + +Set up RayCluster and Apache Airflow +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For instructions on setting up RayCluster and Apache Airflow, please see the `Local Development Setup `_. + Run tests ~~~~~~~~~ diff --git a/docs/getting_started/local_development_setup.rst b/docs/getting_started/local_development_setup.rst index 52d7e97..3953065 100644 --- a/docs/getting_started/local_development_setup.rst +++ b/docs/getting_started/local_development_setup.rst @@ -1,5 +1,5 @@ -Local Development Setup -####################### +Local Development Setup Guide +############################# This document describes the local setup for RayCluster and `Apache Airflow® `_. diff --git a/docs/getting_started/setup.rst b/docs/getting_started/setup.rst index dc5a89c..75bfc8a 100644 --- a/docs/getting_started/setup.rst +++ b/docs/getting_started/setup.rst @@ -48,10 +48,3 @@ See the `installing Helm `_ page for other .. image:: ../_static/connection.png :align: center - -**5. (Optional) Local Development Setup** - -.. toctree:: - :maxdepth: 1 - - Local Development Setup From 85a5357ee5ab4741f1515d4bbd68c68d8eacb807 Mon Sep 17 00:00:00 2001 From: pankajastro Date: Wed, 30 Oct 2024 13:01:31 +0530 Subject: [PATCH 11/11] Apply review suggestions --- docs/getting_started/code_samples.rst | 10 +++++----- docs/getting_started/local_development_setup.rst | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/getting_started/code_samples.rst b/docs/getting_started/code_samples.rst index 6c0f3a3..91f415e 100644 --- a/docs/getting_started/code_samples.rst +++ b/docs/getting_started/code_samples.rst @@ -18,7 +18,7 @@ In the example below (``ray_taskflow_example_existing_cluster.py``), the ``@ray. .. important:: **Set the Ray Dashboard URL connection parameter or RAY_ADDRESS on your airflow worker to connect to your cluster** -.. literalinclude:: ../../example_dags/dags/ray_taskflow_example_existing_cluster.py +.. literalinclude:: ../../dev/dags/ray_taskflow_example_existing_cluster.py :language: python :linenos: @@ -30,7 +30,7 @@ Ray Cluster Sample Spec (YAML) Save this file in a location accessible to your Airflow installation, and reference it in your DAG code. -.. literalinclude:: ../../example_dags/dags/scripts/ray.yaml +.. literalinclude:: ../../dev/dags/scripts/ray.yaml :language: yaml @@ -41,7 +41,7 @@ The below example showcases how to use the ``@ray.task`` decorator to manage the This approach is ideal for jobs that require a dedicated, short-lived cluster, optimizing resource usage by cleaning up after task completion. -.. literalinclude:: ../../example_dags/dags/ray_taskflow_example.py +.. literalinclude:: ../../dev/dags/ray_taskflow_example.py :language: python :linenos: @@ -53,7 +53,7 @@ This example demonstrates how to use the ``SubmitRayJob`` operator to manage the This operator provides a more declarative way to define your Ray job within an Airflow DAG. -.. literalinclude:: ../../example_dags/dags/ray_single_operator.py +.. literalinclude:: ../../dev/dags/ray_single_operator.py :language: python :linenos: @@ -76,6 +76,6 @@ This method is ideal for scenarios where you need fine-grained control over the .. important:: **The SubmitRayJob operator uses the xcom_task_key parameter "SetupRayCluster.dashboard" to retrieve the Ray dashboard URL. This URL, stored as an XCom variable by the SetupRayCluster task, is necessary for job submission.** -.. literalinclude:: ../../example_dags/dags/setup-teardown.py +.. literalinclude:: ../../dev/dags/setup-teardown.py :language: python :linenos: diff --git a/docs/getting_started/local_development_setup.rst b/docs/getting_started/local_development_setup.rst index 3953065..2352db1 100644 --- a/docs/getting_started/local_development_setup.rst +++ b/docs/getting_started/local_development_setup.rst @@ -117,5 +117,6 @@ The most basic setup will look something like below: - Ray dashboard url: Kind Ray cluster dashboard url - Kube config path: Provide the path to your Kubernetes config file and ensure it is accessible from the Airflow containers. +- Disable SSL: Tick the disable SSL boolean if needed .. image:: ../_static/basic_local_kubernetes_conn.png