Skip to content

Commit 8fb6b4d

Browse files
committed
Add CLI command to cancel gridpool orders
Signed-off-by: cwasicki <[email protected]>
1 parent cead2a4 commit 8fb6b4d

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

src/frequenz/client/electricity_trading/cli/__main__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
import click
1111

1212
from frequenz.client.electricity_trading.cli.day_ahead import list_day_ahead_prices
13+
from frequenz.client.electricity_trading.cli.etrading import (
14+
cancel_order as run_cancel_order,
15+
)
1316
from frequenz.client.electricity_trading.cli.etrading import (
1417
create_order as run_create_order,
1518
)
@@ -90,6 +93,16 @@ def create_order(
9093
)
9194

9295

96+
@cli.command()
97+
@click.option("--url", required=True, type=str)
98+
@click.option("--key", required=True, type=str)
99+
@click.option("--gid", required=True, type=int)
100+
@click.option("--order", default=None, type=int)
101+
def cancel_order(url: str, key: str, *, gid: int, order: int) -> None:
102+
"""Cancel an order."""
103+
asyncio.run(run_cancel_order(url=url, key=key, gridpool_id=gid, order_id=order))
104+
105+
93106
@cli.command()
94107
@click.option("--entsoe-key", required=True, type=str)
95108
@click.option("--start", default=midnight(), type=iso)

src/frequenz/client/electricity_trading/cli/etrading.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,26 @@ async def create_order(
167167
)
168168

169169

170+
async def cancel_order(
171+
url: str, key: str, *, gridpool_id: int, order_id: int | None
172+
) -> None:
173+
"""Cancel an order by order ID.
174+
175+
If order_id is None, cancel all orders in the gridpool.
176+
177+
Args:
178+
url: URL of the trading API.
179+
key: API key.
180+
gridpool_id: Gridpool ID.
181+
order_id: Order ID to cancel or None to cancel all orders.
182+
"""
183+
client = Client(server_url=url, auth_key=key)
184+
if order_id is None:
185+
await client.cancel_all_gridpool_orders(gridpool_id)
186+
else:
187+
await client.cancel_gridpool_order(gridpool_id, order_id)
188+
189+
170190
def print_trade_header() -> None:
171191
"""Print trade header in CSV format."""
172192
header = (

0 commit comments

Comments
 (0)