Geo: Implement frontend for Self-Service Framework replicables
<!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> *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.* <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> ## Introduction Along with building an amazing and powerful [Self-Service Framework](https://gitlab.com/groups/gitlab-org/-/epics/2161) we also need the ability to support it via our UI. This requires the UI to be flexible and generic. **Goal:** To have the ability to display a large amount of varying data types in a simple and consistent way. This requires us to have a unified way of presenting and consuming data. Currently Geo has **3 different** ways we consume and present data. This of course is contradictory to the **Goal** above. ### How Geo Consumes Data 1. **Type A (< 12.6)** - View is built specifically in HAML and served via Rails Controller 1. **Type B (12.6 - 13.0)** - View is built specifically in Vue and served via RESTful API 1. **Type C (> 13.0)** - View is built generically in Vue and served via GraphQL API ### Breakdown of currently supported Data Types | DataType | Type | | ------ | ------ | | Projects | Type A | | Uploads | Type A | | Designs | Type B | | Package Files | Type C | ### Proposal * [x] Create Generic Approach to Routing, Views, and GraphQL * [x] Scale Geo Node Status Bars * [ ] Convert Type A and Type B to Type C ## How ### Generalization * [x] [Support Parameterized Routing/Controller/Views for Replication](https://gitlab.com/gitlab-org/gitlab/-/issues/219315) * [x] [Support Parameterized Registries via GraphQL](https://gitlab.com/gitlab-org/gitlab/-/issues/219402) * [ ] [Unify Replicable Type Variables](https://gitlab.com/gitlab-org/gitlab/-/issues/219942) ### Geo Node Status Bars ~backend - [x] [Provide generated list of Replicable Types to the Node Status Frontend](https://gitlab.com/gitlab-org/gitlab/-/issues/228700) - [x] [Scale Geo Status Endpoint to handle new SSF replicable types](https://gitlab.com/gitlab-org/gitlab/-/issues/219938) - [ ] [Replace new RESTful Geo Status Endpoint with GraphQL ](https://gitlab.com/gitlab-org/gitlab/-/issues/228718) ~frontend - [x] [Hook up new Geo Replicable List in Geo Nodes](https://gitlab.com/gitlab-org/gitlab/-/issues/228722) ### Geo Replicable (Designs) - Type B -> Type C * [ ] [Convert Designs API to GraphQL](https://gitlab.com/gitlab-org/gitlab/-/issues/219412) * [ ] [Remove RESTful support in Geo Replicables](https://gitlab.com/gitlab-org/gitlab/-/issues/219417) ### Geo Replicable (Projects) - Type A -> Type C * [ ] [Create Projects Endpoint in GraphQL](https://gitlab.com/gitlab-org/gitlab/-/issues/219413) * [ ] [Convert Projects from HAML -> Vue](https://gitlab.com/gitlab-org/gitlab/-/issues/216319) ### Geo Replicable (Uploads) - Type A -> Type C * [ ] [Create Uploads Endpoint in GraphQL](https://gitlab.com/gitlab-org/gitlab/-/issues/219415) * [ ] [Convert Uploads from HAML -> Vue](https://gitlab.com/gitlab-org/gitlab/-/issues/216317)
epic