diff --git a/src/openstack_mcp_server/tools/image_tools.py b/src/openstack_mcp_server/tools/image_tools.py index 1ca0400..0a4c5fa 100644 --- a/src/openstack_mcp_server/tools/image_tools.py +++ b/src/openstack_mcp_server/tools/image_tools.py @@ -19,6 +19,7 @@ def register_tools(self, mcp: FastMCP): mcp.tool()(self.get_image) mcp.tool()(self.get_images) mcp.tool()(self.create_image) + mcp.tool()(self.delete_image) def get_image(self, id: str) -> Image: """ @@ -121,3 +122,13 @@ def create_image(self, image_data: CreateImage) -> Image: image = conn.get_image(created_image.id) return Image(**image) + + def delete_image(self, image_id: str) -> None: + """ + Delete an OpenStack image. + + :param image_id: The ID of the image to delete. + :return: None + """ + conn = get_openstack_conn() + conn.image.delete_image(image_id) diff --git a/tests/tools/test_image_tools.py b/tests/tools/test_image_tools.py index f8c7b3b..a43f689 100644 --- a/tests/tools/test_image_tools.py +++ b/tests/tools/test_image_tools.py @@ -297,3 +297,16 @@ def test_create_image_success_with_import_options( assert mock_get_openstack_conn_image.get_image.called_once_with( mock_image["id"], ) + + def test_delete_image_success(self, mock_get_openstack_conn_image): + """Test deleting an image successfully.""" + mock_conn = mock_get_openstack_conn_image + image_id = "img-delete-123-456" + + mock_conn.image.delete_image.return_value = None + + image_tools = ImageTools() + result = image_tools.delete_image(image_id) + + assert result is None + mock_conn.image.delete_image.assert_called_once_with(image_id)