Skip to content

Commit 98e3428

Browse files
committed
feat(identity): Add id field in update domain tool(#31)
- Add id field in update_domain tool - Tests are updated and passing
1 parent 7b3a56e commit 98e3428

File tree

2 files changed

+14
-18
lines changed

2 files changed

+14
-18
lines changed

src/openstack_mcp_server/tools/identity_tools.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,12 @@ def delete_domain(self, name: str) -> None:
163163

164164
return None
165165

166-
def update_domain(self, name: str, description: str | None = None, is_enabled: bool | None = None) -> Domain:
166+
def update_domain(self, id: str, name: str | None = None, description: str | None = None, is_enabled: bool | None = None) -> Domain:
167167
"""
168168
Update a domain.
169169
170-
:param name: The name of the domain. (required)
170+
:param id: The ID of the domain. (required)
171+
:param name: The name of the domain. (optional)
171172
:param description: The description of the domain. (optional)
172173
:param is_enabled: Whether the domain is enabled. (optional)
173174
"""
@@ -181,8 +182,7 @@ def update_domain(self, name: str, description: str | None = None, is_enabled: b
181182
if is_enabled is not None:
182183
args["is_enabled"] = is_enabled
183184

184-
domain = conn.identity.find_domain(name_or_id=name)
185-
updated_domain = conn.identity.update_domain(domain=domain, **args)
185+
updated_domain = conn.identity.update_domain(domain=id, **args)
186186

187187
return Domain(id=updated_domain.id, name=updated_domain.name, description=updated_domain.description, is_enabled=updated_domain.is_enabled)
188188

tests/tools/test_identity_tools.py

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -555,20 +555,18 @@ def test_update_domain_with_all_fields_success(self, mock_get_openstack_conn_ide
555555
mock_domain.description = "domainone description"
556556
mock_domain.is_enabled = True
557557

558-
# Configure mock domain.find_domain() and update_domain()
559-
mock_conn.identity.find_domain.return_value = mock_domain
558+
# Configure mock domain.update_domain()
560559
mock_conn.identity.update_domain.return_value = mock_domain
561560

562561
# Test update_domain()
563562
identity_tools = self.get_identity_tools()
564-
result = identity_tools.update_domain(name="domainone", description="domainone description", is_enabled=True)
563+
result = identity_tools.update_domain(id="d01a81393377480cbd75c0210442e687", name="domainone", description="domainone description", is_enabled=True)
565564

566565
# Verify results
567566
assert result == Domain(id="d01a81393377480cbd75c0210442e687", name="domainone", description="domainone description", is_enabled=True)
568567

569568
# Verify mock calls
570-
mock_conn.identity.find_domain.assert_called_once_with(name_or_id="domainone")
571-
mock_conn.identity.update_domain.assert_called_once_with(domain=mock_domain, name="domainone", description="domainone description", is_enabled=True)
569+
mock_conn.identity.update_domain.assert_called_once_with(domain="d01a81393377480cbd75c0210442e687", name="domainone", description="domainone description", is_enabled=True)
572570

573571

574572
def test_update_domain_with_empty_args(self, mock_get_openstack_conn_identity):
@@ -582,26 +580,24 @@ def test_update_domain_with_empty_args(self, mock_get_openstack_conn_identity):
582580
mock_domain.description = "domainone description"
583581
mock_domain.is_enabled = True
584582

585-
# Configure mock domain.find_domain() and update_domain()
586-
mock_conn.identity.find_domain.return_value = mock_domain
583+
# Configure mock domain.update_domain()
587584
mock_conn.identity.update_domain.return_value = mock_domain
588585

589586
# Test update_domain()
590587
identity_tools = self.get_identity_tools()
591-
result = identity_tools.update_domain(name="domainone")
588+
result = identity_tools.update_domain(id="d01a81393377480cbd75c0210442e687")
592589

593590
# Verify results
594591
assert result == Domain(id="d01a81393377480cbd75c0210442e687", name="domainone", description="domainone description", is_enabled=True)
595592

596593
# Verify mock calls
597-
mock_conn.identity.find_domain.assert_called_once_with(name_or_id="domainone")
598-
mock_conn.identity.update_domain.assert_called_once_with(domain=mock_domain, name="domainone")
594+
mock_conn.identity.update_domain.assert_called_once_with(domain="d01a81393377480cbd75c0210442e687")
599595

600-
def test_update_domain_with_empty_name(self, mock_get_openstack_conn_identity):
596+
def test_update_domain_with_empty_id(self, mock_get_openstack_conn_identity):
601597
"""Test updating a identity domain with an empty name."""
602598
mock_conn = mock_get_openstack_conn_identity
603599

604-
mock_conn.identity.find_domain.side_effect = exceptions.BadRequestException(
600+
mock_conn.identity.update_domain.side_effect = exceptions.BadRequestException(
605601
"Field required",
606602
)
607603

@@ -610,9 +606,9 @@ def test_update_domain_with_empty_name(self, mock_get_openstack_conn_identity):
610606

611607
# Verify exception is raised
612608
with pytest.raises(exceptions.BadRequestException, match="Field required"):
613-
identity_tools.update_domain(name="")
609+
identity_tools.update_domain(id="")
614610

615611
# Verify mock calls
616-
mock_conn.identity.find_domain.assert_called_once_with(name_or_id="")
612+
mock_conn.identity.update_domain.assert_called_once_with(domain="")
617613

618614

0 commit comments

Comments
 (0)