Skip to content

feat: revamp OpenMetadata 2.0 RC1 demo catalog - #73

Merged
ayush-shah merged 25 commits into
mainfrom
ayush-shah-codex/python-sdk-retrieval-fix
Aug 7, 2026
Merged

feat: revamp OpenMetadata 2.0 RC1 demo catalog#73
ayush-shah merged 25 commits into
mainfrom
ayush-shah-codex/python-sdk-retrieval-fix

Conversation

@ayush-shah

@ayush-shah ayush-shah commented Jul 17, 2026

Copy link
Copy Markdown
Member

Summary

Fixes ticket #20931 by turning openmetadata-demo into a small, maintained OpenMetadata 2.0 RC1 example catalog. The old links broke after this repository was archived/private and its examples became stale.

This branch keeps its first ten curation and connector commits through 7c2c7f2, removes the later generated platform-api work entirely, and adds plain Python examples built directly on the public fluent SDK facades.

  • preserves the stable custom-connector/ URL and the six maintained legacy areas
  • demonstrates all 30 route-backed facades exported by the exact RC1 SDK across six focused scenarios, API lineage, and CSV updates
  • gives Settings a live, read-only example
  • validates the ContextFiles, Folders, and Pages request models while documenting their missing RC1 route resolution
  • retains API lineage through the existing public Lineage API; it does not add a Search API cookbook
  • removes generated route catalogs, manifests, transports, renderers, runtime frameworks, and every-REST-API claims
  • does not restore the SDK tutorials removed by Remove SDK and API examples #74; comprehensive learning material remains in product documentation

Version and Source Contract

  • Python dependency: exactly openmetadata-ingestion==2.0.0.0rc1
  • Docker images: exactly 2.0.0-rc1
  • Python: 3.10, 3.11, and 3.12
  • reference source: OpenMetadata OSS 2.0.0-rc1-release at 8e199f486b63df9f44d4c827a9f43559d9e56e07

These are prerelease examples and are not presented as compatible with OpenMetadata 1.12/1.13.

Facade Scenarios

Scenario Main behavior
Database catalog Database service, database, schema, table, stored procedure, update, and sample data
Analytics assets Dashboard assets, ML model, pipeline/task status, query, and search index
Storage assets Storage service and nested-container hierarchy
Governance assets Taxonomy, glossary relations, domain, product, metric relations, and data contract
Identity and Settings Team, user, entity references, and safe Settings reads
Data quality Existing definition lookup, suite, case, and result reads

The API-lineage demo now uses APICollections, APIEndpoints, and Lineage under explicitly supplied API services. It verifies every requested column mapping after writing, documents exact-FQN filtering, and demonstrates direct API Endpoint → Table lineage without requiring a Pipeline asset. The analytics guide distinguishes Pipeline services from Pipeline assets and explains Pipelines.list() versus Pipelines.list_all(). The CSV importer now uses Tables and DashboardDataModels, requires explicit target FQNs, preflights every target, and builds all changes before the first update.

Some service facades do not exist in RC1. Analytics therefore requires existing database, ML model, pipeline, and search service FQNs. API lineage similarly requires two existing API service FQNs. The data-contract and data-quality scenarios require explicit existing target FQNs.

Write Safety

Facade.create() is a full PUT upsert. Demo-created entities include:

[openmetadata-demo:<namespace>:<scenario>]

The examples create missing entities, allow reruns only for an exact ownership-marker match, and refuse foreign collisions. The CSV importer's repeatable FQN flags are its explicit authorization boundary. There is no hard delete, recursive delete, automatic cleanup, restore, global Settings mutation, Search reindex, or test execution.

The live RC1 smoke pass also found three route-backed methods whose RC1 contracts are broken: Containers.set_parent(), Metrics.add_related_metrics(), and DataContracts.validate_request(). The examples document those limitations and use the smallest working public-facade alternatives; they do not patch the SDK or add private/REST fallbacks.

Validation Boundary

CI provides offline request/model/import validation against the exact RC1 SDK. It runs pytest, Ruff, formatting, compile checks, YAML/JSON parsing, socket-free import checks, facade-coverage checks, Node syntax/audit, Docker Compose configuration validation, Markdown link checking, and repository-wide Gitleaks. It does not certify a live server or Docker-backed ingestion.

