Skip to content

Commit 500b68e

Browse files
author
Mayur Khandave
committed
Fix Lint issues
1 parent e424d57 commit 500b68e

File tree

5 files changed

+72
-34
lines changed

5 files changed

+72
-34
lines changed

src/oci-limits-mcp-server/oracle/oci_limits_mcp_server/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
"""
66

77
__project__ = "oracle.oci-limits-mcp-server"
8-
__version__ = "1.0.0"
8+
__version__ = "1.0.0"

src/oci-limits-mcp-server/oracle/oci_limits_mcp_server/server.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212
from fastmcp import FastMCP
1313

1414
from . import __project__, __version__
15-
from .utils import list_services_with_pagination, list_limit_definitions_with_pagination, list_limit_values_with_pagination
15+
from .utils import (
16+
list_limit_definitions_with_pagination,
17+
list_limit_values_with_pagination,
18+
list_services_with_pagination,
19+
)
1620

1721
logger = Logger(__name__, level="INFO")
1822

@@ -164,7 +168,7 @@ def list_services(
164168
page=page,
165169
subscription_id=subscription_id,
166170
)
167-
service_summary = [map_service_summary(svc) for svc in services]
171+
service_summary = [map_service_summary(svc) for svc in services]
168172
return service_summary
169173
except Exception as e:
170174
logger.error(f"Error in list_services: {e}")
@@ -211,9 +215,7 @@ def get_limit_value(
211215
compartment_id: Annotated[str, "OCID of the root compartment (tenancy)"],
212216
service_name: Annotated[str, "Target service name"],
213217
name: Annotated[str, "Specific resource limit name filter"],
214-
scope_type: Annotated[
215-
str, "Filter by scope type: GLOBAL, REGION, or AD"
216-
],
218+
scope_type: Annotated[str, "Filter by scope type: GLOBAL, REGION, or AD"],
217219
availability_domain: Annotated[
218220
Optional[str], "If scope_type is AD, filter by availability domain"
219221
] = None,
@@ -272,30 +274,34 @@ def get_resource_availability(
272274
name=limit_name,
273275
)
274276
if len(limits) == 0:
275-
return {"message": f"Limit '{limit_name}' not found for service '{service_name}'"}
277+
return {
278+
"message": f"Limit '{limit_name}' not found for service '{service_name}'"
279+
}
276280

277281
limit_definition = limits[0]
278282
if not limit_definition.is_resource_availability_supported:
279283
return {
280284
"message": f"Resource availability not supported for limit '{limit_name}'. Consider calling get_limit_value to get the limit value."
281285
}
282286

283-
if limit_definition.scope_type == 'AD':
287+
if limit_definition.scope_type == "AD":
284288
availability_domains = list_availability_domains(compartment_id)
285289
resource_availability = []
286290
for ad in availability_domains:
287291
response: oci.response.Response = client.get_resource_availability(
288292
service_name=service_name,
289293
limit_name=limit_name,
290294
compartment_id=compartment_id,
291-
availability_domain=ad['name'],
295+
availability_domain=ad["name"],
292296
subscription_id=subscription_id,
293297
)
294298
data: oci.limits.models.ResourceAvailability = response.data
295-
resource_availability.append({
296-
"availabilityDomain": ad['name'],
297-
"resourceAvailability": map_resource_availability(data)
298-
})
299+
resource_availability.append(
300+
{
301+
"availabilityDomain": ad["name"],
302+
"resourceAvailability": map_resource_availability(data),
303+
}
304+
)
299305
return resource_availability
300306
else:
301307
response: oci.response.Response = client.get_resource_availability(

src/oci-limits-mcp-server/oracle/oci_limits_mcp_server/tests/test_limit_tool.py

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ async def test_get_limit_value(self, mock_get_client):
120120
"compartment_id": "ocid1.compartment.oc1..xxxx",
121121
"service_name": "service1",
122122
"name": "limit_value1",
123-
"scope_type": "GLOBAL"
123+
"scope_type": "GLOBAL",
124124
},
125125
)
126126
).structured_content["result"]
@@ -131,13 +131,17 @@ async def test_get_limit_value(self, mock_get_client):
131131
@pytest.mark.asyncio
132132
@patch("oracle.oci_limits_mcp_server.server.get_limits_client")
133133
@patch("oracle.oci_limits_mcp_server.server.list_availability_domains")
134-
async def test_get_resource_availability_ad_scope(self, mock_list_ad, mock_get_client):
134+
async def test_get_resource_availability_ad_scope(
135+
self, mock_list_ad, mock_get_client
136+
):
135137
mock_client = MagicMock()
136138
mock_get_client.return_value = mock_client
137139

138-
mock_limit_definition = create_autospec(oci.limits.models.LimitDefinitionSummary)
140+
mock_limit_definition = create_autospec(
141+
oci.limits.models.LimitDefinitionSummary
142+
)
139143
mock_limit_definition.is_resource_availability_supported = True
140-
mock_limit_definition.scope_type = 'AD'
144+
mock_limit_definition.scope_type = "AD"
141145

142146
mock_response = create_autospec(oci.response.Response)
143147
mock_response.data = [mock_limit_definition]
@@ -148,11 +152,18 @@ async def test_get_resource_availability_ad_scope(self, mock_list_ad, mock_get_c
148152
mock_list_ad.return_value = [{"name": "AD1"}, {"name": "AD2"}]
149153

150154
mock_response_ad1 = create_autospec(oci.response.Response)
151-
mock_response_ad1.data = oci.limits.models.ResourceAvailability(used=10, available=100)
155+
mock_response_ad1.data = oci.limits.models.ResourceAvailability(
156+
used=10, available=100
157+
)
152158
mock_response_ad2 = create_autospec(oci.response.Response)
153-
mock_response_ad2.data = oci.limits.models.ResourceAvailability(used=20, available=200)
159+
mock_response_ad2.data = oci.limits.models.ResourceAvailability(
160+
used=20, available=200
161+
)
154162

155-
mock_client.get_resource_availability.side_effect = [mock_response_ad1, mock_response_ad2]
163+
mock_client.get_resource_availability.side_effect = [
164+
mock_response_ad1,
165+
mock_response_ad2,
166+
]
156167

157168
async with Client(mcp) as client:
158169
result = await client.call_tool(
@@ -164,21 +175,29 @@ async def test_get_resource_availability_ad_scope(self, mock_list_ad, mock_get_c
164175
},
165176
)
166177

167-
assert len(result.structured_content['result']) == 2
168-
assert result.structured_content['result'][0]["availabilityDomain"] == "AD1"
169-
assert result.structured_content['result'][0]["resourceAvailability"]["used"] == 10
170-
assert result.structured_content['result'][1]["availabilityDomain"] == "AD2"
171-
assert result.structured_content['result'][1]["resourceAvailability"]["used"] == 20
178+
assert len(result.structured_content["result"]) == 2
179+
assert result.structured_content["result"][0]["availabilityDomain"] == "AD1"
180+
assert (
181+
result.structured_content["result"][0]["resourceAvailability"]["used"]
182+
== 10
183+
)
184+
assert result.structured_content["result"][1]["availabilityDomain"] == "AD2"
185+
assert (
186+
result.structured_content["result"][1]["resourceAvailability"]["used"]
187+
== 20
188+
)
172189

173190
@pytest.mark.asyncio
174191
@patch("oracle.oci_limits_mcp_server.server.get_limits_client")
175192
async def test_get_resource_availability_non_ad_scope(self, mock_get_client):
176193
mock_client = MagicMock()
177194
mock_get_client.return_value = mock_client
178195

179-
mock_limit_definition = create_autospec(oci.limits.models.LimitDefinitionSummary)
196+
mock_limit_definition = create_autospec(
197+
oci.limits.models.LimitDefinitionSummary
198+
)
180199
mock_limit_definition.is_resource_availability_supported = True
181-
mock_limit_definition.scope_type = 'REGION'
200+
mock_limit_definition.scope_type = "REGION"
182201

183202
mock_response = create_autospec(oci.response.Response)
184203
mock_response.data = [mock_limit_definition]
@@ -187,7 +206,9 @@ async def test_get_resource_availability_non_ad_scope(self, mock_get_client):
187206
mock_client.list_limit_definitions.return_value = mock_response
188207

189208
mock_response = create_autospec(oci.response.Response)
190-
mock_response.data = oci.limits.models.ResourceAvailability(used=10, available=100)
209+
mock_response.data = oci.limits.models.ResourceAvailability(
210+
used=10, available=100
211+
)
191212
mock_client.get_resource_availability.return_value = mock_response
192213

193214
async with Client(mcp) as client:
@@ -200,6 +221,6 @@ async def test_get_resource_availability_non_ad_scope(self, mock_get_client):
200221
},
201222
)
202223

203-
assert len(result.structured_content['result']) == 1
204-
assert result.structured_content['result'][0]["used"] == 10
205-
assert result.structured_content['result'][0]["available"] == 100
224+
assert len(result.structured_content["result"]) == 1
225+
assert result.structured_content["result"][0]["used"] == 10
226+
assert result.structured_content["result"][0]["available"] == 100

src/oci-limits-mcp-server/oracle/oci_limits_mcp_server/utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
from typing import Optional, List, Dict, Any
2-
import oci
31
from logging import Logger
2+
from typing import Any, Dict, List, Optional
3+
4+
import oci
45

56
logger = Logger(__name__, level="INFO")
67

8+
79
def list_services_with_pagination(
810
client: oci.limits.LimitsClient,
911
compartment_id: str,
@@ -40,6 +42,7 @@ def list_services_with_pagination(
4042
logger.error(f"Error in list_services: {e}")
4143
raise
4244

45+
4346
def list_limit_definitions_with_pagination(
4447
client: oci.limits.LimitsClient,
4548
compartment_id: str,
@@ -80,6 +83,7 @@ def list_limit_definitions_with_pagination(
8083
logger.error(f"Error in list_limit_definitions: {e}")
8184
raise
8285

86+
8387
def list_limit_values_with_pagination(
8488
client: oci.limits.LimitsClient,
8589
compartment_id: str,

src/oci-limits-mcp-server/pyproject.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "oracle.oci-limits-mcp-server"
3-
version = "0.1.0"
3+
version = "1.0.0"
44
description = "OCI Limits MCP server"
55
readme = "README.md"
66
requires-python = ">=3.13"
@@ -9,6 +9,13 @@ dependencies = [
99
"oci==2.160.0"
1010
]
1111

12+
classifiers = [
13+
"License :: OSI Approved :: Universal Permissive License (UPL)",
14+
"Operating System :: OS Independent",
15+
"Programming Language :: Python",
16+
"Programming Language :: Python :: 3.13",
17+
]
18+
1219
[project.scripts]
1320
"oracle.oci-limits-mcp-server" = "oracle.oci_limits_mcp_server.server:main"
1421

0 commit comments

Comments
 (0)