Page MenuHomePhabricator

Allow installs to manage which cluster service new repositories allocate on
Open, NormalPublic


Currently, new repositories allocate on a random open cluster service. This is a reasonable rule when only one cluster service exists, or when multiple relatively homogenous cluster services exist, but potentially can not accommodate various reasonable cases where services may be distinguishable.

Two possible examples might be:

  • A "high redundancy" cluster for important repositories and a "low redundancy" cluster for noncritical repositories.
  • Regional clusters like "USWest" and "Antarctica" (see T10883 for some discussion).

(These aren't particularly strong examples -- we'd like to see good real-world motivations before pursuing changes here.)

The cleanest way to make this work is probably to make the repository form configurable in EditEngine, and let EditEngine prefill field values even if they aren't visible on the current page. This would potentially solve some other adjacent problems, too. Then this field could be present only when creating a new repository, not visible on the page, and inherit the proper value from the EditEngine config.

To the user, this would manifest as two options:

  • Create RepositoryNew High-Redundancy Repository
  • Create RepositoryNew Low-Redundancy Repository

Standard policy controls could let you restrict "high-redundancy" repositories to only the elite, or "Antartica" repositories to only penguins or whatever.

This is probably straightforward and would could also address use cases in T6722, but the real-world use cases for it aren't currently clear.