6033967e6a
Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm packaging, API contract packs, and pytest/Pulumi coverage labs.
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""Probe every pack operation for Yoga → Dalmatian against the live gateway."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import os
|
|
import sys
|
|
|
|
# Allow `python examples/python/openstack_surface_probe.py` from repo / container.
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
|
|
|
|
from app.openstack.surface_probe import format_report, probe_series # noqa: E402
|
|
|
|
|
|
def main() -> int:
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument("--host", default=os.environ.get("OS_HOST", "http://127.0.0.1:5000"))
|
|
parser.add_argument(
|
|
"--series",
|
|
action="append",
|
|
help="Limit to series (repeatable). Default: all four.",
|
|
)
|
|
parser.add_argument(
|
|
"--collections-only",
|
|
action="store_true",
|
|
help="Only GET endpoints without path parameters (faster smoke).",
|
|
)
|
|
parser.add_argument(
|
|
"--no-lifecycle",
|
|
action="store_true",
|
|
help="Random-UUID shallow probe (accepts 404) instead of create→CRUD lifecycle.",
|
|
)
|
|
parser.add_argument(
|
|
"--methods",
|
|
default="",
|
|
help="Comma-separated methods filter (e.g. GET,POST)",
|
|
)
|
|
args = parser.parse_args()
|
|
series_list = args.series or ["yoga", "antelope", "caracal", "dalmatian"]
|
|
methods = frozenset(m.strip().upper() for m in args.methods.split(",") if m.strip()) or None
|
|
failed = 0
|
|
for series in series_list:
|
|
report = probe_series(
|
|
series,
|
|
host=args.host,
|
|
methods=methods,
|
|
collections_only=args.collections_only,
|
|
lifecycle=not args.no_lifecycle and not args.collections_only,
|
|
)
|
|
print(format_report(report))
|
|
failed += len(report.failures)
|
|
if failed:
|
|
print(f"FAILED total={failed}")
|
|
return 1
|
|
print("OK all probed operations returned acceptable statuses")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|