From dc43829d734411a1a1f31c92c384baa6dca8e6b0 Mon Sep 17 00:00:00 2001 From: Mariia Solodovnik Date: Thu, 23 Mar 2023 11:10:42 +0200 Subject: [PATCH 1/5] Add geo_sites API documentation --- doc/api/geo_sites.md | 1017 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1017 insertions(+) create mode 100644 doc/api/geo_sites.md diff --git a/doc/api/geo_sites.md b/doc/api/geo_sites.md new file mode 100644 index 00000000000000..298f303c37bcc9 --- /dev/null +++ b/doc/api/geo_sites.md @@ -0,0 +1,1017 @@ +--- +stage: Systems +group: Geo +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments +--- + +# Geo Sites API **(PREMIUM SELF)** + +To interact with Geo site endpoints, you must authenticate yourself as an +administrator. + +## Create a new Geo site + +Creates a new Geo site. + +```plaintext +POST /geo_sites +``` + +```shell +curl --header "PRIVATE-TOKEN: " "https://primary.example.com/api/v4/geo_sites" \ + --request POST \ + -d "name=himynameissomething" \ + -d "url=https://another-node.example.com/" +``` + +| Attribute | Type | Required | Description | +| ----------------------------| ------- | -------- |--------------------------------------------------------------------------------------------------------------------------------------------------------| +| `primary` | boolean | no | Specifying whether this site should be primary. Defaults to false. | +| `enabled` | boolean | no | Flag indicating if the Geo site is enabled. Defaults to true. | +| `name` | string | yes | The unique identifier for the Geo site. Must match `geo_node_name` if it is set in `gitlab.rb`, otherwise it must match `external_url` | +| `url` | string | yes | The user-facing URL for the Geo site. | +| `internal_url` | string | no | The URL defined on the primary site that secondary sites should use to contact it. Returns `url` if not set. | +| `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary site. Defaults to 10. | +| `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary site. Defaults to 25. | +| `verification_max_capacity` | integer | no | Control the maximum concurrency of repository verification for this site. Defaults to 100. | +| `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this site. Defaults to 10. | +| `sync_object_storage` | boolean | no | Flag indicating if the secondary Geo site should replicate blobs in Object Storage. Defaults to false. | +| `selective_sync_type` | string | no | Limit syncing to only specific groups or shards. Valid values: `"namespaces"`, `"shards"`, or `null`. | +| `selective_sync_shards` | array | no | The repository storage for the projects synced if `selective_sync_type` == `shards`. | +| `selective_sync_namespace_ids` | array | no | The IDs of groups that should be synced, if `selective_sync_type` == `namespaces`. | +| `minimum_reverification_interval` | integer | no | The interval (in days) in which the repository verification is valid. Once expired, it is reverified. This has no effect when set on a secondary site. | + +Example response: + +```json +{ + "id": 3, + "name": "Test Site 1", + "url": "https://secondary.example.com/", + "internal_url": "https://secondary.example.com/", + "primary": false, + "enabled": true, + "current": false, + "files_max_capacity": 10, + "repos_max_capacity": 25, + "verification_max_capacity": 100, + "selective_sync_type": "namespaces", + "selective_sync_shards": [], + "selective_sync_namespace_ids": [1, 25], + "minimum_reverification_interval": 7, + "container_repositories_max_capacity": 10, + "sync_object_storage": false, + "clone_protocol": "http", + "web_edit_url": "https://primary.example.com/admin/geo/sites/3/edit", + "web_geo_projects_url": "https://secondary.example.com/admin/geo/projects", + "web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/3/replication/lfs_objects", + "_links": { + "self": "https://primary.example.com/api/v4/geo_sites/3", + "status": "https://primary.example.com/api/v4/geo_sites/3/status", + "repair": "https://primary.example.com/api/v4/geo_sites/3/repair" + } +} +``` + +WARNING: +The `web_geo_projects_url` attribute is in its end-of-life process. It is [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) +in GitLab 14.9. + +## Retrieve configuration about all Geo sites + +```plaintext +GET /geo_sites +``` + +```shell +curl --header "PRIVATE-TOKEN: " "https://primary.example.com/api/v4/geo_sites" +``` + +Example response: + +```json +[ + { + "id": 1, + "name": "us-site", + "url": "https://primary.example.com/", + "internal_url": "https://internal.example.com/", + "primary": true, + "enabled": true, + "current": true, + "files_max_capacity": 10, + "repos_max_capacity": 25, + "container_repositories_max_capacity": 10, + "verification_max_capacity": 100, + "selective_sync_type": "namespaces", + "selective_sync_shards": [], + "selective_sync_namespace_ids": [1, 25], + "minimum_reverification_interval": 7, + "clone_protocol": "http", + "web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit", + "_links": { + "self": "https://primary.example.com/api/v4/geo_sites/1", + "status":"https://primary.example.com/api/v4/geo_sites/1/status", + "repair":"https://primary.example.com/api/v4/geo_sites/1/repair" + } + }, + { + "id": 2, + "name": "cn-site", + "url": "https://secondary.example.com/", + "internal_url": "https://secondary.example.com/", + "primary": false, + "enabled": true, + "current": false, + "files_max_capacity": 10, + "repos_max_capacity": 25, + "container_repositories_max_capacity": 10, + "verification_max_capacity": 100, + "selective_sync_type": "namespaces", + "selective_sync_shards": [], + "selective_sync_namespace_ids": [1, 25], + "minimum_reverification_interval": 7, + "sync_object_storage": true, + "clone_protocol": "http", + "web_edit_url": "https://primary.example.com/admin/geo/sites/2/edit", + "web_geo_projects_url": "https://secondary.example.com/admin/geo/projects", + "web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/2/replication/lfs_objects", + "_links": { + "self":"https://primary.example.com/api/v4/geo_sites/2", + "status":"https://primary.example.com/api/v4/geo_sites/2/status", + "repair":"https://primary.example.com/api/v4/geo_sites/2/repair" + } + } +] +``` + +WARNING: +The `web_geo_projects_url` attribute is in its end-of-life process. It is [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) +in GitLab 14.9. + +## Retrieve configuration about a specific Geo site + +```plaintext +GET /geo_sites/:id +``` + +```shell +curl --header "PRIVATE-TOKEN: " "https://primary.example.com/api/v4/geo_sites/1" +``` + +Example response: + +```json +{ + "id": 1, + "name": "us-site", + "url": "https://primary.example.com/", + "internal_url": "https://primary.example.com/", + "primary": true, + "enabled": true, + "current": true, + "files_max_capacity": 10, + "repos_max_capacity": 25, + "container_repositories_max_capacity": 10, + "verification_max_capacity": 100, + "selective_sync_type": "namespaces", + "selective_sync_shards": [], + "selective_sync_namespace_ids": [1, 25], + "minimum_reverification_interval": 7, + "clone_protocol": "http", + "web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit", + "_links": { + "self": "https://primary.example.com/api/v4/geo_sites/1", + "status":"https://primary.example.com/api/v4/geo_sites/1/status", + "repair":"https://primary.example.com/api/v4/geo_sites/1/repair" + } +} +``` + +## Edit a Geo site + +Updates settings of an existing Geo site. + +_This can only be run against a primary Geo site._ + +```plaintext +PUT /geo_sites/:id +``` + +| Attribute | Type | Required | Description | +|-----------------------------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------| +| `id` | integer | yes | The ID of the Geo site. | +| `enabled` | boolean | no | Flag indicating if the Geo site is enabled. | +| `name` | string | no | The unique identifier for the Geo site. Must match `geo_node_name` if it is set in `gitlab.rb`, otherwise it must match `external_url`. | +| `url` | string | no | The user-facing URL of the Geo site. | +| `internal_url` | string | no | The URL defined on the primary site that secondary sites should use to contact it. Returns `url` if not set. | +| `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary site. | +| `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary site. | +| `verification_max_capacity` | integer | no | Control the maximum concurrency of verification for this site. | +| `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this site. | +| `sync_object_storage` | boolean | no | Flag indicating if the secondary Geo site should replicate blobs in Object Storage. | +| `selective_sync_type` | string | no | Limit syncing to only specific groups or shards. Valid values: `"namespaces"`, `"shards"`, or `null`. | +| `selective_sync_shards` | array | no | The repository storage for the projects synced if `selective_sync_type` == `shards`. | +| `selective_sync_namespace_ids` | array | no | The IDs of groups that should be synced, if `selective_sync_type` == `namespaces`. | +| `minimum_reverification_interval` | integer | no | The interval (in days) in which the repository verification is valid. Once expired, it is reverified. This has no effect when set on a secondary site. | + +Example response: + +```json +{ + "id": 1, + "name": "cn-site", + "url": "https://secondary.example.com/", + "internal_url": "https://secondary.example.com/", + "primary": false, + "enabled": true, + "current": true, + "files_max_capacity": 10, + "repos_max_capacity": 25, + "container_repositories_max_capacity": 10, + "verification_max_capacity": 100, + "selective_sync_type": "namespaces", + "selective_sync_shards": [], + "selective_sync_namespace_ids": [1, 25], + "minimum_reverification_interval": 7, + "sync_object_storage": true, + "clone_protocol": "http", + "web_edit_url": "https://primary.example.com/admin/geo/sites/2/edit", + "web_geo_projects_url": "https://secondary.example.com/admin/geo/projects", + "web_geo_replication_details_url": "https://secondary.example.com/admin/geo/sites/2/replication/lfs_objects", + "_links": { + "self":"https://primary.example.com/api/v4/geo_sites/2", + "status":"https://primary.example.com/api/v4/geo_sites/2/status", + "repair":"https://primary.example.com/api/v4/geo_sites/2/repair" + } +} +``` + +WARNING: +The `web_geo_projects_url` attribute is in its end-of-life process. It is [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) +in GitLab 14.9. + +## Delete a Geo site + +Removes the Geo site. + +```plaintext +DELETE /geo_sites/:id +``` + +| Attribute | Type | Required | Description | +|-----------|---------|----------|-------------------------| +| `id` | integer | yes | The ID of the Geo site. | + +## Repair a Geo site + +To repair the OAuth authentication of a Geo site. + +_This can only be run against a primary Geo site._ + +```plaintext +POST /geo_sites/:id/repair +``` + +Example response: + +```json +{ + "id": 1, + "name": "us-site", + "url": "https://primary.example.com/", + "internal_url": "https://primary.example.com/", + "primary": true, + "enabled": true, + "current": true, + "files_max_capacity": 10, + "repos_max_capacity": 25, + "container_repositories_max_capacity": 10, + "verification_max_capacity": 100, + "clone_protocol": "http", + "web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit", + "_links": { + "self": "https://primary.example.com/api/v4/geo_sites/1", + "status":"https://primary.example.com/api/v4/geo_sites/1/status", + "repair":"https://primary.example.com/api/v4/geo_sites/1/repair" + } +} +``` + +## Retrieve status about all Geo sites + +```plaintext +GET /geo_sites/status +``` + +```shell +curl --header "PRIVATE-TOKEN: " "https://primary.example.com/api/v4/geo_sites/status" +``` + +Example response: + +```json +[ + { + "geo_node_id": 1, + "healthy": true, + "health": "Healthy", + "health_status": "Healthy", + "missing_oauth_application": false, + "db_replication_lag_seconds": null, + "lfs_objects_count": 5, + "lfs_objects_checksum_total_count": 5, + "lfs_objects_checksummed_count": 5, + "lfs_objects_checksum_failed_count": 0, + "lfs_objects_synced_count": null, + "lfs_objects_failed_count": null, + "lfs_objects_registry_count": null, + "lfs_objects_verification_total_count": null, + "lfs_objects_verified_count": null, + "lfs_objects_verification_failed_count": null, + "lfs_objects_synced_in_percentage": "0.00%", + "lfs_objects_verified_in_percentage": "0.00%", + "job_artifacts_count": 2, + "job_artifacts_synced_count": null, + "job_artifacts_failed_count": null, + "job_artifacts_synced_missing_on_primary_count": 0, + "job_artifacts_synced_in_percentage": "0.00%", + "design_repositories_count": 3, + "design_repositories_synced_count": null, + "design_repositories_failed_count": null, + "design_repositories_synced_in_percentage": "0.00%", + "projects_count": 41, + "repositories_count": 41, + "repositories_failed_count": null, + "repositories_synced_count": null, + "repositories_synced_in_percentage": "0.00%", + "wikis_count": 41, + "wikis_failed_count": null, + "wikis_synced_count": null, + "wikis_synced_in_percentage": "0.00%", + "replication_slots_count": 1, + "replication_slots_used_count": 1, + "replication_slots_used_in_percentage": "100.00%", + "replication_slots_max_retained_wal_bytes": 0, + "repositories_checked_count": 20, + "repositories_checked_failed_count": 20, + "repositories_checked_in_percentage": "100.00%", + "repositories_checksummed_count": 20, + "repositories_checksum_failed_count": 5, + "repositories_checksummed_in_percentage": "48.78%", + "wikis_checksummed_count": 10, + "wikis_checksum_failed_count": 3, + "wikis_checksummed_in_percentage": "24.39%", + "repositories_verified_count": 20, + "repositories_verification_failed_count": 5, + "repositories_verified_in_percentage": "48.78%", + "repositories_checksum_mismatch_count": 3, + "wikis_verified_count": 10, + "wikis_verification_failed_count": 3, + "wikis_verified_in_percentage": "24.39%", + "wikis_checksum_mismatch_count": 1, + "repositories_retrying_verification_count": 1, + "wikis_retrying_verification_count": 3, + "last_event_id": 23, + "last_event_timestamp": 1509681166, + "cursor_last_event_id": null, + "cursor_last_event_timestamp": 0, + "last_successful_status_check_timestamp": 1510125024, + "version": "10.3.0", + "revision": "33d33a096a", + "merge_request_diffs_count": 5, + "merge_request_diffs_checksum_total_count": 5, + "merge_request_diffs_checksummed_count": 5, + "merge_request_diffs_checksum_failed_count": 0, + "merge_request_diffs_synced_count": null, + "merge_request_diffs_failed_count": null, + "merge_request_diffs_registry_count": null, + "merge_request_diffs_verification_total_count": null, + "merge_request_diffs_verified_count": null, + "merge_request_diffs_verification_failed_count": null, + "merge_request_diffs_synced_in_percentage": "0.00%", + "merge_request_diffs_verified_in_percentage": "0.00%", + "package_files_count": 5, + "package_files_checksum_total_count": 5, + "package_files_checksummed_count": 5, + "package_files_checksum_failed_count": 0, + "package_files_synced_count": null, + "package_files_failed_count": null, + "package_files_registry_count": null, + "package_files_verification_total_count": null, + "package_files_verified_count": null, + "package_files_verification_failed_count": null, + "package_files_synced_in_percentage": "0.00%", + "package_files_verified_in_percentage": "0.00%", + "pages_deployments_count": 5, + "pages_deployments_checksum_total_count": 5, + "pages_deployments_checksummed_count": 5, + "pages_deployments_checksum_failed_count": 0, + "pages_deployments_synced_count": null, + "pages_deployments_failed_count": null, + "pages_deployments_registry_count": null, + "pages_deployments_verification_total_count": null, + "pages_deployments_verified_count": null, + "pages_deployments_verification_failed_count": null, + "pages_deployments_synced_in_percentage": "0.00%", + "pages_deployments_verified_in_percentage": "0.00%", + "terraform_state_versions_count": 5, + "terraform_state_versions_checksum_total_count": 5, + "terraform_state_versions_checksummed_count": 5, + "terraform_state_versions_checksum_failed_count": 0, + "terraform_state_versions_synced_count": null, + "terraform_state_versions_failed_count": null, + "terraform_state_versions_registry_count": null, + "terraform_state_versions_verification_total_count": null, + "terraform_state_versions_verified_count": null, + "terraform_state_versions_verification_failed_count": null, + "terraform_state_versions_synced_in_percentage": "0.00%", + "terraform_state_versions_verified_in_percentage": "0.00%", + "snippet_repositories_count": 5, + "snippet_repositories_checksum_total_count": 5, + "snippet_repositories_checksummed_count": 5, + "snippet_repositories_checksum_failed_count": 0, + "snippet_repositories_synced_count": null, + "snippet_repositories_failed_count": null, + "snippet_repositories_registry_count": null, + "snippet_repositories_verification_total_count": null, + "snippet_repositories_verified_count": null, + "snippet_repositories_verification_failed_count": null, + "snippet_repositories_synced_in_percentage": "0.00%", + "snippet_repositories_verified_in_percentage": "0.00%", + "project_wiki_repositories_count": 3, + "project_wiki_repositories_checksum_total_count": 3, + "project_wiki_repositories_checksummed_count": 3, + "project_wiki_repositories_checksum_failed_count": 0, + "project_wiki_repositories_synced_count": null, + "project_wiki_repositories_failed_count": null, + "project_wiki_repositories_registry_count": null, + "project_wiki_repositories_verification_total_count": null, + "project_wiki_repositories_verified_count": null, + "project_wiki_repositories_verification_failed_count": null, + "project_wiki_repositories_synced_in_percentage": "0.00%", + "project_wiki_repositories_verified_in_percentage": "0.00%", + "group_wiki_repositories_count": 5, + "group_wiki_repositories_checksum_total_count": 5, + "group_wiki_repositories_checksummed_count": 5, + "group_wiki_repositories_checksum_failed_count": 0, + "group_wiki_repositories_synced_count": null, + "group_wiki_repositories_failed_count": null, + "group_wiki_repositories_registry_count": null, + "group_wiki_repositories_verification_total_count": null, + "group_wiki_repositories_verified_count": null, + "group_wiki_repositories_verification_failed_count": null, + "group_wiki_repositories_synced_in_percentage": "0.00%", + "group_wiki_repositories_verified_in_percentage": "0.00%", + "pipeline_artifacts_count": 5, + "pipeline_artifacts_checksum_total_count": 5, + "pipeline_artifacts_checksummed_count": 5, + "pipeline_artifacts_checksum_failed_count": 0, + "pipeline_artifacts_synced_count": null, + "pipeline_artifacts_failed_count": null, + "pipeline_artifacts_registry_count": null, + "pipeline_artifacts_verification_total_count": null, + "pipeline_artifacts_verified_count": null, + "pipeline_artifacts_verification_failed_count": null, + "pipeline_artifacts_synced_in_percentage": "0.00%", + "pipeline_artifacts_verified_in_percentage": "0.00%", + "uploads_count": 5, + "uploads_synced_count": null, + "uploads_failed_count": 0, + "uploads_registry_count": null, + "uploads_synced_in_percentage": "0.00%", + "uploads_checksum_total_count": 5, + "uploads_checksummed_count": 5, + "uploads_checksum_failed_count": null, + "uploads_verification_total_count": null, + "uploads_verified_count": null, + "uploads_verification_failed_count": null, + "uploads_verified_in_percentage": "0.00%", + "job_artifacts_count": 5, + "job_artifacts_checksum_total_count": 5, + "job_artifacts_checksummed_count": 5, + "job_artifacts_checksum_failed_count": 0, + "job_artifacts_synced_count": 5, + "job_artifacts_failed_count": 0, + "job_artifacts_registry_count": 5, + "job_artifacts_verification_total_count": 5, + "job_artifacts_verified_count": 5, + "job_artifacts_verification_failed_count": 0, + "job_artifacts_synced_in_percentage": "100.00%", + "job_artifacts_verified_in_percentage": "100.00%", + "job_artifacts_synced_missing_on_primary_count": 0, + "ci_secure_files_count": 5, + "ci_secure_files_checksum_total_count": 5, + "ci_secure_files_checksummed_count": 5, + "ci_secure_files_checksum_failed_count": 0, + "ci_secure_files_synced_count": 5, + "ci_secure_files_failed_count": 0, + "ci_secure_files_registry_count": 5, + "ci_secure_files_verification_total_count": 5, + "ci_secure_files_verified_count": 5, + "ci_secure_files_verification_failed_count": 0, + "ci_secure_files_synced_in_percentage": "100.00%", + "ci_secure_files_verified_in_percentage": "100.00%", + "ci_secure_files_synced_missing_on_primary_count": 0, + "dependency_proxy_blobs_count": 5, + "dependency_proxy_blobs_checksum_total_count": 5, + "dependency_proxy_blobs_checksummed_count": 5, + "dependency_proxy_blobs_checksum_failed_count": 0, + "dependency_proxy_blobs_synced_count": 5, + "dependency_proxy_blobs_failed_count": 0, + "dependency_proxy_blobs_registry_count": 5, + "dependency_proxy_blobs_verification_total_count": 5, + "dependency_proxy_blobs_verified_count": 5, + "dependency_proxy_blobs_verification_failed_count": 0, + "dependency_proxy_blobs_synced_in_percentage": "100.00%", + "dependency_proxy_blobs_verified_in_percentage": "100.00%", + "dependency_proxy_blobs_synced_missing_on_primary_count": 0, + "container_repositories_count": 5, + "container_repositories_synced_count": 5, + "container_repositories_failed_count": 0, + "container_repositories_registry_count": 5, + "container_repositories_synced_in_percentage": "100.00%", + "container_repositories_synced_missing_on_primary_count": 0, + "container_repositories_checksum_total_count": 0, + "container_repositories_checksummed_count": 0, + "container_repositories_checksum_failed_count": 0, + "container_repositories_verification_total_count": 0, + "container_repositories_verified_count": 0, + "container_repositories_verification_failed_count": 0, + "container_repositories_verified_in_percentage": "100.00%", + "dependency_proxy_manifests_count": 5, + "dependency_proxy_manifests_checksum_total_count": 5, + "dependency_proxy_manifests_checksummed_count": 5, + "dependency_proxy_manifests_checksum_failed_count": 5, + "dependency_proxy_manifests_synced_count": 5, + "dependency_proxy_manifests_failed_count": 0, + "dependency_proxy_manifests_registry_count": 5, + "dependency_proxy_manifests_verification_total_count": 5, + "dependency_proxy_manifests_verified_count": 5, + "dependency_proxy_manifests_verification_failed_count": 5, + "dependency_proxy_manifests_synced_in_percentage": "100.00%", + "dependency_proxy_manifests_verified_in_percentage": "100.00%" + }, + { + "geo_node_id": 2, + "healthy": true, + "health": "Healthy", + "health_status": "Healthy", + "missing_oauth_application": false, + "db_replication_lag_seconds": 0, + "lfs_objects_count": 5, + "lfs_objects_checksum_total_count": 5, + "lfs_objects_checksummed_count": 5, + "lfs_objects_checksum_failed_count": 0, + "lfs_objects_synced_count": null, + "lfs_objects_failed_count": null, + "lfs_objects_registry_count": null, + "lfs_objects_verification_total_count": null, + "lfs_objects_verified_count": null, + "lfs_objects_verification_failed_count": null, + "lfs_objects_synced_in_percentage": "0.00%", + "lfs_objects_verified_in_percentage": "0.00%", + "job_artifacts_count": 2, + "job_artifacts_synced_count": 1, + "job_artifacts_failed_count": 1, + "job_artifacts_synced_missing_on_primary_count": 0, + "job_artifacts_synced_in_percentage": "50.00%", + "design_repositories_count": 3, + "design_repositories_synced_count": null, + "design_repositories_failed_count": null, + "design_repositories_synced_in_percentage": "0.00%", + "projects_count": 41, + "repositories_count": 41, + "repositories_failed_count": 1, + "repositories_synced_count": 40, + "repositories_synced_in_percentage": "97.56%", + "wikis_count": 41, + "wikis_failed_count": 0, + "wikis_synced_count": 41, + "wikis_synced_in_percentage": "100.00%", + "replication_slots_count": null, + "replication_slots_used_count": null, + "replication_slots_used_in_percentage": "0.00%", + "replication_slots_max_retained_wal_bytes": null, + "repositories_checksummed_count": 20, + "repositories_checksum_failed_count": 5, + "repositories_checksummed_in_percentage": "48.78%", + "wikis_checksummed_count": 10, + "wikis_checksum_failed_count": 3, + "wikis_checksummed_in_percentage": "24.39%", + "repositories_verified_count": 20, + "repositories_verification_failed_count": 5, + "repositories_verified_in_percentage": "48.78%", + "repositories_checksum_mismatch_count": 3, + "wikis_verified_count": 10, + "wikis_verification_failed_count": 3, + "wikis_verified_in_percentage": "24.39%", + "wikis_checksum_mismatch_count": 1, + "repositories_retrying_verification_count": 4, + "wikis_retrying_verification_count": 2, + "repositories_checked_count": 5, + "repositories_checked_failed_count": 1, + "repositories_checked_in_percentage": "12.20%", + "last_event_id": 23, + "last_event_timestamp": 1509681166, + "cursor_last_event_id": 23, + "cursor_last_event_timestamp": 1509681166, + "last_successful_status_check_timestamp": 1510125024, + "version": "10.3.0", + "revision": "33d33a096a", + "merge_request_diffs_count": 5, + "merge_request_diffs_checksum_total_count": 5, + "merge_request_diffs_checksummed_count": 5, + "merge_request_diffs_checksum_failed_count": 0, + "merge_request_diffs_synced_count": 5, + "merge_request_diffs_failed_count": 0, + "merge_request_diffs_registry_count": 5, + "merge_request_diffs_verification_total_count": 5, + "merge_request_diffs_verified_count": 5, + "merge_request_diffs_verification_failed_count": 0, + "merge_request_diffs_synced_in_percentage": "100.00%", + "merge_request_diffs_verified_in_percentage": "100.00%", + "package_files_count": 5, + "package_files_checksum_total_count": 5, + "package_files_checksummed_count": 5, + "package_files_checksum_failed_count": 0, + "package_files_synced_count": 5, + "package_files_failed_count": 0, + "package_files_registry_count": 5, + "package_files_verification_total_count": 5, + "package_files_verified_count": 5, + "package_files_verification_failed_count": 0, + "package_files_synced_in_percentage": "100.00%", + "package_files_verified_in_percentage": "100.00%", + "terraform_state_versions_count": 5, + "terraform_state_versions_checksum_total_count": 5, + "terraform_state_versions_checksummed_count": 5, + "terraform_state_versions_checksum_failed_count": 0, + "terraform_state_versions_synced_count": 5, + "terraform_state_versions_failed_count": 0, + "terraform_state_versions_registry_count": 5, + "terraform_state_versions_verification_total_count": 5, + "terraform_state_versions_verified_count": 5, + "terraform_state_versions_verification_failed_count": 0, + "terraform_state_versions_synced_in_percentage": "100.00%", + "terraform_state_versions_verified_in_percentage": "100.00%", + "snippet_repositories_count": 5, + "snippet_repositories_checksum_total_count": 5, + "snippet_repositories_checksummed_count": 5, + "snippet_repositories_checksum_failed_count": 0, + "snippet_repositories_synced_count": 5, + "snippet_repositories_failed_count": 0, + "snippet_repositories_registry_count": 5, + "snippet_repositories_verification_total_count": 5, + "snippet_repositories_verified_count": 5, + "snippet_repositories_verification_failed_count": 0, + "snippet_repositories_synced_in_percentage": "100.00%", + "snippet_repositories_verified_in_percentage": "100.00%", + "group_wiki_repositories_count": 5, + "group_wiki_repositories_checksum_total_count": 5, + "group_wiki_repositories_checksummed_count": 5, + "group_wiki_repositories_checksum_failed_count": 0, + "group_wiki_repositories_synced_count": 5, + "group_wiki_repositories_failed_count": 0, + "group_wiki_repositories_registry_count": 5, + "group_wiki_repositories_verification_total_count": 5, + "group_wiki_repositories_verified_count": 5, + "group_wiki_repositories_verification_failed_count": 0, + "group_wiki_repositories_synced_in_percentage": "100.00%", + "group_wiki_repositories_verified_in_percentage": "100.00%", + "pipeline_artifacts_count": 5, + "pipeline_artifacts_checksum_total_count": 5, + "pipeline_artifacts_checksummed_count": 5, + "pipeline_artifacts_checksum_failed_count": 0, + "pipeline_artifacts_synced_count": 5, + "pipeline_artifacts_failed_count": 0, + "pipeline_artifacts_registry_count": 5, + "pipeline_artifacts_verification_total_count": 5, + "pipeline_artifacts_verified_count": 5, + "pipeline_artifacts_verification_failed_count": 0, + "pipeline_artifacts_synced_in_percentage": "100.00%", + "pipeline_artifacts_verified_in_percentage": "100.00%", + "uploads_count": 5, + "uploads_synced_count": null, + "uploads_failed_count": 0, + "uploads_registry_count": null, + "uploads_synced_in_percentage": "0.00%", + "uploads_checksum_total_count": 5, + "uploads_checksummed_count": 5, + "uploads_checksum_failed_count": null, + "uploads_verification_total_count": null, + "uploads_verified_count": null, + "uploads_verification_failed_count": null, + "uploads_verified_in_percentage": "0.00%", + "job_artifacts_count": 5, + "job_artifacts_checksum_total_count": 5, + "job_artifacts_checksummed_count": 5, + "job_artifacts_checksum_failed_count": 0, + "job_artifacts_synced_count": 5, + "job_artifacts_failed_count": 0, + "job_artifacts_registry_count": 5, + "job_artifacts_verification_total_count": 5, + "job_artifacts_verified_count": 5, + "job_artifacts_verification_failed_count": 0, + "job_artifacts_synced_in_percentage": "100.00%", + "job_artifacts_verified_in_percentage": "100.00%", + "job_artifacts_synced_missing_on_primary_count": 0, + "dependency_proxy_blobs_count": 5, + "dependency_proxy_blobs_checksum_total_count": 5, + "dependency_proxy_blobs_checksummed_count": 5, + "dependency_proxy_blobs_checksum_failed_count": 0, + "dependency_proxy_blobs_synced_count": 5, + "dependency_proxy_blobs_failed_count": 0, + "dependency_proxy_blobs_registry_count": 5, + "dependency_proxy_blobs_verification_total_count": 5, + "dependency_proxy_blobs_verified_count": 5, + "dependency_proxy_blobs_verification_failed_count": 0, + "dependency_proxy_blobs_synced_in_percentage": "100.00%", + "dependency_proxy_blobs_verified_in_percentage": "100.00%", + "dependency_proxy_blobs_synced_missing_on_primary_count": 0, + "container_repositories_count": 5, + "container_repositories_synced_count": 5, + "container_repositories_failed_count": 0, + "container_repositories_registry_count": 5, + "container_repositories_synced_in_percentage": "100.00%", + "container_repositories_synced_missing_on_primary_count": 0, + "container_repositories_checksum_total_count": 0, + "container_repositories_checksummed_count": 0, + "container_repositories_checksum_failed_count": 0, + "container_repositories_verification_total_count": 0, + "container_repositories_verified_count": 0, + "container_repositories_verification_failed_count": 0, + "container_repositories_verified_in_percentage": "100.00%", + "dependency_proxy_manifests_count": 5, + "dependency_proxy_manifests_checksum_total_count": 5, + "dependency_proxy_manifests_checksummed_count": 5, + "dependency_proxy_manifests_checksum_failed_count": 5, + "dependency_proxy_manifests_synced_count": 5, + "dependency_proxy_manifests_failed_count": 0, + "dependency_proxy_manifests_registry_count": 5, + "dependency_proxy_manifests_verification_total_count": 5, + "dependency_proxy_manifests_verified_count": 5, + "dependency_proxy_manifests_verification_failed_count": 5, + "dependency_proxy_manifests_synced_in_percentage": "100.00%", + "dependency_proxy_manifests_verified_in_percentage": "100.00%" + } +] +``` + +## Retrieve status about a specific Geo site + +```plaintext +GET /geo_sites/:id/status +``` + +```shell +curl --header "PRIVATE-TOKEN: " "https://primary.example.com/api/v4/geo_sites/2/status" +``` + +Example response: + +```json +{ + "geo_node_id": 2, + "healthy": true, + "health": "Healthy", + "health_status": "Healthy", + "missing_oauth_application": false, + "db_replication_lag_seconds": 0, + "lfs_objects_count": 5, + "lfs_objects_checksum_total_count": 5, + "lfs_objects_checksummed_count": 5, + "lfs_objects_checksum_failed_count": 0, + "lfs_objects_synced_count": null, + "lfs_objects_failed_count": null, + "lfs_objects_registry_count": null, + "lfs_objects_verification_total_count": null, + "lfs_objects_verified_count": null, + "lfs_objects_verification_failed_count": null, + "lfs_objects_synced_in_percentage": "0.00%", + "lfs_objects_verified_in_percentage": "0.00%", + "job_artifacts_count": 2, + "job_artifacts_synced_count": 1, + "job_artifacts_failed_count": 1, + "job_artifacts_synced_missing_on_primary_count": 0, + "job_artifacts_synced_in_percentage": "50.00%", + "design_repositories_count": 3, + "design_repositories_synced_count": null, + "design_repositories_failed_count": null, + "design_repositories_synced_in_percentage": "0.00%", + "projects_count": 41, + "repositories_count": 41, + "repositories_failed_count": 1, + "repositories_synced_count": 40, + "repositories_synced_in_percentage": "97.56%", + "wikis_count": 41, + "wikis_failed_count": 0, + "wikis_synced_count": 41, + "wikis_synced_in_percentage": "100.00%", + "replication_slots_count": null, + "replication_slots_used_count": null, + "replication_slots_used_in_percentage": "0.00%", + "replication_slots_max_retained_wal_bytes": null, + "last_event_id": 23, + "last_event_timestamp": 1509681166, + "cursor_last_event_id": 23, + "cursor_last_event_timestamp": 1509681166, + "last_successful_status_check_timestamp": 1510125268, + "version": "10.3.0", + "revision": "33d33a096a", + "merge_request_diffs_count": 5, + "merge_request_diffs_checksum_total_count": 5, + "merge_request_diffs_checksummed_count": 5, + "merge_request_diffs_checksum_failed_count": 0, + "merge_request_diffs_synced_count": 5, + "merge_request_diffs_failed_count": 0, + "merge_request_diffs_registry_count": 5, + "merge_request_diffs_verification_total_count": 5, + "merge_request_diffs_verified_count": 5, + "merge_request_diffs_verification_failed_count": 0, + "merge_request_diffs_synced_in_percentage": "100.00%", + "merge_request_diffs_verified_in_percentage": "100.00%", + "package_files_count": 5, + "package_files_checksum_total_count": 5, + "package_files_checksummed_count": 5, + "package_files_checksum_failed_count": 0, + "package_files_synced_count": 5, + "package_files_failed_count": 0, + "package_files_registry_count": 5, + "package_files_verification_total_count": 5, + "package_files_verified_count": 5, + "package_files_verification_failed_count": 0, + "package_files_synced_in_percentage": "100.00%", + "package_files_verified_in_percentage": "100.00%", + "terraform_state_versions_count": 5, + "terraform_state_versions_checksum_total_count": 5, + "terraform_state_versions_checksummed_count": 5, + "terraform_state_versions_checksum_failed_count": 0, + "terraform_state_versions_synced_count": 5, + "terraform_state_versions_failed_count": 0, + "terraform_state_versions_registry_count": 5, + "terraform_state_versions_verification_total_count": 5, + "terraform_state_versions_verified_count": 5, + "terraform_state_versions_verification_failed_count": 0, + "terraform_state_versions_synced_in_percentage": "100.00%", + "terraform_state_versions_verified_in_percentage": "100.00%", + "snippet_repositories_count": 5, + "snippet_repositories_checksum_total_count": 5, + "snippet_repositories_checksummed_count": 5, + "snippet_repositories_checksum_failed_count": 0, + "snippet_repositories_synced_count": 5, + "snippet_repositories_failed_count": 0, + "snippet_repositories_registry_count": 5, + "snippet_repositories_verification_total_count": 5, + "snippet_repositories_verified_count": 5, + "snippet_repositories_verification_failed_count": 0, + "snippet_repositories_synced_in_percentage": "100.00%", + "snippet_repositories_verified_in_percentage": "100.00%", + "group_wiki_repositories_count": 5, + "group_wiki_repositories_checksum_total_count": 5, + "group_wiki_repositories_checksummed_count": 5, + "group_wiki_repositories_checksum_failed_count": 0, + "group_wiki_repositories_synced_count": 5, + "group_wiki_repositories_failed_count": 0, + "group_wiki_repositories_registry_count": 5, + "group_wiki_repositories_verification_total_count": 5, + "group_wiki_repositories_verified_count": 5, + "group_wiki_repositories_verification_failed_count": 0, + "group_wiki_repositories_synced_in_percentage": "100.00%", + "group_wiki_repositories_verified_in_percentage": "100.00%", + "pipeline_artifacts_count": 5, + "pipeline_artifacts_checksum_total_count": 5, + "pipeline_artifacts_checksummed_count": 5, + "pipeline_artifacts_checksum_failed_count": 0, + "pipeline_artifacts_synced_count": 5, + "pipeline_artifacts_failed_count": 0, + "pipeline_artifacts_registry_count": 5, + "pipeline_artifacts_verification_total_count": 5, + "pipeline_artifacts_verified_count": 5, + "pipeline_artifacts_verification_failed_count": 0, + "pipeline_artifacts_synced_in_percentage": "100.00%", + "pipeline_artifacts_verified_in_percentage": "100.00%", + "uploads_count": 5, + "uploads_synced_count": null, + "uploads_failed_count": 0, + "uploads_registry_count": null, + "uploads_synced_in_percentage": "0.00%", + "uploads_checksum_total_count": 5, + "uploads_checksummed_count": 5, + "uploads_checksum_failed_count": null, + "uploads_verification_total_count": null, + "uploads_verified_count": null, + "uploads_verification_failed_count": null, + "uploads_verified_in_percentage": "0.00%", + "job_artifacts_count": 5, + "job_artifacts_checksum_total_count": 5, + "job_artifacts_checksummed_count": 5, + "job_artifacts_checksum_failed_count": 0, + "job_artifacts_synced_count": 5, + "job_artifacts_failed_count": 0, + "job_artifacts_registry_count": 5, + "job_artifacts_verification_total_count": 5, + "job_artifacts_verified_count": 5, + "job_artifacts_verification_failed_count": 0, + "job_artifacts_synced_in_percentage": "100.00%", + "job_artifacts_verified_in_percentage": "100.00%", + "job_artifacts_synced_missing_on_primary_count": 0, + "ci_secure_files_count": 5, + "ci_secure_files_checksum_total_count": 5, + "ci_secure_files_checksummed_count": 5, + "ci_secure_files_checksum_failed_count": 0, + "ci_secure_files_synced_count": 5, + "ci_secure_files_failed_count": 0, + "ci_secure_files_registry_count": 5, + "ci_secure_files_verification_total_count": 5, + "ci_secure_files_verified_count": 5, + "ci_secure_files_verification_failed_count": 0, + "ci_secure_files_synced_in_percentage": "100.00%", + "ci_secure_files_verified_in_percentage": "100.00%", + "ci_secure_files_synced_missing_on_primary_count": 0, + "dependency_proxy_blobs_count": 5, + "dependency_proxy_blobs_checksum_total_count": 5, + "dependency_proxy_blobs_checksummed_count": 5, + "dependency_proxy_blobs_checksum_failed_count": 0, + "dependency_proxy_blobs_synced_count": 5, + "dependency_proxy_blobs_failed_count": 0, + "dependency_proxy_blobs_registry_count": 5, + "dependency_proxy_blobs_verification_total_count": 5, + "dependency_proxy_blobs_verified_count": 5, + "dependency_proxy_blobs_verification_failed_count": 0, + "dependency_proxy_blobs_synced_in_percentage": "100.00%", + "dependency_proxy_blobs_verified_in_percentage": "100.00%", + "dependency_proxy_blobs_synced_missing_on_primary_count": 0, + "container_repositories_count": 5, + "container_repositories_synced_count": 5, + "container_repositories_failed_count": 0, + "container_repositories_registry_count": 5, + "container_repositories_synced_in_percentage": "100.00%", + "container_repositories_synced_missing_on_primary_count": 0, + "container_repositories_checksum_total_count": 0, + "container_repositories_checksummed_count": 0, + "container_repositories_checksum_failed_count": 0, + "container_repositories_verification_total_count": 0, + "container_repositories_verified_count": 0, + "container_repositories_verification_failed_count": 0, + "container_repositories_verified_in_percentage": "100.00%", + "dependency_proxy_manifests_count": 5, + "dependency_proxy_manifests_checksum_total_count": 5, + "dependency_proxy_manifests_checksummed_count": 5, + "dependency_proxy_manifests_checksum_failed_count": 5, + "dependency_proxy_manifests_synced_count": 5, + "dependency_proxy_manifests_failed_count": 0, + "dependency_proxy_manifests_registry_count": 5, + "dependency_proxy_manifests_verification_total_count": 5, + "dependency_proxy_manifests_verified_count": 5, + "dependency_proxy_manifests_verification_failed_count": 5, + "dependency_proxy_manifests_synced_in_percentage": "100.00%", + "dependency_proxy_manifests_verified_in_percentage": "100.00%" +} +``` + +NOTE: +The `health_status` parameter can only be in an "Healthy" or "Unhealthy" state, while the `health` parameter can be empty, "Healthy", or contain the actual error message. + +## Retrieve project sync or verification failures that occurred on the current site + +This only works on a secondary site. + +```plaintext +GET /geo_sites/current/failures +``` + +| Attribute | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `type` | string | no | Type of failed objects (`repository`/`wiki`) | +| `failure_type` | string | no | Type of failures (`sync`/`checksum_mismatch`/`verification`) | + +This endpoint uses [Pagination](rest/index.md#pagination). + +```shell +curl --header "PRIVATE-TOKEN: " "https://primary.example.com/api/v4/geo_sites/current/failures" +``` + +Example response: + +```json +[ + { + "project_id": 3, + "last_repository_synced_at": "2017-10-31 14:25:55 UTC", + "last_repository_successful_sync_at": "2017-10-31 14:26:04 UTC", + "last_wiki_synced_at": "2017-10-31 14:26:04 UTC", + "last_wiki_successful_sync_at": "2017-10-31 14:26:11 UTC", + "repository_retry_count": null, + "wiki_retry_count": 1, + "last_repository_sync_failure": null, + "last_wiki_sync_failure": "Error syncing Wiki repository", + "last_repository_verification_failure": "", + "last_wiki_verification_failure": "", + "repository_verification_checksum_sha": "da39a3ee5e6b4b0d32e5bfef9a601890afd80709", + "wiki_verification_checksum_sha": "da39a3ee5e6b4b0d3255bfef9ef0189aafd80709", + "repository_checksum_mismatch": false, + "wiki_checksum_mismatch": false + } +] +``` -- GitLab From 95fbbc565b6b9d9484b20f98f80d135775194758 Mon Sep 17 00:00:00 2001 From: Mariia Solodovnik Date: Fri, 21 Apr 2023 23:01:44 +0300 Subject: [PATCH 2/5] Remove duplicate params, re-format tables --- doc/api/geo_sites.md | 87 ++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 51 deletions(-) diff --git a/doc/api/geo_sites.md b/doc/api/geo_sites.md index 298f303c37bcc9..c57222de8071e9 100644 --- a/doc/api/geo_sites.md +++ b/doc/api/geo_sites.md @@ -24,22 +24,22 @@ curl --header "PRIVATE-TOKEN: " "https://primary.example.com/ -d "url=https://another-node.example.com/" ``` -| Attribute | Type | Required | Description | -| ----------------------------| ------- | -------- |--------------------------------------------------------------------------------------------------------------------------------------------------------| -| `primary` | boolean | no | Specifying whether this site should be primary. Defaults to false. | -| `enabled` | boolean | no | Flag indicating if the Geo site is enabled. Defaults to true. | -| `name` | string | yes | The unique identifier for the Geo site. Must match `geo_node_name` if it is set in `gitlab.rb`, otherwise it must match `external_url` | -| `url` | string | yes | The user-facing URL for the Geo site. | -| `internal_url` | string | no | The URL defined on the primary site that secondary sites should use to contact it. Returns `url` if not set. | -| `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary site. Defaults to 10. | -| `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary site. Defaults to 25. | -| `verification_max_capacity` | integer | no | Control the maximum concurrency of repository verification for this site. Defaults to 100. | -| `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this site. Defaults to 10. | -| `sync_object_storage` | boolean | no | Flag indicating if the secondary Geo site should replicate blobs in Object Storage. Defaults to false. | -| `selective_sync_type` | string | no | Limit syncing to only specific groups or shards. Valid values: `"namespaces"`, `"shards"`, or `null`. | -| `selective_sync_shards` | array | no | The repository storage for the projects synced if `selective_sync_type` == `shards`. | -| `selective_sync_namespace_ids` | array | no | The IDs of groups that should be synced, if `selective_sync_type` == `namespaces`. | -| `minimum_reverification_interval` | integer | no | The interval (in days) in which the repository verification is valid. Once expired, it is reverified. This has no effect when set on a secondary site. | +| Attribute | Type | Required | Description | +|---------------------------------------|---------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------| +| `primary` | boolean | no | Specifying whether this site should be primary. Defaults to false. | +| `enabled` | boolean | no | Flag indicating if the Geo site is enabled. Defaults to true. | +| `name` | string | yes | The unique identifier for the Geo site. Must match `geo_node_name` if it is set in `gitlab.rb`, otherwise it must match `external_url` | +| `url` | string | yes | The user-facing URL for the Geo site. | +| `internal_url` | string | no | The URL defined on the primary site that secondary sites should use to contact it. Returns `url` if not set. | +| `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary site. Defaults to 10. | +| `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary site. Defaults to 25. | +| `verification_max_capacity` | integer | no | Control the maximum concurrency of repository verification for this site. Defaults to 100. | +| `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this site. Defaults to 10. | +| `sync_object_storage` | boolean | no | Flag indicating if the secondary Geo site should replicate blobs in Object Storage. Defaults to false. | +| `selective_sync_type` | string | no | Limit syncing to only specific groups or shards. Valid values: `"namespaces"`, `"shards"`, or `null`. | +| `selective_sync_shards` | array | no | The repository storage for the projects synced if `selective_sync_type` == `shards`. | +| `selective_sync_namespace_ids` | array | no | The IDs of groups that should be synced, if `selective_sync_type` == `namespaces`. | +| `minimum_reverification_interval` | integer | no | The interval (in days) in which the repository verification is valid. Once expired, it is reverified. This has no effect when set on a secondary site. | Example response: @@ -198,22 +198,22 @@ _This can only be run against a primary Geo site._ PUT /geo_sites/:id ``` -| Attribute | Type | Required | Description | -|-----------------------------|---------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------| -| `id` | integer | yes | The ID of the Geo site. | -| `enabled` | boolean | no | Flag indicating if the Geo site is enabled. | -| `name` | string | no | The unique identifier for the Geo site. Must match `geo_node_name` if it is set in `gitlab.rb`, otherwise it must match `external_url`. | -| `url` | string | no | The user-facing URL of the Geo site. | -| `internal_url` | string | no | The URL defined on the primary site that secondary sites should use to contact it. Returns `url` if not set. | -| `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary site. | -| `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary site. | -| `verification_max_capacity` | integer | no | Control the maximum concurrency of verification for this site. | -| `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this site. | -| `sync_object_storage` | boolean | no | Flag indicating if the secondary Geo site should replicate blobs in Object Storage. | -| `selective_sync_type` | string | no | Limit syncing to only specific groups or shards. Valid values: `"namespaces"`, `"shards"`, or `null`. | -| `selective_sync_shards` | array | no | The repository storage for the projects synced if `selective_sync_type` == `shards`. | -| `selective_sync_namespace_ids` | array | no | The IDs of groups that should be synced, if `selective_sync_type` == `namespaces`. | -| `minimum_reverification_interval` | integer | no | The interval (in days) in which the repository verification is valid. Once expired, it is reverified. This has no effect when set on a secondary site. | +| Attribute | Type | Required | Description | +|---------------------------------------|---------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------| +| `id` | integer | yes | The ID of the Geo site. | +| `enabled` | boolean | no | Flag indicating if the Geo site is enabled. | +| `name` | string | no | The unique identifier for the Geo site. Must match `geo_node_name` if it is set in `gitlab.rb`, otherwise it must match `external_url`. | +| `url` | string | no | The user-facing URL of the Geo site. | +| `internal_url` | string | no | The URL defined on the primary site that secondary sites should use to contact it. Returns `url` if not set. | +| `files_max_capacity` | integer | no | Control the maximum concurrency of LFS/attachment backfill for this secondary site. | +| `repos_max_capacity` | integer | no | Control the maximum concurrency of repository backfill for this secondary site. | +| `verification_max_capacity` | integer | no | Control the maximum concurrency of verification for this site. | +| `container_repositories_max_capacity` | integer | no | Control the maximum concurrency of container repository sync for this site. | +| `sync_object_storage` | boolean | no | Flag indicating if the secondary Geo site should replicate blobs in Object Storage. | +| `selective_sync_type` | string | no | Limit syncing to only specific groups or shards. Valid values: `"namespaces"`, `"shards"`, or `null`. | +| `selective_sync_shards` | array | no | The repository storage for the projects synced if `selective_sync_type` == `shards`. | +| `selective_sync_namespace_ids` | array | no | The IDs of groups that should be synced, if `selective_sync_type` == `namespaces`. | +| `minimum_reverification_interval` | integer | no | The interval (in days) in which the repository verification is valid. Once expired, it is reverified. This has no effect when set on a secondary site. | Example response: @@ -331,11 +331,6 @@ Example response: "lfs_objects_verification_failed_count": null, "lfs_objects_synced_in_percentage": "0.00%", "lfs_objects_verified_in_percentage": "0.00%", - "job_artifacts_count": 2, - "job_artifacts_synced_count": null, - "job_artifacts_failed_count": null, - "job_artifacts_synced_missing_on_primary_count": 0, - "job_artifacts_synced_in_percentage": "0.00%", "design_repositories_count": 3, "design_repositories_synced_count": null, "design_repositories_failed_count": null, @@ -571,11 +566,6 @@ Example response: "lfs_objects_verification_failed_count": null, "lfs_objects_synced_in_percentage": "0.00%", "lfs_objects_verified_in_percentage": "0.00%", - "job_artifacts_count": 2, - "job_artifacts_synced_count": 1, - "job_artifacts_failed_count": 1, - "job_artifacts_synced_missing_on_primary_count": 0, - "job_artifacts_synced_in_percentage": "50.00%", "design_repositories_count": 3, "design_repositories_synced_count": null, "design_repositories_failed_count": null, @@ -790,11 +780,6 @@ Example response: "lfs_objects_verification_failed_count": null, "lfs_objects_synced_in_percentage": "0.00%", "lfs_objects_verified_in_percentage": "0.00%", - "job_artifacts_count": 2, - "job_artifacts_synced_count": 1, - "job_artifacts_failed_count": 1, - "job_artifacts_synced_missing_on_primary_count": 0, - "job_artifacts_synced_in_percentage": "50.00%", "design_repositories_count": 3, "design_repositories_synced_count": null, "design_repositories_failed_count": null, @@ -981,10 +966,10 @@ This only works on a secondary site. GET /geo_sites/current/failures ``` -| Attribute | Type | Required | Description | -| --------- | ---- | -------- | ----------- | -| `type` | string | no | Type of failed objects (`repository`/`wiki`) | -| `failure_type` | string | no | Type of failures (`sync`/`checksum_mismatch`/`verification`) | +| Attribute | Type | Required | Description | +|----------------|--------|----------|--------------------------------------------------------------| +| `type` | string | no | Type of failed objects (`repository`/`wiki`) | +| `failure_type` | string | no | Type of failures (`sync`/`checksum_mismatch`/`verification`) | This endpoint uses [Pagination](rest/index.md#pagination). -- GitLab From 5d2485cc5d7edd6984bf3fff66a98569723c1fc7 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Mon, 1 May 2023 21:33:52 +0000 Subject: [PATCH 3/5] Documentation improvements --- doc/api/geo_sites.md | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/doc/api/geo_sites.md b/doc/api/geo_sites.md index c57222de8071e9..ec55c2755fdf1c 100644 --- a/doc/api/geo_sites.md +++ b/doc/api/geo_sites.md @@ -73,8 +73,8 @@ Example response: } ``` -WARNING: -The `web_geo_projects_url` attribute is in its end-of-life process. It is [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) +NOTE: +The `web_geo_projects_url` attribute is in its end-of-life process. It was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) in GitLab 14.9. ## Retrieve configuration about all Geo sites @@ -145,8 +145,8 @@ Example response: ] ``` -WARNING: -The `web_geo_projects_url` attribute is in its end-of-life process. It is [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) +NOTE: +The `web_geo_projects_url` attribute is in its end-of-life process. It was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) in GitLab 14.9. ## Retrieve configuration about a specific Geo site @@ -188,11 +188,9 @@ Example response: } ``` -## Edit a Geo site +## Edit a primary Geo site -Updates settings of an existing Geo site. - -_This can only be run against a primary Geo site._ +Updates settings of an existing primary Geo site. ```plaintext PUT /geo_sites/:id @@ -247,7 +245,7 @@ Example response: } ``` -WARNING: +NOTE: The `web_geo_projects_url` attribute is in its end-of-life process. It is [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80106) in GitLab 14.9. @@ -263,11 +261,9 @@ DELETE /geo_sites/:id |-----------|---------|----------|-------------------------| | `id` | integer | yes | The ID of the Geo site. | -## Repair a Geo site - -To repair the OAuth authentication of a Geo site. +## Repair a primary Geo site -_This can only be run against a primary Geo site._ +Repairs the OAuth authentication of a primary Geo site. ```plaintext POST /geo_sites/:id/repair -- GitLab From 129eb95466478d841bbc5ca5e1afa6ba69e8f479 Mon Sep 17 00:00:00 2001 From: Evan Read Date: Tue, 2 May 2023 12:17:01 +0000 Subject: [PATCH 4/5] Documentation improvements --- doc/api/geo_sites.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/api/geo_sites.md b/doc/api/geo_sites.md index ec55c2755fdf1c..8c2e4a967fe4a3 100644 --- a/doc/api/geo_sites.md +++ b/doc/api/geo_sites.md @@ -4,10 +4,15 @@ group: Geo info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments --- -# Geo Sites API **(PREMIUM SELF)** +# Geo sites API **(PREMIUM SELF)** -To interact with Geo site endpoints, you must authenticate yourself as an -administrator. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/369140) in GitLab 16.0. + +Use the Geo sites API to manage Geo site endpoints. + +Prerequisites: + +- You must be an administrator. ## Create a new Geo site -- GitLab From bdbb5a7235a5b6609584d26d90197a1b74a1d22c Mon Sep 17 00:00:00 2001 From: Gabriel Mazetto Date: Wed, 3 May 2023 20:13:14 +0200 Subject: [PATCH 5/5] Improve documentation examples --- doc/api/geo_sites.md | 1189 +++++++++++++++++++++++------------------- 1 file changed, 660 insertions(+), 529 deletions(-) diff --git a/doc/api/geo_sites.md b/doc/api/geo_sites.md index 8c2e4a967fe4a3..3570706c01662a 100644 --- a/doc/api/geo_sites.md +++ b/doc/api/geo_sites.md @@ -60,11 +60,11 @@ Example response: "files_max_capacity": 10, "repos_max_capacity": 25, "verification_max_capacity": 100, + "container_repositories_max_capacity": 10, "selective_sync_type": "namespaces", "selective_sync_shards": [], "selective_sync_namespace_ids": [1, 25], "minimum_reverification_interval": 7, - "container_repositories_max_capacity": 10, "sync_object_storage": false, "clone_protocol": "http", "web_edit_url": "https://primary.example.com/admin/geo/sites/3/edit", @@ -106,8 +106,8 @@ Example response: "current": true, "files_max_capacity": 10, "repos_max_capacity": 25, - "container_repositories_max_capacity": 10, "verification_max_capacity": 100, + "container_repositories_max_capacity": 10, "selective_sync_type": "namespaces", "selective_sync_shards": [], "selective_sync_namespace_ids": [1, 25], @@ -130,8 +130,8 @@ Example response: "current": false, "files_max_capacity": 10, "repos_max_capacity": 25, - "container_repositories_max_capacity": 10, "verification_max_capacity": 100, + "container_repositories_max_capacity": 10, "selective_sync_type": "namespaces", "selective_sync_shards": [], "selective_sync_namespace_ids": [1, 25], @@ -177,8 +177,8 @@ Example response: "current": true, "files_max_capacity": 10, "repos_max_capacity": 25, - "container_repositories_max_capacity": 10, "verification_max_capacity": 100, + "container_repositories_max_capacity": 10, "selective_sync_type": "namespaces", "selective_sync_shards": [], "selective_sync_namespace_ids": [1, 25], @@ -231,8 +231,8 @@ Example response: "current": true, "files_max_capacity": 10, "repos_max_capacity": 25, - "container_repositories_max_capacity": 10, "verification_max_capacity": 100, + "container_repositories_max_capacity": 10, "selective_sync_type": "namespaces", "selective_sync_shards": [], "selective_sync_namespace_ids": [1, 25], @@ -287,8 +287,8 @@ Example response: "current": true, "files_max_capacity": 10, "repos_max_capacity": 25, - "container_repositories_max_capacity": 10, "verification_max_capacity": 100, + "container_repositories_max_capacity": 10, "clone_protocol": "http", "web_edit_url": "https://primary.example.com/admin/geo/sites/1/edit", "_links": { @@ -315,14 +315,38 @@ Example response: [ { "geo_node_id": 1, - "healthy": true, - "health": "Healthy", - "health_status": "Healthy", - "missing_oauth_application": false, - "db_replication_lag_seconds": null, - "lfs_objects_count": 5, - "lfs_objects_checksum_total_count": 5, - "lfs_objects_checksummed_count": 5, + "repository_verification_enabled": true, + "repositories_replication_enabled": null, + "repositories_synced_count": null, + "repositories_failed_count": null, + "wikis_synced_count": null, + "wikis_failed_count": null, + "repositories_verified_count": null, + "repositories_verification_failed_count": null, + "repositories_verification_total_count": null, + "wikis_verified_count": null, + "wikis_verification_failed_count": null, + "wikis_verification_total_count": null, + "job_artifacts_synced_missing_on_primary_count": null, + "repositories_checksummed_count": 19, + "repositories_checksum_failed_count": 0, + "repositories_checksum_mismatch_count": null, + "repositories_checksum_total_count": 19, + "wikis_checksummed_count": 0, + "wikis_checksum_failed_count": 0, + "wikis_checksum_mismatch_count": null, + "wikis_checksum_total_count": 19, + "repositories_retrying_verification_count": null, + "wikis_retrying_verification_count": null, + "projects_count": 19, + "container_repositories_replication_enabled": null, + "design_repositories_replication_enabled": null, + "design_repositories_count": null, + "design_repositories_synced_count": null, + "design_repositories_failed_count": null, + "lfs_objects_count": 0, + "lfs_objects_checksum_total_count": 0, + "lfs_objects_checksummed_count": 0, "lfs_objects_checksum_failed_count": 0, "lfs_objects_synced_count": null, "lfs_objects_failed_count": null, @@ -330,54 +354,9 @@ Example response: "lfs_objects_verification_total_count": null, "lfs_objects_verified_count": null, "lfs_objects_verification_failed_count": null, - "lfs_objects_synced_in_percentage": "0.00%", - "lfs_objects_verified_in_percentage": "0.00%", - "design_repositories_count": 3, - "design_repositories_synced_count": null, - "design_repositories_failed_count": null, - "design_repositories_synced_in_percentage": "0.00%", - "projects_count": 41, - "repositories_count": 41, - "repositories_failed_count": null, - "repositories_synced_count": null, - "repositories_synced_in_percentage": "0.00%", - "wikis_count": 41, - "wikis_failed_count": null, - "wikis_synced_count": null, - "wikis_synced_in_percentage": "0.00%", - "replication_slots_count": 1, - "replication_slots_used_count": 1, - "replication_slots_used_in_percentage": "100.00%", - "replication_slots_max_retained_wal_bytes": 0, - "repositories_checked_count": 20, - "repositories_checked_failed_count": 20, - "repositories_checked_in_percentage": "100.00%", - "repositories_checksummed_count": 20, - "repositories_checksum_failed_count": 5, - "repositories_checksummed_in_percentage": "48.78%", - "wikis_checksummed_count": 10, - "wikis_checksum_failed_count": 3, - "wikis_checksummed_in_percentage": "24.39%", - "repositories_verified_count": 20, - "repositories_verification_failed_count": 5, - "repositories_verified_in_percentage": "48.78%", - "repositories_checksum_mismatch_count": 3, - "wikis_verified_count": 10, - "wikis_verification_failed_count": 3, - "wikis_verified_in_percentage": "24.39%", - "wikis_checksum_mismatch_count": 1, - "repositories_retrying_verification_count": 1, - "wikis_retrying_verification_count": 3, - "last_event_id": 23, - "last_event_timestamp": 1509681166, - "cursor_last_event_id": null, - "cursor_last_event_timestamp": 0, - "last_successful_status_check_timestamp": 1510125024, - "version": "10.3.0", - "revision": "33d33a096a", - "merge_request_diffs_count": 5, - "merge_request_diffs_checksum_total_count": 5, - "merge_request_diffs_checksummed_count": 5, + "merge_request_diffs_count": 0, + "merge_request_diffs_checksum_total_count": 0, + "merge_request_diffs_checksummed_count": 0, "merge_request_diffs_checksum_failed_count": 0, "merge_request_diffs_synced_count": null, "merge_request_diffs_failed_count": null, @@ -385,11 +364,9 @@ Example response: "merge_request_diffs_verification_total_count": null, "merge_request_diffs_verified_count": null, "merge_request_diffs_verification_failed_count": null, - "merge_request_diffs_synced_in_percentage": "0.00%", - "merge_request_diffs_verified_in_percentage": "0.00%", - "package_files_count": 5, - "package_files_checksum_total_count": 5, - "package_files_checksummed_count": 5, + "package_files_count": 25, + "package_files_checksum_total_count": 25, + "package_files_checksummed_count": 25, "package_files_checksum_failed_count": 0, "package_files_synced_count": null, "package_files_failed_count": null, @@ -397,23 +374,9 @@ Example response: "package_files_verification_total_count": null, "package_files_verified_count": null, "package_files_verification_failed_count": null, - "package_files_synced_in_percentage": "0.00%", - "package_files_verified_in_percentage": "0.00%", - "pages_deployments_count": 5, - "pages_deployments_checksum_total_count": 5, - "pages_deployments_checksummed_count": 5, - "pages_deployments_checksum_failed_count": 0, - "pages_deployments_synced_count": null, - "pages_deployments_failed_count": null, - "pages_deployments_registry_count": null, - "pages_deployments_verification_total_count": null, - "pages_deployments_verified_count": null, - "pages_deployments_verification_failed_count": null, - "pages_deployments_synced_in_percentage": "0.00%", - "pages_deployments_verified_in_percentage": "0.00%", - "terraform_state_versions_count": 5, - "terraform_state_versions_checksum_total_count": 5, - "terraform_state_versions_checksummed_count": 5, + "terraform_state_versions_count": 18, + "terraform_state_versions_checksum_total_count": 18, + "terraform_state_versions_checksummed_count": 18, "terraform_state_versions_checksum_failed_count": 0, "terraform_state_versions_synced_count": null, "terraform_state_versions_failed_count": null, @@ -421,11 +384,9 @@ Example response: "terraform_state_versions_verification_total_count": null, "terraform_state_versions_verified_count": null, "terraform_state_versions_verification_failed_count": null, - "terraform_state_versions_synced_in_percentage": "0.00%", - "terraform_state_versions_verified_in_percentage": "0.00%", - "snippet_repositories_count": 5, - "snippet_repositories_checksum_total_count": 5, - "snippet_repositories_checksummed_count": 5, + "snippet_repositories_count": 20, + "snippet_repositories_checksum_total_count": 20, + "snippet_repositories_checksummed_count": 20, "snippet_repositories_checksum_failed_count": 0, "snippet_repositories_synced_count": null, "snippet_repositories_failed_count": null, @@ -433,35 +394,19 @@ Example response: "snippet_repositories_verification_total_count": null, "snippet_repositories_verified_count": null, "snippet_repositories_verification_failed_count": null, - "snippet_repositories_synced_in_percentage": "0.00%", - "snippet_repositories_verified_in_percentage": "0.00%", - "project_wiki_repositories_count": 3, - "project_wiki_repositories_checksum_total_count": 3, - "project_wiki_repositories_checksummed_count": 3, - "project_wiki_repositories_checksum_failed_count": 0, - "project_wiki_repositories_synced_count": null, - "project_wiki_repositories_failed_count": null, - "project_wiki_repositories_registry_count": null, - "project_wiki_repositories_verification_total_count": null, - "project_wiki_repositories_verified_count": null, - "project_wiki_repositories_verification_failed_count": null, - "project_wiki_repositories_synced_in_percentage": "0.00%", - "project_wiki_repositories_verified_in_percentage": "0.00%", - "group_wiki_repositories_count": 5, - "group_wiki_repositories_checksum_total_count": 5, - "group_wiki_repositories_checksummed_count": 5, - "group_wiki_repositories_checksum_failed_count": 0, + "group_wiki_repositories_count": 0, + "group_wiki_repositories_checksum_total_count": null, + "group_wiki_repositories_checksummed_count": null, + "group_wiki_repositories_checksum_failed_count": null, "group_wiki_repositories_synced_count": null, "group_wiki_repositories_failed_count": null, "group_wiki_repositories_registry_count": null, "group_wiki_repositories_verification_total_count": null, "group_wiki_repositories_verified_count": null, "group_wiki_repositories_verification_failed_count": null, - "group_wiki_repositories_synced_in_percentage": "0.00%", - "group_wiki_repositories_verified_in_percentage": "0.00%", - "pipeline_artifacts_count": 5, - "pipeline_artifacts_checksum_total_count": 5, - "pipeline_artifacts_checksummed_count": 5, + "pipeline_artifacts_count": 0, + "pipeline_artifacts_checksum_total_count": 0, + "pipeline_artifacts_checksummed_count": 0, "pipeline_artifacts_checksum_failed_count": 0, "pipeline_artifacts_synced_count": null, "pipeline_artifacts_failed_count": null, @@ -469,282 +414,408 @@ Example response: "pipeline_artifacts_verification_total_count": null, "pipeline_artifacts_verified_count": null, "pipeline_artifacts_verification_failed_count": null, - "pipeline_artifacts_synced_in_percentage": "0.00%", - "pipeline_artifacts_verified_in_percentage": "0.00%", - "uploads_count": 5, + "pages_deployments_count": 0, + "pages_deployments_checksum_total_count": 0, + "pages_deployments_checksummed_count": 0, + "pages_deployments_checksum_failed_count": 0, + "pages_deployments_synced_count": null, + "pages_deployments_failed_count": null, + "pages_deployments_registry_count": null, + "pages_deployments_verification_total_count": null, + "pages_deployments_verified_count": null, + "pages_deployments_verification_failed_count": null, + "uploads_count": 51, + "uploads_checksum_total_count": 51, + "uploads_checksummed_count": 51, + "uploads_checksum_failed_count": 0, "uploads_synced_count": null, - "uploads_failed_count": 0, + "uploads_failed_count": null, "uploads_registry_count": null, - "uploads_synced_in_percentage": "0.00%", - "uploads_checksum_total_count": 5, - "uploads_checksummed_count": 5, - "uploads_checksum_failed_count": null, - "uploads_verification_total_count": null, + "uploads_verification_total_count": null, "uploads_verified_count": null, "uploads_verification_failed_count": null, - "uploads_verified_in_percentage": "0.00%", - "job_artifacts_count": 5, - "job_artifacts_checksum_total_count": 5, - "job_artifacts_checksummed_count": 5, + "job_artifacts_count": 205, + "job_artifacts_checksum_total_count": 205, + "job_artifacts_checksummed_count": 205, "job_artifacts_checksum_failed_count": 0, - "job_artifacts_synced_count": 5, - "job_artifacts_failed_count": 0, - "job_artifacts_registry_count": 5, - "job_artifacts_verification_total_count": 5, - "job_artifacts_verified_count": 5, - "job_artifacts_verification_failed_count": 0, - "job_artifacts_synced_in_percentage": "100.00%", - "job_artifacts_verified_in_percentage": "100.00%", - "job_artifacts_synced_missing_on_primary_count": 0, - "ci_secure_files_count": 5, - "ci_secure_files_checksum_total_count": 5, - "ci_secure_files_checksummed_count": 5, + "job_artifacts_synced_count": null, + "job_artifacts_failed_count": null, + "job_artifacts_registry_count": null, + "job_artifacts_verification_total_count": null, + "job_artifacts_verified_count": null, + "job_artifacts_verification_failed_count": null, + "ci_secure_files_count": 0, + "ci_secure_files_checksum_total_count": 0, + "ci_secure_files_checksummed_count": 0, "ci_secure_files_checksum_failed_count": 0, - "ci_secure_files_synced_count": 5, - "ci_secure_files_failed_count": 0, - "ci_secure_files_registry_count": 5, - "ci_secure_files_verification_total_count": 5, - "ci_secure_files_verified_count": 5, - "ci_secure_files_verification_failed_count": 0, - "ci_secure_files_synced_in_percentage": "100.00%", - "ci_secure_files_verified_in_percentage": "100.00%", - "ci_secure_files_synced_missing_on_primary_count": 0, - "dependency_proxy_blobs_count": 5, - "dependency_proxy_blobs_checksum_total_count": 5, - "dependency_proxy_blobs_checksummed_count": 5, - "dependency_proxy_blobs_checksum_failed_count": 0, - "dependency_proxy_blobs_synced_count": 5, - "dependency_proxy_blobs_failed_count": 0, - "dependency_proxy_blobs_registry_count": 5, - "dependency_proxy_blobs_verification_total_count": 5, - "dependency_proxy_blobs_verified_count": 5, - "dependency_proxy_blobs_verification_failed_count": 0, - "dependency_proxy_blobs_synced_in_percentage": "100.00%", - "dependency_proxy_blobs_verified_in_percentage": "100.00%", - "dependency_proxy_blobs_synced_missing_on_primary_count": 0, - "container_repositories_count": 5, - "container_repositories_synced_count": 5, - "container_repositories_failed_count": 0, - "container_repositories_registry_count": 5, - "container_repositories_synced_in_percentage": "100.00%", - "container_repositories_synced_missing_on_primary_count": 0, + "ci_secure_files_synced_count": null, + "ci_secure_files_failed_count": null, + "ci_secure_files_registry_count": null, + "ci_secure_files_verification_total_count": null, + "ci_secure_files_verified_count": null, + "ci_secure_files_verification_failed_count": null, + "container_repositories_count": 0, "container_repositories_checksum_total_count": 0, "container_repositories_checksummed_count": 0, "container_repositories_checksum_failed_count": 0, - "container_repositories_verification_total_count": 0, - "container_repositories_verified_count": 0, - "container_repositories_verification_failed_count": 0, - "container_repositories_verified_in_percentage": "100.00%", - "dependency_proxy_manifests_count": 5, - "dependency_proxy_manifests_checksum_total_count": 5, - "dependency_proxy_manifests_checksummed_count": 5, - "dependency_proxy_manifests_checksum_failed_count": 5, - "dependency_proxy_manifests_synced_count": 5, - "dependency_proxy_manifests_failed_count": 0, - "dependency_proxy_manifests_registry_count": 5, - "dependency_proxy_manifests_verification_total_count": 5, - "dependency_proxy_manifests_verified_count": 5, - "dependency_proxy_manifests_verification_failed_count": 5, - "dependency_proxy_manifests_synced_in_percentage": "100.00%", - "dependency_proxy_manifests_verified_in_percentage": "100.00%" - }, - { - "geo_node_id": 2, + "container_repositories_synced_count": null, + "container_repositories_failed_count": null, + "container_repositories_registry_count": null, + "container_repositories_verification_total_count": null, + "container_repositories_verified_count": null, + "container_repositories_verification_failed_count": null, + "dependency_proxy_blobs_count": 0, + "dependency_proxy_blobs_checksum_total_count": 0, + "dependency_proxy_blobs_checksummed_count": 0, + "dependency_proxy_blobs_checksum_failed_count": 0, + "dependency_proxy_blobs_synced_count": null, + "dependency_proxy_blobs_failed_count": null, + "dependency_proxy_blobs_registry_count": null, + "dependency_proxy_blobs_verification_total_count": null, + "dependency_proxy_blobs_verified_count": null, + "dependency_proxy_blobs_verification_failed_count": null, + "dependency_proxy_manifests_count": 0, + "dependency_proxy_manifests_checksum_total_count": 0, + "dependency_proxy_manifests_checksummed_count": 0, + "dependency_proxy_manifests_checksum_failed_count": 0, + "dependency_proxy_manifests_synced_count": null, + "dependency_proxy_manifests_failed_count": null, + "dependency_proxy_manifests_registry_count": null, + "dependency_proxy_manifests_verification_total_count": null, + "dependency_proxy_manifests_verified_count": null, + "dependency_proxy_manifests_verification_failed_count": null, + "project_wiki_repositories_count": 19, + "project_wiki_repositories_checksum_total_count": 19, + "project_wiki_repositories_checksummed_count": 19, + "project_wiki_repositories_checksum_failed_count": 0, + "project_wiki_repositories_synced_count": null, + "project_wiki_repositories_failed_count": null, + "project_wiki_repositories_registry_count": null, + "project_wiki_repositories_verification_total_count": null, + "project_wiki_repositories_verified_count": null, + "project_wiki_repositories_verification_failed_count": null, + "git_fetch_event_count_weekly": null, + "git_push_event_count_weekly": null, + "proxy_remote_requests_event_count_weekly": null, + "proxy_local_requests_event_count_weekly": null, + "repositories_synced_in_percentage": "0.00%", + "repositories_checksummed_in_percentage": "100.00%", + "repositories_verified_in_percentage": "0.00%", + "repositories_checked_in_percentage": "0.00%", + "wikis_synced_in_percentage": "0.00%", + "wikis_checksummed_in_percentage": "0.00%", + "wikis_verified_in_percentage": "0.00%", + "replication_slots_used_in_percentage": "100.00%", + "design_repositories_synced_in_percentage": "0.00%", + "lfs_objects_synced_in_percentage": "0.00%", + "lfs_objects_verified_in_percentage": "0.00%", + "merge_request_diffs_synced_in_percentage": "0.00%", + "merge_request_diffs_verified_in_percentage": "0.00%", + "package_files_synced_in_percentage": "0.00%", + "package_files_verified_in_percentage": "0.00%", + "terraform_state_versions_synced_in_percentage": "0.00%", + "terraform_state_versions_verified_in_percentage": "0.00%", + "snippet_repositories_synced_in_percentage": "0.00%", + "snippet_repositories_verified_in_percentage": "0.00%", + "group_wiki_repositories_synced_in_percentage": "0.00%", + "group_wiki_repositories_verified_in_percentage": "0.00%", + "pipeline_artifacts_synced_in_percentage": "0.00%", + "pipeline_artifacts_verified_in_percentage": "0.00%", + "pages_deployments_synced_in_percentage": "0.00%", + "pages_deployments_verified_in_percentage": "0.00%", + "uploads_synced_in_percentage": "0.00%", + "uploads_verified_in_percentage": "0.00%", + "job_artifacts_synced_in_percentage": "0.00%", + "job_artifacts_verified_in_percentage": "0.00%", + "ci_secure_files_synced_in_percentage": "0.00%", + "ci_secure_files_verified_in_percentage": "0.00%", + "container_repositories_synced_in_percentage": "0.00%", + "container_repositories_verified_in_percentage": "0.00%", + "dependency_proxy_blobs_synced_in_percentage": "0.00%", + "dependency_proxy_blobs_verified_in_percentage": "0.00%", + "dependency_proxy_manifests_synced_in_percentage": "0.00%", + "dependency_proxy_manifests_verified_in_percentage": "0.00%", + "project_wiki_repositories_synced_in_percentage": "0.00%", + "project_wiki_repositories_verified_in_percentage": "0.00%", + "repositories_count": 19, + "wikis_count": 19, + "replication_slots_count": 1, + "replication_slots_used_count": 1, "healthy": true, "health": "Healthy", "health_status": "Healthy", "missing_oauth_application": false, - "db_replication_lag_seconds": 0, - "lfs_objects_count": 5, - "lfs_objects_checksum_total_count": 5, - "lfs_objects_checksummed_count": 5, - "lfs_objects_checksum_failed_count": 0, - "lfs_objects_synced_count": null, - "lfs_objects_failed_count": null, - "lfs_objects_registry_count": null, - "lfs_objects_verification_total_count": null, - "lfs_objects_verified_count": null, - "lfs_objects_verification_failed_count": null, - "lfs_objects_synced_in_percentage": "0.00%", - "lfs_objects_verified_in_percentage": "0.00%", - "design_repositories_count": 3, - "design_repositories_synced_count": null, - "design_repositories_failed_count": null, - "design_repositories_synced_in_percentage": "0.00%", - "projects_count": 41, - "repositories_count": 41, - "repositories_failed_count": 1, - "repositories_synced_count": 40, - "repositories_synced_in_percentage": "97.56%", - "wikis_count": 41, + "db_replication_lag_seconds": null, + "replication_slots_max_retained_wal_bytes": 0, + "repositories_checked_count": null, + "repositories_checked_failed_count": null, + "last_event_id": 357, + "last_event_timestamp": 1683127088, + "cursor_last_event_id": null, + "cursor_last_event_timestamp": 0, + "last_successful_status_check_timestamp": 1683129788, + "version": "16.0.0-pre", + "revision": "129eb954664", + "selective_sync_type": null, + "namespaces": [], + "updated_at": "2023-05-03T16:03:10.117Z", + "storage_shards_match": true, + "_links": { + "self": "https://primary.example.com/api/v4/geo_sites/1/status", + "site": "https://primary.example.com/api/v4/geo_sites/1" + } + }, + { + "geo_node_id": 2, + "repository_verification_enabled": true, + "repositories_replication_enabled": true, + "repositories_synced_count": 18, + "repositories_failed_count": 0, + "wikis_synced_count": 18, "wikis_failed_count": 0, - "wikis_synced_count": 41, - "wikis_synced_in_percentage": "100.00%", - "replication_slots_count": null, - "replication_slots_used_count": null, - "replication_slots_used_in_percentage": "0.00%", - "replication_slots_max_retained_wal_bytes": null, - "repositories_checksummed_count": 20, - "repositories_checksum_failed_count": 5, - "repositories_checksummed_in_percentage": "48.78%", - "wikis_checksummed_count": 10, - "wikis_checksum_failed_count": 3, - "wikis_checksummed_in_percentage": "24.39%", - "repositories_verified_count": 20, - "repositories_verification_failed_count": 5, - "repositories_verified_in_percentage": "48.78%", - "repositories_checksum_mismatch_count": 3, - "wikis_verified_count": 10, - "wikis_verification_failed_count": 3, - "wikis_verified_in_percentage": "24.39%", - "wikis_checksum_mismatch_count": 1, - "repositories_retrying_verification_count": 4, - "wikis_retrying_verification_count": 2, - "repositories_checked_count": 5, - "repositories_checked_failed_count": 1, - "repositories_checked_in_percentage": "12.20%", - "last_event_id": 23, - "last_event_timestamp": 1509681166, - "cursor_last_event_id": 23, - "cursor_last_event_timestamp": 1509681166, - "last_successful_status_check_timestamp": 1510125024, - "version": "10.3.0", - "revision": "33d33a096a", - "merge_request_diffs_count": 5, - "merge_request_diffs_checksum_total_count": 5, - "merge_request_diffs_checksummed_count": 5, - "merge_request_diffs_checksum_failed_count": 0, - "merge_request_diffs_synced_count": 5, + "repositories_verified_count": 0, + "repositories_verification_failed_count": 0, + "repositories_verification_total_count": 19, + "wikis_verified_count": 0, + "wikis_verification_failed_count": 0, + "wikis_verification_total_count": 19, + "job_artifacts_synced_missing_on_primary_count": null, + "repositories_checksummed_count": null, + "repositories_checksum_failed_count": null, + "repositories_checksum_mismatch_count": 0, + "repositories_checksum_total_count": null, + "wikis_checksummed_count": null, + "wikis_checksum_failed_count": null, + "wikis_checksum_mismatch_count": 0, + "wikis_checksum_total_count": null, + "repositories_retrying_verification_count": 0, + "wikis_retrying_verification_count": 0, + "projects_count": 19, + "container_repositories_replication_enabled": null, + "design_repositories_replication_enabled": true, + "design_repositories_count": 0, + "design_repositories_synced_count": 0, + "design_repositories_failed_count": 0, + "lfs_objects_count": 0, + "lfs_objects_checksum_total_count": null, + "lfs_objects_checksummed_count": null, + "lfs_objects_checksum_failed_count": null, + "lfs_objects_synced_count": 0, + "lfs_objects_failed_count": 0, + "lfs_objects_registry_count": 0, + "lfs_objects_verification_total_count": 0, + "lfs_objects_verified_count": 0, + "lfs_objects_verification_failed_count": 0, + "merge_request_diffs_count": 0, + "merge_request_diffs_checksum_total_count": null, + "merge_request_diffs_checksummed_count": null, + "merge_request_diffs_checksum_failed_count": null, + "merge_request_diffs_synced_count": 0, "merge_request_diffs_failed_count": 0, - "merge_request_diffs_registry_count": 5, - "merge_request_diffs_verification_total_count": 5, - "merge_request_diffs_verified_count": 5, + "merge_request_diffs_registry_count": 0, + "merge_request_diffs_verification_total_count": 0, + "merge_request_diffs_verified_count": 0, "merge_request_diffs_verification_failed_count": 0, - "merge_request_diffs_synced_in_percentage": "100.00%", - "merge_request_diffs_verified_in_percentage": "100.00%", - "package_files_count": 5, - "package_files_checksum_total_count": 5, - "package_files_checksummed_count": 5, - "package_files_checksum_failed_count": 0, - "package_files_synced_count": 5, - "package_files_failed_count": 0, - "package_files_registry_count": 5, - "package_files_verification_total_count": 5, - "package_files_verified_count": 5, + "package_files_count": 25, + "package_files_checksum_total_count": null, + "package_files_checksummed_count": null, + "package_files_checksum_failed_count": null, + "package_files_synced_count": 1, + "package_files_failed_count": 24, + "package_files_registry_count": 25, + "package_files_verification_total_count": 1, + "package_files_verified_count": 1, "package_files_verification_failed_count": 0, - "package_files_synced_in_percentage": "100.00%", - "package_files_verified_in_percentage": "100.00%", - "terraform_state_versions_count": 5, - "terraform_state_versions_checksum_total_count": 5, - "terraform_state_versions_checksummed_count": 5, - "terraform_state_versions_checksum_failed_count": 0, - "terraform_state_versions_synced_count": 5, + "terraform_state_versions_count": 18, + "terraform_state_versions_checksum_total_count": null, + "terraform_state_versions_checksummed_count": null, + "terraform_state_versions_checksum_failed_count": null, + "terraform_state_versions_synced_count": 0, "terraform_state_versions_failed_count": 0, - "terraform_state_versions_registry_count": 5, - "terraform_state_versions_verification_total_count": 5, - "terraform_state_versions_verified_count": 5, + "terraform_state_versions_registry_count": 18, + "terraform_state_versions_verification_total_count": 0, + "terraform_state_versions_verified_count": 0, "terraform_state_versions_verification_failed_count": 0, - "terraform_state_versions_synced_in_percentage": "100.00%", - "terraform_state_versions_verified_in_percentage": "100.00%", - "snippet_repositories_count": 5, - "snippet_repositories_checksum_total_count": 5, - "snippet_repositories_checksummed_count": 5, - "snippet_repositories_checksum_failed_count": 0, - "snippet_repositories_synced_count": 5, + "snippet_repositories_count": 20, + "snippet_repositories_checksum_total_count": null, + "snippet_repositories_checksummed_count": null, + "snippet_repositories_checksum_failed_count": null, + "snippet_repositories_synced_count": 20, "snippet_repositories_failed_count": 0, - "snippet_repositories_registry_count": 5, - "snippet_repositories_verification_total_count": 5, - "snippet_repositories_verified_count": 5, + "snippet_repositories_registry_count": 20, + "snippet_repositories_verification_total_count": 20, + "snippet_repositories_verified_count": 20, "snippet_repositories_verification_failed_count": 0, - "snippet_repositories_synced_in_percentage": "100.00%", - "snippet_repositories_verified_in_percentage": "100.00%", - "group_wiki_repositories_count": 5, - "group_wiki_repositories_checksum_total_count": 5, - "group_wiki_repositories_checksummed_count": 5, - "group_wiki_repositories_checksum_failed_count": 0, - "group_wiki_repositories_synced_count": 5, + "group_wiki_repositories_count": 0, + "group_wiki_repositories_checksum_total_count": null, + "group_wiki_repositories_checksummed_count": null, + "group_wiki_repositories_checksum_failed_count": null, + "group_wiki_repositories_synced_count": 0, "group_wiki_repositories_failed_count": 0, - "group_wiki_repositories_registry_count": 5, - "group_wiki_repositories_verification_total_count": 5, - "group_wiki_repositories_verified_count": 5, - "group_wiki_repositories_verification_failed_count": 0, - "group_wiki_repositories_synced_in_percentage": "100.00%", - "group_wiki_repositories_verified_in_percentage": "100.00%", - "pipeline_artifacts_count": 5, - "pipeline_artifacts_checksum_total_count": 5, - "pipeline_artifacts_checksummed_count": 5, - "pipeline_artifacts_checksum_failed_count": 0, - "pipeline_artifacts_synced_count": 5, + "group_wiki_repositories_registry_count": 0, + "group_wiki_repositories_verification_total_count": null, + "group_wiki_repositories_verified_count": null, + "group_wiki_repositories_verification_failed_count": null, + "pipeline_artifacts_count": 0, + "pipeline_artifacts_checksum_total_count": null, + "pipeline_artifacts_checksummed_count": null, + "pipeline_artifacts_checksum_failed_count": null, + "pipeline_artifacts_synced_count": 0, "pipeline_artifacts_failed_count": 0, - "pipeline_artifacts_registry_count": 5, - "pipeline_artifacts_verification_total_count": 5, - "pipeline_artifacts_verified_count": 5, + "pipeline_artifacts_registry_count": 0, + "pipeline_artifacts_verification_total_count": 0, + "pipeline_artifacts_verified_count": 0, "pipeline_artifacts_verification_failed_count": 0, - "pipeline_artifacts_synced_in_percentage": "100.00%", - "pipeline_artifacts_verified_in_percentage": "100.00%", - "uploads_count": 5, - "uploads_synced_count": null, - "uploads_failed_count": 0, - "uploads_registry_count": null, - "uploads_synced_in_percentage": "0.00%", - "uploads_checksum_total_count": 5, - "uploads_checksummed_count": 5, + "pages_deployments_count": 0, + "pages_deployments_checksum_total_count": null, + "pages_deployments_checksummed_count": null, + "pages_deployments_checksum_failed_count": null, + "pages_deployments_synced_count": 0, + "pages_deployments_failed_count": 0, + "pages_deployments_registry_count": 0, + "pages_deployments_verification_total_count": 0, + "pages_deployments_verified_count": 0, + "pages_deployments_verification_failed_count": 0, + "uploads_count": 51, + "uploads_checksum_total_count": null, + "uploads_checksummed_count": null, "uploads_checksum_failed_count": null, - "uploads_verification_total_count": null, - "uploads_verified_count": null, - "uploads_verification_failed_count": null, - "uploads_verified_in_percentage": "0.00%", - "job_artifacts_count": 5, - "job_artifacts_checksum_total_count": 5, - "job_artifacts_checksummed_count": 5, - "job_artifacts_checksum_failed_count": 0, - "job_artifacts_synced_count": 5, + "uploads_synced_count": 0, + "uploads_failed_count": 1, + "uploads_registry_count": 51, + "uploads_verification_total_count": 0, + "uploads_verified_count": 0, + "uploads_verification_failed_count": 0, + "job_artifacts_count": 0, + "job_artifacts_checksum_total_count": null, + "job_artifacts_checksummed_count": null, + "job_artifacts_checksum_failed_count": null, + "job_artifacts_synced_count": 0, "job_artifacts_failed_count": 0, - "job_artifacts_registry_count": 5, - "job_artifacts_verification_total_count": 5, - "job_artifacts_verified_count": 5, + "job_artifacts_registry_count": 0, + "job_artifacts_verification_total_count": 0, + "job_artifacts_verified_count": 0, "job_artifacts_verification_failed_count": 0, - "job_artifacts_synced_in_percentage": "100.00%", - "job_artifacts_verified_in_percentage": "100.00%", - "job_artifacts_synced_missing_on_primary_count": 0, - "dependency_proxy_blobs_count": 5, - "dependency_proxy_blobs_checksum_total_count": 5, - "dependency_proxy_blobs_checksummed_count": 5, - "dependency_proxy_blobs_checksum_failed_count": 0, - "dependency_proxy_blobs_synced_count": 5, + "ci_secure_files_count": 0, + "ci_secure_files_checksum_total_count": null, + "ci_secure_files_checksummed_count": null, + "ci_secure_files_checksum_failed_count": null, + "ci_secure_files_synced_count": 0, + "ci_secure_files_failed_count": 0, + "ci_secure_files_registry_count": 0, + "ci_secure_files_verification_total_count": 0, + "ci_secure_files_verified_count": 0, + "ci_secure_files_verification_failed_count": 0, + "container_repositories_count": null, + "container_repositories_checksum_total_count": null, + "container_repositories_checksummed_count": null, + "container_repositories_checksum_failed_count": null, + "container_repositories_synced_count": null, + "container_repositories_failed_count": null, + "container_repositories_registry_count": null, + "container_repositories_verification_total_count": null, + "container_repositories_verified_count": null, + "container_repositories_verification_failed_count": null, + "dependency_proxy_blobs_count": 0, + "dependency_proxy_blobs_checksum_total_count": null, + "dependency_proxy_blobs_checksummed_count": null, + "dependency_proxy_blobs_checksum_failed_count": null, + "dependency_proxy_blobs_synced_count": 0, "dependency_proxy_blobs_failed_count": 0, - "dependency_proxy_blobs_registry_count": 5, - "dependency_proxy_blobs_verification_total_count": 5, - "dependency_proxy_blobs_verified_count": 5, + "dependency_proxy_blobs_registry_count": 0, + "dependency_proxy_blobs_verification_total_count": 0, + "dependency_proxy_blobs_verified_count": 0, "dependency_proxy_blobs_verification_failed_count": 0, - "dependency_proxy_blobs_synced_in_percentage": "100.00%", - "dependency_proxy_blobs_verified_in_percentage": "100.00%", - "dependency_proxy_blobs_synced_missing_on_primary_count": 0, - "container_repositories_count": 5, - "container_repositories_synced_count": 5, - "container_repositories_failed_count": 0, - "container_repositories_registry_count": 5, - "container_repositories_synced_in_percentage": "100.00%", - "container_repositories_synced_missing_on_primary_count": 0, - "container_repositories_checksum_total_count": 0, - "container_repositories_checksummed_count": 0, - "container_repositories_checksum_failed_count": 0, - "container_repositories_verification_total_count": 0, - "container_repositories_verified_count": 0, - "container_repositories_verification_failed_count": 0, - "container_repositories_verified_in_percentage": "100.00%", - "dependency_proxy_manifests_count": 5, - "dependency_proxy_manifests_checksum_total_count": 5, - "dependency_proxy_manifests_checksummed_count": 5, - "dependency_proxy_manifests_checksum_failed_count": 5, - "dependency_proxy_manifests_synced_count": 5, + "dependency_proxy_manifests_count": 0, + "dependency_proxy_manifests_checksum_total_count": null, + "dependency_proxy_manifests_checksummed_count": null, + "dependency_proxy_manifests_checksum_failed_count": null, + "dependency_proxy_manifests_synced_count": 0, "dependency_proxy_manifests_failed_count": 0, - "dependency_proxy_manifests_registry_count": 5, - "dependency_proxy_manifests_verification_total_count": 5, - "dependency_proxy_manifests_verified_count": 5, - "dependency_proxy_manifests_verification_failed_count": 5, - "dependency_proxy_manifests_synced_in_percentage": "100.00%", - "dependency_proxy_manifests_verified_in_percentage": "100.00%" + "dependency_proxy_manifests_registry_count": 0, + "dependency_proxy_manifests_verification_total_count": 0, + "dependency_proxy_manifests_verified_count": 0, + "dependency_proxy_manifests_verification_failed_count": 0, + "project_wiki_repositories_count": 19, + "project_wiki_repositories_checksum_total_count": null, + "project_wiki_repositories_checksummed_count": null, + "project_wiki_repositories_checksum_failed_count": null, + "project_wiki_repositories_synced_count": 19, + "project_wiki_repositories_failed_count": 0, + "project_wiki_repositories_registry_count": 19, + "project_wiki_repositories_verification_total_count": 19, + "project_wiki_repositories_verified_count": 19, + "project_wiki_repositories_verification_failed_count": 0, + "git_fetch_event_count_weekly": null, + "git_push_event_count_weekly": null, + "proxy_remote_requests_event_count_weekly": null, + "proxy_local_requests_event_count_weekly": null, + "repositories_synced_in_percentage": "94.74%", + "repositories_checksummed_in_percentage": "0.00%", + "repositories_verified_in_percentage": "0.00%", + "repositories_checked_in_percentage": "0.00%", + "wikis_synced_in_percentage": "94.74%", + "wikis_checksummed_in_percentage": "0.00%", + "wikis_verified_in_percentage": "0.00%", + "replication_slots_used_in_percentage": "0.00%", + "design_repositories_synced_in_percentage": "0.00%", + "lfs_objects_synced_in_percentage": "0.00%", + "lfs_objects_verified_in_percentage": "0.00%", + "merge_request_diffs_synced_in_percentage": "0.00%", + "merge_request_diffs_verified_in_percentage": "0.00%", + "package_files_synced_in_percentage": "4.00%", + "package_files_verified_in_percentage": "4.00%", + "terraform_state_versions_synced_in_percentage": "0.00%", + "terraform_state_versions_verified_in_percentage": "0.00%", + "snippet_repositories_synced_in_percentage": "100.00%", + "snippet_repositories_verified_in_percentage": "100.00%", + "group_wiki_repositories_synced_in_percentage": "0.00%", + "group_wiki_repositories_verified_in_percentage": "0.00%", + "pipeline_artifacts_synced_in_percentage": "0.00%", + "pipeline_artifacts_verified_in_percentage": "0.00%", + "pages_deployments_synced_in_percentage": "0.00%", + "pages_deployments_verified_in_percentage": "0.00%", + "uploads_synced_in_percentage": "0.00%", + "uploads_verified_in_percentage": "0.00%", + "job_artifacts_synced_in_percentage": "0.00%", + "job_artifacts_verified_in_percentage": "0.00%", + "ci_secure_files_synced_in_percentage": "0.00%", + "ci_secure_files_verified_in_percentage": "0.00%", + "container_repositories_synced_in_percentage": "0.00%", + "container_repositories_verified_in_percentage": "0.00%", + "dependency_proxy_blobs_synced_in_percentage": "0.00%", + "dependency_proxy_blobs_verified_in_percentage": "0.00%", + "dependency_proxy_manifests_synced_in_percentage": "0.00%", + "dependency_proxy_manifests_verified_in_percentage": "0.00%", + "project_wiki_repositories_synced_in_percentage": "100.00%", + "project_wiki_repositories_verified_in_percentage": "100.00%", + "repositories_count": 19, + "wikis_count": 19, + "replication_slots_count": null, + "replication_slots_used_count": null, + "healthy": false, + "health": "An existing tracking database cannot be reused..", + "health_status": "Unhealthy", + "missing_oauth_application": false, + "db_replication_lag_seconds": 0, + "replication_slots_max_retained_wal_bytes": null, + "repositories_checked_count": null, + "repositories_checked_failed_count": null, + "last_event_id": 357, + "last_event_timestamp": 1683127088, + "cursor_last_event_id": 357, + "cursor_last_event_timestamp": 1683127088, + "last_successful_status_check_timestamp": 1683127146, + "version": "16.0.0-pre", + "revision": "129eb954664", + "selective_sync_type": "", + "namespaces": [], + "updated_at": "2023-05-03T15:19:06.174Z", + "storage_shards_match": true, + "_links": { + "self": "https://primary.example.com/api/v4/geo_sites/2/status", + "site": "https://primary.example.com/api/v4/geo_sites/2" + } } ] ``` @@ -762,197 +833,257 @@ curl --header "PRIVATE-TOKEN: " "https://primary.example.com/ Example response: ```json -{ + { "geo_node_id": 2, - "healthy": true, - "health": "Healthy", - "health_status": "Healthy", - "missing_oauth_application": false, - "db_replication_lag_seconds": 0, - "lfs_objects_count": 5, - "lfs_objects_checksum_total_count": 5, - "lfs_objects_checksummed_count": 5, - "lfs_objects_checksum_failed_count": 0, - "lfs_objects_synced_count": null, - "lfs_objects_failed_count": null, - "lfs_objects_registry_count": null, - "lfs_objects_verification_total_count": null, - "lfs_objects_verified_count": null, - "lfs_objects_verification_failed_count": null, - "lfs_objects_synced_in_percentage": "0.00%", - "lfs_objects_verified_in_percentage": "0.00%", - "design_repositories_count": 3, - "design_repositories_synced_count": null, - "design_repositories_failed_count": null, - "design_repositories_synced_in_percentage": "0.00%", - "projects_count": 41, - "repositories_count": 41, - "repositories_failed_count": 1, - "repositories_synced_count": 40, - "repositories_synced_in_percentage": "97.56%", - "wikis_count": 41, + "repository_verification_enabled": true, + "repositories_replication_enabled": true, + "repositories_synced_count": 18, + "repositories_failed_count": 0, + "wikis_synced_count": 18, "wikis_failed_count": 0, - "wikis_synced_count": 41, - "wikis_synced_in_percentage": "100.00%", - "replication_slots_count": null, - "replication_slots_used_count": null, - "replication_slots_used_in_percentage": "0.00%", - "replication_slots_max_retained_wal_bytes": null, - "last_event_id": 23, - "last_event_timestamp": 1509681166, - "cursor_last_event_id": 23, - "cursor_last_event_timestamp": 1509681166, - "last_successful_status_check_timestamp": 1510125268, - "version": "10.3.0", - "revision": "33d33a096a", - "merge_request_diffs_count": 5, - "merge_request_diffs_checksum_total_count": 5, - "merge_request_diffs_checksummed_count": 5, - "merge_request_diffs_checksum_failed_count": 0, - "merge_request_diffs_synced_count": 5, + "repositories_verified_count": 0, + "repositories_verification_failed_count": 0, + "repositories_verification_total_count": 19, + "wikis_verified_count": 0, + "wikis_verification_failed_count": 0, + "wikis_verification_total_count": 19, + "job_artifacts_synced_missing_on_primary_count": null, + "repositories_checksummed_count": null, + "repositories_checksum_failed_count": null, + "repositories_checksum_mismatch_count": 0, + "repositories_checksum_total_count": null, + "wikis_checksummed_count": null, + "wikis_checksum_failed_count": null, + "wikis_checksum_mismatch_count": 0, + "wikis_checksum_total_count": null, + "repositories_retrying_verification_count": 0, + "wikis_retrying_verification_count": 0, + "projects_count": 19, + "container_repositories_replication_enabled": null, + "design_repositories_replication_enabled": true, + "design_repositories_count": 0, + "design_repositories_synced_count": 0, + "design_repositories_failed_count": 0, + "lfs_objects_count": 0, + "lfs_objects_checksum_total_count": null, + "lfs_objects_checksummed_count": null, + "lfs_objects_checksum_failed_count": null, + "lfs_objects_synced_count": 0, + "lfs_objects_failed_count": 0, + "lfs_objects_registry_count": 0, + "lfs_objects_verification_total_count": 0, + "lfs_objects_verified_count": 0, + "lfs_objects_verification_failed_count": 0, + "merge_request_diffs_count": 0, + "merge_request_diffs_checksum_total_count": null, + "merge_request_diffs_checksummed_count": null, + "merge_request_diffs_checksum_failed_count": null, + "merge_request_diffs_synced_count": 0, "merge_request_diffs_failed_count": 0, - "merge_request_diffs_registry_count": 5, - "merge_request_diffs_verification_total_count": 5, - "merge_request_diffs_verified_count": 5, + "merge_request_diffs_registry_count": 0, + "merge_request_diffs_verification_total_count": 0, + "merge_request_diffs_verified_count": 0, "merge_request_diffs_verification_failed_count": 0, - "merge_request_diffs_synced_in_percentage": "100.00%", - "merge_request_diffs_verified_in_percentage": "100.00%", - "package_files_count": 5, - "package_files_checksum_total_count": 5, - "package_files_checksummed_count": 5, - "package_files_checksum_failed_count": 0, - "package_files_synced_count": 5, - "package_files_failed_count": 0, - "package_files_registry_count": 5, - "package_files_verification_total_count": 5, - "package_files_verified_count": 5, + "package_files_count": 25, + "package_files_checksum_total_count": null, + "package_files_checksummed_count": null, + "package_files_checksum_failed_count": null, + "package_files_synced_count": 1, + "package_files_failed_count": 24, + "package_files_registry_count": 25, + "package_files_verification_total_count": 1, + "package_files_verified_count": 1, "package_files_verification_failed_count": 0, - "package_files_synced_in_percentage": "100.00%", - "package_files_verified_in_percentage": "100.00%", - "terraform_state_versions_count": 5, - "terraform_state_versions_checksum_total_count": 5, - "terraform_state_versions_checksummed_count": 5, - "terraform_state_versions_checksum_failed_count": 0, - "terraform_state_versions_synced_count": 5, + "terraform_state_versions_count": 18, + "terraform_state_versions_checksum_total_count": null, + "terraform_state_versions_checksummed_count": null, + "terraform_state_versions_checksum_failed_count": null, + "terraform_state_versions_synced_count": 0, "terraform_state_versions_failed_count": 0, - "terraform_state_versions_registry_count": 5, - "terraform_state_versions_verification_total_count": 5, - "terraform_state_versions_verified_count": 5, + "terraform_state_versions_registry_count": 18, + "terraform_state_versions_verification_total_count": 0, + "terraform_state_versions_verified_count": 0, "terraform_state_versions_verification_failed_count": 0, - "terraform_state_versions_synced_in_percentage": "100.00%", - "terraform_state_versions_verified_in_percentage": "100.00%", - "snippet_repositories_count": 5, - "snippet_repositories_checksum_total_count": 5, - "snippet_repositories_checksummed_count": 5, - "snippet_repositories_checksum_failed_count": 0, - "snippet_repositories_synced_count": 5, + "snippet_repositories_count": 20, + "snippet_repositories_checksum_total_count": null, + "snippet_repositories_checksummed_count": null, + "snippet_repositories_checksum_failed_count": null, + "snippet_repositories_synced_count": 20, "snippet_repositories_failed_count": 0, - "snippet_repositories_registry_count": 5, - "snippet_repositories_verification_total_count": 5, - "snippet_repositories_verified_count": 5, + "snippet_repositories_registry_count": 20, + "snippet_repositories_verification_total_count": 20, + "snippet_repositories_verified_count": 20, "snippet_repositories_verification_failed_count": 0, - "snippet_repositories_synced_in_percentage": "100.00%", - "snippet_repositories_verified_in_percentage": "100.00%", - "group_wiki_repositories_count": 5, - "group_wiki_repositories_checksum_total_count": 5, - "group_wiki_repositories_checksummed_count": 5, - "group_wiki_repositories_checksum_failed_count": 0, - "group_wiki_repositories_synced_count": 5, + "group_wiki_repositories_count": 0, + "group_wiki_repositories_checksum_total_count": null, + "group_wiki_repositories_checksummed_count": null, + "group_wiki_repositories_checksum_failed_count": null, + "group_wiki_repositories_synced_count": 0, "group_wiki_repositories_failed_count": 0, - "group_wiki_repositories_registry_count": 5, - "group_wiki_repositories_verification_total_count": 5, - "group_wiki_repositories_verified_count": 5, - "group_wiki_repositories_verification_failed_count": 0, - "group_wiki_repositories_synced_in_percentage": "100.00%", - "group_wiki_repositories_verified_in_percentage": "100.00%", - "pipeline_artifacts_count": 5, - "pipeline_artifacts_checksum_total_count": 5, - "pipeline_artifacts_checksummed_count": 5, - "pipeline_artifacts_checksum_failed_count": 0, - "pipeline_artifacts_synced_count": 5, + "group_wiki_repositories_registry_count": 0, + "group_wiki_repositories_verification_total_count": null, + "group_wiki_repositories_verified_count": null, + "group_wiki_repositories_verification_failed_count": null, + "pipeline_artifacts_count": 0, + "pipeline_artifacts_checksum_total_count": null, + "pipeline_artifacts_checksummed_count": null, + "pipeline_artifacts_checksum_failed_count": null, + "pipeline_artifacts_synced_count": 0, "pipeline_artifacts_failed_count": 0, - "pipeline_artifacts_registry_count": 5, - "pipeline_artifacts_verification_total_count": 5, - "pipeline_artifacts_verified_count": 5, + "pipeline_artifacts_registry_count": 0, + "pipeline_artifacts_verification_total_count": 0, + "pipeline_artifacts_verified_count": 0, "pipeline_artifacts_verification_failed_count": 0, - "pipeline_artifacts_synced_in_percentage": "100.00%", - "pipeline_artifacts_verified_in_percentage": "100.00%", - "uploads_count": 5, - "uploads_synced_count": null, - "uploads_failed_count": 0, - "uploads_registry_count": null, - "uploads_synced_in_percentage": "0.00%", - "uploads_checksum_total_count": 5, - "uploads_checksummed_count": 5, + "pages_deployments_count": 0, + "pages_deployments_checksum_total_count": null, + "pages_deployments_checksummed_count": null, + "pages_deployments_checksum_failed_count": null, + "pages_deployments_synced_count": 0, + "pages_deployments_failed_count": 0, + "pages_deployments_registry_count": 0, + "pages_deployments_verification_total_count": 0, + "pages_deployments_verified_count": 0, + "pages_deployments_verification_failed_count": 0, + "uploads_count": 51, + "uploads_checksum_total_count": null, + "uploads_checksummed_count": null, "uploads_checksum_failed_count": null, - "uploads_verification_total_count": null, - "uploads_verified_count": null, - "uploads_verification_failed_count": null, - "uploads_verified_in_percentage": "0.00%", - "job_artifacts_count": 5, - "job_artifacts_checksum_total_count": 5, - "job_artifacts_checksummed_count": 5, - "job_artifacts_checksum_failed_count": 0, - "job_artifacts_synced_count": 5, + "uploads_synced_count": 0, + "uploads_failed_count": 1, + "uploads_registry_count": 51, + "uploads_verification_total_count": 0, + "uploads_verified_count": 0, + "uploads_verification_failed_count": 0, + "job_artifacts_count": 0, + "job_artifacts_checksum_total_count": null, + "job_artifacts_checksummed_count": null, + "job_artifacts_checksum_failed_count": null, + "job_artifacts_synced_count": 0, "job_artifacts_failed_count": 0, - "job_artifacts_registry_count": 5, - "job_artifacts_verification_total_count": 5, - "job_artifacts_verified_count": 5, + "job_artifacts_registry_count": 0, + "job_artifacts_verification_total_count": 0, + "job_artifacts_verified_count": 0, "job_artifacts_verification_failed_count": 0, - "job_artifacts_synced_in_percentage": "100.00%", - "job_artifacts_verified_in_percentage": "100.00%", - "job_artifacts_synced_missing_on_primary_count": 0, - "ci_secure_files_count": 5, - "ci_secure_files_checksum_total_count": 5, - "ci_secure_files_checksummed_count": 5, - "ci_secure_files_checksum_failed_count": 0, - "ci_secure_files_synced_count": 5, + "ci_secure_files_count": 0, + "ci_secure_files_checksum_total_count": null, + "ci_secure_files_checksummed_count": null, + "ci_secure_files_checksum_failed_count": null, + "ci_secure_files_synced_count": 0, "ci_secure_files_failed_count": 0, - "ci_secure_files_registry_count": 5, - "ci_secure_files_verification_total_count": 5, - "ci_secure_files_verified_count": 5, + "ci_secure_files_registry_count": 0, + "ci_secure_files_verification_total_count": 0, + "ci_secure_files_verified_count": 0, "ci_secure_files_verification_failed_count": 0, - "ci_secure_files_synced_in_percentage": "100.00%", - "ci_secure_files_verified_in_percentage": "100.00%", - "ci_secure_files_synced_missing_on_primary_count": 0, - "dependency_proxy_blobs_count": 5, - "dependency_proxy_blobs_checksum_total_count": 5, - "dependency_proxy_blobs_checksummed_count": 5, - "dependency_proxy_blobs_checksum_failed_count": 0, - "dependency_proxy_blobs_synced_count": 5, + "container_repositories_count": null, + "container_repositories_checksum_total_count": null, + "container_repositories_checksummed_count": null, + "container_repositories_checksum_failed_count": null, + "container_repositories_synced_count": null, + "container_repositories_failed_count": null, + "container_repositories_registry_count": null, + "container_repositories_verification_total_count": null, + "container_repositories_verified_count": null, + "container_repositories_verification_failed_count": null, + "dependency_proxy_blobs_count": 0, + "dependency_proxy_blobs_checksum_total_count": null, + "dependency_proxy_blobs_checksummed_count": null, + "dependency_proxy_blobs_checksum_failed_count": null, + "dependency_proxy_blobs_synced_count": 0, "dependency_proxy_blobs_failed_count": 0, - "dependency_proxy_blobs_registry_count": 5, - "dependency_proxy_blobs_verification_total_count": 5, - "dependency_proxy_blobs_verified_count": 5, + "dependency_proxy_blobs_registry_count": 0, + "dependency_proxy_blobs_verification_total_count": 0, + "dependency_proxy_blobs_verified_count": 0, "dependency_proxy_blobs_verification_failed_count": 0, - "dependency_proxy_blobs_synced_in_percentage": "100.00%", - "dependency_proxy_blobs_verified_in_percentage": "100.00%", - "dependency_proxy_blobs_synced_missing_on_primary_count": 0, - "container_repositories_count": 5, - "container_repositories_synced_count": 5, - "container_repositories_failed_count": 0, - "container_repositories_registry_count": 5, - "container_repositories_synced_in_percentage": "100.00%", - "container_repositories_synced_missing_on_primary_count": 0, - "container_repositories_checksum_total_count": 0, - "container_repositories_checksummed_count": 0, - "container_repositories_checksum_failed_count": 0, - "container_repositories_verification_total_count": 0, - "container_repositories_verified_count": 0, - "container_repositories_verification_failed_count": 0, - "container_repositories_verified_in_percentage": "100.00%", - "dependency_proxy_manifests_count": 5, - "dependency_proxy_manifests_checksum_total_count": 5, - "dependency_proxy_manifests_checksummed_count": 5, - "dependency_proxy_manifests_checksum_failed_count": 5, - "dependency_proxy_manifests_synced_count": 5, + "dependency_proxy_manifests_count": 0, + "dependency_proxy_manifests_checksum_total_count": null, + "dependency_proxy_manifests_checksummed_count": null, + "dependency_proxy_manifests_checksum_failed_count": null, + "dependency_proxy_manifests_synced_count": 0, "dependency_proxy_manifests_failed_count": 0, - "dependency_proxy_manifests_registry_count": 5, - "dependency_proxy_manifests_verification_total_count": 5, - "dependency_proxy_manifests_verified_count": 5, - "dependency_proxy_manifests_verification_failed_count": 5, - "dependency_proxy_manifests_synced_in_percentage": "100.00%", - "dependency_proxy_manifests_verified_in_percentage": "100.00%" + "dependency_proxy_manifests_registry_count": 0, + "dependency_proxy_manifests_verification_total_count": 0, + "dependency_proxy_manifests_verified_count": 0, + "dependency_proxy_manifests_verification_failed_count": 0, + "project_wiki_repositories_count": 19, + "project_wiki_repositories_checksum_total_count": null, + "project_wiki_repositories_checksummed_count": null, + "project_wiki_repositories_checksum_failed_count": null, + "project_wiki_repositories_synced_count": 19, + "project_wiki_repositories_failed_count": 0, + "project_wiki_repositories_registry_count": 19, + "project_wiki_repositories_verification_total_count": 19, + "project_wiki_repositories_verified_count": 19, + "project_wiki_repositories_verification_failed_count": 0, + "git_fetch_event_count_weekly": null, + "git_push_event_count_weekly": null, + "proxy_remote_requests_event_count_weekly": null, + "proxy_local_requests_event_count_weekly": null, + "repositories_synced_in_percentage": "94.74%", + "repositories_checksummed_in_percentage": "0.00%", + "repositories_verified_in_percentage": "0.00%", + "repositories_checked_in_percentage": "0.00%", + "wikis_synced_in_percentage": "94.74%", + "wikis_checksummed_in_percentage": "0.00%", + "wikis_verified_in_percentage": "0.00%", + "replication_slots_used_in_percentage": "0.00%", + "design_repositories_synced_in_percentage": "0.00%", + "lfs_objects_synced_in_percentage": "0.00%", + "lfs_objects_verified_in_percentage": "0.00%", + "merge_request_diffs_synced_in_percentage": "0.00%", + "merge_request_diffs_verified_in_percentage": "0.00%", + "package_files_synced_in_percentage": "4.00%", + "package_files_verified_in_percentage": "4.00%", + "terraform_state_versions_synced_in_percentage": "0.00%", + "terraform_state_versions_verified_in_percentage": "0.00%", + "snippet_repositories_synced_in_percentage": "100.00%", + "snippet_repositories_verified_in_percentage": "100.00%", + "group_wiki_repositories_synced_in_percentage": "0.00%", + "group_wiki_repositories_verified_in_percentage": "0.00%", + "pipeline_artifacts_synced_in_percentage": "0.00%", + "pipeline_artifacts_verified_in_percentage": "0.00%", + "pages_deployments_synced_in_percentage": "0.00%", + "pages_deployments_verified_in_percentage": "0.00%", + "uploads_synced_in_percentage": "0.00%", + "uploads_verified_in_percentage": "0.00%", + "job_artifacts_synced_in_percentage": "0.00%", + "job_artifacts_verified_in_percentage": "0.00%", + "ci_secure_files_synced_in_percentage": "0.00%", + "ci_secure_files_verified_in_percentage": "0.00%", + "container_repositories_synced_in_percentage": "0.00%", + "container_repositories_verified_in_percentage": "0.00%", + "dependency_proxy_blobs_synced_in_percentage": "0.00%", + "dependency_proxy_blobs_verified_in_percentage": "0.00%", + "dependency_proxy_manifests_synced_in_percentage": "0.00%", + "dependency_proxy_manifests_verified_in_percentage": "0.00%", + "project_wiki_repositories_synced_in_percentage": "100.00%", + "project_wiki_repositories_verified_in_percentage": "100.00%", + "repositories_count": 19, + "wikis_count": 19, + "replication_slots_count": null, + "replication_slots_used_count": null, + "healthy": false, + "health": "An existing tracking database cannot be reused..", + "health_status": "Unhealthy", + "missing_oauth_application": false, + "db_replication_lag_seconds": 0, + "replication_slots_max_retained_wal_bytes": null, + "repositories_checked_count": null, + "repositories_checked_failed_count": null, + "last_event_id": 357, + "last_event_timestamp": 1683127088, + "cursor_last_event_id": 357, + "cursor_last_event_timestamp": 1683127088, + "last_successful_status_check_timestamp": 1683127146, + "version": "16.0.0-pre", + "revision": "129eb954664", + "selective_sync_type": "", + "namespaces": [], + "updated_at": "2023-05-03T15:19:06.174Z", + "storage_shards_match": true, + "_links": { + "self": "https://primary.example.com/api/v4/geo_sites/2/status", + "site": "https://primary.example.com/api/v4/geo_sites/2" + } } ``` -- GitLab