Introduce group license compliance - Provide side panel data for list page - Backend
Parent issue: #202224 (closed)
Problem to solve
The work described in this issue is to provide the necessary data from the backend so that the following panels can be loaded in the frontend.
Implementation Plan:
-
Create a groups/licenses controller. -
Add an #index
action that serves the JSON below. -
Update/Create metrics dashboard to keep track of the time it takes to load this endpoint. -
Find a suitable worst case size for the max # of a projects that a group may have. -
Test out load times for the worst case scenario. -
Research/document opportunities to aggregate report data into de-normalized report tables.
The first iteration of the backend work will focus on aggregating the data from the in memory reports. We may need to utilize the reactive cache but we'll pay attention to worst case scenarios and look for opportunities to measure potential performance problems. We'll be mindful about areas where it may make sense to pre-compute or aggregate this data in flattened report structures that may possibly be stored in the database for the next iteration.
The initial implementation will provide relative paths to the configuration and project pages so that we can render the data needed for the side panel.
E.g.
GET /gitlab-org/gitlab/-/licenses.json
{
projects: [
{
id: 1,
project_path: '/-/projects/1/licenses`,
configuration_path: '/-/projects/1/security/configuration',
configured: true
},
{
id: 2,
project_path: '/-/projects/2/licenses`,
configuration_path: '/-/projects/1/security/configuration',
configured: false
},
]
}
Main issue:
This issue follows the sub-issue convention described in: