diff --git a/app/assets/javascripts/organizations/groups_and_projects/components/app.vue b/app/assets/javascripts/organizations/groups_and_projects/components/app.vue index 43620872cd7..10471cc1fdd 100644 --- a/app/assets/javascripts/organizations/groups_and_projects/components/app.vue +++ b/app/assets/javascripts/organizations/groups_and_projects/components/app.vue @@ -1,13 +1,45 @@ @@ -30,6 +130,49 @@ export default { diff --git a/app/assets/javascripts/organizations/groups_and_projects/constants.js b/app/assets/javascripts/organizations/groups_and_projects/constants.js index c816ea27342..529caa666a0 100644 --- a/app/assets/javascripts/organizations/groups_and_projects/constants.js +++ b/app/assets/javascripts/organizations/groups_and_projects/constants.js @@ -1,4 +1,29 @@ +import { __ } from '~/locale'; + export const DISPLAY_QUERY_GROUPS = 'groups'; export const DISPLAY_QUERY_PROJECTS = 'projects'; export const ORGANIZATION_ROOT_ROUTE_NAME = 'root'; + +export const FILTERED_SEARCH_TERM_KEY = 'search'; + +export const DISPLAY_LISTBOX_ITEMS = [ + { + value: DISPLAY_QUERY_GROUPS, + text: __('Groups'), + }, + { + value: DISPLAY_QUERY_PROJECTS, + text: __('Projects'), + }, +]; + +export const SORT_DIRECTION_ASC = 'asc'; +export const SORT_DIRECTION_DESC = 'desc'; + +export const SORT_ITEM_CREATED = { + name: 'created', + text: __('Created'), +}; + +export const SORT_ITEMS = [SORT_ITEM_CREATED]; diff --git a/app/assets/javascripts/vue_shared/components/filtered_search_bar/constants.js b/app/assets/javascripts/vue_shared/components/filtered_search_bar/constants.js index 39fd3d62c3b..2b3d1b2c1f5 100644 --- a/app/assets/javascripts/vue_shared/components/filtered_search_bar/constants.js +++ b/app/assets/javascripts/vue_shared/components/filtered_search_bar/constants.js @@ -52,6 +52,13 @@ export const SORT_DIRECTION = { export const FILTERED_SEARCH_TERM = 'filtered-search-term'; +export const TOKEN_EMPTY_SEARCH_TERM = { + type: FILTERED_SEARCH_TERM, + value: { + data: '', + }, +}; + export const TOKEN_TITLE_APPROVED_BY = __('Approved-By'); export const TOKEN_TITLE_ASSIGNEE = s__('SearchToken|Assignee'); export const TOKEN_TITLE_AUTHOR = __('Author'); diff --git a/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_utils.js b/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_utils.js index c08dc13d242..96a0ca9eb01 100644 --- a/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_utils.js +++ b/app/assets/javascripts/vue_shared/components/filtered_search_bar/filtered_search_utils.js @@ -1,4 +1,4 @@ -import { isEmpty, uniqWith, isEqual } from 'lodash'; +import { isEmpty, uniqWith, isEqual, isString } from 'lodash'; import AccessorUtilities from '~/lib/utils/accessor'; import { queryToObject } from '~/lib/utils/url_utility'; @@ -159,7 +159,7 @@ function filteredSearchTermValue(value) { * '?myFilterName=foo' * gets translated into: * { myFilterName: { value: 'foo', operator: '=' } } - * @param {String} query URL query string, e.g. from `window.location.search` + * @param {String|Object} query URL query string or object, e.g. from `window.location.search` or `this.$route.query` * @param {Object} options * @param {Object} options * @param {String} [options.filteredSearchTermKey] if set, a FILTERED_SEARCH_TERM filter is created to this parameter. `'search'` is suggested @@ -167,7 +167,7 @@ function filteredSearchTermValue(value) { * @return {Object} filter object with filter names and their values */ export function urlQueryToFilter(query = '', { filteredSearchTermKey, filterNamesAllowList } = {}) { - const filters = queryToObject(query, { gatherArrays: true }); + const filters = isString(query) ? queryToObject(query, { gatherArrays: true }) : query; return Object.keys(filters).reduce((memo, key) => { const value = filters[key]; if (!value) { diff --git a/db/migrate/20230723203612_backfill_default_branch_protection_application_setting.rb b/db/migrate/20230723203612_backfill_default_branch_protection_application_setting.rb new file mode 100644 index 00000000000..6c6231117e1 --- /dev/null +++ b/db/migrate/20230723203612_backfill_default_branch_protection_application_setting.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +class BackfillDefaultBranchProtectionApplicationSetting < Gitlab::Database::Migration[2.1] + restrict_gitlab_migration gitlab_schema: :gitlab_main + + class ApplicationSetting < MigrationRecord + self.table_name = 'application_settings' + end + + BRANCH_PROTECTION = [ + { "allow_force_push" => true, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 30 }] }, + { "allow_force_push" => false, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 30 }] }, + { "allow_force_push" => false, + "allowed_to_merge" => [{ "access_level" => 40 }], + "allowed_to_push" => [{ "access_level" => 40 }] }, + { "allow_force_push" => true, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 40 }] }, + { "allow_force_push" => true, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 40 }], + "developer_can_initial_push" => true } + ] + + def up + ApplicationSetting.reset_column_information + + ApplicationSetting.find_each do |application_setting| + level = application_setting.default_branch_protection.to_i + protection_hash = BRANCH_PROTECTION[level] + application_setting.update!(default_branch_protection_defaults: protection_hash) + end + end + + def down + ApplicationSetting.reset_column_information + + ApplicationSetting.update_all(default_branch_protection_defaults: {}) + end +end diff --git a/db/schema_migrations/20230723203612 b/db/schema_migrations/20230723203612 new file mode 100644 index 00000000000..43a9a02dddb --- /dev/null +++ b/db/schema_migrations/20230723203612 @@ -0,0 +1 @@ +2fbe6ccc23b398419e52a599b9c748a9d592d53369569e8b865d0ec1f4d99b0d \ No newline at end of file diff --git a/doc/development/fe_guide/merge_request_widget_extensions.md b/doc/development/fe_guide/merge_request_widget_extensions.md index f5bf9049db1..99206d99590 100644 --- a/doc/development/fe_guide/merge_request_widget_extensions.md +++ b/doc/development/fe_guide/merge_request_widget_extensions.md @@ -351,10 +351,7 @@ To generate these known events for a single widget: ``` 1. Repeat step 6, but change the `data_source` to `redis_hll`. -1. Add each of the HLL metrics to `lib/gitlab/usage_data_counters/known_events/code_review_events.yml`: - 1. `name` = (the event) - 1. `category` = `code_review` - 1. `aggregation` = `weekly` + 1. Add each event (those listed in the command in step 7, replacing `test_reports` with the appropriate name slug) to the aggregate files: 1. `config/metrics/counts_7d/{timestamp}_code_review_category_monthly_active_users.yml` diff --git a/doc/development/integrations/index.md b/doc/development/integrations/index.md index bd672c86b28..a01e35349cb 100644 --- a/doc/development/integrations/index.md +++ b/doc/development/integrations/index.md @@ -156,7 +156,7 @@ module Integrations end ``` -### Customize the frontend form +## Customize the frontend form The frontend form is generated dynamically based on metadata defined in the model. @@ -182,26 +182,26 @@ This method should return an array of hashes for each field, where the keys can | `help:` | string | false | | A help text that displays below the form field. | `api_only:` | boolean | false | `false` | Specify if the field should only be available through the API, and excluded from the frontend form. -#### Additional keys for `type: 'checkbox'` +### Additional keys for `type: 'checkbox'` | Key | Type | Required | Default | Description |:------------------|:-------|:---------|:------------------|:-- | `checkbox_label:` | string | false | Value of `title:` | A custom label that displays next to the checkbox. -#### Additional keys for `type: 'select'` +### Additional keys for `type: 'select'` | Key | Type | Required | Default | Description |:-----------|:------|:---------|:--------|:-- | `choices:` | array | true | | A nested array of `[label, value]` tuples. -#### Additional keys for `type: 'password'` +### Additional keys for `type: 'password'` | Key | Type | Required | Default | Description |:----------------------------|:-------|:---------|:------------------|:-- | `non_empty_password_title:` | string | false | Value of `title:` | An alternative label that displays when a value is already stored. | `non_empty_password_help:` | string | false | Value of `help:` | An alternative help text that displays when a value is already stored. -#### Frontend form examples +### Frontend form examples This example defines a required `url` field, and optional `username` and `password` fields: @@ -236,7 +236,7 @@ module Integrations end ``` -### Expose the integration in the REST API +## Expose the integration in the REST API To expose the integration in the [REST API](../../api/integrations.md): diff --git a/doc/development/internal_analytics/service_ping/implement.md b/doc/development/internal_analytics/service_ping/implement.md index 5c5be64ccb9..9dbfa02854d 100644 --- a/doc/development/internal_analytics/service_ping/implement.md +++ b/doc/development/internal_analytics/service_ping/implement.md @@ -323,25 +323,7 @@ Implemented using Redis methods [PFADD](https://redis.io/commands/pfadd/) and [P ##### Add new events -1. Define events in [`known_events`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/). - - Example event: - - ```yaml - - name: users_creating_epics - aggregation: weekly - ``` - - Keys: - - - `name`: unique event name. - - Name format for Redis HLL events `{hll_counters}_` - - Example names: `users_creating_epics`, `users_triggering_security_scans`. - - - `aggregation`: may be set to a `:daily` or `:weekly` key. Defines how counting data is stored in Redis. - Aggregation on a `daily` basis does not pull more fine grained data. +1. Add an event to the required metric ([see example](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20230210200054_i_ee_code_review_merge_request_widget_license_compliance_expand_weekly.yml#L17-17)) or create a metric. 1. Use one of the following methods to track the event: @@ -446,7 +428,7 @@ Implemented using Redis methods [PFADD](https://redis.io/commands/pfadd/) and [P - Using the JavaScript/Vue API helper, which calls the [`UsageData` API](#usagedata-api). - Example for an existing event already defined in [known events](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/): + Example for an existing event already defined in [metric fields](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20220407125907_p_ci_templates_themekit_monthly.yml#L17-17): ```javascript import api from '~/api'; @@ -484,7 +466,6 @@ Next, get the unique events for the current week. We have the following recommendations for [adding new events](#add-new-events): -- Event aggregation: weekly. - When adding new metrics, use a [feature flag](../../../operations/feature_flags.md) to control the impact. It's recommended to disable the new feature flag by default (set `default_enabled: false`). - Events can be triggered using the `UsageData` API, which helps when there are > 10 events per change @@ -500,7 +481,7 @@ We can disable tracking completely by using the global flag: ##### Known events are added automatically in Service Data payload -Service Ping adds all events [`known_events/*.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events) to Service Data generation under the `redis_hll_counters` key. This column is stored in [version-app as a JSON](https://gitlab.com/gitlab-org/gitlab-services/version.gitlab.com/-/blob/main/db/schema.rb#L213). +Service Ping adds all events to Service Data generation under the `redis_hll_counters` key. This column is stored in [version-app as a JSON](https://gitlab.com/gitlab-org/gitlab-services/version.gitlab.com/-/blob/main/db/schema.rb#L213). For each event we add metrics for the weekly and monthly time frames, and totals for each where applicable: - `#{event_name}_weekly`: Data for 7 days for daily [aggregation](#add-new-events) events and data for the last complete week for weekly [aggregation](#add-new-events) events. @@ -539,8 +520,6 @@ Example: # Redis Counters redis_usage_data(Gitlab::UsageDataCounters::WikiPageCounter) -# Define events in common.yml https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml - # Tracking events Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_expanding_vulnerabilities', values: visitor_id) @@ -804,13 +783,7 @@ create metric YAML definition file following [Aggregated metric instrumentation > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45979) in GitLab 13.6. -To declare the aggregate of events collected with [Redis HLL Counters](#redis-hll-counters), -you must fulfill the following requirements: - -1. All events listed at `events` attribute must come from - [`known_events/*.yml`](#known-events-are-added-automatically-in-service-data-payload) files. -1. All events listed at `events` attribute must have the same `aggregation` attribute. -1. `time_frame` does not include `all` value, which is unavailable for Redis sourced aggregated metrics. +To declare the aggregate of events collected with [Redis HLL Counters](#redis-hll-counters), make sure `time_frame` does not include the `all` value, which is unavailable for Redis-sourced aggregated metrics. While it is possible to aggregate EE-only events together with events that occur in all GitLab editions, it's important to remember that doing so may produce high variance between data collected from EE and CE GitLab instances. diff --git a/doc/development/internal_analytics/service_ping/metrics_dictionary.md b/doc/development/internal_analytics/service_ping/metrics_dictionary.md index f56955ed422..1fcd41fa816 100644 --- a/doc/development/internal_analytics/service_ping/metrics_dictionary.md +++ b/doc/development/internal_analytics/service_ping/metrics_dictionary.md @@ -130,20 +130,16 @@ which has a related schema in `/config/metrics/objects_schemas/topology_schema.j ### Metric `time_frame` A metric's time frame is calculated based on the `time_frame` field and the `data_source` of the metric. -For `redis_hll` metrics, the type of aggregation is also taken into consideration. In this context, the term "aggregation" refers to [chosen events data storage interval](implement.md#add-new-events), and is **NOT** related to the Aggregated Metrics feature. -For more information about the aggregation type of each feature, see the [`common.yml` file](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml). Weeks run from Monday to Sunday. -| data_source | time_frame | aggregation | Description | -|------------------------|------------|----------------|-------------------------------------------------| -| any | `none` | not applicable | A type of data that's not tracked over time, such as settings and configuration information | -| `database` | `all` | not applicable | The whole time the metric has been active (all-time interval) | -| `database` | `7d` | not applicable | 9 days ago to 2 days ago | -| `database` | `28d` | not applicable | 30 days ago to 2 days ago | -| `redis` | `all` | not applicable | The whole time the metric has been active (all-time interval) | -| `redis_hll` | `7d` | `daily` | Most recent 7 complete days | -| `redis_hll` | `7d` | `weekly` | Most recent complete week | -| `redis_hll` | `28d` | `daily` | Most recent 28 complete days | -| `redis_hll` | `28d` | `weekly` | Most recent 4 complete weeks | +| data_source | time_frame | Description | +|------------------------|------------|-------------------------------------------------| +| any | `none` | A type of data that's not tracked over time, such as settings and configuration information | +| `database` | `all` | The whole time the metric has been active (all-time interval) | +| `database` | `7d` | 9 days ago to 2 days ago | +| `database` | `28d` | 30 days ago to 2 days ago | +| `redis` | `all` | The whole time the metric has been active (all-time interval) | +| `redis_hll` | `7d` | Most recent complete week | +| `redis_hll` | `28d` | Most recent 4 complete weeks | ### Data category diff --git a/doc/development/internal_analytics/service_ping/metrics_lifecycle.md b/doc/development/internal_analytics/service_ping/metrics_lifecycle.md index 7aa0eaa1554..bb3d6797011 100644 --- a/doc/development/internal_analytics/service_ping/metrics_lifecycle.md +++ b/doc/development/internal_analytics/service_ping/metrics_lifecycle.md @@ -103,4 +103,3 @@ To remove a metric: 1. Remove any other records related to the metric: - The feature flag YAML file at [`config/feature_flags/*/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/feature_flags). - - The entry in the known events YAML file at [`lib/gitlab/usage_data_counters/known_events/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/usage_data_counters/known_events). diff --git a/lib/generators/gitlab/analytics/internal_events_generator.rb b/lib/generators/gitlab/analytics/internal_events_generator.rb index d4c3a10c00e..ae738c5dcb0 100644 --- a/lib/generators/gitlab/analytics/internal_events_generator.rb +++ b/lib/generators/gitlab/analytics/internal_events_generator.rb @@ -31,8 +31,6 @@ module Gitlab TOP_LEVEL_DIR = 'config' TOP_LEVEL_DIR_EE = 'ee' DESCRIPTION_MIN_LENGTH = 50 - KNOWN_EVENTS_PATH = 'lib/gitlab/usage_data_counters/known_events/common.yml' - KNOWN_EVENTS_PATH_EE = 'ee/lib/ee/gitlab/usage_data_counters/known_events/common.yml' DESCRIPTION_INQUIRY = %( Please describe in at least #{DESCRIPTION_MIN_LENGTH} characters @@ -43,7 +41,7 @@ module Gitlab source_root File.expand_path('../../../../generator_templates/gitlab_internal_events', __dir__) - desc 'Generates metric definitions, event definition yml files and known events entries' + desc 'Generates metric definitions and event definition yml files' class_option :skip_namespace, hide: true @@ -104,9 +102,6 @@ module Gitlab "events, and event attributes in the description" ) end - - # ToDo: Delete during https://gitlab.com/groups/gitlab-org/-/epics/9542 cleanup - append_file known_events_file_name, known_event_entry end private @@ -194,12 +189,7 @@ module Gitlab path end - def known_events_file_name - (free? ? KNOWN_EVENTS_PATH : KNOWN_EVENTS_PATH_EE) - end - def validate! - raise "Required file: #{known_events_file_name} does not exists." unless File.exist?(known_events_file_name) raise "An event '#{event}' already exists" if event_exists? validate_tiers! diff --git a/lib/gitlab/usage_data_counters/ci_template_unique_counter.rb b/lib/gitlab/usage_data_counters/ci_template_unique_counter.rb index 97091ff975b..21cc9368f44 100644 --- a/lib/gitlab/usage_data_counters/ci_template_unique_counter.rb +++ b/lib/gitlab/usage_data_counters/ci_template_unique_counter.rb @@ -3,7 +3,6 @@ module Gitlab::UsageDataCounters class CiTemplateUniqueCounter PREFIX = 'ci_templates' - KNOWN_EVENTS_FILE_PATH = File.expand_path('known_events/ci_templates.yml', __dir__) class << self def track_unique_project_event(project:, template:, config_source:, user:) diff --git a/lib/gitlab/usage_data_counters/known_events/analytics.yml b/lib/gitlab/usage_data_counters/known_events/analytics.yml deleted file mode 100644 index 0b30308b552..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/analytics.yml +++ /dev/null @@ -1,26 +0,0 @@ -- name: users_viewing_analytics_group_devops_adoption - aggregation: weekly -- name: i_analytics_dev_ops_adoption - aggregation: weekly -- name: i_analytics_dev_ops_score - aggregation: weekly -- name: i_analytics_instance_statistics - aggregation: weekly -- name: p_analytics_pipelines - aggregation: weekly -- name: p_analytics_valuestream - aggregation: weekly -- name: p_analytics_repo - aggregation: weekly -- name: i_analytics_cohorts - aggregation: weekly -- name: p_analytics_ci_cd_pipelines - aggregation: weekly -- name: p_analytics_ci_cd_deployment_frequency - aggregation: weekly -- name: p_analytics_ci_cd_lead_time - aggregation: weekly -- name: p_analytics_ci_cd_time_to_restore_service - aggregation: weekly -- name: p_analytics_ci_cd_change_failure_rate - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/ci_templates.yml b/lib/gitlab/usage_data_counters/known_events/ci_templates.yml deleted file mode 100644 index c3e1c34151b..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/ci_templates.yml +++ /dev/null @@ -1,311 +0,0 @@ -# This file is generated automatically by -# bin/rake gitlab:usage_data:generate_ci_template_events -# -# Do not edit it manually! ---- -- name: p_ci_templates_terraform_base_latest - aggregation: weekly -- name: p_ci_templates_terraform_base - aggregation: weekly -- name: p_ci_templates_dotnet - aggregation: weekly -- name: p_ci_templates_nodejs - aggregation: weekly -- name: p_ci_templates_openshift - aggregation: weekly -- name: p_ci_templates_auto_devops - aggregation: weekly -- name: p_ci_templates_bash - aggregation: weekly -- name: p_ci_templates_rust - aggregation: weekly -- name: p_ci_templates_elixir - aggregation: weekly -- name: p_ci_templates_clojure - aggregation: weekly -- name: p_ci_templates_crystal - aggregation: weekly -- name: p_ci_templates_getting_started - aggregation: weekly -- name: p_ci_templates_code_quality - aggregation: weekly -- name: p_ci_templates_verify_load_performance_testing - aggregation: weekly -- name: p_ci_templates_verify_accessibility - aggregation: weekly -- name: p_ci_templates_verify_failfast - aggregation: weekly -- name: p_ci_templates_verify_browser_performance - aggregation: weekly -- name: p_ci_templates_verify_browser_performance_latest - aggregation: weekly -- name: p_ci_templates_grails - aggregation: weekly -- name: p_ci_templates_security_sast - aggregation: weekly -- name: p_ci_templates_security_dast_runner_validation - aggregation: weekly -- name: p_ci_templates_security_dast_on_demand_scan - aggregation: weekly -- name: p_ci_templates_security_secret_detection - aggregation: weekly -- name: p_ci_templates_security_license_scanning - aggregation: weekly -- name: p_ci_templates_security_coverage_fuzzing_latest - aggregation: weekly -- name: p_ci_templates_security_dast_on_demand_api_scan - aggregation: weekly -- name: p_ci_templates_security_coverage_fuzzing - aggregation: weekly -- name: p_ci_templates_security_api_fuzzing_latest - aggregation: weekly -- name: p_ci_templates_security_secure_binaries - aggregation: weekly -- name: p_ci_templates_security_dast_api - aggregation: weekly -- name: p_ci_templates_security_container_scanning - aggregation: weekly -- name: p_ci_templates_security_dast_latest - aggregation: weekly -- name: p_ci_templates_security_sast_iac - aggregation: weekly -- name: p_ci_templates_security_dependency_scanning - aggregation: weekly -- name: p_ci_templates_security_dast_api_latest - aggregation: weekly -- name: p_ci_templates_security_container_scanning_latest - aggregation: weekly -- name: p_ci_templates_security_api_fuzzing - aggregation: weekly -- name: p_ci_templates_security_dast - aggregation: weekly -- name: p_ci_templates_security_api_discovery - aggregation: weekly -- name: p_ci_templates_security_fortify_fod_sast - aggregation: weekly -- name: p_ci_templates_security_sast_iac_latest - aggregation: weekly -- name: p_ci_templates_security_bas_latest - aggregation: weekly -- name: p_ci_templates_qualys_iac_security - aggregation: weekly -- name: p_ci_templates_ios_fastlane - aggregation: weekly -- name: p_ci_templates_composer - aggregation: weekly -- name: p_ci_templates_c - aggregation: weekly -- name: p_ci_templates_python - aggregation: weekly -- name: p_ci_templates_android_fastlane - aggregation: weekly -- name: p_ci_templates_android_latest - aggregation: weekly -- name: p_ci_templates_django - aggregation: weekly -- name: p_ci_templates_maven - aggregation: weekly -- name: p_ci_templates_liquibase - aggregation: weekly -- name: p_ci_templates_flutter - aggregation: weekly -- name: p_ci_templates_workflows_branch_pipelines - aggregation: weekly -- name: p_ci_templates_workflows_mergerequest_pipelines - aggregation: weekly -- name: p_ci_templates_laravel - aggregation: weekly -- name: p_ci_templates_kaniko - aggregation: weekly -- name: p_ci_templates_php - aggregation: weekly -- name: p_ci_templates_packer - aggregation: weekly -- name: p_ci_templates_themekit - aggregation: weekly -- name: p_ci_templates_terraform - aggregation: weekly -- name: p_ci_templates_katalon - aggregation: weekly -- name: p_ci_templates_mono - aggregation: weekly -- name: p_ci_templates_go - aggregation: weekly -- name: p_ci_templates_scala - aggregation: weekly -- name: p_ci_templates_latex - aggregation: weekly -- name: p_ci_templates_android - aggregation: weekly -- name: p_ci_templates_indeni_cloudrail - aggregation: weekly -- name: p_ci_templates_matlab - aggregation: weekly -- name: p_ci_templates_deploy_ecs - aggregation: weekly -- name: p_ci_templates_aws_cf_provision_and_deploy_ec2 - aggregation: weekly -- name: p_ci_templates_aws_deploy_ecs - aggregation: weekly -- name: p_ci_templates_gradle - aggregation: weekly -- name: p_ci_templates_chef - aggregation: weekly -- name: p_ci_templates_jobs_dast_default_branch_deploy - aggregation: weekly -- name: p_ci_templates_jobs_load_performance_testing - aggregation: weekly -- name: p_ci_templates_jobs_helm_2to3 - aggregation: weekly -- name: p_ci_templates_jobs_sast - aggregation: weekly -- name: p_ci_templates_jobs_secret_detection - aggregation: weekly -- name: p_ci_templates_jobs_license_scanning - aggregation: weekly -- name: p_ci_templates_jobs_code_intelligence - aggregation: weekly -- name: p_ci_templates_jobs_code_quality - aggregation: weekly -- name: p_ci_templates_jobs_deploy_ecs - aggregation: weekly -- name: p_ci_templates_jobs_deploy_ec2 - aggregation: weekly -- name: p_ci_templates_jobs_license_scanning_latest - aggregation: weekly -- name: p_ci_templates_jobs_deploy - aggregation: weekly -- name: p_ci_templates_jobs_build - aggregation: weekly -- name: p_ci_templates_jobs_browser_performance_testing - aggregation: weekly -- name: p_ci_templates_jobs_container_scanning - aggregation: weekly -- name: p_ci_templates_jobs_container_scanning_latest - aggregation: weekly -- name: p_ci_templates_jobs_dependency_scanning_latest - aggregation: weekly -- name: p_ci_templates_jobs_test - aggregation: weekly -- name: p_ci_templates_jobs_sast_latest - aggregation: weekly -- name: p_ci_templates_jobs_sast_iac - aggregation: weekly -- name: p_ci_templates_jobs_secret_detection_latest - aggregation: weekly -- name: p_ci_templates_jobs_dependency_scanning - aggregation: weekly -- name: p_ci_templates_jobs_deploy_latest - aggregation: weekly -- name: p_ci_templates_jobs_browser_performance_testing_latest - aggregation: weekly -- name: p_ci_templates_jobs_cf_provision - aggregation: weekly -- name: p_ci_templates_jobs_build_latest - aggregation: weekly -- name: p_ci_templates_jobs_sast_iac_latest - aggregation: weekly -- name: p_ci_templates_terraform_latest - aggregation: weekly -- name: p_ci_templates_swift - aggregation: weekly -- name: p_ci_templates_pages_jekyll - aggregation: weekly -- name: p_ci_templates_pages_harp - aggregation: weekly -- name: p_ci_templates_pages_octopress - aggregation: weekly -- name: p_ci_templates_pages_brunch - aggregation: weekly -- name: p_ci_templates_pages_doxygen - aggregation: weekly -- name: p_ci_templates_pages_hyde - aggregation: weekly -- name: p_ci_templates_pages_lektor - aggregation: weekly -- name: p_ci_templates_pages_jbake - aggregation: weekly -- name: p_ci_templates_pages_hexo - aggregation: weekly -- name: p_ci_templates_pages_middleman - aggregation: weekly -- name: p_ci_templates_pages_hugo - aggregation: weekly -- name: p_ci_templates_pages_pelican - aggregation: weekly -- name: p_ci_templates_pages_nanoc - aggregation: weekly -- name: p_ci_templates_pages_swaggerui - aggregation: weekly -- name: p_ci_templates_pages_jigsaw - aggregation: weekly -- name: p_ci_templates_pages_metalsmith - aggregation: weekly -- name: p_ci_templates_pages_gatsby - aggregation: weekly -- name: p_ci_templates_pages_html - aggregation: weekly -- name: p_ci_templates_dart - aggregation: weekly -- name: p_ci_templates_docker - aggregation: weekly -- name: p_ci_templates_julia - aggregation: weekly -- name: p_ci_templates_npm - aggregation: weekly -- name: p_ci_templates_dotnet_core - aggregation: weekly -- name: p_ci_templates_5_minute_production_app - aggregation: weekly -- name: p_ci_templates_ruby - aggregation: weekly -- name: p_ci_templates_implicit_auto_devops - aggregation: weekly -- name: p_ci_templates_implicit_jobs_browser_performance_testing - aggregation: weekly -- name: p_ci_templates_implicit_jobs_build - aggregation: weekly -- name: p_ci_templates_implicit_jobs_code_intelligence - aggregation: weekly -- name: p_ci_templates_implicit_jobs_code_quality - aggregation: weekly -- name: p_ci_templates_implicit_jobs_container_scanning - aggregation: weekly -- name: p_ci_templates_implicit_jobs_dast_default_branch_deploy - aggregation: weekly -- name: p_ci_templates_implicit_jobs_dependency_scanning - aggregation: weekly -- name: p_ci_templates_implicit_jobs_deploy - aggregation: weekly -- name: p_ci_templates_implicit_jobs_deploy_ec2 - aggregation: weekly -- name: p_ci_templates_implicit_jobs_deploy_ecs - aggregation: weekly -- name: p_ci_templates_implicit_jobs_helm_2to3 - aggregation: weekly -- name: p_ci_templates_implicit_jobs_license_scanning - aggregation: weekly -- name: p_ci_templates_implicit_jobs_sast - aggregation: weekly -- name: p_ci_templates_implicit_jobs_secret_detection - aggregation: weekly -- name: p_ci_templates_implicit_jobs_test - aggregation: weekly -- name: p_ci_templates_implicit_security_container_scanning - aggregation: weekly -- name: p_ci_templates_implicit_security_dast - aggregation: weekly -- name: p_ci_templates_implicit_security_dependency_scanning - aggregation: weekly -- name: p_ci_templates_implicit_security_license_scanning - aggregation: weekly -- name: p_ci_templates_implicit_security_sast - aggregation: weekly -- name: p_ci_templates_implicit_security_secret_detection - aggregation: weekly -- name: p_ci_templates_terraform_module_base - aggregation: weekly -- name: p_ci_templates_terraform_module - aggregation: weekly -- name: p_ci_templates_pages_zola - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/ci_users.yml b/lib/gitlab/usage_data_counters/known_events/ci_users.yml deleted file mode 100644 index 49757c6e672..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/ci_users.yml +++ /dev/null @@ -1,4 +0,0 @@ -- name: ci_users_executing_deployment_job - aggregation: weekly -- name: ci_users_executing_verify_environment_job - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/code_review_events.yml b/lib/gitlab/usage_data_counters/known_events/code_review_events.yml deleted file mode 100644 index b51a991df67..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/code_review_events.yml +++ /dev/null @@ -1,239 +0,0 @@ ---- -- name: i_code_review_create_note_in_ipynb_diff - aggregation: weekly -- name: i_code_review_create_note_in_ipynb_diff_mr - aggregation: weekly -- name: i_code_review_create_note_in_ipynb_diff_commit - aggregation: weekly -- name: i_code_review_user_create_note_in_ipynb_diff - aggregation: weekly -- name: i_code_review_user_create_note_in_ipynb_diff_mr - aggregation: weekly -- name: i_code_review_user_create_note_in_ipynb_diff_commit - aggregation: weekly -- name: i_code_review_mr_diffs - aggregation: weekly -- name: i_code_review_user_single_file_diffs - aggregation: weekly -- name: i_code_review_mr_single_file_diffs - aggregation: weekly -- name: i_code_review_user_toggled_task_item_status - aggregation: weekly -- name: i_code_review_create_mr - aggregation: weekly -- name: i_code_review_user_create_mr - aggregation: weekly -- name: i_code_review_user_close_mr - aggregation: weekly -- name: i_code_review_user_reopen_mr - aggregation: weekly -- name: i_code_review_user_approve_mr - aggregation: weekly -- name: i_code_review_user_unapprove_mr - aggregation: weekly -- name: i_code_review_user_resolve_thread - aggregation: weekly -- name: i_code_review_user_unresolve_thread - aggregation: weekly -- name: i_code_review_edit_mr_title - aggregation: weekly -- name: i_code_review_edit_mr_desc - aggregation: weekly -- name: i_code_review_user_merge_mr - aggregation: weekly -- name: i_code_review_user_create_mr_comment - aggregation: weekly -- name: i_code_review_user_edit_mr_comment - aggregation: weekly -- name: i_code_review_user_remove_mr_comment - aggregation: weekly -- name: i_code_review_user_create_review_note - aggregation: weekly -- name: i_code_review_user_publish_review - aggregation: weekly -- name: i_code_review_user_create_multiline_mr_comment - aggregation: weekly -- name: i_code_review_user_edit_multiline_mr_comment - aggregation: weekly -- name: i_code_review_user_remove_multiline_mr_comment - aggregation: weekly -- name: i_code_review_user_add_suggestion - aggregation: weekly -- name: i_code_review_user_apply_suggestion - aggregation: weekly -- name: i_code_review_user_assigned - aggregation: weekly -- name: i_code_review_user_marked_as_draft - aggregation: weekly -- name: i_code_review_user_unmarked_as_draft - aggregation: weekly -- name: i_code_review_user_review_requested - aggregation: weekly -- name: i_code_review_user_approval_rule_added - aggregation: weekly -- name: i_code_review_user_approval_rule_deleted - aggregation: weekly -- name: i_code_review_user_approval_rule_edited - aggregation: weekly -- name: i_code_review_user_vs_code_api_request - aggregation: weekly -- name: i_code_review_user_jetbrains_api_request - aggregation: weekly -- name: i_editor_extensions_user_jetbrains_bundled_api_request - aggregation: weekly -- name: i_editor_extensions_user_visual_studio_api_request - aggregation: weekly -- name: i_editor_extensions_user_neovim_plugin_api_request - aggregation: weekly -- name: i_code_review_user_gitlab_cli_api_request - aggregation: weekly -- name: i_code_review_user_create_mr_from_issue - aggregation: weekly -- name: i_code_review_user_mr_discussion_locked - aggregation: weekly -- name: i_code_review_user_mr_discussion_unlocked - aggregation: weekly -- name: i_code_review_user_time_estimate_changed - aggregation: weekly -- name: i_code_review_user_time_spent_changed - aggregation: weekly -- name: i_code_review_user_assignees_changed - aggregation: weekly -- name: i_code_review_user_reviewers_changed - aggregation: weekly -- name: i_code_review_user_milestone_changed - aggregation: weekly -- name: i_code_review_user_labels_changed - aggregation: weekly -# Diff settings events -- name: i_code_review_click_diff_view_setting - aggregation: weekly -- name: i_code_review_click_single_file_mode_setting - aggregation: weekly -- name: i_code_review_click_file_browser_setting - aggregation: weekly -- name: i_code_review_click_whitespace_setting - aggregation: weekly -- name: i_code_review_diff_view_inline - aggregation: weekly -- name: i_code_review_diff_view_parallel - aggregation: weekly -- name: i_code_review_file_browser_tree_view - aggregation: weekly -- name: i_code_review_file_browser_list_view - aggregation: weekly -- name: i_code_review_diff_show_whitespace - aggregation: weekly -- name: i_code_review_diff_hide_whitespace - aggregation: weekly -- name: i_code_review_diff_single_file - aggregation: weekly -- name: i_code_review_diff_multiple_files - aggregation: weekly -- name: i_code_review_user_load_conflict_ui - aggregation: weekly -- name: i_code_review_user_resolve_conflict - aggregation: weekly -- name: i_code_review_user_searches_diff - aggregation: weekly -- name: i_code_review_total_suggestions_applied - aggregation: weekly -- name: i_code_review_total_suggestions_added - aggregation: weekly -- name: i_code_review_user_resolve_thread_in_issue - aggregation: weekly -- name: i_code_review_widget_nothing_merge_click_new_file - aggregation: weekly -- name: i_code_review_post_merge_delete_branch - aggregation: weekly -- name: i_code_review_post_merge_click_revert - aggregation: weekly -- name: i_code_review_post_merge_click_cherry_pick - aggregation: weekly -- name: i_code_review_post_merge_submit_revert_modal - aggregation: weekly -- name: i_code_review_post_merge_submit_cherry_pick_modal - aggregation: weekly -# MR Widget Extensions -## Test Summary -- name: i_code_review_merge_request_widget_test_summary_view - aggregation: weekly -- name: i_code_review_merge_request_widget_test_summary_full_report_clicked - aggregation: weekly -- name: i_code_review_merge_request_widget_test_summary_expand - aggregation: weekly -- name: i_code_review_merge_request_widget_test_summary_expand_success - aggregation: weekly -- name: i_code_review_merge_request_widget_test_summary_expand_warning - aggregation: weekly -- name: i_code_review_merge_request_widget_test_summary_expand_failed - aggregation: weekly -## Accessibility -- name: i_code_review_merge_request_widget_accessibility_view - aggregation: weekly -- name: i_code_review_merge_request_widget_accessibility_full_report_clicked - aggregation: weekly -- name: i_code_review_merge_request_widget_accessibility_expand - aggregation: weekly -- name: i_code_review_merge_request_widget_accessibility_expand_success - aggregation: weekly -- name: i_code_review_merge_request_widget_accessibility_expand_warning - aggregation: weekly -- name: i_code_review_merge_request_widget_accessibility_expand_failed - aggregation: weekly -## Code Quality -- name: i_code_review_merge_request_widget_code_quality_view - aggregation: weekly -- name: i_code_review_merge_request_widget_code_quality_full_report_clicked - aggregation: weekly -- name: i_code_review_merge_request_widget_code_quality_expand - aggregation: weekly -- name: i_code_review_merge_request_widget_code_quality_expand_success - aggregation: weekly -- name: i_code_review_merge_request_widget_code_quality_expand_warning - aggregation: weekly -- name: i_code_review_merge_request_widget_code_quality_expand_failed - aggregation: weekly -## Terraform -- name: i_code_review_merge_request_widget_terraform_view - aggregation: weekly -- name: i_code_review_merge_request_widget_terraform_full_report_clicked - aggregation: weekly -- name: i_code_review_merge_request_widget_terraform_expand - aggregation: weekly -- name: i_code_review_merge_request_widget_terraform_expand_success - aggregation: weekly -- name: i_code_review_merge_request_widget_terraform_expand_warning - aggregation: weekly -- name: i_code_review_merge_request_widget_terraform_expand_failed - aggregation: weekly -- name: i_code_review_submit_review_approve - aggregation: weekly -- name: i_code_review_submit_review_comment - aggregation: weekly -## License Compliance -- name: i_code_review_merge_request_widget_license_compliance_view - aggregation: weekly -- name: i_code_review_merge_request_widget_license_compliance_full_report_clicked - aggregation: weekly -- name: i_code_review_merge_request_widget_license_compliance_expand - aggregation: weekly -- name: i_code_review_merge_request_widget_license_compliance_expand_success - aggregation: weekly -- name: i_code_review_merge_request_widget_license_compliance_expand_warning - aggregation: weekly -- name: i_code_review_merge_request_widget_license_compliance_expand_failed - aggregation: weekly -## Security Reports -- name: i_code_review_merge_request_widget_security_reports_view - aggregation: weekly -- name: i_code_review_merge_request_widget_security_reports_full_report_clicked - aggregation: weekly -- name: i_code_review_merge_request_widget_security_reports_expand - aggregation: weekly -- name: i_code_review_merge_request_widget_security_reports_expand_success - aggregation: weekly -- name: i_code_review_merge_request_widget_security_reports_expand_warning - aggregation: weekly -- name: i_code_review_merge_request_widget_security_reports_expand_failed - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/common.yml b/lib/gitlab/usage_data_counters/known_events/common.yml deleted file mode 100644 index 0583d85c3cc..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/common.yml +++ /dev/null @@ -1,167 +0,0 @@ ---- -# Compliance category -- name: g_edit_by_web_ide - aggregation: daily -- name: g_edit_by_sfe - aggregation: daily -- name: g_edit_by_snippet_ide - aggregation: daily -- name: g_edit_by_live_preview - aggregation: daily -- name: i_search_total - aggregation: weekly -- name: wiki_action - aggregation: daily -- name: design_action - aggregation: daily -- name: project_action - aggregation: daily -- name: git_write_action - aggregation: daily -- name: merge_request_action - aggregation: daily -- name: i_source_code_code_intelligence - aggregation: daily -# Incident management -- name: incident_management_alert_status_changed - aggregation: weekly -- name: incident_management_alert_assigned - aggregation: weekly -- name: incident_management_alert_todo - aggregation: weekly -- name: incident_management_incident_created - aggregation: weekly -- name: incident_management_incident_reopened - aggregation: weekly -- name: incident_management_incident_closed - aggregation: weekly -- name: incident_management_incident_assigned - aggregation: weekly -- name: incident_management_incident_todo - aggregation: weekly -- name: incident_management_incident_comment - aggregation: weekly -- name: incident_management_incident_zoom_meeting - aggregation: weekly -- name: incident_management_incident_relate - aggregation: weekly -- name: incident_management_incident_unrelate - aggregation: weekly -- name: incident_management_incident_change_confidential - aggregation: weekly -# Incident management timeline events -- name: incident_management_timeline_event_created - aggregation: weekly -- name: incident_management_timeline_event_edited - aggregation: weekly -- name: incident_management_timeline_event_deleted - aggregation: weekly -# Incident management alerts -- name: incident_management_alert_create_incident - aggregation: weekly -# Testing category -- name: i_testing_test_case_parsed - aggregation: weekly -- name: i_testing_test_report_uploaded - aggregation: weekly -- name: i_testing_coverage_report_uploaded - aggregation: weekly -# Project Management group -- name: g_project_management_issue_title_changed - aggregation: daily -- name: g_project_management_issue_description_changed - aggregation: daily -- name: g_project_management_issue_assignee_changed - aggregation: daily -- name: g_project_management_issue_made_confidential - aggregation: daily -- name: g_project_management_issue_made_visible - aggregation: daily -- name: g_project_management_issue_created - aggregation: daily -- name: g_project_management_issue_closed - aggregation: daily -- name: g_project_management_issue_reopened - aggregation: daily -- name: g_project_management_issue_label_changed - aggregation: daily -- name: g_project_management_issue_milestone_changed - aggregation: daily -- name: g_project_management_issue_cross_referenced - aggregation: daily -- name: g_project_management_issue_moved - aggregation: daily -- name: g_project_management_issue_related - aggregation: daily -- name: g_project_management_issue_unrelated - aggregation: daily -- name: g_project_management_issue_marked_as_duplicate - aggregation: daily -- name: g_project_management_issue_locked - aggregation: daily -- name: g_project_management_issue_unlocked - aggregation: daily -- name: g_project_management_issue_designs_added - aggregation: daily -- name: g_project_management_issue_designs_modified - aggregation: daily -- name: g_project_management_issue_designs_removed - aggregation: daily -- name: g_project_management_issue_due_date_changed - aggregation: daily -- name: g_project_management_issue_design_comments_removed - aggregation: daily -- name: g_project_management_issue_time_estimate_changed - aggregation: daily -- name: g_project_management_issue_time_spent_changed - aggregation: daily -- name: g_project_management_issue_comment_added - aggregation: daily -- name: g_project_management_issue_comment_edited - aggregation: daily -- name: g_project_management_issue_comment_removed - aggregation: daily -- name: g_project_management_issue_cloned - aggregation: daily -# Runner group -- name: g_runner_fleet_read_jobs_statistics - aggregation: weekly -# Secrets Management -- name: i_snippets_show - aggregation: weekly -# Terraform -- name: p_terraform_state_api_unique_users - aggregation: weekly -# Pipeline Authoring group -- name: ci_interpolation_users - aggregation: weekly -- name: o_pipeline_authoring_unique_users_committing_ciconfigfile - aggregation: weekly -- name: o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile - aggregation: weekly -- name: i_ci_secrets_management_id_tokens_build_created - aggregation: weekly -# Merge request widgets -- name: users_expanding_secure_security_report - aggregation: weekly -- name: users_expanding_testing_code_quality_report - aggregation: weekly -- name: users_expanding_testing_accessibility_report - aggregation: weekly -- name: users_expanding_testing_license_compliance_report - aggregation: weekly -- name: users_visiting_testing_license_compliance_full_report - aggregation: weekly -- name: users_visiting_testing_manage_license_compliance - aggregation: weekly -- name: users_clicking_license_testing_visiting_external_website - aggregation: weekly -# Geo group -- name: g_geo_proxied_requests - aggregation: daily -# Manage -- name: unique_active_user - aggregation: weekly -# Environments page -- name: users_visiting_environments_pages - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/container_registry_events.yml b/lib/gitlab/usage_data_counters/known_events/container_registry_events.yml deleted file mode 100644 index aa0f9965fa7..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/container_registry_events.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -- name: i_container_registry_push_tag_user - aggregation: weekly -- name: i_container_registry_delete_tag_user - aggregation: weekly -- name: i_container_registry_push_repository_user - aggregation: weekly -- name: i_container_registry_delete_repository_user - aggregation: weekly -- name: i_container_registry_create_repository_user - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/ecosystem.yml b/lib/gitlab/usage_data_counters/known_events/ecosystem.yml deleted file mode 100644 index 6e4a893d19a..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/ecosystem.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -# Ecosystem category -- name: i_ecosystem_jira_service_close_issue - aggregation: weekly -- name: i_ecosystem_jira_service_cross_reference - aggregation: weekly -- name: i_ecosystem_slack_service_issue_notification - aggregation: weekly -- name: i_ecosystem_slack_service_push_notification - aggregation: weekly -- name: i_ecosystem_slack_service_deployment_notification - aggregation: weekly -- name: i_ecosystem_slack_service_wiki_page_notification - aggregation: weekly -- name: i_ecosystem_slack_service_merge_request_notification - aggregation: weekly -- name: i_ecosystem_slack_service_note_notification - aggregation: weekly -- name: i_ecosystem_slack_service_tag_push_notification - aggregation: weekly -- name: i_ecosystem_slack_service_confidential_note_notification - aggregation: weekly -- name: i_ecosystem_slack_service_confidential_issue_notification - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/error_tracking.yml b/lib/gitlab/usage_data_counters/known_events/error_tracking.yml deleted file mode 100644 index ebfd1b274f9..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/error_tracking.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- name: error_tracking_view_details - aggregation: weekly -- name: error_tracking_view_list - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/importer_events.yml b/lib/gitlab/usage_data_counters/known_events/importer_events.yml deleted file mode 100644 index abbd83a012b..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/importer_events.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -# Importer events -- name: github_import_project_start - aggregation: weekly -- name: github_import_project_success - aggregation: weekly -- name: github_import_project_failure - aggregation: weekly -- name: github_import_project_cancelled - aggregation: weekly -- name: github_import_project_partially_completed - aggregation: weekly - diff --git a/lib/gitlab/usage_data_counters/known_events/integrations.yml b/lib/gitlab/usage_data_counters/known_events/integrations.yml deleted file mode 100644 index 4a83581e9f0..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/integrations.yml +++ /dev/null @@ -1,18 +0,0 @@ -- name: i_integrations_gitlab_for_slack_app_issue_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_push_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_deployment_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_wiki_page_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_merge_request_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_note_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_tag_push_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_confidential_note_notification - aggregation: weekly -- name: i_integrations_gitlab_for_slack_app_confidential_issue_notification - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/kubernetes_agent.yml b/lib/gitlab/usage_data_counters/known_events/kubernetes_agent.yml deleted file mode 100644 index fe779a9a25f..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/kubernetes_agent.yml +++ /dev/null @@ -1,22 +0,0 @@ -- name: agent_users_using_ci_tunnel - aggregation: weekly -- name: k8s_api_proxy_requests_unique_users_via_ci_access - aggregation: weekly -- name: k8s_api_proxy_requests_unique_users_via_ci_access - aggregation: monthly -- name: k8s_api_proxy_requests_unique_agents_via_ci_access - aggregation: weekly -- name: k8s_api_proxy_requests_unique_agents_via_ci_access - aggregation: monthly -- name: k8s_api_proxy_requests_unique_users_via_user_access - aggregation: weekly -- name: k8s_api_proxy_requests_unique_users_via_user_access - aggregation: monthly -- name: k8s_api_proxy_requests_unique_agents_via_user_access - aggregation: weekly -- name: k8s_api_proxy_requests_unique_agents_via_user_access - aggregation: monthly -- name: flux_git_push_notified_unique_projects - aggregation: weekly -- name: flux_git_push_notified_unique_projects - aggregation: monthly diff --git a/lib/gitlab/usage_data_counters/known_events/package_events.yml b/lib/gitlab/usage_data_counters/known_events/package_events.yml deleted file mode 100644 index fa99798cde0..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/package_events.yml +++ /dev/null @@ -1,49 +0,0 @@ ---- -- name: i_package_composer_deploy_token - aggregation: weekly -- name: i_package_composer_user - aggregation: weekly -- name: i_package_conan_deploy_token - aggregation: weekly -- name: i_package_conan_user - aggregation: weekly -- name: i_package_debian_deploy_token - aggregation: weekly -- name: i_package_debian_user - aggregation: weekly -- name: i_package_generic_deploy_token - aggregation: weekly -- name: i_package_generic_user - aggregation: weekly -- name: i_package_helm_deploy_token - aggregation: weekly -- name: i_package_helm_user - aggregation: weekly -- name: i_package_maven_deploy_token - aggregation: weekly -- name: i_package_maven_user - aggregation: weekly -- name: i_package_npm_deploy_token - aggregation: weekly -- name: i_package_npm_user - aggregation: weekly -- name: i_package_nuget_deploy_token - aggregation: weekly -- name: i_package_nuget_user - aggregation: weekly -- name: i_package_pypi_deploy_token - aggregation: weekly -- name: i_package_pypi_user - aggregation: weekly -- name: i_package_rubygems_deploy_token - aggregation: weekly -- name: i_package_rubygems_user - aggregation: weekly -- name: i_package_terraform_module_deploy_token - aggregation: weekly -- name: i_package_terraform_module_user - aggregation: weekly -- name: i_package_rpm_user - aggregation: weekly -- name: i_package_rpm_deploy_token - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/product_analytics.yml b/lib/gitlab/usage_data_counters/known_events/product_analytics.yml deleted file mode 100644 index c43bf9040dd..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/product_analytics.yml +++ /dev/null @@ -1,8 +0,0 @@ -- name: project_created_analytics_dashboard - aggregation: weekly -- name: project_initialized_product_analytics - aggregation: weekly -- name: user_created_analytics_dashboard - aggregation: weekly -- name: user_visited_dashboard - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/quickactions.yml b/lib/gitlab/usage_data_counters/known_events/quickactions.yml deleted file mode 100644 index 69f92ac5c0a..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/quickactions.yml +++ /dev/null @@ -1,139 +0,0 @@ ---- -- name: i_quickactions_assign_multiple - aggregation: weekly -- name: i_quickactions_approve - aggregation: weekly -- name: i_quickactions_unapprove - aggregation: weekly -- name: i_quickactions_assign_single - aggregation: weekly -- name: i_quickactions_assign_self - aggregation: weekly -- name: i_quickactions_assign_reviewer - aggregation: weekly -- name: i_quickactions_award - aggregation: weekly -- name: i_quickactions_board_move - aggregation: weekly -- name: i_quickactions_clone - aggregation: weekly -- name: i_quickactions_close - aggregation: weekly -- name: i_quickactions_confidential - aggregation: weekly -- name: i_quickactions_copy_metadata_merge_request - aggregation: weekly -- name: i_quickactions_copy_metadata_issue - aggregation: weekly -- name: i_quickactions_create_merge_request - aggregation: weekly -- name: i_quickactions_done - aggregation: weekly -- name: i_quickactions_draft - aggregation: weekly -- name: i_quickactions_due - aggregation: weekly -- name: i_quickactions_duplicate - aggregation: weekly -- name: i_quickactions_estimate - aggregation: weekly -- name: i_quickactions_label - aggregation: weekly -- name: i_quickactions_lock - aggregation: weekly -- name: i_quickactions_merge - aggregation: weekly -- name: i_quickactions_milestone - aggregation: weekly -- name: i_quickactions_move - aggregation: weekly -- name: i_quickactions_promote_to_incident - aggregation: weekly -- name: i_quickactions_timeline - aggregation: weekly -- name: i_quickactions_ready - aggregation: weekly -- name: i_quickactions_reassign - aggregation: weekly -- name: i_quickactions_reassign_reviewer - aggregation: weekly -- name: i_quickactions_rebase - aggregation: weekly -- name: i_quickactions_relabel - aggregation: weekly -- name: i_quickactions_relate - aggregation: weekly -- name: i_quickactions_remove_due_date - aggregation: weekly -- name: i_quickactions_remove_estimate - aggregation: weekly -- name: i_quickactions_remove_milestone - aggregation: weekly -- name: i_quickactions_remove_time_spent - aggregation: weekly -- name: i_quickactions_remove_zoom - aggregation: weekly -- name: i_quickactions_reopen - aggregation: weekly -- name: i_quickactions_severity - aggregation: weekly -- name: i_quickactions_shrug - aggregation: weekly -- name: i_quickactions_spend_subtract - aggregation: weekly -- name: i_quickactions_spend_add - aggregation: weekly -- name: i_quickactions_submit_review - aggregation: weekly -- name: i_quickactions_subscribe - aggregation: weekly -- name: i_quickactions_summarize_diff - aggregation: weekly -- name: i_quickactions_tableflip - aggregation: weekly -- name: i_quickactions_tag - aggregation: weekly -- name: i_quickactions_target_branch - aggregation: weekly -- name: i_quickactions_title - aggregation: weekly -- name: i_quickactions_todo - aggregation: weekly -- name: i_quickactions_unassign_specific - aggregation: weekly -- name: i_quickactions_unassign_all - aggregation: weekly -- name: i_quickactions_unassign_reviewer - aggregation: weekly -- name: i_quickactions_unlabel_specific - aggregation: weekly -- name: i_quickactions_unlabel_all - aggregation: weekly -- name: i_quickactions_unlock - aggregation: weekly -- name: i_quickactions_unsubscribe - aggregation: weekly -- name: i_quickactions_wip - aggregation: weekly -- name: i_quickactions_zoom - aggregation: weekly -- name: i_quickactions_link - aggregation: weekly -- name: i_quickactions_invite_email_single - aggregation: weekly -- name: i_quickactions_invite_email_multiple - aggregation: weekly -- name: i_quickactions_add_contacts - aggregation: weekly -- name: i_quickactions_remove_contacts - aggregation: weekly -- name: i_quickactions_type - aggregation: weekly -- name: i_quickactions_blocked_by - aggregation: weekly -- name: i_quickactions_blocks - aggregation: weekly -- name: i_quickactions_unlink - aggregation: weekly -- name: i_quickactions_promote_to - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/work_items.yml b/lib/gitlab/usage_data_counters/known_events/work_items.yml deleted file mode 100644 index a6e5b9e1af5..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/work_items.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- name: users_updating_work_item_title - aggregation: weekly -- name: users_creating_work_items - aggregation: weekly -- name: users_updating_work_item_dates - aggregation: weekly -- name: users_updating_work_item_labels - aggregation: weekly -- name: users_updating_work_item_milestone - aggregation: weekly -- name: users_updating_work_item_iteration - # The event tracks an EE feature. - # It's added here so it can be aggregated into the CE/EE 'OR' aggregate metrics. - # It will report 0 for CE instances and should not be used with 'AND' aggregators. - aggregation: weekly -- name: users_updating_weight_estimate - # The event tracks an EE feature. - # It's added here so it can be aggregated into the CE/EE 'OR' aggregate metrics. - # It will report 0 for CE instances and should not be used with 'AND' aggregators. - aggregation: weekly diff --git a/lib/gitlab/usage_data_counters/known_events/workspaces.yml b/lib/gitlab/usage_data_counters/known_events/workspaces.yml deleted file mode 100644 index 8a96524b167..00000000000 --- a/lib/gitlab/usage_data_counters/known_events/workspaces.yml +++ /dev/null @@ -1,5 +0,0 @@ -- name: users_updating_workspaces - aggregation: weekly - -- name: users_creating_workspaces - aggregation: weekly diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 3d91b67d72f..8a57bf56e67 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -32789,6 +32789,9 @@ msgstr "" msgid "Organization|Organization overview" msgstr "" +msgid "Organization|Search or filter list" +msgstr "" + msgid "Orphaned member" msgstr "" diff --git a/spec/frontend/organizations/groups_and_projects/components/app_spec.js b/spec/frontend/organizations/groups_and_projects/components/app_spec.js index 36fa1c75ab0..64182b74e4f 100644 --- a/spec/frontend/organizations/groups_and_projects/components/app_spec.js +++ b/spec/frontend/organizations/groups_and_projects/components/app_spec.js @@ -1,10 +1,18 @@ +import { GlCollapsibleListbox, GlSorting, GlSortingItem } from '@gitlab/ui'; import App from '~/organizations/groups_and_projects/components/app.vue'; import GroupsPage from '~/organizations/groups_and_projects/components/groups_page.vue'; import ProjectsPage from '~/organizations/groups_and_projects/components/projects_page.vue'; import { DISPLAY_QUERY_GROUPS, DISPLAY_QUERY_PROJECTS, + SORT_ITEM_CREATED, + SORT_DIRECTION_DESC, } from '~/organizations/groups_and_projects/constants'; +import FilteredSearchBar from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue'; +import { + FILTERED_SEARCH_TERM, + TOKEN_EMPTY_SEARCH_TERM, +} from '~/vue_shared/components/filtered_search_bar/constants'; import { createRouter } from '~/organizations/groups_and_projects'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; @@ -15,23 +23,150 @@ describe('GroupsAndProjectsApp', () => { }; let wrapper; - const createComponent = ({ routeQuery = {} } = {}) => { + const createComponent = ({ routeQuery = { search: 'foo' } } = {}) => { wrapper = shallowMountExtended(App, { router, mocks: { $route: { path: '/', query: routeQuery }, $router: routerMock }, }); }; - describe.each` - display | expectedComponent - ${null} | ${GroupsPage} - ${DISPLAY_QUERY_GROUPS} | ${GroupsPage} - ${DISPLAY_QUERY_PROJECTS} | ${ProjectsPage} - `('when `display` query string is $display', ({ display, expectedComponent }) => { - it('renders expected component', () => { - createComponent({ routeQuery: { display } }); + const findFilteredSearchBar = () => wrapper.findComponent(FilteredSearchBar); + const findListbox = () => wrapper.findComponent(GlCollapsibleListbox); + const findSort = () => wrapper.findComponent(GlSorting); - expect(wrapper.findComponent(expectedComponent).exists()).toBe(true); + describe.each` + display | expectedComponent | expectedDisplayListboxSelectedProp + ${null} | ${GroupsPage} | ${DISPLAY_QUERY_GROUPS} + ${'unsupported_value'} | ${GroupsPage} | ${DISPLAY_QUERY_GROUPS} + ${DISPLAY_QUERY_GROUPS} | ${GroupsPage} | ${DISPLAY_QUERY_GROUPS} + ${DISPLAY_QUERY_PROJECTS} | ${ProjectsPage} | ${DISPLAY_QUERY_PROJECTS} + `( + 'when `display` query string is $display', + ({ display, expectedComponent, expectedDisplayListboxSelectedProp }) => { + beforeEach(() => { + createComponent({ routeQuery: { display } }); + }); + + it('renders expected component', () => { + expect(wrapper.findComponent(expectedComponent).exists()).toBe(true); + }); + + it('renders display listbox with correct props', () => { + expect(findListbox().props()).toMatchObject({ + selected: expectedDisplayListboxSelectedProp, + items: App.displayListboxItems, + headerText: App.i18n.displayListboxHeaderText, + }); + }); + }, + ); + + it('renders filtered search bar with correct props', () => { + createComponent(); + + expect(findFilteredSearchBar().props()).toMatchObject({ + namespace: App.filteredSearch.namespace, + tokens: App.filteredSearch.tokens, + initialFilterValue: [ + { + type: FILTERED_SEARCH_TERM, + value: { + data: 'foo', + operator: undefined, + }, + }, + ], + syncFilterAndSort: true, + recentSearchesStorageKey: App.filteredSearch.recentSearchesStorageKey, + searchInputPlaceholder: App.i18n.searchInputPlaceholder, + }); + }); + + it('renders sort dropdown with sort items and correct props', () => { + createComponent(); + + const sortItems = wrapper.findAllComponents(GlSortingItem).wrappers.map((sortItemWrapper) => ({ + active: sortItemWrapper.attributes('active'), + text: sortItemWrapper.text(), + })); + + expect(findSort().props()).toMatchObject({ + isAscending: true, + text: SORT_ITEM_CREATED.text, + }); + expect(sortItems).toEqual([ + { + active: 'true', + text: SORT_ITEM_CREATED.text, + }, + ]); + }); + + describe('when filtered search bar is submitted', () => { + const searchTerm = 'foo bar'; + + beforeEach(() => { + createComponent(); + + findFilteredSearchBar().vm.$emit('onFilter', [ + { id: 'token-0', type: FILTERED_SEARCH_TERM, value: { data: searchTerm } }, + ]); + }); + + it('updates `search` query string', () => { + expect(routerMock.push).toHaveBeenCalledWith({ query: { search: searchTerm } }); + }); + }); + + describe('when display listbox is changed', () => { + beforeEach(() => { + createComponent(); + + findListbox().vm.$emit('select', DISPLAY_QUERY_PROJECTS); + }); + + it('updates `display` query string', () => { + expect(routerMock.push).toHaveBeenCalledWith({ query: { display: DISPLAY_QUERY_PROJECTS } }); + }); + }); + + describe('when sort item is changed', () => { + beforeEach(() => { + createComponent(); + + wrapper.findComponent(GlSortingItem).trigger('click', SORT_ITEM_CREATED); + }); + + it('updates `sort_name` query string', () => { + expect(routerMock.push).toHaveBeenCalledWith({ + query: { sort_name: SORT_ITEM_CREATED.name, search: 'foo' }, + }); + }); + }); + + describe('when sort direction is changed', () => { + beforeEach(() => { + createComponent(); + + findSort().vm.$emit('sortDirectionChange', false); + }); + + it('updates `sort_direction` query string', () => { + expect(routerMock.push).toHaveBeenCalledWith({ + query: { sort_direction: SORT_DIRECTION_DESC, search: 'foo' }, + }); + }); + }); + + describe('when `search` query string is not set', () => { + beforeEach(() => { + createComponent({ routeQuery: {} }); + }); + + it('passes empty search term token to filtered search', () => { + expect(findFilteredSearchBar().props('initialFilterValue')).toEqual([ + TOKEN_EMPTY_SEARCH_TERM, + ]); }); }); }); diff --git a/spec/frontend/vue_shared/components/filtered_search_bar/filtered_search_utils_spec.js b/spec/frontend/vue_shared/components/filtered_search_bar/filtered_search_utils_spec.js index b7c6c3707e6..b20d6cc371e 100644 --- a/spec/frontend/vue_shared/components/filtered_search_bar/filtered_search_utils_spec.js +++ b/spec/frontend/vue_shared/components/filtered_search_bar/filtered_search_utils_spec.js @@ -301,6 +301,18 @@ describe('urlQueryToFilter', () => { }, { filteredSearchTermKey: 'search', filterNamesAllowList: ['foo'] }, ], + [ + { + search: 'my terms', + foo: 'bar', + nop: 'xxx', + }, + { + [FILTERED_SEARCH_TERM]: [{ value: 'my terms' }], + foo: { value: 'bar', operator: '=' }, + }, + { filteredSearchTermKey: 'search', filterNamesAllowList: ['foo'] }, + ], ])( 'gathers filter values %s into query object=%j when options %j', (query, result, options = undefined) => { diff --git a/spec/lib/generators/gitlab/analytics/internal_events_generator_spec.rb b/spec/lib/generators/gitlab/analytics/internal_events_generator_spec.rb index ef09ad7aed4..1dbe34fc72f 100644 --- a/spec/lib/generators/gitlab/analytics/internal_events_generator_spec.rb +++ b/spec/lib/generators/gitlab/analytics/internal_events_generator_spec.rb @@ -57,8 +57,6 @@ RSpec.describe Gitlab::Analytics::InternalEventsGenerator, :silence_stdout, feat before do stub_const("#{described_class}::TOP_LEVEL_DIR_EE", ee_temp_dir) stub_const("#{described_class}::TOP_LEVEL_DIR", temp_dir) - stub_const("#{described_class}::KNOWN_EVENTS_PATH", tmpfile.path) - stub_const("#{described_class}::KNOWN_EVENTS_PATH_EE", tmpfile.path) # Stub version so that `milestone` key remains constant between releases to prevent flakiness. stub_const('Gitlab::VERSION', '13.9.0') @@ -132,7 +130,7 @@ RSpec.describe Gitlab::Analytics::InternalEventsGenerator, :silence_stdout, feat end context 'with duplicated event' do - context 'in known_events files' do + context 'in known_events' do before do allow(::Gitlab::UsageDataCounters::HLLRedisCounter) .to receive(:known_event?).with(event).and_return(true) @@ -285,32 +283,4 @@ RSpec.describe Gitlab::Analytics::InternalEventsGenerator, :silence_stdout, feat end end end - - describe 'Creating known event entry' do - let(:time_frames) { %w[7d 28d] } - let(:expected_known_events) { [{ "name" => event }] } - - it 'creates a metric definition file using the template' do - described_class.new([], options).invoke_all - - expect(YAML.safe_load(File.read(tmpfile.path))).to match_array(expected_known_events) - end - - context 'for ultimate only feature' do - let(:ee_tmpfile) { Tempfile.new('test-metadata') } - - after do - FileUtils.rm_rf(ee_tmpfile) - end - - it 'creates a metric definition file using the template' do - stub_const("#{described_class}::KNOWN_EVENTS_PATH_EE", ee_tmpfile.path) - - described_class.new([], options.merge(tiers: %w[ultimate])).invoke_all - - expect(YAML.safe_load(File.read(tmpfile.path))).to be nil - expect(YAML.safe_load(File.read(ee_tmpfile.path))).to match_array(expected_known_events) - end - end - end end diff --git a/spec/migrations/20230723203612_backfill_default_branch_protection_application_setting_spec.rb b/spec/migrations/20230723203612_backfill_default_branch_protection_application_setting_spec.rb new file mode 100644 index 00000000000..dcb65e22196 --- /dev/null +++ b/spec/migrations/20230723203612_backfill_default_branch_protection_application_setting_spec.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +require 'spec_helper' +require_migration! + +RSpec.describe BackfillDefaultBranchProtectionApplicationSetting, :migration, feature_category: :database do + let(:application_settings_table) { table(:application_settings) } + + before do + 5.times do |branch_protection| + application_settings_table.create!(default_branch_protection: branch_protection, + default_branch_protection_defaults: {}) + end + end + + it 'schedules a new batched migration' do + reversible_migration do |migration| + migration.before -> { + 5.times do |branch_protection| + expect(migrated_attribute(branch_protection)).to eq({}) + end + } + + migration.after -> { + expect(migrated_attribute(0)).to eq({ "allow_force_push" => true, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 30 }] }) + expect(migrated_attribute(1)).to eq({ "allow_force_push" => false, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 30 }] }) + expect(migrated_attribute(2)).to eq({ "allow_force_push" => false, + "allowed_to_merge" => [{ "access_level" => 40 }], + "allowed_to_push" => [{ "access_level" => 40 }] }) + expect(migrated_attribute(3)).to eq({ "allow_force_push" => true, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 40 }] }) + expect(migrated_attribute(4)).to eq({ "allow_force_push" => true, + "allowed_to_merge" => [{ "access_level" => 30 }], + "allowed_to_push" => [{ "access_level" => 40 }], + "developer_can_initial_push" => true }) + } + end + end + + def migrated_attribute(branch_protection) + application_settings_table + .where(default_branch_protection: branch_protection) + .last.default_branch_protection_defaults + end +end