From a721e34533be7498ec24427e666d92e7be6affe1 Mon Sep 17 00:00:00 2001 From: Marc Saleiko <msaleiko@gitlab.com> Date: Thu, 7 Dec 2023 08:08:13 +0000 Subject: [PATCH] Adds Service Desk custom email enabled to Service Ping Adds the counts.service_desk_custom_email_enabled metric to Service Ping. Provides the number of projects that have Service Desk custom email enabled. --- ...2552_service_desk_custom_email_enabled.yml | 21 +++++++++++++++++++ ...e_desk_settings_on_custom_email_enabled.rb | 17 +++++++++++++++ db/schema_migrations/20231204144300 | 1 + db/structure.sql | 2 ++ ...ervice_desk_custom_email_enabled_metric.rb | 17 +++++++++++++++ ...e_desk_custom_email_enabled_metric_spec.rb | 16 ++++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 config/metrics/counts_all/20231204142552_service_desk_custom_email_enabled.yml create mode 100644 db/migrate/20231204144300_add_index_service_desk_settings_on_custom_email_enabled.rb create mode 100644 db/schema_migrations/20231204144300 create mode 100644 lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric.rb create mode 100644 spec/lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric_spec.rb diff --git a/config/metrics/counts_all/20231204142552_service_desk_custom_email_enabled.yml b/config/metrics/counts_all/20231204142552_service_desk_custom_email_enabled.yml new file mode 100644 index 0000000000000..d577c3b5b9f2f --- /dev/null +++ b/config/metrics/counts_all/20231204142552_service_desk_custom_email_enabled.yml @@ -0,0 +1,21 @@ +--- +key_path: counts.service_desk_custom_email_enabled +description: "Number of projects that have Service Desk custom email enabled" +product_section: seg +product_stage: service management +product_group: respond +value_type: number +status: active +milestone: "16.7" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138662 +time_frame: all +data_source: database +data_category: optional +instrumentation_class: CountServiceDeskCustomEmailEnabledMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/db/migrate/20231204144300_add_index_service_desk_settings_on_custom_email_enabled.rb b/db/migrate/20231204144300_add_index_service_desk_settings_on_custom_email_enabled.rb new file mode 100644 index 0000000000000..22c8c1962341c --- /dev/null +++ b/db/migrate/20231204144300_add_index_service_desk_settings_on_custom_email_enabled.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIndexServiceDeskSettingsOnCustomEmailEnabled < Gitlab::Database::Migration[2.2] + milestone '16.7' + + disable_ddl_transaction! + + INDEX_NAME = 'index_service_desk_settings_on_custom_email_enabled' + + def up + add_concurrent_index :service_desk_settings, :custom_email_enabled, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :service_desk_settings, INDEX_NAME + end +end diff --git a/db/schema_migrations/20231204144300 b/db/schema_migrations/20231204144300 new file mode 100644 index 0000000000000..a69b0278d5af2 --- /dev/null +++ b/db/schema_migrations/20231204144300 @@ -0,0 +1 @@ +385471e69c2099130d0758d2fe6ac27b9211204759de04f3fc0a79b84b5a1633 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 242c3eb65b8e3..0573af7b8f3d9 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -34514,6 +34514,8 @@ CREATE INDEX index_service_desk_custom_email_verifications_on_triggerer_id ON se CREATE INDEX index_service_desk_enabled_projects_on_id_creator_id_created_at ON projects USING btree (id, creator_id, created_at) WHERE (service_desk_enabled = true); +CREATE INDEX index_service_desk_settings_on_custom_email_enabled ON service_desk_settings USING btree (custom_email_enabled); + CREATE INDEX index_service_desk_settings_on_file_template_project_id ON service_desk_settings USING btree (file_template_project_id); CREATE UNIQUE INDEX index_shards_on_name ON shards USING btree (name); diff --git a/lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric.rb new file mode 100644 index 0000000000000..85f59f3694174 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountServiceDeskCustomEmailEnabledMetric < DatabaseMetric + operation :count + + relation do + ServiceDeskSetting.where(custom_email_enabled: true) + end + end + end + end + end +end diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric_spec.rb new file mode 100644 index 0000000000000..6d10052ff668b --- /dev/null +++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_service_desk_custom_email_enabled_metric_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountServiceDeskCustomEmailEnabledMetric, feature_category: :service_ping do + let_it_be(:project) { create(:project) } + let_it_be(:credential) { create(:service_desk_custom_email_credential, project: project) } + let_it_be(:verification) { create(:service_desk_custom_email_verification, :finished, project: project) } + let_it_be(:setting) do + create(:service_desk_setting, project: project, custom_email: 'support@example.com', custom_email_enabled: true) + end + + let(:expected_value) { 1 } + + it_behaves_like 'a correct instrumented metric value', { time_frame: 'all', data_source: 'database' } +end -- GitLab