Skip to content

Commit e3d4248

Browse files
committed
feat: Enhance CLI and DataHub metadata fetching with GMS server configuration
- Add GMS server URL configuration option to CLI - Implement GMS server URL validation in DatahubMetadataFetcher - Create dynamic GMS server setup in tools module - Update package version to 0.1.4
1 parent 15f898b commit e3d4248

File tree

4 files changed

+52
-10
lines changed

4 files changed

+52
-10
lines changed

cli/__init__.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
11
import click
22
import subprocess
3+
from llm_utils.tools import set_gms_server
34

45

56
@click.group()
6-
@click.version_option(version="2.4.2")
7+
@click.version_option(version="0.1.4")
78
@click.pass_context
8-
def cli(ctx):
9-
pass
10-
11-
12-
@click.command()
9+
@click.option(
10+
"--gms-server", default="http://localhost:8080", help="Datahub GMS 서버 URL"
11+
)
1312
@click.option("--run-streamlit", is_flag=True, help="Run the Streamlit app.")
1413
@click.option("-p", "--port", type=int, default=8501, help="Streamlit port")
15-
def run_streamlit(run_streamlit, port):
14+
def cli(ctx, gms_server, run_streamlit, port):
15+
try:
16+
set_gms_server(gms_server)
17+
except ValueError as e:
18+
click.echo(str(e))
19+
ctx.exit(1)
20+
if run_streamlit:
21+
run_streamlit_command(port)
22+
23+
24+
def run_streamlit_command(port):
1625
"""Run the Streamlit app."""
1726
subprocess.run(
1827
["streamlit", "run", "interface/streamlit_app.py", "--server.port", str(port)]
1928
)
2029

2130

22-
cli.add_command(run_streamlit)
31+
@cli.command()
32+
@click.option("-p", "--port", type=int, default=8501, help="Streamlit port")
33+
def run_streamlit(port):
34+
"""Run the Streamlit app."""
35+
run_streamlit_command(port)

data_utils/datahub_source.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,34 @@
22
from datahub.emitter.mcp import MetadataChangeProposalWrapper
33
from datahub.metadata.schema_classes import DatasetPropertiesClass, SchemaMetadataClass
44
from datahub.emitter.rest_emitter import DatahubRestEmitter
5+
import requests
56

67

78
class DatahubMetadataFetcher:
89
def __init__(self, gms_server="http://localhost:8080", extra_headers={}):
10+
# gms_server 주소 유효성 검사
11+
if not self._is_valid_gms_server(gms_server):
12+
raise ValueError(f"유효하지 않은 GMS 서버 주소: {gms_server}")
13+
914
self.emitter = DatahubRestEmitter(
1015
gms_server=gms_server, extra_headers=extra_headers
1116
)
1217
self.datahub_graph = self.emitter.to_graph()
1318

19+
def _is_valid_gms_server(self, gms_server):
20+
# GMS 서버 주소의 유효성을 검사하는 로직 추가
21+
# GraphQL 요청을 사용하여 서버 상태 확인
22+
query = {"query": "{ health { status } }"}
23+
headers = {"Content-Type": "application/json"}
24+
25+
try:
26+
response = requests.post(
27+
f"{gms_server}/api/graphql", json=query, headers=headers
28+
)
29+
return response.status_code == 200
30+
except requests.exceptions.RequestException:
31+
return False
32+
1433
def get_urns(self):
1534
# 필터를 적용하여 데이터셋의 URN 가져오기
1635
return self.datahub_graph.get_urns_by_filter()

llm_utils/tools.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,17 @@
44

55
from data_utils.datahub_source import DatahubMetadataFetcher
66

7-
fetcher = DatahubMetadataFetcher()
7+
fetcher = None
8+
9+
10+
def set_gms_server(gms_server: str):
11+
global fetcher
12+
13+
try:
14+
fetcher = DatahubMetadataFetcher(gms_server=gms_server)
15+
except ValueError as e:
16+
# 유효하지 않은 GMS 서버 주소일 경우 예외를 발생시킴
17+
raise ValueError(f"GMS 서버 설정 실패: {str(e)}")
818

919

1020
@tool

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name="lang2sql", # 패키지 이름
9-
version="0.1.2", # 버전
9+
version="0.1.4", # 버전
1010
description="Lang2SQL - Query Generator for Data Warehouse",
1111
long_description=long_description,
1212
long_description_content_type="text/markdown",

0 commit comments

Comments
 (0)