|
5 | 5 | Tool,
|
6 | 6 | )
|
7 | 7 | import ssl
|
8 |
| -from .models import Enqueue, Fanout, ListQueues, ListExchanges |
| 8 | +from .models import Enqueue, Fanout, ListQueues, ListExchanges, GetQueueInfo, DeleteQueue |
9 | 9 | from .logger import Logger, LOG_LEVEL
|
10 | 10 | from .connection import RabbitMQConnection, validate_rabbitmq_name
|
11 |
| -from .handlers import handle_enqueue, handle_fanout, handle_list_queues, handle_list_exchanges |
| 11 | +from .handlers import ( |
| 12 | + handle_enqueue, |
| 13 | + handle_fanout, |
| 14 | + handle_list_queues, |
| 15 | + handle_list_exchanges, |
| 16 | + handle_get_queue_info, |
| 17 | + handle_delete_queue |
| 18 | +) |
12 | 19 | from .admin import RabbitMQAdmin
|
13 | 20 |
|
14 | 21 |
|
@@ -48,6 +55,16 @@ async def list_tools() -> list[Tool]:
|
48 | 55 | name="list_exchanges",
|
49 | 56 | description="""List all the exchanges in the broker""",
|
50 | 57 | inputSchema=ListExchanges.model_json_schema(),
|
| 58 | + ), |
| 59 | + Tool( |
| 60 | + name="get_queue_info", |
| 61 | + description="""Get detailed information about a specific queue""", |
| 62 | + inputSchema=GetQueueInfo.model_json_schema(), |
| 63 | + ), |
| 64 | + Tool( |
| 65 | + name="delete_queue", |
| 66 | + description="""Delete a specific queue""", |
| 67 | + inputSchema=DeleteQueue.model_json_schema(), |
51 | 68 | )
|
52 | 69 | ]
|
53 | 70 |
|
@@ -103,6 +120,28 @@ async def call_tool(
|
103 | 120 | except Exception as e:
|
104 | 121 | logger.error(f"{e}")
|
105 | 122 | return [TextContent(type="text", text=str("failed"))]
|
| 123 | + elif name == "get_queue_info": |
| 124 | + try: |
| 125 | + admin = RabbitMQAdmin(rabbitmq_host, api_port, username, password, use_tls) |
| 126 | + queue = arguments["queue"] |
| 127 | + vhost = arguments.get("vhost", "/") |
| 128 | + validate_rabbitmq_name(queue, "Queue name") |
| 129 | + result = handle_get_queue_info(admin, queue, vhost) |
| 130 | + return [TextContent(type="text", text=str(result))] |
| 131 | + except Exception as e: |
| 132 | + logger.error(f"{e}") |
| 133 | + return [TextContent(type="text", text=str("failed"))] |
| 134 | + elif name == "delete_queue": |
| 135 | + try: |
| 136 | + admin = RabbitMQAdmin(rabbitmq_host, api_port, username, password, use_tls) |
| 137 | + queue = arguments["queue"] |
| 138 | + vhost = arguments.get("vhost", "/") |
| 139 | + validate_rabbitmq_name(queue, "Queue name") |
| 140 | + handle_delete_queue(admin, queue, vhost) |
| 141 | + return [TextContent(type="text", text=str("succeeded"))] |
| 142 | + except Exception as e: |
| 143 | + logger.error(f"{e}") |
| 144 | + return [TextContent(type="text", text=str("failed"))] |
106 | 145 | raise ValueError(f"Tool not found: {name}")
|
107 | 146 |
|
108 | 147 | options = server.create_initialization_options()
|
|
0 commit comments