Skip to content

Commit 371acd6

Browse files
committed
Add CLI commands to cancel gridpool orders
Commands are added to cancel an individual order by its ID or all orders for a particular gridpool. Signed-off-by: cwasicki <[email protected]>
1 parent 2c0e6a2 commit 371acd6

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

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

Lines changed: 22 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
)
@@ -102,6 +105,25 @@ def create_order(
102105
)
103106

104107

108+
@cli.command()
109+
@click.option("--url", required=True, type=str)
110+
@click.option("--key", required=True, type=str)
111+
@click.option("--gid", required=True, type=int)
112+
@click.option("--order", required=True, type=int)
113+
def cancel_order(url: str, key: str, gid: int, order: int) -> None:
114+
"""Cancel an order."""
115+
asyncio.run(run_cancel_order(url=url, key=key, gridpool_id=gid, order_id=order))
116+
117+
118+
@cli.command()
119+
@click.option("--url", required=True, type=str)
120+
@click.option("--key", required=True, type=str)
121+
@click.option("--gid", required=True, type=int)
122+
def cancel_all_orders(url: str, key: str, gid: int) -> None:
123+
"""Cancel all orders for a gridpool ID."""
124+
asyncio.run(run_cancel_order(url=url, key=key, gridpool_id=gid, order_id=None))
125+
126+
105127
@cli.command()
106128
@click.option("--entsoe-key", required=True, type=str)
107129
@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
@@ -172,6 +172,26 @@ async def create_order(
172172
print_order(order)
173173

174174

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

0 commit comments

Comments
 (0)