diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/entities.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/usage_data.rb | 16 |
2 files changed, 13 insertions, 9 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 312c8d5b548..cc45679dd0e 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -1044,7 +1044,11 @@ module API expose :job_events # Expose serialized properties expose :properties do |service, options| - service.properties.slice(*service.api_field_names) + if service.properties.present? + service.properties.slice(*service.api_field_names) + else + service.data_fields.as_json.slice(*service.api_field_names) + end end end diff --git a/lib/gitlab/usage_data.rb b/lib/gitlab/usage_data.rb index a93301cb4ce..e6df1884a33 100644 --- a/lib/gitlab/usage_data.rb +++ b/lib/gitlab/usage_data.rb @@ -172,16 +172,16 @@ module Gitlab 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) - ) + services = Service.unscoped.where(type: :JiraService, active: true).includes(:jira_tracker_data) + + counts = services.group_by do |service| + service.jira_tracker_data.url.include?('.atlassian.net') ? :cloud : :server + end { - projects_jira_server_active: services['server'] || 0, - projects_jira_cloud_active: services['cloud'] || 0, - projects_jira_active: services['server'] == -1 ? -1 : services.values.sum + projects_jira_server_active: counts[:server]&.count || 0, + projects_jira_cloud_active: counts[:cloud]&.count || 0, + projects_jira_active: services ? count(services) : -1 } end |