mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-16 11:23:32 +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
|
latest: Optional[VersionStats] = None
|
||||||
current_server_type: Optional[str] = None
|
current_server_type: Optional[str] = None
|
||||||
current_server_default_cli_version: Optional[VersionStats] = None
|
current_server_default_cli_version: Optional[VersionStats] = None
|
||||||
|
is_cloud_server: Optional[bool] = None
|
||||||
|
|
||||||
|
|
||||||
class ClientVersionStats(BaseModel):
|
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(
|
async def get_server_version_stats(
|
||||||
server: Optional[DataHubGraph] = None,
|
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
|
import aiohttp
|
||||||
|
|
||||||
server_config: Optional[RestServiceConfig] = None
|
server_config: Optional[RestServiceConfig] = None
|
||||||
@ -167,11 +170,13 @@ async def get_server_version_stats(
|
|||||||
server_version: Optional[Version] = None
|
server_version: Optional[Version] = None
|
||||||
current_server_default_cli_version = None
|
current_server_default_cli_version = None
|
||||||
current_server_release_date = None
|
current_server_release_date = None
|
||||||
|
is_cloud_server: Optional[bool] = None
|
||||||
if server_config:
|
if server_config:
|
||||||
server_version_string = server_config.service_version
|
server_version_string = server_config.service_version
|
||||||
commit_hash = server_config.commit_hash
|
commit_hash = server_config.commit_hash
|
||||||
server_type = server_config.server_type
|
server_type = server_config.server_type
|
||||||
current_server_default_cli_version = server_config.default_cli_version
|
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:
|
if server_type == "quickstart" and commit_hash:
|
||||||
async with aiohttp.ClientSession(
|
async with aiohttp.ClientSession(
|
||||||
headers={"Accept": "application/vnd.github.v3+json"}
|
headers={"Accept": "application/vnd.github.v3+json"}
|
||||||
@ -191,6 +196,7 @@ async def get_server_version_stats(
|
|||||||
server_version,
|
server_version,
|
||||||
current_server_default_cli_version,
|
current_server_default_cli_version,
|
||||||
current_server_release_date,
|
current_server_release_date,
|
||||||
|
is_cloud_server,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -236,6 +242,7 @@ async def _retrieve_version_stats(
|
|||||||
current_server_version,
|
current_server_version,
|
||||||
current_server_default_cli_version,
|
current_server_default_cli_version,
|
||||||
current_server_release_date,
|
current_server_release_date,
|
||||||
|
is_cloud_server,
|
||||||
) = results[2]
|
) = results[2]
|
||||||
|
|
||||||
server_version_stats = None
|
server_version_stats = None
|
||||||
@ -255,6 +262,7 @@ async def _retrieve_version_stats(
|
|||||||
else None
|
else None
|
||||||
),
|
),
|
||||||
current_server_type=current_server_type,
|
current_server_type=current_server_type,
|
||||||
|
is_cloud_server=is_cloud_server,
|
||||||
)
|
)
|
||||||
|
|
||||||
if client_version_stats and server_version_stats:
|
if client_version_stats and server_version_stats:
|
||||||
@ -353,7 +361,11 @@ def _maybe_print_upgrade_message(
|
|||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
client_server_compat = 0
|
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(
|
client_server_compat = is_client_server_compatible(
|
||||||
version_stats.client.current, version_stats.server.current
|
version_stats.client.current, version_stats.server.current
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
from packaging.version import Version
|
from packaging.version import Version
|
||||||
|
|
||||||
@ -7,6 +8,7 @@ from datahub.upgrade.upgrade import (
|
|||||||
DataHubVersionStats,
|
DataHubVersionStats,
|
||||||
ServerVersionStats,
|
ServerVersionStats,
|
||||||
VersionStats,
|
VersionStats,
|
||||||
|
_maybe_print_upgrade_message,
|
||||||
_safe_version_stats,
|
_safe_version_stats,
|
||||||
get_days,
|
get_days,
|
||||||
is_client_server_compatible,
|
is_client_server_compatible,
|
||||||
@ -97,3 +99,43 @@ def test_is_server_default_cli_ahead():
|
|||||||
# Invalid versions (prerelease)
|
# 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.5rc1", "0.9.7"))
|
||||||
assert not is_server_default_cli_ahead(make_version_stats("0.9.5", "0.9.7rc1"))
|
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