Skip to content

Commit 8a3b3b5

Browse files
jja6312halucinor
authored andcommitted
feat: add get image tool
1 parent 044c881 commit 8a3b3b5

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/openstack_mcp_server/tools/image_tools.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,18 @@ def register_tools(self, mcp: FastMCP):
1616
Register Image-related tools with the FastMCP instance.
1717
"""
1818

19+
mcp.tool()(self.get_image)
1920
mcp.tool()(self.get_images)
2021
mcp.tool()(self.create_image)
2122

23+
def get_image(self, id: str) -> Image:
24+
"""
25+
Get an OpenStack image by ID.
26+
"""
27+
conn = get_openstack_conn()
28+
image = conn.image.get_image(id)
29+
return Image(**image)
30+
2231
def get_images(
2332
self,
2433
name: str | None = None,

tests/tools/test_image_tools.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,22 @@ def image_factory(**overrides):
4646

4747
return defaults
4848

49+
def test_get_image_success(self, mock_get_openstack_conn_image):
50+
"""Test getting a specific image successfully."""
51+
mock_conn = mock_get_openstack_conn_image
52+
mock_image = self.image_factory(
53+
id="img-123-abc-def",
54+
name="ubuntu-20.04-server",
55+
status="active",
56+
visibility="public",
57+
)
58+
mock_conn.image.get_image.return_value = mock_image
59+
result = ImageTools().get_image("img-123-abc-def")
60+
61+
mock_conn.image.get_image.assert_called_once_with("img-123-abc-def")
62+
expected_output = Image(**mock_image)
63+
assert result == expected_output
64+
4965
def test_get_images_success(self, mock_get_openstack_conn_image):
5066
"""Test getting image images successfully."""
5167
mock_conn = mock_get_openstack_conn_image

0 commit comments

Comments
 (0)