diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-11-07 20:09:24 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-11-07 20:09:24 +0000 |
commit | cc9e3d09007174d4e0c30ae894c67160dcb72d10 (patch) | |
tree | bcca8d4c048c93aec86240317b97863877cdcf16 | |
parent | 73b7709a95ebb8eff5452e3344dac7f8d369f77c (diff) | |
parent | 013d097e8bfb74b378e949c951ff55327484b518 (diff) | |
download | gitlab-ce-cc9e3d09007174d4e0c30ae894c67160dcb72d10.tar.gz |
Merge branch 'jira-ping-differentiate-cloud' into 'master'
Usage ping - Differentiate Jira Server and Cloud
Closes #51043
See merge request gitlab-org/gitlab-ce!22791
-rw-r--r-- | lib/gitlab/usage_data.rb | 18 | ||||
-rw-r--r-- | spec/factories/services.rb | 11 | ||||
-rw-r--r-- | spec/lib/gitlab/usage_data_spec.rb | 7 |
3 files changed, 34 insertions, 2 deletions
diff --git a/lib/gitlab/usage_data.rb b/lib/gitlab/usage_data.rb index 4e2c6f7b2c2..069cd1f802a 100644 --- a/lib/gitlab/usage_data.rb +++ b/lib/gitlab/usage_data.rb @@ -127,7 +127,6 @@ module Gitlab # rubocop: disable CodeReuse/ActiveRecord def services_usage types = { - JiraService: :projects_jira_active, SlackService: :projects_slack_notifications_active, SlackSlashCommandsService: :projects_slack_slash_active, PrometheusService: :projects_prometheus_active @@ -135,6 +134,23 @@ module Gitlab results = count(Service.unscoped.where(type: types.keys, active: true).group(:type), fallback: Hash.new(-1)) types.each_with_object({}) { |(klass, key), response| response[key] = results[klass.to_s] || 0 } + .merge(jira_usage) + end + + def jira_usage + # Jira Cloud does not support custom domains as per https://jira.atlassian.com/browse/CLOUD-6999 + # so we can just check for subdomains of atlassian.net + services = count( + Service.unscoped.where(type: :JiraService, active: true) + .group("CASE WHEN properties LIKE '%.atlassian.net%' THEN 'cloud' ELSE 'server' END"), + fallback: Hash.new(-1) + ) + + { + projects_jira_server_active: services['server'] || 0, + projects_jira_cloud_active: services['cloud'] || 0, + projects_jira_active: services['server'] == -1 ? -1 : services.values.sum + } end def count(relation, fallback: -1) diff --git a/spec/factories/services.rb b/spec/factories/services.rb index 0d4fd49bf3a..5be56a49903 100644 --- a/spec/factories/services.rb +++ b/spec/factories/services.rb @@ -46,6 +46,17 @@ FactoryBot.define do ) end + factory :jira_cloud_service, class: JiraService do + project + active true + properties( + url: 'https://mysite.atlassian.net', + username: 'jira_user', + password: 'my-secret-password', + project_key: 'jira-key' + ) + end + factory :hipchat_service do project type 'HipchatService' diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb index 76dec4a44fd..b212d2b05f2 100644 --- a/spec/lib/gitlab/usage_data_spec.rb +++ b/spec/lib/gitlab/usage_data_spec.rb @@ -8,6 +8,7 @@ describe Gitlab::UsageData do before do create(:jira_service, project: projects[0]) create(:jira_service, project: projects[1]) + create(:jira_cloud_service, project: projects[2]) create(:prometheus_service, project: projects[1]) create(:service, project: projects[0], type: 'SlackSlashCommandsService', active: true) create(:service, project: projects[1], type: 'SlackService', active: true) @@ -97,6 +98,8 @@ describe Gitlab::UsageData do projects projects_imported_from_github projects_jira_active + projects_jira_server_active + projects_jira_cloud_active projects_slack_notifications_active projects_slack_slash_active projects_prometheus_active @@ -116,7 +119,9 @@ describe Gitlab::UsageData do expect(count_data[:projects]).to eq(3) expect(count_data[:projects_prometheus_active]).to eq(1) - expect(count_data[:projects_jira_active]).to eq(2) + expect(count_data[:projects_jira_active]).to eq(3) + expect(count_data[:projects_jira_server_active]).to eq(2) + expect(count_data[:projects_jira_cloud_active]).to eq(1) expect(count_data[:projects_slack_notifications_active]).to eq(2) expect(count_data[:projects_slack_slash_active]).to eq(1) |