tree 84b47f94ccf92d8694f73573f8fc1ab794893f6d
parent e8e11c51fcf23521e3e88f50413153f5ef838d58
author Youssef Elghareeb <ghareeb@google.com> 1634760414 +0200
committer Youssef Elghareeb <ghareeb@google.com> 1634810986 +0200

Gate submit requirements with the experiment flag

We gate submit requirements for all legacy/non-legacy requirements and
open/merged changes with the existing enable_legacy_submit_requirements
feature flag.

Previously, submit requirement results were served by default by the
change API (if any SRs are defined in project.config). The experiment
flag meant:
* For open changes: evaluate legacy submit records using
SubmitRuleEvaluator, convert them to submit requirements and include
them with the submit requirement results.
* For merged changes: Load submit records from NoteDb and convert them
to submit requirements. Serve them as submit requirements.

The experiment also meant that, if both legacy and non-legacy non
requirements were found with the same name, and if their statuses are
matching, we return the non-legacy requirement (see Id5db11e3). If their
statuses are not matching, we return both entries.

In this change, we are redefining what the experiment is doing: If the
experiment flag is off, no submit requirements are served by the
backend. If it's on, we serve both legacy and non-legacy requirements.
This is to allow a safer rollout and to prevent disrupting users once we
start adding submit requirements to new gerrit installations. We are
also interested in returning legacy submit requirements anyway and
the UI can filter them out according to the needs.

We also renamed the experiment.

Change-Id: Ia3dc17da143df77045e77abcf8af79a982ad2cd7
