Add the Group status tab to the Orbit dashboard

What does this MR do and why?

Adds a Group status tab to Your work > Orbit. It lists your top-level groups with their Orbit state and index status, and Owners turn Orbit on or off for several groups at once. It uses the same groups table as the Admin area Orbit page, now in one shared place.

  • Turning on a group that can start a trial starts it. The confirmation lists the trial of each group, because each group can get a different offer.
  • The Off page now uses the same confirmation, so it also lists the trial of each group.
  • Orbit reports no percent, so a group that indexes shows a spinner and an info button with the status of each area. The Admin area table gets the same.
  • Owners, also through a group share, and admins in admin mode can change a group, as on Settings > Orbit. On self-managed and Dedicated, admins see every top-level group, as on the Admin area Orbit page. Members see the state of each group and a note to ask an Owner. With the trial flag off, or on GitLab Self-Managed, no trial shows.

Related to gitlab-org/orbit/knowledge-graph#1364 (closed). The member view for subgroup members waits for !259468 (closed).

References

Screenshots or screen recordings

Before Happy path Bad path Disaster path
What changes for users
  • The tab polls only the index status while a group indexes, every 20 seconds, and not while the browser tab is hidden. The first poll comes 20 seconds after the page loads, because the page load already has the status. A poll never calls CustomersDot.
  • The page shows 10 groups at a time, the limit of the trial field.
  • View usage quotas shows for groups that are on. Contact sales shows for groups on the Free plan, whose trial ended, or whose trial credits ran out before the end date, and for groups that are off and not eligible.
  • A failed group keeps its selection, a Failed badge, and the reason. Try again shows only when the group can still run the action.
  • The Admin area Orbit table also shows the spinner and the area status.
  • The index status shows no "last indexed" time yet. Orbit does not return it.
What each recording covers

All runs use the local GDK with a local CustomersDot and a local Orbit (GKG), on GitLab.com mode unless noted. Index statuses and trial states are real unless noted.

  • Before: Your work > Orbit on master has Overview, Schema, and Query editor only.
  • Happy path: groups in each state, the area popover on hover and focus, turn on 2 groups (each with its own trial), the result alert, the poll moving a group from Queued to start to Indexed, turn off with confirmation, then the member view.
  • Bad path: a search with no match, the On filter, one of 2 groups rejected by CustomersDot (Failed badge, kept selection, Try again), both rejected with no Try again, trial ended, credits used up, not eligible, Free plan, and the orbit_trial flag off.
  • Disaster path: injected in the browser with real response shapes: the groups query returns 500, the network drops during a turn on, Orbit throttles a poll (the row keeps its status and the warning clears after the only indexing group is turned off), and Orbit is unreachable on the first load. CustomersDot unreachable is real.
  • Self-managed: The Admin area table with the spinner and the area popover, and the Group status tab with no trial.
More screenshots
View Screenshot
1440 shot-owner-1440
1024 shot-owner-1024
390 shot-owner-390
Dark shot-owner-1440-dark
Member shot-member-1440
Admin area admin-orbit-after
Edge cases
Case Screenshots
Free trial edge-1-free-trial
Trial ended, with Contact sales edge-2-trial-ended edge-2-trial-ended-390
Credits used up before the end date edge-3-credits-used-up
Not eligible edge-4-not-eligible
Free plan edge-4-free-plan
CustomersDot unreachable edge-5-cdot-unreachable
Indexing failed, with the area popover (injected) edge-6-indexing-failed-injected edge-6-indexing-failed-injected-390
Status unknown (injected) edge-7-status-unknown-injected
Status not available, with the warning (injected) edge-7-status-not-available-injected
Reindexing a group turned on long ago (injected time) edge-8-reindexing-injected-enabledAt
Just turned on, queued (injected) edge-9-just-turned-on-injected
More than 10 groups: page 1, page 2, select all edge-10-page-1 edge-10-page-2 edge-10-select-all
Search with no match, and the On filter with no group on edge-11-search-no-match edge-11-on-filter-empty
Owner of some groups, member of others edge-12-mixed-roles
Member of no top-level group edge-13-no-groups
Turn on: one group, groups with different trials (injected offer), a licensed group edge-14-one-group edge-14-different-trials-injected-offer edge-14-different-trials-injected-offer-390 edge-14-licensed-no-trial
Turn off confirmation edge-15-turn-off-modal
Failures with no Try again edge-16-no-try-again

How to set up and validate locally

  1. Sign in as an Owner of a top-level group with Orbit available.
  2. Go to http://127.0.0.1:3000/dashboard/orbit/group-status.
  3. On GitLab.com mode with a local CustomersDot, select a group that is off, then select Actions > Turn on Orbit.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Jean-Gabriel Doyon

Merge request reports

Loading
Loading