mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 11:03:59 +00:00
- 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>
98 lines
2.8 KiB
Python
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
|