Skip to content

Commit 07d8c77

Browse files
authored
Merge pull request aliyun#25 from junliang-xjl/feature/edit_monitor_metrics
Modify the code describe_monitor_metrics
2 parents 4df09f1 + 3126073 commit 07d8c77

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/alibabacloud_rds_openapi_mcp_server/server.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
transform_perf_key,
4040
transform_das_key,
4141
json_array_to_csv,
42+
json_array_to_markdown,
4243
get_rds_client,
4344
get_vpc_client,
4445
get_bill_client, get_das_client, convert_datetime_to_timestamp, current_request_headers)
@@ -1449,18 +1450,26 @@ async def describe_monitor_metrics(
14491450
response = client.call_api(params, req, util_models.RuntimeOptions())
14501451
response_data = response['body']['Data']
14511452
timestamp_map = {}
1453+
resp_metrics_list = set()
14521454
for metric in response_data:
14531455
name = metric["Name"]
14541456
values = metric["Value"]
14551457
timestamps = metric["Timestamp"]
1458+
resp_metrics_list.add(name)
14561459
for timestamp, value in zip(timestamps, values):
14571460
dt = transform_timestamp_to_datetime(timestamp)
14581461
if dt not in timestamp_map:
14591462
timestamp_map[dt] = {}
14601463
timestamp_map[dt][name] = value
14611464

1462-
timestamp_list = [{"datetime": dt, **values} for dt, values in timestamp_map.items()]
1463-
return json_array_to_csv(timestamp_list)
1465+
headers = sorted(list(resp_metrics_list))
1466+
datas = []
1467+
for dt in sorted(timestamp_map.keys()):
1468+
value_map = timestamp_map[dt]
1469+
value_map["datetime"] = dt
1470+
datas.append(value_map)
1471+
headers.insert(0, "datetime")
1472+
return json_array_to_markdown(headers, datas)
14641473
except Exception as e:
14651474
logger.error(f"Error occurred: {str(e)}")
14661475
raise e

src/alibabacloud_rds_openapi_mcp_server/utils.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ def transform_das_key(db_type: str, das_keys: list[str]):
120120
for key in das_keys:
121121
if key in DAS_KEYS[db_type.lower()]:
122122
das_key_after_transform.extend(DAS_KEYS[db_type.lower()][key])
123+
else:
124+
das_key_after_transform.append(key)
123125
return das_key_after_transform
124126

125127

@@ -150,6 +152,21 @@ def json_array_to_csv(data):
150152
return output.getvalue()
151153

152154

155+
def json_array_to_markdown(headers, datas):
156+
if not headers or not isinstance(headers, list):
157+
return ""
158+
if not datas or not isinstance(datas, list):
159+
return ""
160+
161+
markdown_table = "| " + " | ".join(headers) + " |\n"
162+
markdown_table += "| " + " | ".join(["---"] * len(headers)) + " |\n"
163+
for row in datas:
164+
if isinstance(row, dict):
165+
markdown_table += "| " + " | ".join(str(row.get(header, '-')) for header in headers) + " |\n"
166+
else:
167+
markdown_table += "| " + " | ".join(map(str, row)) + " |\n"
168+
return markdown_table
169+
153170
def convert_datetime_to_timestamp(date_str):
154171
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
155172
timestamp_seconds = time.mktime(dt.timetuple())

0 commit comments

Comments
 (0)