Add ability to duplicate the common metrics dashboard (backend)
What does this MR do?
Adds a new item to the dashboard dropdown to allow the user to duplicate the dashboard into their projects.
Add a modal to create a new dashboard based on a system dashboard, the user can provide file name and commit message for the new file.
Technical implementation
- Refactors the dropdown into a separate component to reduce the dashboard complexity.
- Separates the duplicate controller logic to a separate controller to make it more maintainable.
Screenshots
Form screen
Error messages
File name is missing | extension is not yml | file already exists |
---|---|---|
|
Recording of usage (slightly outdated)
Does this MR meet the acceptance criteria?
BE-FE Integration Tasks
-
@mrincon @mikolaj_wawrzyniak Define a better naming for endpoints or follow up to rename metrics: dashboards-endpoint
-
@mrincon Allow users to input the data of branch, etc... in a form and modal -
@mikolaj_wawrzyniak Refresh the list of dashboards after the call is successful (caching issue) -
@mrincon Add a spinner or waiting icon while the dashboard is being saved. -
@mikolaj_wawrzyniak Render default-branch
in the dashboard HTML via helpers. -
@mrincon Add default branch of the project to the modal from dashboard data (props). -
@mrincon Allow the user to select between master
and create a new branch. -
@mikolaj_wawrzyniak Update service or controller to improve the error message for an invalid branch
:There was an error creating the dashboard, branch name is invalid.
There was an error creating the dashboard, branch name already exists.
-
@mikolaj_wawrzyniak Update service or controller to improve the error message for an invalid file_name
:A file with this name already exists.
-
@mikolaj_wawrzyniak Validate the file name, so that it is a .yml
The file name should end in ".yml".
-
@mikolaj_wawrzyniak Make the commit_message
required and send an error message. -
@mikolaj_wawrzyniak Add validation to only allow new brach or existing default branch -
@mrincon Add a follow-up task to select an existing branch and change backend validation DONE: #196237 (closed) -
@mrincon Add a follow-up task to create a new MR from branch (and add checkbox in modal). DONE: #196236 (closed) -
@mrincon Send a default commit_message
when empty. -
@mikolaj_wawrzyniak Change message to A file with this name already exists
->A file with %{file_name} already exists in %{branch_name} branch
-
@mikolaj_wawrzyniak In the 201 response, reply with created dashboard entity and add a flash message with the link to the file in the IDE.
path: "config/prometheus/common_metrics.yml"
display_name: "Default"
default: true
system_dashboard: true
can_edit: false
project_blob_path: null
-
@mrincon Use the replied dashboard entity to redirect to the new page
Conformity
-
Changelog entry -
Documentation ([if required] (https://docs.gitlab.com/ee/development/documentation/workflow.html#when-documentation-is-required)) MR: !22904 (merged) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Closes #37238 (closed)
Edited by 🤖 GitLab Bot 🤖