Skip to content

Commit 0fe47ee

Browse files
authored
Enable tasks (#57)
1 parent 43ec270 commit 0fe47ee

File tree

3 files changed

+52
-22
lines changed

3 files changed

+52
-22
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ jobs:
3030

3131
steps:
3232
- name: checkout code
33-
uses: actions/checkout@v3
33+
uses: actions/checkout@v4
3434
with:
3535
fetch-depth: 0
3636
- name: Set up Python ${{ matrix.python-version }}
37-
uses: actions/setup-python@v3
37+
uses: actions/setup-python@v5
3838
with:
3939
python-version: ${{ matrix.python-version }}
4040
- name: Start Redis

.github/workflows/update.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ jobs:
1010

1111
steps:
1212
- name: checkout repo
13-
uses: actions/checkout@v2
13+
uses: actions/checkout@v4
1414
- name: Set up Python
15-
uses: actions/setup-python@v2
15+
uses: actions/setup-python@v5
1616
with:
1717
python-version: "3.11"
1818
- name: install poetry

fluid/scheduler/cli.py

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import asyncio
34
from typing import TYPE_CHECKING, Any, Callable
45

56
import click
@@ -91,23 +92,7 @@ def execute_task(log: bool, **kwargs: Any) -> None:
9192
def ls(ctx: click.Context) -> None:
9293
"""List all tasks with their schedules"""
9394
task_manager = ctx_task_manager(ctx)
94-
table = Table(title="Tasks")
95-
table.add_column("Name", style="cyan", no_wrap=True)
96-
table.add_column("Schedule", style="magenta")
97-
table.add_column("CPU bound", style="magenta")
98-
table.add_column("Timeout secs", style="green")
99-
table.add_column("Priority", style="magenta")
100-
table.add_column("Description", style="green")
101-
for name in sorted(task_manager.registry):
102-
task = task_manager.registry[name]
103-
table.add_row(
104-
name,
105-
str(task.schedule),
106-
"yes" if task.cpu_bound else "no",
107-
str(task.timeout_seconds),
108-
str(task.priority),
109-
task.short_description,
110-
)
95+
table = asyncio.run(tasks_table(task_manager))
11196
console = Console()
11297
console.print(table)
11398

@@ -148,9 +133,25 @@ def serve(ctx: click.Context, host: str, port: int, reload: bool) -> None:
148133
)
149134

150135

136+
@click.command()
137+
@click.argument("task")
138+
@click.option(
139+
"--disable",
140+
is_flag=True,
141+
default=False,
142+
help="Disable the task",
143+
show_default=True,
144+
)
145+
@click.pass_context
146+
def enable(ctx: click.Context, task: str, disable: bool) -> None:
147+
"""Enable or disable a task"""
148+
task_manager = ctx_task_manager(ctx)
149+
asyncio.run(enable_task(task_manager, task, not disable))
150+
151+
151152
execute = ExecuteTasks(name="exec", help="Execute a registered task")
152153

153-
DEFAULT_COMMANDS = (ls, execute, serve)
154+
DEFAULT_COMMANDS = (ls, execute, serve, enable)
154155

155156

156157
def task_run_table(task_run: TaskRun) -> Table:
@@ -168,3 +169,32 @@ def task_run_table(task_run: TaskRun) -> Table:
168169
table.add_row("completed", task_run.end.isoformat())
169170
table.add_row("duration ms", str(task_run.duration_ms))
170171
return table
172+
173+
174+
async def enable_task(task_manager: TaskManager, task: str, enable: bool) -> None:
175+
await task_manager.broker.enable_task(task, enable=enable)
176+
177+
178+
async def tasks_table(task_manager: TaskManager) -> Table:
179+
task_info = await task_manager.broker.get_tasks_info()
180+
dynamic = {t.name: t for t in task_info}
181+
table = Table(title="Tasks")
182+
table.add_column("Name", style="cyan", no_wrap=True)
183+
table.add_column("Enabled")
184+
table.add_column("Schedule", style="magenta")
185+
table.add_column("CPU bound", style="magenta")
186+
table.add_column("Timeout secs", style="green")
187+
table.add_column("Priority", style="magenta")
188+
table.add_column("Description", style="green")
189+
for name in sorted(task_manager.registry):
190+
task = task_manager.registry[name]
191+
table.add_row(
192+
name,
193+
":white_check_mark:" if dynamic[name].enabled else "[red]:x:",
194+
str(task.schedule),
195+
":white_check_mark:" if task.cpu_bound else "[red]:x:",
196+
str(task.timeout_seconds),
197+
str(task.priority),
198+
task.short_description,
199+
)
200+
return table

0 commit comments

Comments
 (0)