diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-08-07 14:56:15 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-08-07 14:56:15 +0000 |
commit | 5bf65c9306960cdbe9b64bf8f62dc909d1cc6440 (patch) | |
tree | 22a4b3a199fae27c64e849c6f8c805c2b5008e5c /lib/api | |
parent | fa716921b8b136f5d4b09de9723568d5ac101f84 (diff) | |
parent | fda83a6179ae63f094410942e95951b40c3ad24b (diff) | |
download | gitlab-ce-5bf65c9306960cdbe9b64bf8f62dc909d1cc6440.tar.gz |
Merge branch 'bvl-nfs-circuitbreaker' into 'master'
Circuitbreaker for storage paths
Closes #32207, #33117, gitlab-com/infrastructure#1946, and gitlab-com/infrastructure#1775
See merge request !11449
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/api.rb | 1 | ||||
-rw-r--r-- | lib/api/circuit_breakers.rb | 50 | ||||
-rw-r--r-- | lib/api/entities.rb | 6 |
3 files changed, 57 insertions, 0 deletions
diff --git a/lib/api/api.rb b/lib/api/api.rb index 982a2b88d62..94df543853b 100644 --- a/lib/api/api.rb +++ b/lib/api/api.rb @@ -95,6 +95,7 @@ module API mount ::API::Boards mount ::API::Branches mount ::API::BroadcastMessages + mount ::API::CircuitBreakers mount ::API::Commits mount ::API::CommitStatuses mount ::API::DeployKeys diff --git a/lib/api/circuit_breakers.rb b/lib/api/circuit_breakers.rb new file mode 100644 index 00000000000..118883f5ea5 --- /dev/null +++ b/lib/api/circuit_breakers.rb @@ -0,0 +1,50 @@ +module API + class CircuitBreakers < Grape::API + before { authenticated_as_admin! } + + resource :circuit_breakers do + params do + requires :type, + type: String, + desc: "The type of circuitbreaker", + values: ['repository_storage'] + end + resource ':type' do + namespace '', requirements: { type: 'repository_storage' } do + helpers do + def failing_storage_health + @failing_storage_health ||= Gitlab::Git::Storage::Health.for_failing_storages + end + + def storage_health + @failing_storage_health ||= Gitlab::Git::Storage::Health.for_all_storages + end + end + + desc 'Get all failing git storages' do + detail 'This feature was introduced in GitLab 9.5' + success Entities::RepositoryStorageHealth + end + get do + present storage_health, with: Entities::RepositoryStorageHealth + end + + desc 'Get all failing git storages' do + detail 'This feature was introduced in GitLab 9.5' + success Entities::RepositoryStorageHealth + end + get 'failing' do + present failing_storage_health, with: Entities::RepositoryStorageHealth + end + + desc 'Reset all storage failures and open circuitbreaker' do + detail 'This feature was introduced in GitLab 9.5' + end + delete do + Gitlab::Git::Storage::CircuitBreaker.reset_all! + end + end + end + end + end +end diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 3afa44a7428..94b438db499 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -951,5 +951,11 @@ module API expose :ip_address expose :submitted, as: :akismet_submitted end + + class RepositoryStorageHealth < Grape::Entity + expose :storage_name + expose :failing_on_hosts + expose :total_failures + end end end |