Skip to content

feat(orchestrator): Add NFS for orchestrator and orchestrator-form-widgets plugins#2526

Open
karthikjeeyar wants to merge 5 commits intoredhat-developer:mainfrom
karthikjeeyar:orchestrator-nfs
Open

feat(orchestrator): Add NFS for orchestrator and orchestrator-form-widgets plugins#2526
karthikjeeyar wants to merge 5 commits intoredhat-developer:mainfrom
karthikjeeyar:orchestrator-nfs

Conversation

@karthikjeeyar
Copy link
Member

NFS on orchestrator frontend plugins

Fixes: https://issues.redhat.com/browse/RHIDP-11858

This PR adds NFS support for Orchestrator and Orchestrator-form-widgets plugins:

  1. New frontend plugin with PageBlueprint, ApiBlueprint, NavItemBlueprint and translationBlueprint etc.
  2. Exports NFS as a alpha module
  3. Updated documentation and api-reports
  4. Updated the start command
    • To start NFS - yarn start
    • To start old system - yarn start:legacy

Screenshots:
workflow-list

workflow-form Workflow_run

✔️ Checklist

  • A changeset describing the change and affected packages. (more info)
  • Added or Updated documentation
  • Tests for new functionality and regression tests for bug fixes
  • Screenshots attached (for UI changes)

@rhdh-gh-app
Copy link

rhdh-gh-app bot commented Mar 12, 2026

Important

This PR includes changes that affect public-facing API. Please ensure you are adding/updating documentation for new features or behavior.

Changed Packages

Package Name Package Path Changeset Bump Current Version
app-legacy workspaces/orchestrator/packages/app-legacy none v0.0.3
app workspaces/orchestrator/packages/app none v0.0.4
@red-hat-developer-hub/backstage-plugin-orchestrator-form-widgets workspaces/orchestrator/plugins/orchestrator-form-widgets minor v1.7.3
@red-hat-developer-hub/backstage-plugin-orchestrator workspaces/orchestrator/plugins/orchestrator minor v5.5.2

@rhdh-qodo-merge
Copy link

Review Summary by Qodo

Add NFS support to orchestrator and orchestrator-form-widgets plugins

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Migrate orchestrator plugins to new frontend system (NFS)
• Add alpha exports with PageBlueprint, ApiBlueprint, NavItemBlueprint
• Create legacy app package for backward compatibility
• Update dev app to use NFS with new navigation module
• Add NFS installation documentation and configuration
Diagram
flowchart LR
  A["Legacy App<br/>app-defaults"] -->|"yarn start:legacy"| B["Old Frontend System"]
  C["New App<br/>frontend-defaults"] -->|"yarn start"| D["New Frontend System<br/>NFS"]
  E["Orchestrator Plugin"] -->|"alpha export"| D
  F["Form Widgets Plugin"] -->|"alpha export"| D
  G["Navigation Module"] -->|"NavContentBlueprint"| D
Loading

Grey Divider

File Changes

1. workspaces/orchestrator/plugins/orchestrator/src/alpha.tsx ✨ Enhancement +148/-0

New NFS plugin with blueprints and extensions

workspaces/orchestrator/plugins/orchestrator/src/alpha.tsx


2. workspaces/orchestrator/plugins/orchestrator-form-widgets/src/alpha.tsx ✨ Enhancement +44/-0

NFS plugin for form widgets API

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/alpha.tsx


3. workspaces/orchestrator/packages/app/src/App.tsx ✨ Enhancement +17/-146

Migrate to new frontend system with features

workspaces/orchestrator/packages/app/src/App.tsx


View more (47)
4. workspaces/orchestrator/packages/app-legacy/src/App.tsx ✨ Enhancement +164/-0

Legacy app using old frontend system

workspaces/orchestrator/packages/app-legacy/src/App.tsx


5. workspaces/orchestrator/packages/app/src/modules/nav/index.ts ✨ Enhancement +22/-0

Navigation module with sidebar content

workspaces/orchestrator/packages/app/src/modules/nav/index.ts


6. workspaces/orchestrator/plugins/orchestrator/dev/nav/index.ts ✨ Enhancement +24/-0

Dev navigation module for NFS

workspaces/orchestrator/plugins/orchestrator/dev/nav/index.ts


7. workspaces/orchestrator/plugins/orchestrator/dev/index.tsx ✨ Enhancement +26/-16

Dev app migrated to new frontend system

workspaces/orchestrator/plugins/orchestrator/dev/index.tsx


8. workspaces/orchestrator/plugins/orchestrator/dev/legacy.tsx ✨ Enhancement +35/-0

Legacy dev app entry point

workspaces/orchestrator/plugins/orchestrator/dev/legacy.tsx


9. workspaces/orchestrator/packages/app/src/modules/nav/Sidebar.tsx ✨ Enhancement +47/-0

Sidebar component with nav items

workspaces/orchestrator/packages/app/src/modules/nav/Sidebar.tsx


10. workspaces/orchestrator/packages/app/src/modules/nav/SidebarLogo.tsx ✨ Enhancement +51/-0

Logo component for sidebar navigation

workspaces/orchestrator/packages/app/src/modules/nav/SidebarLogo.tsx


11. workspaces/orchestrator/packages/app/src/modules/nav/LogoFull.tsx ✨ Enhancement +43/-0

Full logo SVG component

workspaces/orchestrator/packages/app/src/modules/nav/LogoFull.tsx


12. workspaces/orchestrator/packages/app/src/modules/nav/LogoIcon.tsx ✨ Enhancement +43/-0

Icon logo SVG component

workspaces/orchestrator/packages/app/src/modules/nav/LogoIcon.tsx


13. workspaces/orchestrator/plugins/orchestrator/dev/nav/Sidebar.tsx ✨ Enhancement +52/-0

Dev sidebar with language and sign out

workspaces/orchestrator/plugins/orchestrator/dev/nav/Sidebar.tsx


14. workspaces/orchestrator/plugins/orchestrator/dev/nav/SidebarLogo.tsx ✨ Enhancement +49/-0

Dev sidebar logo component

workspaces/orchestrator/plugins/orchestrator/dev/nav/SidebarLogo.tsx


15. workspaces/orchestrator/plugins/orchestrator/package.json ⚙️ Configuration changes +24/-0

Add alpha exports and NFS dependencies

workspaces/orchestrator/plugins/orchestrator/package.json


16. workspaces/orchestrator/plugins/orchestrator-form-widgets/package.json ⚙️ Configuration changes +16/-0

Add alpha exports and frontend plugin API

workspaces/orchestrator/plugins/orchestrator-form-widgets/package.json


17. workspaces/orchestrator/packages/app/package.json Dependencies +8/-32

Update to frontend-defaults and NFS deps

workspaces/orchestrator/packages/app/package.json


18. workspaces/orchestrator/packages/app-legacy/package.json ⚙️ Configuration changes +89/-0

Legacy app with old frontend dependencies

workspaces/orchestrator/packages/app-legacy/package.json


19. workspaces/orchestrator/plugins/orchestrator/report-alpha.api.md 📝 Documentation +268/-0

API report for NFS alpha exports

workspaces/orchestrator/plugins/orchestrator/report-alpha.api.md


20. workspaces/orchestrator/plugins/orchestrator/report.api.md 📝 Documentation +10/-18

Updated API report with documentation

workspaces/orchestrator/plugins/orchestrator/report.api.md


21. workspaces/orchestrator/plugins/orchestrator-form-widgets/report-alpha.api.md 📝 Documentation +38/-0

API report for form widgets NFS

workspaces/orchestrator/plugins/orchestrator-form-widgets/report-alpha.api.md


22. workspaces/orchestrator/plugins/orchestrator/README.md 📝 Documentation +13/-1

Document NFS entry points and dev commands

workspaces/orchestrator/plugins/orchestrator/README.md


23. workspaces/orchestrator/docs/static-plugin-installation.md 📝 Documentation +21/-0

Add NFS installation instructions

workspaces/orchestrator/docs/static-plugin-installation.md


24. workspaces/orchestrator/plugins/orchestrator/src/alpha.test.tsx 🧪 Tests +32/-0

Tests for NFS plugin structure

workspaces/orchestrator/plugins/orchestrator/src/alpha.test.tsx


25. workspaces/orchestrator/plugins/orchestrator-form-widgets/src/alpha.test.tsx 🧪 Tests +27/-0

Tests for form widgets NFS plugin

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/alpha.test.tsx


26. workspaces/orchestrator/plugins/orchestrator/src/translations/ref.ts 📝 Documentation +6/-0

Add JSDoc for translation reference

workspaces/orchestrator/plugins/orchestrator/src/translations/ref.ts


27. workspaces/orchestrator/plugins/orchestrator/src/translations/index.ts 📝 Documentation +4/-0

Add JSDoc for translation resource

workspaces/orchestrator/plugins/orchestrator/src/translations/index.ts


28. workspaces/orchestrator/plugins/orchestrator/src/components/catalogComponents/CatalogTab.tsx 📝 Documentation +4/-0

Add JSDoc for catalog tab availability

workspaces/orchestrator/plugins/orchestrator/src/components/catalogComponents/CatalogTab.tsx


29. workspaces/orchestrator/package.json ⚙️ Configuration changes +1/-0

Add start:legacy command for old system

workspaces/orchestrator/package.json


30. workspaces/orchestrator/app-config.yaml ⚙️ Configuration changes +12/-0

Add language extension configuration

workspaces/orchestrator/app-config.yaml


31. workspaces/orchestrator/.changeset/early-colts-care.md 📝 Documentation +6/-0

Changeset for NFS support addition

workspaces/orchestrator/.changeset/early-colts-care.md


32. workspaces/orchestrator/packages/app/src/index.tsx ✨ Enhancement +1/-1

Update app root rendering for NFS

workspaces/orchestrator/packages/app/src/index.tsx


33. workspaces/orchestrator/packages/app-legacy/src/index.tsx ✨ Enhancement +22/-0

Legacy app entry point

workspaces/orchestrator/packages/app-legacy/src/index.tsx


34. workspaces/orchestrator/packages/app-legacy/.eslintrc.js ⚙️ Configuration changes +17/-0

ESLint configuration for legacy app

workspaces/orchestrator/packages/app-legacy/.eslintrc.js


35. workspaces/orchestrator/packages/app/.eslintignore Formatting +1/-1

ESLint ignore file formatting

workspaces/orchestrator/packages/app/.eslintignore


36. workspaces/orchestrator/packages/app-legacy/.eslintignore ⚙️ Configuration changes +1/-0

ESLint ignore file for legacy app

workspaces/orchestrator/packages/app-legacy/.eslintignore


37. workspaces/orchestrator/packages/app-legacy/e2e-tests/app.test.ts Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/e2e-tests/app.test.ts


38. workspaces/orchestrator/packages/app-legacy/knip-report.md Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/knip-report.md


39. workspaces/orchestrator/packages/app-legacy/public/index.html Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/public/index.html


40. workspaces/orchestrator/packages/app-legacy/public/manifest.json Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/public/manifest.json


41. workspaces/orchestrator/packages/app-legacy/public/robots.txt Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/public/robots.txt


42. workspaces/orchestrator/packages/app-legacy/src/App.test.tsx Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/App.test.tsx


43. workspaces/orchestrator/packages/app-legacy/src/apis.ts Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/apis.ts


44. workspaces/orchestrator/packages/app-legacy/src/components/Root/LogoFull.tsx Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/components/Root/LogoFull.tsx


45. workspaces/orchestrator/packages/app-legacy/src/components/Root/LogoIcon.tsx Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/components/Root/LogoIcon.tsx


46. workspaces/orchestrator/packages/app-legacy/src/components/Root/Root.tsx Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/components/Root/Root.tsx


47. workspaces/orchestrator/packages/app-legacy/src/components/Root/index.ts Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/components/Root/index.ts


48. workspaces/orchestrator/packages/app-legacy/src/components/catalog/EntityPage.tsx Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/components/catalog/EntityPage.tsx


49. workspaces/orchestrator/packages/app-legacy/src/components/search/SearchPage.tsx Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/components/search/SearchPage.tsx


50. workspaces/orchestrator/packages/app-legacy/src/setupTests.ts Additional files +0/-0

...

workspaces/orchestrator/packages/app-legacy/src/setupTests.ts


Grey Divider

Qodo Logo

@rhdh-qodo-merge
Copy link

rhdh-qodo-merge bot commented Mar 12, 2026

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Bad dev plugin import🐞 Bug ✓ Correctness
Description
workspaces/orchestrator/plugins/orchestrator/dev/index.tsx default-imports
@red-hat-developer-hub/backstage-plugin-orchestrator-form-widgets, but that package root only
re-exports named symbols, so the dev app won’t compile. Since this entrypoint uses NFS createApp,
it should import the NFS plugin from the /alpha entrypoint instead.
Code

workspaces/orchestrator/plugins/orchestrator/dev/index.tsx[26]

+import orchestratorFormWidgetsPlugin from '@red-hat-developer-hub/backstage-plugin-orchestrator-form-widgets';
Evidence
The orchestrator dev app is using NFS createApp and includes orchestratorFormWidgetsPlugin in
its features, but the import is a default import from the package root. The package root
entrypoint (src/index.ts) has no default export (only named re-exports), while the NFS plugin is
provided as the default export from src/alpha.tsx. This breaks the default start script that
uses the dev entrypoint.

workspaces/orchestrator/plugins/orchestrator/dev/index.tsx[21-42]
workspaces/orchestrator/plugins/orchestrator-form-widgets/src/index.ts[17-20]
workspaces/orchestrator/plugins/orchestrator-form-widgets/src/alpha.tsx[41-44]
workspaces/orchestrator/plugins/orchestrator/package.json[56-59]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The orchestrator plugin NFS dev entrypoint imports `@red-hat-developer-hub/backstage-plugin-orchestrator-form-widgets` as a **default** export, but the package root does not export a default. This breaks the default `yarn ... start` dev flow.
## Issue Context
The dev entrypoint uses `createApp` from `@backstage/frontend-defaults` (NFS), so it should use the plugin’s NFS entrypoint (`/alpha`), which *does* export a default frontend plugin.
## Fix Focus Areas
- workspaces/orchestrator/plugins/orchestrator/dev/index.tsx[21-42]
## Expected change
Replace:

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@karthikjeeyar karthikjeeyar force-pushed the orchestrator-nfs branch 5 times, most recently from ce13cc1 to e133a9c Compare March 12, 2026 10:22
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
22.2% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

Copy link
Member

@lokanandaprabhu lokanandaprabhu left a comment

Choose a reason for hiding this comment

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

Tested locally, working fine.

/lgtm

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.

2 participants