Fix CI/pulumi blockers and document test suites with latest PASS results.
Stabilize node status, cluster-wide Ceph OSD ids, and QEMU cpu utilization so status/list no longer 500 on model strings; align pulumi defaults to pve1; add bilingual testing docs with the 2026-07-18 ci-all + pulumi-tests pass.
This commit is contained in:
+10
-2
@@ -58,7 +58,7 @@ CSRF=$(echo "$TICKET" | jq -r .data.CSRFPreventionToken)
|
||||
curl -s -b /tmp/pve.ck http://localhost:8006/api2/json/version | jq .
|
||||
curl -s -b /tmp/pve.ck -H "CSRFPreventionToken: $CSRF" \
|
||||
-d 'vmid=100&name=demo' \
|
||||
http://localhost:8006/api2/json/nodes/pve01/qemu | jq .
|
||||
http://localhost:8006/api2/json/nodes/pve1/qemu | jq .
|
||||
```
|
||||
|
||||
Open the HTML report: `pulumi-tests/pulumi/reports/report.html`.
|
||||
@@ -67,4 +67,12 @@ Provider env (set by Compose): `PROXMOX_VE_ENDPOINT=https://tls-gateway:8443/`
|
||||
(internal suite TLS — `pulumi-proxmoxve` rejects `http://`), plus username/password
|
||||
/`INSECURE`. Surface probe uses `API_URL=http://simulator:8006`. Host lab URL
|
||||
remains plain `http://localhost:8006/` (Kubernetes HTTPS is Ingress-only).
|
||||
Seed for CI/suite: `SEED_PROFILE=small` (Compose default).
|
||||
Seed for CI/suite: `SEED_PROFILE=small` (Compose default). Default node name in
|
||||
that profile is **`pve1`** (not `pve01`).
|
||||
|
||||
## Latest local results (2026-07-18)
|
||||
|
||||
`make pulumi-tests` → **Suite PASS** (~28s): lifecycle OK; surface majors
|
||||
6.4-15 / 7.4-16 / 8.4.5 / 9.2.3 with `critical=0`; coverage **2324/2324**.
|
||||
Report: `pulumi/reports/report.html`. Broader CI notes:
|
||||
[docs/testing.md](../docs/testing.md).
|
||||
|
||||
@@ -58,7 +58,7 @@ CSRF=$(echo "$TICKET" | jq -r .data.CSRFPreventionToken)
|
||||
curl -s -b /tmp/pve.ck http://localhost:8006/api2/json/version | jq .
|
||||
curl -s -b /tmp/pve.ck -H "CSRFPreventionToken: $CSRF" \
|
||||
-d 'vmid=100&name=demo' \
|
||||
http://localhost:8006/api2/json/nodes/pve01/qemu | jq .
|
||||
http://localhost:8006/api2/json/nodes/pve1/qemu | jq .
|
||||
```
|
||||
|
||||
Отчёт: `pulumi-tests/pulumi/reports/report.html`.
|
||||
@@ -67,4 +67,12 @@ Env провайдера (Compose): `PROXMOX_VE_ENDPOINT=https://tls-gateway:844
|
||||
(внутренний TLS suite — `pulumi-proxmoxve` не принимает `http://`), плюс
|
||||
username/password/`INSECURE`. Surface probe: `API_URL=http://simulator:8006`.
|
||||
Хостовый lab URL — plain `http://localhost:8006/` (HTTPS в K8s — только Ingress).
|
||||
Seed для CI/suite: `SEED_PROFILE=small` (default Compose).
|
||||
Seed для CI/suite: `SEED_PROFILE=small` (default Compose). Имя ноды в этом
|
||||
профиле — **`pve1`** (не `pve01`).
|
||||
|
||||
## Последний локальный прогон (2026-07-18)
|
||||
|
||||
`make pulumi-tests` → **Suite PASS** (~28 с): lifecycle OK; surface majors
|
||||
6.4-15 / 7.4-16 / 8.4.5 / 9.2.3 с `critical=0`; coverage **2324/2324**.
|
||||
Отчёт: `pulumi/reports/report.html`. Общий CI:
|
||||
[docs/ru/testing.md](../docs/ru/testing.md).
|
||||
|
||||
@@ -5,7 +5,7 @@ x-test-env: &test-env
|
||||
API_USER: ${API_USER:-root@pam}
|
||||
API_PASSWORD: ${API_PASSWORD:-secret}
|
||||
API_TOKEN: ${API_TOKEN:-root@pam!automation=automation-secret}
|
||||
PVE_NODE: ${PVE_NODE:-pve01}
|
||||
PVE_NODE: ${PVE_NODE:-pve1}
|
||||
PVE_STORAGE: ${PVE_STORAGE:-local-lvm}
|
||||
PVE_BRIDGE: ${PVE_BRIDGE:-vmbr0}
|
||||
API_TIMEOUT: ${API_TIMEOUT:-120}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
encryptionsalt: v1:dHE0479O4C4=:v1:qLAPiOnywZwAY0nr:lwYFJLsSb1ayad79xjxO05Tvn5EK0w==
|
||||
config:
|
||||
hx-lifecycle:smoke: "0"
|
||||
@@ -0,0 +1,3 @@
|
||||
encryptionsalt: v1:Ttb4rpyx/lw=:v1:jISbowPFxMmrEKuc:YSoO8SdSx3symHxQE0vjSEQ2Mf/AyQ==
|
||||
config:
|
||||
hx-lifecycle:smoke: "0"
|
||||
@@ -18,7 +18,7 @@ from pvelib.api import Pve
|
||||
cfg = pulumi.Config()
|
||||
smoke = (cfg.get("smoke") or os.environ.get("SMOKE_ONLY") or "0") == "1"
|
||||
|
||||
node = os.environ.get("PVE_NODE", "pve01")
|
||||
node = os.environ.get("PVE_NODE", "pve1")
|
||||
endpoint = (
|
||||
os.environ.get("PROXMOX_VE_ENDPOINT") or "https://tls-gateway:8443/"
|
||||
).rstrip("/") + "/"
|
||||
|
||||
@@ -15,7 +15,7 @@ class Pve:
|
||||
root = os.environ.get("API_URL", "http://simulator:8006").rstrip("/")
|
||||
self.root = root
|
||||
self.base = root + "/api2/json"
|
||||
self.node = os.environ.get("PVE_NODE", "pve01")
|
||||
self.node = os.environ.get("PVE_NODE", "pve1")
|
||||
self.storage = os.environ.get("PVE_STORAGE", "local-lvm")
|
||||
self.bridge = os.environ.get("PVE_BRIDGE", "vmbr0")
|
||||
self._c = httpx.Client(base_url=self.base, timeout=120.0)
|
||||
|
||||
@@ -44,7 +44,7 @@ _UPID_RE = re.compile(
|
||||
)
|
||||
|
||||
_PATH_PARAM_EXAMPLES: dict[str, object] = {
|
||||
"node": "pve01",
|
||||
"node": "pve1",
|
||||
"vmid": 100,
|
||||
"storage": "local",
|
||||
"pool": "testpool",
|
||||
@@ -53,7 +53,7 @@ _PATH_PARAM_EXAMPLES: dict[str, object] = {
|
||||
"realm": "pam",
|
||||
"group": "admins",
|
||||
"role": "Administrator",
|
||||
"upid": "UPID:pve01:00000001:00000001:65000001:qmstart:100:root@pam:",
|
||||
"upid": "UPID:pve1:00000001:00000001:65000001:qmstart:100:root@pam:",
|
||||
"snapname": "snap1",
|
||||
"volume": "local:100/vm-100-disk-0.qcow2",
|
||||
"disk": "scsi0",
|
||||
@@ -89,7 +89,7 @@ _EXTRA_PATH: dict[str, object] = {
|
||||
"cidr": "10.0.0.0/24",
|
||||
"tokenid": "automation",
|
||||
"fabric_id": "fab1",
|
||||
"node_id": "pve01",
|
||||
"node_id": "pve1",
|
||||
"url_seq": "1",
|
||||
"route-map-id": "rm1",
|
||||
"order": "10",
|
||||
|
||||
Reference in New Issue
Block a user