Skip to content

feat(@xen-orchestra/rest-api): dashboard enpoint can return a stream #8604

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: rest-dashboard-migration
Choose a base branch
from

Conversation

MathieuRA
Copy link
Member

@MathieuRA MathieuRA commented May 20, 2025

GIF

Before

chrome-capture-2025-5-21 (4)

After

chrome-capture-2025-5-21 (3)

Description

review only the front or back commit, depends on the team you work in

wait for #8580

by using stream instead sync HTTP request, data is displayed when they are ready and not when all data are ready
Also added more value in cache

  • Back
    • the endpoint can return a stream
    • Added missing info in the endpoint (vms status, hosts status)
    • Removed getFromAsyncCache
  • Front
    • Updated store to handle ndjson requests
    • fix being able to have parallel requests on the same endpoint
    • Updated dashboard component to display data as soon as it's ready

Checklist

  • Commit
    • Title follows commit conventions
    • Reference the relevant issue (Fixes #007, See xoa-support#42, See https://...)
    • If bug fix, add Introduced by
  • Changelog
    • If visible by XOA users, add changelog entry
    • Update "Packages to release" in CHANGELOG.unreleased.md
  • PR
    • If UI changes, add screenshots
    • If not finished or not tested, open as Draft

Review process

This 2-passes review process aims to:

  • develop skills of junior reviewers
  • limit the workload for senior reviewers
  • limit the number of unnecessary changes by the author
  1. The author creates a PR.
  2. Review process:
    1. The author assigns the junior reviewer.
    2. The junior reviewer conducts their review:
      • Resolves their comments if they are addressed.
      • Adds comments if necessary or approves the PR.
    3. The junior reviewer assigns the senior reviewer.
    4. The senior reviewer conducts their review:
      • If there are no unresolved comments on the PR → merge.
      • Otherwise, we continue with 3.
  3. The author responds to comments and/or makes corrections, and we go back to 2.

Notes:

  1. The author can request a review at any time, even if the PR is still a Draft.
  2. In theory, there should not be more than one reviewer at a time.
  3. The author should not make any changes:
    • When a reviewer is assigned.
    • Between the junior and senior reviews.

@MathieuRA MathieuRA force-pushed the rest-dashboard-stream branch 2 times, most recently from bad159f to 76fa4ad Compare May 20, 2025 15:45
@MathieuRA MathieuRA self-assigned this May 20, 2025
@MathieuRA MathieuRA force-pushed the rest-dashboard-stream branch from 1b80a24 to b43ac5a Compare May 21, 2025 08:35
@MathieuRA MathieuRA force-pushed the rest-dashboard-stream branch from 430007f to 86140e3 Compare May 21, 2025 09:17
const isStream = ndjson && stream !== undefined
if (isStream) {
const res = req.res as ExResponse
res.setHeader('Content-Type', 'application/ndjson')
Copy link
Member Author

Choose a reason for hiding this comment

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

Suggested change
res.setHeader('Content-Type', 'application/ndjson')
res.setHeader('Content-Type', 'application/x-ndjson')

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