Local final gate:

  • 98 pytest checks pass
  • Ruff lint and format checks pass
  • compileall passes
  • all maintained YAML and JSON parse
  • import socket audit passes
  • npm audit reports zero vulnerabilities and Node syntax checks pass
  • the official RC1 Compose file plus the custom connector overlay validates
  • Markdown links pass
  • Gitleaks 8.27.0 reports no leaks
  • generated platform-api files and history churn are absent

All branch-defined checks are green. The repository's separate default CodeQL
setup still schedules Java/Kotlin and fails with no source code seen because
this curation intentionally removes the unsupported Java examples. A repository
administrator must remove Java/Kotlin from default CodeQL setup (or waive that
stale check); this PR does not add dummy Java solely to satisfy it.

Manual OpenMetadata 2.0 RC1 Evidence

Validated on 2026-08-06 with the official 2.0.0-rc1 server and ingestion images:

  • all six live scenarios completed and completed again as owned reruns
  • API lineage completed twice and the two expected lineage edges were read back
  • the CSV importer updated only the two explicitly named disposable assets and reran successfully
  • table sample data, pipeline task status, nested-container hierarchy, metric relation, and metric domain were read back successfully
  • a foreign service collision was refused; its description remained unchanged and no child asset was created
  • ContextFiles, Folders, and Pages failed route resolution exactly as documented, without a REST workaround

Review and Rollback

The final fixed diff received source-to-example, customer-safety, security/secret, over-engineering, and atomic-history reviews. The bounded doubt loop ended clean after the live-smoke findings were reconciled.

Rollback options:

  • recover the pre-rewrite work from ayush-shah/backup-pr-73-platform-api-e911720
  • revert any independently scoped facade-scenario commit

Out of scope: every REST route, recreating missing facades, exercising every inherited method, live-server CI, automatic cleanup, and GA compatibility.

Readiness

  • Lean facade catalog implemented
  • Offline validation green locally
  • Manual RC1 smoke and rerun complete
  • Final adversarial review clean
  • Branch-owned PR CI green
  • Repository default CodeQL no longer requires Java/Kotlin
  • Ingestion review approved
  • Documentation review approved

Keep this PR in draft until CI and ingestion/documentation reviews pass. Repository visibility and the 2.0.0-rc1 tag remain post-merge work. Docs PRs docs-om #364 and docs-collate #531 stay unchanged until the repository is public and that tag exists. The GA pin/tag migration will be a separate atomic PR.

@ayush-shah
ayush-shah force-pushed the ayush-shah-codex/python-sdk-retrieval-fix branch from 8f9ec69 to 6daebc6 Compare August 5, 2026 10:33
@ayush-shah ayush-shah changed the title Refresh Python SDK examples and CI Revamp maintained demo catalog for OpenMetadata 2.0 RC1 Aug 5, 2026
@ayush-shah
ayush-shah force-pushed the ayush-shah-codex/python-sdk-retrieval-fix branch from 6daebc6 to 8a72844 Compare August 5, 2026 10:36
@ayush-shah
ayush-shah force-pushed the ayush-shah-codex/python-sdk-retrieval-fix branch from 8a72844 to 7c2c7f2 Compare August 5, 2026 12:04
@ayush-shah
ayush-shah marked this pull request as ready for review August 5, 2026 12:27
@ayush-shah
ayush-shah marked this pull request as draft August 5, 2026 14:37
@ayush-shah ayush-shah changed the title Revamp maintained demo catalog for OpenMetadata 2.0 RC1 Revamp OpenMetadata 2.0 RC1 demo and API catalogs Aug 6, 2026
@ayush-shah
ayush-shah force-pushed the ayush-shah-codex/python-sdk-retrieval-fix branch from e911720 to 15b96d7 Compare August 6, 2026 09:27
@ayush-shah ayush-shah changed the title Revamp OpenMetadata 2.0 RC1 demo and API catalogs feat: revamp OpenMetadata 2.0 RC1 demo catalog Aug 6, 2026
@ayush-shah
ayush-shah marked this pull request as ready for review August 7, 2026 08:52
@ayush-shah
ayush-shah merged commit 6920da3 into main Aug 7, 2026
11 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant