Skip to content

Commit 7a7cfa6

Browse files
committed
cli: Added 'server delete' command
1 parent 4d4ae50 commit 7a7cfa6

2 files changed

Lines changed: 55 additions & 11 deletions

File tree

bbblb/cli/server.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ async def enable(obj: ServiceRegistry, domain: str):
8080
)
8181
@async_command()
8282
async def disable(obj: ServiceRegistry, domain: str, nuke: bool, wait: int):
83-
"""Disable a server, so now new meetings are created on it."""
83+
"""Disable a server and wait for meetings to end."""
8484
db = await obj.use(DBContext)
8585

8686
async with db.session() as session:
@@ -134,6 +134,33 @@ async def disable(obj: ServiceRegistry, domain: str, nuke: bool, wait: int):
134134
await asyncio.sleep(interval)
135135

136136

137+
@server.command("delete")
138+
@click.argument("domain")
139+
@async_command()
140+
async def _delete(obj: ServiceRegistry, domain: str):
141+
"""Remove an empty server from the server list."""
142+
db = await obj.use(DBContext)
143+
async with db.session() as session:
144+
server = (
145+
await session.execute(model.Server.select(domain=domain))
146+
).scalar_one_or_none()
147+
if not server:
148+
click.echo(f"Server {domain!r} not found")
149+
return
150+
if server.enabled:
151+
click.echo(f"Server {domain!r} not disabled")
152+
stmt = (
153+
model.Meeting.select(model.Meeting.server == server)
154+
.with_only_columns(func.count())
155+
.order_by(None)
156+
)
157+
if (await session.execute(stmt)).scalar() or 0 > 0:
158+
click.echo(f"Server {domain!r} not empty")
159+
return
160+
await session.delete(server)
161+
click.echo(f"Server {domain!r} removed")
162+
163+
137164
async def _end_meeting(obj: ServiceRegistry, meeting: model.Meeting):
138165
server = await meeting.awaitable_attrs.server
139166
tenant = await meeting.awaitable_attrs.server

docs/_click.rst

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -297,15 +297,16 @@ Manage servers
297297
.. table:: Sub-Commands
298298
:width: 100%
299299

300-
======= ========================================================
301-
Command Help
302-
======= ========================================================
303-
create Create a new server or update a server secret.
304-
enable Enable a server and make it available for new meetings.
305-
disable Disable a server, so now new meetings are created on it.
306-
list List all servers with their secrets.
307-
stats Show server statistics (state, health, load).
308-
======= ========================================================
300+
======= =======================================================
301+
Command Help
302+
======= =======================================================
303+
create Create a new server or update a server secret.
304+
enable Enable a server and make it available for new meetings.
305+
disable Disable a server and wait for meetings to end.
306+
delete Remove an empty server from the server list.
307+
list List all servers with their secrets.
308+
stats Show server statistics (state, health, load).
309+
======= =======================================================
309310

310311
server create
311312
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -346,7 +347,7 @@ server disable
346347

347348
``Usage: bbblb server disable [OPTIONS] DOMAIN``
348349

349-
Disable a server, so now new meetings are created on it.
350+
Disable a server and wait for meetings to end.
350351

351352
.. table:: Options
352353
:width: 100%
@@ -359,6 +360,22 @@ Disable a server, so now new meetings are created on it.
359360
--wait INTEGER Wait for this many seconds for all meetings to end. A value of -1 waits forever [default: 0]
360361
============== =============================================================================================
361362

363+
server delete
364+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
365+
366+
``Usage: bbblb server delete [OPTIONS] DOMAIN``
367+
368+
Remove an empty server from the server list.
369+
370+
.. table:: Options
371+
:width: 100%
372+
373+
====== =================
374+
Option Help
375+
====== =================
376+
DOMAIN Required argument
377+
====== =================
378+
362379
server list
363380
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
364381

0 commit comments

Comments
 (0)