#!/usr/bin/env python3 """Report what OpenMetadata currently knows vs nothing — services, dbs, schemas, tables.""" import om_api as o st, d = o.login("admin@open-metadata.org", "admin") tok = d["accessToken"] def g(p): return o.req("GET", p, token=tok)[1] print("=== DATABASE SERVICES ===") s = g("/api/v1/services/databaseServices?limit=100") for sv in s.get("data", []): name = sv["name"] # tables under this service t = g("/api/v1/tables?limit=1&service=" + name) print(" %-22s type=%-12s tables=%s" % (name, sv.get("serviceType"), t.get("paging", {}).get("total"))) print(" total services:", s.get("paging", {}).get("total")) print() for kind in ("messagingServices", "pipelineServices", "storageServices", "dashboardServices", "mlmodelServices", "searchServices", "apiServices"): s = g("/api/v1/services/" + kind + "?limit=100") names = [sv["name"] for sv in s.get("data", [])] print("%-20s total=%s %s" % (kind, s.get("paging", {}).get("total"), names)) print() print("=== DATABASES / SCHEMAS per service ===") s = g("/api/v1/services/databaseServices?limit=100") for sv in s.get("data", []): name = sv["name"] dbs = g("/api/v1/databases?service=" + name + "&limit=100") for db in dbs.get("data", []): dbfqn = db["fullyQualifiedName"] sch = g("/api/v1/databaseSchemas?database=" + dbfqn + "&limit=100") schnames = [x["name"] for x in sch.get("data", [])] print(" %s.%s schemas=%s" % (name, db["name"], schnames)) print() print("=== TABLES total:", g("/api/v1/tables?limit=1").get("paging", {}).get("total"))