Skip to content

fix(cassandra): publish required service schemas - #439

Merged
vrv3814 merged 1 commit into
mainfrom
fix/publish-cassandra-schemas
Jul 26, 2026
Merged

fix(cassandra): publish required service schemas#439
vrv3814 merged 1 commit into
mainfrom
fix/publish-cassandra-schemas

Conversation

@sbaum1994

@sbaum1994 sbaum1994 commented Jul 25, 2026

Copy link
Copy Markdown
Collaborator

TL;DR

Publish the nvct_api and nvcf_autoscaler Cassandra schemas so fresh self-managed installations create every documented keyspace. Add an inventory regression test so a schema listed in the migration README cannot be omitted from future images.

Additional Details

Why

The GitHub migration source listed both keyspaces in its schema inventory but did not contain their migration directories. The migration job could therefore complete successfully while required service keyspaces were absent.

What changed

  • Added the three baseline migration files for nvct_api.
  • Added the three baseline migration files for nvcf_autoscaler.
  • Preserved the archived role and table definitions byte for byte.
  • Converted only the two keyspace initializers from the archived Go template to the ${REPLICA_COUNT} substitution supported by the current migration entrypoint.
  • Added a regression check requiring every schema inventory entry to contain 01_init_keyspace.up.sql, 02_init_roles.up.sql, and 03_init_tables.up.sql.

Customer Release Notes

Fresh self-managed installations now create the Cassandra schemas required by the task and function autoscaler services.

Plan Summary

The migration image gains two keyspaces, their application roles, and their canonical tables and types. Existing migration discovery applies the files without deployment wiring changes.

Usage

No operator action is required beyond using an image containing this change for a fresh installation.

Testing

  • sh migrations/cassandra/tests/test-execute-sqls.sh
  • sh -n migrations/cassandra/tests/test-execute-sqls.sh
  • shellcheck migrations/cassandra/tests/test-execute-sqls.sh
  • git diff --check origin/main...HEAD
  • Compared all six files with the archived source. Roles and tables match byte for byte; only the approved replica-count transformation differs in the two initializer files.
  • Scanned changed public files for internal tracker IDs, hostnames, and URLs.

QA is recommended on a fresh supported Cassandra deployment to confirm all seven documented keyspaces are created. No local cluster was mutated during validation.

Notes

The inventory check is README-driven so the documented schema source list remains the publication contract.

References

Related Pull Requests

None.

Dependencies

None. No license review or NOTICE update is required.

For the Reviewer

Please focus on the schema fidelity and the README-driven inventory check in migrations/cassandra/tests/test-execute-sqls.sh.

For QA

Run the migration image against a fresh supported Cassandra deployment and confirm all keyspaces listed in migrations/cassandra/keyspaces/README.md are present.

Issues

Fixes #438

Checklist

  • I am familiar with the Contributing Guidelines.
  • I have signed off my commits for Developer Certificate of Origin (DCO) compliance.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

Summary by CodeRabbit

  • New Features
    • Added idempotent Cassandra keyspace initialization for autoscaling and API services, including replication settings and durable writes.
    • Set up service roles with scoped access permissions for each keyspace.
    • Created autoscaler tables for tracking recent activity and running state, plus coordination and health tables.
    • Created API task orchestration tables with structured types (UDTs), telemetry/health modeling, and an index for faster task lookup.
  • Tests
    • Enhanced migration checks to verify required keyspace schema files are present and the inventory is valid.

@sbaum1994
sbaum1994 requested review from a team as code owners July 25, 2026 06:53
@sbaum1994
sbaum1994 requested review from mikeyrcamp and vrv3814 July 25, 2026 06:53
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 5349d96e-4aa0-4807-8f27-e4abde77cefa

📥 Commits

Reviewing files that changed from the base of the PR and between f8f6fe1 and 5ae2239.

📒 Files selected for processing (7)
  • migrations/cassandra/keyspaces/nvcf_autoscaler/01_init_keyspace.up.sql
  • migrations/cassandra/keyspaces/nvcf_autoscaler/02_init_roles.up.sql
  • migrations/cassandra/keyspaces/nvcf_autoscaler/03_init_tables.up.sql
  • migrations/cassandra/keyspaces/nvct_api/01_init_keyspace.up.sql
  • migrations/cassandra/keyspaces/nvct_api/02_init_roles.up.sql
  • migrations/cassandra/keyspaces/nvct_api/03_init_tables.up.sql
  • migrations/cassandra/tests/test-execute-sqls.sh
🚧 Files skipped from review as they are similar to previous changes (7)
  • migrations/cassandra/keyspaces/nvct_api/01_init_keyspace.up.sql
  • migrations/cassandra/keyspaces/nvcf_autoscaler/01_init_keyspace.up.sql
  • migrations/cassandra/keyspaces/nvct_api/02_init_roles.up.sql
  • migrations/cassandra/tests/test-execute-sqls.sh
  • migrations/cassandra/keyspaces/nvcf_autoscaler/02_init_roles.up.sql
  • migrations/cassandra/keyspaces/nvct_api/03_init_tables.up.sql
  • migrations/cassandra/keyspaces/nvcf_autoscaler/03_init_tables.up.sql

📝 Walkthrough

Walkthrough

Adds Cassandra keyspace, role, UDT, table, index, lock, and liveness migrations for nvct_api and nvcf_autoscaler, plus validation that each inventoried keyspace contains the required migration files.

Changes

Cassandra schema publication

