New policy editor gives 'Policy Management Project already exists' if initial form submission fails
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.
Summary
When schema validation fails for a new policy on a project which does not have a policy management project, subsequent submissions of the new policy form will give Policy Management Project already exists
. This bug can be worked around by going back to the policy list and then clicking the New Policy
button again.
Steps to reproduce
- Create a new project
- Go to
Security & Compliance
->Policies
- Click
New Policy
- Select
Scan Execution Policy
as the policy type - Enter an invalid policy like
foo: bar
- Submit and receive
Invalid policy type
- Submit again and receive
Security Policy project already exists.
- Error will continue appearing even when policy YAML is valid
What is the current bug behavior?
The backend tries to create another policy management project instead of using the one that it already created.
What is the expected correct behavior?
We should be able to submit the form with a valid policy without reloading the page.
Possible fixes
Either use the policy management project which was already created, or don't attempt to create the policy management project unless the policy is valid. Either way, we should probably do all policy validation first, before we attempt to create the policy management project.
Implementation
-
frontend update modifyPolicy
so that if it breaks AFTER it creates a policy project (at utils.js#L120 because of invalid yaml), that newly created policy project is retained and used for the next submission