Skip to content

Show Banner When there is a Seat Overage

What does this MR do and why?

Show an alert banner when there is a seat overage.

When block seat overages is enabled, and there are more members in the namespace than there are seats in the subscription, display a banner alert informing that the namespace is now read-only.

Inform owners that they can unlock the namespace by reducing the number of members or buying more seats.

Inform non-owners to contact their group owner.

These banners are based on similar banners that appear when the Free User Limits are exceeded. They are largely the same banners with small adjustments in text and buttons.

Block seat overages is behind a feature flag.

Issue: https://gitlab.com/gitlab-org/gitlab/-/issues/444892

MR acceptance checklist

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

Screenshots

Owner banner on a group page

Screenshot_2024-03-29_at_12.12.53_PM

Clicking the read-only link takes the owner to the Read-only namespaces documentation

Clicking Manage Members takes owner to the Seats tab on the Usage Quotas page

Screenshot_2024-03-29_at_12.21.17_PM

Owner banner on a project page

Screenshot_2024-03-29_at_12.21.45_PM

Non-owner banner on a group page

Screenshot_2024-03-29_at_12.38.17_PM

Non-owner banner on a project page

Screenshot_2024-03-29_at_12.38.26_PM

For Comparison With Free User Limits Banners

Owner banner

Screenshot_2024-03-26_at_5.02.04_PM

Non-owner banner

Screenshot_2024-03-26_at_5.03.31_PM

How to set up and validate locally

  1. Add more billable members to your group than there are seats in the subscription.
  2. Enable the feature flag: Feature.enable(:block_seat_overages, group)
  3. Run in simulating saas mode.
  4. The namespace should display read-only banners as seen in the screenshots above.

Note that because this uses reactive caching, the banners may not load on the initial page load, and you need to make sure that your rails background jobs are working locally.

Edited by Jason Goodman

Merge request reports