prole/tests/installer/test_ops_cli_storage_browser.py
chrisfu 64e1cef16c checkpoint: stabilize k8s cluster setup and shelve cluster-storage UI
- make cluster-storage milestone opt-in and remove installer cluster-storage step from UI navigation\n- add cluster storage browser and GKE cluster ops helpers with CLI coverage\n- update k8s/CNPG config and install flow files for corrected cluster setup\n- add/refresh tests for storage browser, GKE ops, prod config, and service-layer navigation

Co-authored-by: Junie <junie@jetbrains.com>
2026-04-07 21:11:25 -07:00

98 lines
2.8 KiB
Python

from pathlib import Path
import json
import sys
from types import SimpleNamespace
PROJECT_ROOT = Path(__file__).resolve().parents[2]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from knoe.core.cluster_storage_browser import (
ClusterStorageBrowserResult,
ClusterStorageRequest,
RegionCandidate,
RegionFeasibility,
)
from knoe.ops import cli as ops_cli
def _fake_browser_result() -> ClusterStorageBrowserResult:
req = ClusterStorageRequest(pgdata_gb=100.0, wal_gb=25.0)
feasibility = RegionFeasibility(
region="us-central1",
timezone_group="americas",
premium_headroom_gb=250.0,
standard_headroom_gb=180.0,
can_premium=True,
can_standard=True,
default_pgdata_class="premium-rwo",
default_wal_class="premium-rwo",
feasibility_rank=0,
notes=(),
)
return ClusterStorageBrowserResult(
generated_at="2026-01-01T00:00:00+00:00",
project_id="p-1",
timezone_group="americas",
request=req,
candidates=(RegionCandidate(feasibility=feasibility, latency_ms=12.3),),
quota_link="https://cloud.google.com/compute/quotas",
quota_console_link="https://console.cloud.google.com/iam-admin/quotas?project=p-1",
)
def test_storage_browser_json_output(monkeypatch, capsys):
monkeypatch.setattr(ops_cli, "build_cluster_storage_browser_result", lambda **_kwargs: _fake_browser_result())
rc = ops_cli.main(
[
"storage-browser",
"--project",
"p-1",
"--regions",
"us-central1",
"--output",
"json",
]
)
out = capsys.readouterr().out
assert rc == 0
doc = json.loads(out)
assert doc["projectId"] == "p-1"
assert doc["candidates"][0]["defaultPgdataClass"] == "premium-rwo"
def test_storage_browser_table_output(monkeypatch, capsys):
monkeypatch.setattr(ops_cli, "build_cluster_storage_browser_result", lambda **_kwargs: _fake_browser_result())
rc = ops_cli.main(
[
"storage-browser",
"--project",
"p-1",
"--regions",
"us-central1",
"--output",
"table",
]
)
out = capsys.readouterr().out
assert rc == 0
assert "region\tfeasible\tdefault(pg/wal)" in out
assert "us-central1" in out
assert "premium-rwo/premium-rwo" in out
def test_legacy_component_action_dispatch_remains_supported(monkeypatch):
called = {}
def _status(_ctx):
called["ok"] = True
return 7
monkeypatch.setattr(ops_cli.importlib, "import_module", lambda _name: SimpleNamespace(status=_status))
rc = ops_cli.main(["common_core", "status", "--mode", "prod"])
assert called["ok"] is True
assert rc == 7