diff --git a/app/services/ml/create_model_service.rb b/app/services/ml/create_model_service.rb index 5c179d8edf7f690c639e6b51e0f4312d115ae13f..b87b13dd37910c9f44a3d8c372b7b8164a5663b7 100644 --- a/app/services/ml/create_model_service.rb +++ b/app/services/ml/create_model_service.rb @@ -22,6 +22,12 @@ def execute add_metadata(model, @metadata) + Gitlab::InternalEvents.track_event( + 'model_registry_ml_model_created', + project: @project, + user: @user + ) + model end end diff --git a/app/services/ml/create_model_version_service.rb b/app/services/ml/create_model_version_service.rb index e7a592101070c1a5a2f6e8285a692a629f901cc6..3b8c096b5b41928d0f1872728000da73beef9c11 100644 --- a/app/services/ml/create_model_version_service.rb +++ b/app/services/ml/create_model_version_service.rb @@ -24,6 +24,12 @@ def execute { model_version: model_version } ).execute + Gitlab::InternalEvents.track_event( + 'model_registry_ml_model_version_created', + project: @model.project, + user: @user + ) + model_version end end diff --git a/config/events/ml_model_created.yml b/config/events/ml_model_created.yml new file mode 100644 index 0000000000000000000000000000000000000000..ba9a41039561e69fea3f3e4364ae0740bf210ee5 --- /dev/null +++ b/config/events/ml_model_created.yml @@ -0,0 +1,24 @@ +--- +description: Tracks the creation of Machine learning models (Ml::Model) through Ml::CreateModelService +category: InternalEventTracking +action: model_registry_ml_model_created +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: data-science +product_stage: modelops +product_group: mlops +milestone: "16.8" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139798 +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/config/events/ml_model_version_created.yml b/config/events/ml_model_version_created.yml new file mode 100644 index 0000000000000000000000000000000000000000..655ea812aea919c1fe4ca05ee9000b4091ba3be7 --- /dev/null +++ b/config/events/ml_model_version_created.yml @@ -0,0 +1,24 @@ +--- +description: Tracks the creation of Machine learning models versions (Ml::ModelVersion) through Ml::CreateModelVersionService +category: InternalEventTracking +action: model_registry_ml_model_version_created +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: data-science +product_stage: modelops +product_group: mlops +milestone: "16.8" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139798 +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/count_total_model_registry_ml_model_created_28d.yml b/config/metrics/counts_28d/count_total_model_registry_ml_model_created_28d.yml new file mode 100644 index 0000000000000000000000000000000000000000..1bf0b9df0c7a47a7eb0240478c8a894916023760 --- /dev/null +++ b/config/metrics/counts_28d/count_total_model_registry_ml_model_created_28d.yml @@ -0,0 +1,26 @@ +--- +key_path: count_total_model_registry_ml_model_created_28d +description: Tracks the creation of Machine learning models (Ml::Model) through Ml::CreateModelService in the last 28 days. +product_section: data-science +product_stage: modelops +product_group: mlops +performance_indicator_type: [] +value_type: number +status: active +milestone: "16.8" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139798 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - model_registry_ml_model_created +events: + - name: model_registry_ml_model_created diff --git a/config/metrics/counts_28d/count_total_model_registry_ml_model_version_created_28d.yml b/config/metrics/counts_28d/count_total_model_registry_ml_model_version_created_28d.yml new file mode 100644 index 0000000000000000000000000000000000000000..500f9f118c4213876476c7633cd296a5c1fc034e --- /dev/null +++ b/config/metrics/counts_28d/count_total_model_registry_ml_model_version_created_28d.yml @@ -0,0 +1,26 @@ +--- +key_path: count_total_model_registry_ml_model_version_created_28d +description: Tracks the creation of Machine learning models versions (Ml::ModelVersion) through Ml::CreateModelVersionService in the last 28 days. +product_section: data-science +product_stage: modelops +product_group: mlops +performance_indicator_type: [] +value_type: number +status: active +milestone: "16.8" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139798 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - model_registry_ml_model_version_created +events: + - name: model_registry_ml_model_version_created diff --git a/config/metrics/counts_7d/count_total_code_suggestions_authenticate_7d.yml b/config/metrics/counts_7d/count_total_code_suggestions_authenticate_7d.yml index e7a5ada2e4e1c6ccd57e02f7e97ae1d553b0b7f5..285edb002a149f071030558908e5044d91e5e9b2 100644 --- a/config/metrics/counts_7d/count_total_code_suggestions_authenticate_7d.yml +++ b/config/metrics/counts_7d/count_total_code_suggestions_authenticate_7d.yml @@ -7,7 +7,7 @@ product_group: code_creation performance_indicator_type: [] value_type: number status: active -milestone: "16.7" +milestone: "16.8" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/138848 time_frame: 7d data_source: internal_events diff --git a/config/metrics/counts_7d/count_total_model_registry_ml_model_created_7d.yml b/config/metrics/counts_7d/count_total_model_registry_ml_model_created_7d.yml new file mode 100644 index 0000000000000000000000000000000000000000..ce42cf6165443b0fe213ff7c94861343d17728de --- /dev/null +++ b/config/metrics/counts_7d/count_total_model_registry_ml_model_created_7d.yml @@ -0,0 +1,26 @@ +--- +key_path: count_total_model_registry_ml_model_created_7d +description: Tracks the creation of Machine learning models (Ml::Model) through Ml::CreateModelService in the last 7 days. +product_section: data-science +product_stage: modelops +product_group: mlops +performance_indicator_type: [] +value_type: number +status: active +milestone: "16.8" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139798 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - model_registry_ml_model_created +events: + - name: model_registry_ml_model_created diff --git a/config/metrics/counts_7d/count_total_model_registry_ml_model_version_created_7d.yml b/config/metrics/counts_7d/count_total_model_registry_ml_model_version_created_7d.yml new file mode 100644 index 0000000000000000000000000000000000000000..e4bd8488cbffadc9e7db6ebadc2c67feda4fe851 --- /dev/null +++ b/config/metrics/counts_7d/count_total_model_registry_ml_model_version_created_7d.yml @@ -0,0 +1,26 @@ +--- +key_path: count_total_model_registry_ml_model_version_created_7d +description: Tracks the creation of Machine learning models versions (Ml::ModelVersion) through Ml::CreateModelVersionService in the last 7 days. +product_section: data-science +product_stage: modelops +product_group: mlops +performance_indicator_type: [] +value_type: number +status: active +milestone: "16.8" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139798 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - model_registry_ml_model_version_created +events: + - name: model_registry_ml_model_version_created diff --git a/spec/services/ml/create_model_service_spec.rb b/spec/services/ml/create_model_service_spec.rb index 212f0940635eec0e01f2d303ec920cdfa9769204..74c1dd5fec74ce1f44e0fa80d492ef5f6a90fbb8 100644 --- a/spec/services/ml/create_model_service_spec.rb +++ b/spec/services/ml/create_model_service_spec.rb @@ -9,6 +9,10 @@ let_it_be(:description) { 'description' } let_it_be(:metadata) { [] } + before do + allow(Gitlab::InternalEvents).to receive(:track_event) + end + subject(:create_model) { described_class.new(project, name, user, description, metadata).execute } describe '#execute' do @@ -18,6 +22,10 @@ it 'creates a model', :aggregate_failures do expect { create_model }.to change { Ml::Model.count }.by(1) + expect(Gitlab::InternalEvents).to have_received(:track_event).with( + 'model_registry_ml_model_created', + { project: project, user: user } + ) expect(create_model.name).to eq(name) end @@ -29,6 +37,10 @@ it 'creates a model', :aggregate_failures do expect { create_model }.to change { Ml::Model.count }.by(1) + expect(Gitlab::InternalEvents).to have_received(:track_event).with( + 'model_registry_ml_model_created', + { project: project, user: user } + ) expect(create_model.name).to eq(name) end @@ -40,6 +52,7 @@ it 'raises an error', :aggregate_failures do expect { create_model }.to raise_error(ActiveRecord::RecordInvalid) + expect(Gitlab::InternalEvents).not_to have_received(:track_event) end end diff --git a/spec/services/ml/create_model_version_service_spec.rb b/spec/services/ml/create_model_version_service_spec.rb index 4e71c538f7e11fe10a7e937e16aea668cd0e6c52..b3aead4a92c44835b7cfd3e633d209b40b1524c4 100644 --- a/spec/services/ml/create_model_version_service_spec.rb +++ b/spec/services/ml/create_model_version_service_spec.rb @@ -6,12 +6,21 @@ let(:model) { create(:ml_models) } let(:params) { {} } + before do + allow(Gitlab::InternalEvents).to receive(:track_event) + end + subject(:service) { described_class.new(model, params).execute } context 'when no versions exist' do it 'creates a model version', :aggregate_failures do expect { service }.to change { Ml::ModelVersion.count }.by(1).and change { Ml::Candidate.count }.by(1) expect(model.reload.latest_version.version).to eq('1.0.0') + + expect(Gitlab::InternalEvents).to have_received(:track_event).with( + 'model_registry_ml_model_version_created', + { project: model.project, user: nil } + ) end end @@ -23,6 +32,11 @@ it 'creates another model version and increments the version number', :aggregate_failures do expect { service }.to change { Ml::ModelVersion.count }.by(1).and change { Ml::Candidate.count }.by(1) expect(model.reload.latest_version.version).to eq('4.0.0') + + expect(Gitlab::InternalEvents).to have_received(:track_event).with( + 'model_registry_ml_model_version_created', + { project: model.project, user: nil } + ) end end