From c09bdbfdff1af61180f3b639e5c6c895f21a2824 Mon Sep 17 00:00:00 2001 From: jja6312 Date: Mon, 1 Sep 2025 00:03:29 +0900 Subject: [PATCH] feat: add get image tool --- src/openstack_mcp_server/tools/image_tools.py | 9 +++++++++ tests/tools/test_image_tools.py | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/openstack_mcp_server/tools/image_tools.py b/src/openstack_mcp_server/tools/image_tools.py index d3544b3..1ca0400 100644 --- a/src/openstack_mcp_server/tools/image_tools.py +++ b/src/openstack_mcp_server/tools/image_tools.py @@ -16,9 +16,18 @@ def register_tools(self, mcp: FastMCP): Register Image-related tools with the FastMCP instance. """ + mcp.tool()(self.get_image) mcp.tool()(self.get_images) mcp.tool()(self.create_image) + def get_image(self, id: str) -> Image: + """ + Get an OpenStack image by ID. + """ + conn = get_openstack_conn() + image = conn.image.get_image(id) + return Image(**image) + def get_images( self, name: str | None = None, diff --git a/tests/tools/test_image_tools.py b/tests/tools/test_image_tools.py index 0544ef5..f8c7b3b 100644 --- a/tests/tools/test_image_tools.py +++ b/tests/tools/test_image_tools.py @@ -46,6 +46,22 @@ def image_factory(**overrides): return defaults + def test_get_image_success(self, mock_get_openstack_conn_image): + """Test getting a specific image successfully.""" + mock_conn = mock_get_openstack_conn_image + mock_image = self.image_factory( + id="img-123-abc-def", + name="ubuntu-20.04-server", + status="active", + visibility="public", + ) + mock_conn.image.get_image.return_value = mock_image + result = ImageTools().get_image("img-123-abc-def") + + mock_conn.image.get_image.assert_called_once_with("img-123-abc-def") + expected_output = Image(**mock_image) + assert result == expected_output + def test_get_images_success(self, mock_get_openstack_conn_image): """Test getting image images successfully.""" mock_conn = mock_get_openstack_conn_image