Skip to content

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

2020-01-07_18.14.55

Error messages

File name is missing extension is not yml file already exists
image image image
image

Recording of usage (slightly outdated)

zoom_0

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

Availability and Testing

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 🤖

Merge request reports