Commit 0c0baf8c authored by Igor Drozdov's avatar Igor Drozdov

Merge branch 'ps-usage-data-gitaly-storages' into 'master'

Statistics about amount of clusters configured

See merge request gitlab-org/gitlab!32761
parents fdb3fbba acce5905
......@@ -612,6 +612,7 @@ The following is example content of the Usage Ping payload.
"gitaly": {
"version": "12.10.0-rc1-93-g40980d40",
"servers": 56,
"clusters": 14,
"filesystems": [
"EXT_2_3_4"
]
......
......@@ -3,6 +3,7 @@
module Gitaly
class Server
SHA_VERSION_REGEX = /\A\d+\.\d+\.\d+-\d+-g([a-f0-9]{8})\z/.freeze
DEFAULT_REPLICATION_FACTOR = 1
class << self
def all
......@@ -16,6 +17,10 @@ module Gitaly
def filesystems
all.map(&:filesystem_type).compact.uniq
end
def gitaly_clusters
all.count { |g| g.replication_factor > DEFAULT_REPLICATION_FACTOR }
end
end
attr_reader :storage
......@@ -73,6 +78,10 @@ module Gitaly
"Error getting the address: #{e.message}"
end
def replication_factor
storage_status&.replication_factor
end
private
def storage_status
......
......@@ -217,6 +217,7 @@ module Gitlab
gitaly: {
version: alt_usage_data { Gitaly::Server.all.first.server_version },
servers: alt_usage_data { Gitaly::Server.count },
clusters: alt_usage_data { Gitaly::Server.gitaly_clusters },
filesystems: alt_usage_data(fallback: ["-1"]) { Gitaly::Server.filesystems }
},
gitlab_pages: {
......
......@@ -20,6 +20,7 @@ describe Gitaly::Server do
it { is_expected.to respond_to(:git_binary_version) }
it { is_expected.to respond_to(:up_to_date?) }
it { is_expected.to respond_to(:address) }
it { is_expected.to respond_to(:replication_factor) }
describe 'readable?' do
context 'when the storage is readable' do
......@@ -134,4 +135,22 @@ describe Gitaly::Server do
end
end
end
describe 'replication_factor' do
context 'when examining for a given server' do
let(:storage_status) { double('storage_status', storage_name: 'default') }
before do
response = double('response', storage_statuses: [storage_status])
allow_next_instance_of(Gitlab::GitalyClient::ServerService) do |instance|
allow(instance).to receive(:info).and_return(response)
end
end
it do
allow(storage_status).to receive(:replication_factor).and_return(2)
expect(server.replication_factor).to eq(2)
end
end
end
end
......@@ -255,6 +255,7 @@ describe Gitlab::UsageData, :aggregate_failures do
expect(subject[:database][:version]).to eq(Gitlab::Database.version)
expect(subject[:gitaly][:version]).to be_present
expect(subject[:gitaly][:servers]).to be >= 1
expect(subject[:gitaly][:clusters]).to be >= 0
expect(subject[:gitaly][:filesystems]).to be_an(Array)
expect(subject[:gitaly][:filesystems].first).to be_a(String)
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment