blob: a5c70e000c15e5ab8e808544013b30e74be80052 [file] [log] [blame] [view]
# Replication-status
Record and display the repository's replication status without having to dig
into the Gerrit replication_log
Consumes replication events and updates a cache with the latest replication
status of specific refs to specific remotes.
The cache information is then exposed via a project's resource REST endpoint:
```bash
curl -v --user <user> '<gerrit-server>/a/projects/<project-name>/remotes/<remote-url>/replication-status'
```
* <project-name>: an (url-encoded) project repository
* <remote-url>: an (url-encoded) remote URL for the replication
For instance, to assess the replication status of the project `some/project` to
the
`https://github.com/some/project.git` URL, the following endpoint should be
called:
```bash
curl -v --user <user> '<gerrit-server>/a/projects/some%2Fproject/remotes/https%3A%2F%2Fgithub.com%2Fsome%2Fproject.git/replication-status'
```
A payload, similar to this may be returned:
```
{
"remotes": {
"https://github.com/some/project.git": {
"status": {
"refs/changes/01/1/meta": {
"status": "SUCCEEDED",
"when": 1626688830
},
"refs/changes/03/3/meta": {
"status": "SUCCEEDED",
"when": 1626688854
},
"refs/changes/03/3/1": {
"status": "SUCCEEDED",
"when": 1626688854
},
"refs/changes/02/2/1": {
"status": "SUCCEEDED",
"when": 1626688844
},
"refs/changes/02/2/meta": {
"status": "SUCCEEDED",
"when": 1626688844
},
"refs/changes/01/1/1": {
"status": "SUCCEEDED",
"when": 1626688830
}
}
}
},
"status": "OK",
"project": "some/project"
}
```
### HTTP status
The endpoint returns different HTTP response code depending on the result:
* 200 OK - The endpoint was called successfully, and a payload returned
* 404 Not Found - Project was not found
* 500 Failure - An unexpected server error occurred
* 403 Forbidden - The user has no permission to query the endpoint. Only
Administrators and project owners are allowed
### Overall status
The REST-API response shows a `status` field, which shows the overall
replication-status of the projects for the specified remote.
- `OK` - all the refs have successfully replicated
- `FAILED` - Some refs have not replicated successfully
### TODO
* Does not consume pull-replication events.