mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-15 19:03:43 +00:00
fix(cli): skip version warning message for servers (#14470)
This commit is contained in:
parent
c0b32ced34
commit
952807eb13
@ -45,6 +45,7 @@ class ServerVersionStats(BaseModel):
|
||||
latest: Optional[VersionStats] = None
|
||||
current_server_type: Optional[str] = None
|
||||
current_server_default_cli_version: Optional[VersionStats] = None
|
||||
is_cloud_server: Optional[bool] = None
|
||||
|
||||
|
||||
class ClientVersionStats(BaseModel):
|
||||
@ -145,7 +146,9 @@ async def get_server_config(gms_url: str, token: Optional[str]) -> RestServiceCo
|
||||
|
||||
async def get_server_version_stats(
|
||||
server: Optional[DataHubGraph] = None,
|
||||
) -> Tuple[Optional[str], Optional[Version], Optional[str], Optional[datetime]]:
|
||||
) -> Tuple[
|
||||
Optional[str], Optional[Version], Optional[str], Optional[datetime], Optional[bool]
|
||||
]:
|
||||
import aiohttp
|
||||
|
||||
server_config: Optional[RestServiceConfig] = None
|
||||
@ -167,11 +170,13 @@ async def get_server_version_stats(
|
||||
server_version: Optional[Version] = None
|
||||
current_server_default_cli_version = None
|
||||
current_server_release_date = None
|
||||
is_cloud_server: Optional[bool] = None
|
||||
if server_config:
|
||||
server_version_string = server_config.service_version
|
||||
commit_hash = server_config.commit_hash
|
||||
server_type = server_config.server_type
|
||||
current_server_default_cli_version = server_config.default_cli_version
|
||||
is_cloud_server = server_config.is_datahub_cloud
|
||||
if server_type == "quickstart" and commit_hash:
|
||||
async with aiohttp.ClientSession(
|
||||
headers={"Accept": "application/vnd.github.v3+json"}
|
||||
@ -191,6 +196,7 @@ async def get_server_version_stats(
|
||||
server_version,
|
||||
current_server_default_cli_version,
|
||||
current_server_release_date,
|
||||
is_cloud_server,
|
||||
)
|
||||
|
||||
|
||||
@ -236,6 +242,7 @@ async def _retrieve_version_stats(
|
||||
current_server_version,
|
||||
current_server_default_cli_version,
|
||||
current_server_release_date,
|
||||
is_cloud_server,
|
||||
) = results[2]
|
||||
|
||||
server_version_stats = None
|
||||
@ -255,6 +262,7 @@ async def _retrieve_version_stats(
|
||||
else None
|
||||
),
|
||||
current_server_type=current_server_type,
|
||||
is_cloud_server=is_cloud_server,
|
||||
)
|
||||
|
||||
if client_version_stats and server_version_stats:
|
||||
@ -353,7 +361,11 @@ def _maybe_print_upgrade_message(
|
||||
else None
|
||||
)
|
||||
client_server_compat = 0
|
||||
if version_stats.server.current_server_type != "cloud":
|
||||
# Skip version compatibility checks for cloud servers (serverEnv="cloud")
|
||||
# Cloud servers use different versioning schemes between server and CLI
|
||||
is_cloud = version_stats.server.is_cloud_server
|
||||
|
||||
if not is_cloud:
|
||||
client_server_compat = is_client_server_compatible(
|
||||
version_stats.client.current, version_stats.server.current
|
||||
)
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from unittest.mock import patch
|
||||
|
||||
from packaging.version import Version
|
||||
|
||||
@ -7,6 +8,7 @@ from datahub.upgrade.upgrade import (
|
||||
DataHubVersionStats,
|
||||
ServerVersionStats,
|
||||
VersionStats,
|
||||
_maybe_print_upgrade_message,
|
||||
_safe_version_stats,
|
||||
get_days,
|
||||
is_client_server_compatible,
|
||||
@ -97,3 +99,43 @@ def test_is_server_default_cli_ahead():
|
||||
# Invalid versions (prerelease)
|
||||
assert not is_server_default_cli_ahead(make_version_stats("0.9.5rc1", "0.9.7"))
|
||||
assert not is_server_default_cli_ahead(make_version_stats("0.9.5", "0.9.7rc1"))
|
||||
|
||||
|
||||
@patch("datahub.upgrade.upgrade.click.echo")
|
||||
def test_cloud_server_skips_version_warnings(mock_echo):
|
||||
"""Test that cloud servers (serverEnv=cloud) skip version mismatch warnings."""
|
||||
version_stats = DataHubVersionStats(
|
||||
server=ServerVersionStats(
|
||||
current=VersionStats(version=Version("0.3.13")),
|
||||
current_server_type="prod", # serverType from config
|
||||
is_cloud_server=True, # serverEnv="cloud" -> is_datahub_cloud=True
|
||||
),
|
||||
client=ClientVersionStats(current=VersionStats(version=Version("1.2.0.4"))),
|
||||
)
|
||||
|
||||
# Should not show any version warnings for cloud servers
|
||||
_maybe_print_upgrade_message(version_stats)
|
||||
mock_echo.assert_not_called()
|
||||
|
||||
|
||||
@patch("datahub.upgrade.upgrade.click.echo")
|
||||
def test_non_cloud_server_shows_version_warnings(mock_echo):
|
||||
"""Test that non-cloud servers show version mismatch warnings."""
|
||||
version_stats = DataHubVersionStats(
|
||||
server=ServerVersionStats(
|
||||
current=VersionStats(version=Version("0.9.5")),
|
||||
current_server_type="oss",
|
||||
is_cloud_server=False,
|
||||
),
|
||||
client=ClientVersionStats(current=VersionStats(version=Version("0.9.7"))),
|
||||
)
|
||||
|
||||
# Should show version warning for non-cloud servers with version mismatch
|
||||
_maybe_print_upgrade_message(version_stats)
|
||||
mock_echo.assert_called_once()
|
||||
|
||||
# Verify the warning message contains the expected text
|
||||
call_args = mock_echo.call_args[0][0]
|
||||
assert "❗Client-Server Incompatible❗" in call_args
|
||||
assert "0.9.7" in call_args # Client version
|
||||
assert "0.9.5" in call_args # Server version
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user