Layer / File(s) Summary
Keyspace and role migrations
migrations/cassandra/keyspaces/nvcf_autoscaler/01_init_keyspace.up.sql, migrations/cassandra/keyspaces/nvcf_autoscaler/02_init_roles.up.sql, migrations/cassandra/keyspaces/nvct_api/01_init_keyspace.up.sql, migrations/cassandra/keyspaces/nvct_api/02_init_roles.up.sql
Creates both keyspaces with replication settings and initializes access and login roles with grants and role membership.
Service schema definitions
migrations/cassandra/keyspaces/nvct_api/03_init_tables.up.sql, migrations/cassandra/keyspaces/nvcf_autoscaler/03_init_tables.up.sql
Defines nvct_api UDTs, task-related tables, an index, and a lock table, alongside autoscaler invocation, history, lock, and healthy-node tables.
Inventory regression coverage
migrations/cassandra/tests/test-execute-sqls.sh
Extracts keyspaces from the schema inventory and fails when any required migration file is missing.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • NVIDIA/nvcf#414: Updates SQL rendering and validation for the migration variables used by these role and keyspace migrations.

Suggested reviewers: vrv3814

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title follows Conventional Commits and accurately describes the bug-fix scope of publishing missing Cassandra schemas.
Linked Issues check ✅ Passed The PR adds the missing nvct_api and nvcf_autoscaler migrations and a guard test, matching issue #438's requirements.
Out of Scope Changes check ✅ Passed The changes stay focused on Cassandra schema migration files and the corresponding regression test, with no clear unrelated additions.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/publish-cassandra-schemas

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

@sbaum1994
sbaum1994 force-pushed the fix/publish-cassandra-schemas branch from 004e3fb to f8f6fe1 Compare July 25, 2026 06:56

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@migrations/cassandra/keyspaces/nvcf_autoscaler/02_init_roles.up.sql`:
- Around line 7-8: Replace the direct system_auth role_members INSERT and
roles.member_of UPDATE in
migrations/cassandra/keyspaces/nvcf_autoscaler/02_init_roles.up.sql and
migrations/cassandra/keyspaces/nvct_api/02_init_roles.up.sql with Cassandra’s
supported GRANT role-membership statement, granting each application access role
to its corresponding application role.

In `@migrations/cassandra/keyspaces/nvcf_autoscaler/03_init_tables.up.sql`:
- Around line 1-3: Resolve the schema/design inconsistency by either restoring
the archived columns in
migrations/cassandra/keyspaces/nvcf_autoscaler/03_init_tables.up.sql#L1-L3 or
documenting the approved account_id/nca_id replacement and migration impact.
Update
docs/superpowers/specs/2026-07-24-publish-cassandra-schemas-design.md#L37-L41 to
replace the “only expression changes” claim, and revise `#L48-L49` so verification
explicitly covers the approved schema differences.

In `@migrations/cassandra/keyspaces/nvct_api/03_init_tables.up.sql`:
- Around line 1-2: Update the provenance comment’s version reference for the
nvct_api schema from v1.2.4 to v1.5.2, keeping the existing source path and
canonical-schema wording unchanged.

In `@migrations/cassandra/tests/test-execute-sqls.sh`:
- Around line 19-24: Validate that schema_inventory produced by the README
parsing command is non-empty before entering the keyspace_name loop. If no
schema names were parsed, exit with a failure status and a clear diagnostic;
otherwise preserve the existing loop behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 408041be-40e2-4d78-93dc-8aa481992b34

📥 Commits

Reviewing files that changed from the base of the PR and between 68991a9 and 004e3fb.

📒 Files selected for processing (8)
  • docs/superpowers/specs/2026-07-24-publish-cassandra-schemas-design.md
  • migrations/cassandra/keyspaces/nvcf_autoscaler/01_init_keyspace.up.sql
  • migrations/cassandra/keyspaces/nvcf_autoscaler/02_init_roles.up.sql
  • migrations/cassandra/keyspaces/nvcf_autoscaler/03_init_tables.up.sql
  • migrations/cassandra/keyspaces/nvct_api/01_init_keyspace.up.sql
  • migrations/cassandra/keyspaces/nvct_api/02_init_roles.up.sql
  • migrations/cassandra/keyspaces/nvct_api/03_init_tables.up.sql
  • migrations/cassandra/tests/test-execute-sqls.sh

Comment thread migrations/cassandra/keyspaces/nvcf_autoscaler/02_init_roles.up.sql
Comment thread migrations/cassandra/keyspaces/nvct_api/03_init_tables.up.sql Outdated
Comment thread migrations/cassandra/tests/test-execute-sqls.sh
Add the nvct_api and nvcf_autoscaler migrations to the GitHub build source and require every documented schema inventory entry to include its three baseline migration files.

Fixes #438

Signed-off-by: Stephanie Baum <sbaum@nvidia.com>
@sbaum1994
sbaum1994 force-pushed the fix/publish-cassandra-schemas branch from f8f6fe1 to 5ae2239 Compare July 26, 2026 14:58
@vrv3814
vrv3814 added this pull request to the merge queue Jul 26, 2026
Merged via the queue into main with commit 1f8ea71 Jul 26, 2026
15 checks passed
@vrv3814
vrv3814 deleted the fix/publish-cassandra-schemas branch July 26, 2026 16:33
@balajinvda

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version nvcf-cassandra-migrations-v0.14.2 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cassandra migration image omits required service schemas

3 participants