From 37c8b3b44e6d3f5755e45b3db6913fab7fee5c89 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 4 Jun 2020 21:08:11 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- Gemfile | 4 +- Gemfile.lock | 29 ++--- app/assets/javascripts/diffs/utils/uuids.js | 79 ++++++++++++ .../monitoring/components/links_section.vue | 16 +-- .../javascripts/monitoring/stores/actions.js | 3 - .../monitoring/stores/mutations.js | 10 +- .../javascripts/monitoring/stores/utils.js | 10 +- .../project_selector/project_selector.vue | 43 +++++-- app/assets/stylesheets/pages/prometheus.scss | 8 ++ app/controllers/concerns/service_params.rb | 2 + .../metrics/dashboard/annotations/base.rb | 18 +++ .../metrics/dashboard/annotations/delete.rb | 32 +++++ app/graphql/types/mutation_type.rb | 1 + app/models/design_management/design.rb | 7 ++ .../project_services/prometheus_service.rb | 42 ++++++- .../projects/prometheus/alert_presenter.rb | 8 +- .../delete_designs_service.rb | 5 +- .../design_management/save_designs_service.rb | 17 ++- app/services/event_create_service.rb | 72 +++++++++-- ...last-name-attributes-in-ldap-user-sync.yml | 5 + ...1-destroy-annotations-graphql-endpoint.yml | 5 + ...t-should-be-consistent-in-the-incident.yml | 5 + ...hboard-links-in-metrics-dashboard-mvc1.yml | 5 + ...48-pipeline-index-endpoint-performance.yml | 5 + ...lt-slot-in-the-project-selector-vue-co.yml | 5 + .../unreleased/ak-update-google-auth.yml | 5 + ...nis-project-templates-add-gitbook-logo.yml | 5 + ...dennis-project-templates-add-hugo-logo.yml | 5 + config/dependency_decisions.yml | 6 + config/initializers/google_api_client.rb | 19 +-- ...ser_id_status_ref_index_to_ci_pipelines.rb | 27 ++++ db/structure.sql | 3 + doc/.vale/gitlab/Acronyms.yml | 3 + doc/.vale/gitlab/spelling-exceptions.txt | 1 + doc/administration/high_availability/nfs.md | 2 +- .../monitoring/performance/performance_bar.md | 2 +- .../monitoring/prometheus/gitlab_metrics.md | 78 ++++++------ .../monitoring/prometheus/node_exporter.md | 25 ++-- .../prometheus/pgbouncer_exporter.md | 29 ++--- .../prometheus/postgres_exporter.md | 72 ++++++----- .../monitoring/prometheus/redis_exporter.md | 23 ++-- .../graphql/reference/gitlab_schema.graphql | 31 +++++ doc/api/graphql/reference/gitlab_schema.json | 115 ++++++++++++++++++ doc/api/graphql/reference/index.md | 9 ++ doc/api/services.md | 2 + .../index.md | 2 +- doc/ci/jenkins/index.md | 2 +- doc/ci/yaml/README.md | 2 +- doc/development/application_limits.md | 2 +- doc/development/architecture.md | 2 +- doc/development/code_review.md | 2 +- doc/development/documentation/styleguide.md | 2 +- doc/development/documentation/workflow.md | 2 +- doc/development/fe_guide/dependencies.md | 2 +- doc/development/fe_guide/graphql.md | 6 +- doc/development/i18n/externalization.md | 2 +- doc/development/integrations/jenkins.md | 2 +- .../multi_version_compatibility.md | 2 +- .../new_fe_guide/development/performance.md | 2 +- doc/development/secure_coding_guidelines.md | 2 +- doc/development/testing_guide/index.md | 2 +- doc/development/testing_guide/review_apps.md | 2 +- doc/gitlab-basics/start-using-git.md | 2 +- doc/install/azure/index.md | 2 +- doc/install/requirements.md | 4 +- doc/integration/vault.md | 2 +- doc/ssh/README.md | 4 +- doc/topics/authentication/index.md | 2 +- doc/topics/autodevops/stages.md | 2 +- doc/topics/web_application_firewall/index.md | 4 +- .../quick_start_guide.md | 2 +- doc/university/README.md | 3 +- doc/university/support/README.md | 2 +- doc/user/clusters/applications.md | 10 +- .../compliance/license_compliance/index.md | 4 +- doc/user/group/saml_sso/index.md | 2 +- doc/user/group/saml_sso/scim_setup.md | 2 +- doc/user/markdown.md | 2 +- doc/user/project/clusters/serverless/aws.md | 4 +- doc/user/project/import/tfvc.md | 2 +- .../integrations/gitlab_slack_application.md | 2 +- .../integrations/jira_cloud_configuration.md | 2 +- doc/user/project/integrations/prometheus.md | 2 +- doc/user/project/issues/design_management.md | 4 +- lib/api/helpers/services_helpers.rb | 12 ++ lib/gitlab/alerting/alert.rb | 5 +- lib/gitlab/auth/ldap/person.rb | 2 +- lib/gitlab/project_template.rb | 4 +- locale/gitlab.pot | 14 +++ package.json | 3 + spec/frontend/diffs/utils/uuids_spec.js | 92 ++++++++++++++ .../monitoring/components/dashboard_spec.js | 17 +++ spec/frontend/monitoring/store/utils_spec.js | 6 + spec/frontend/monitoring/store_utils.js | 12 ++ .../project_selector/project_selector_spec.js | 22 ++++ spec/initializers/google_api_client_spec.rb | 17 --- spec/lib/gitlab/auth/ldap/person_spec.rb | 7 +- spec/lib/gitlab/import_export/all_models.yml | 1 + .../prometheus_service_spec.rb | 44 +++++++ .../prometheus/alert_presenter_spec.rb | 35 +++--- .../dashboard/annotations/delete_spec.rb | 80 ++++++++++++ .../delete_designs_service_spec.rb | 26 ++-- .../save_designs_service_spec.rb | 25 +++- spec/services/event_create_service_spec.rb | 91 ++++++++++++-- yarn.lock | 15 +++ 105 files changed, 1231 insertions(+), 300 deletions(-) create mode 100644 app/assets/javascripts/diffs/utils/uuids.js create mode 100644 app/graphql/mutations/metrics/dashboard/annotations/base.rb create mode 100644 app/graphql/mutations/metrics/dashboard/annotations/delete.rb create mode 100644 changelogs/unreleased/11805-support-first-name-and-last-name-attributes-in-ldap-user-sync.yml create mode 100644 changelogs/unreleased/211461-destroy-annotations-graphql-endpoint.yml create mode 100644 changelogs/unreleased/214109-date-time-format-should-be-consistent-in-the-incident.yml create mode 100644 changelogs/unreleased/216385-add-related-dashboard-links-in-metrics-dashboard-mvc1.yml create mode 100644 changelogs/unreleased/217748-pipeline-index-endpoint-performance.yml create mode 100644 changelogs/unreleased/217985-use-glinfinitescroll-s-default-slot-in-the-project-selector-vue-co.yml create mode 100644 changelogs/unreleased/ak-update-google-auth.yml create mode 100644 changelogs/unreleased/dennis-project-templates-add-gitbook-logo.yml create mode 100644 changelogs/unreleased/dennis-project-templates-add-hugo-logo.yml create mode 100644 db/migrate/20200528125905_add_project_id_user_id_status_ref_index_to_ci_pipelines.rb create mode 100644 spec/frontend/diffs/utils/uuids_spec.js delete mode 100644 spec/initializers/google_api_client_spec.rb create mode 100644 spec/requests/api/graphql/mutations/metrics/dashboard/annotations/delete_spec.rb diff --git a/Gemfile b/Gemfile index 7d63a5f50c0..8137b66c283 100644 --- a/Gemfile +++ b/Gemfile @@ -112,14 +112,14 @@ gem 'fog-aws', '~> 3.5' # Locked until fog-google resolves https://github.com/fog/fog-google/issues/421. # Also see config/initializers/fog_core_patch.rb. gem 'fog-core', '= 2.1.0' -gem 'fog-google', '~> 1.9' +gem 'fog-google', '~> 1.10' gem 'fog-local', '~> 0.6' gem 'fog-openstack', '~> 1.0' gem 'fog-rackspace', '~> 0.1.1' gem 'fog-aliyun', '~> 0.3' # for Google storage -gem 'google-api-client', '~> 0.23' +gem 'google-api-client', '~> 0.33' # for aws storage gem 'unf', '~> 0.1.4' diff --git a/Gemfile.lock b/Gemfile.lock index 31ff0fb304c..49a0113f510 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -286,7 +286,7 @@ GEM factory_bot_rails (5.1.0) factory_bot (~> 5.1.0) railties (>= 4.2.0) - faraday (0.15.4) + faraday (0.17.3) multipart-post (>= 1.2, < 3) faraday-http-cache (2.0.0) faraday (~> 0.8) @@ -330,11 +330,11 @@ GEM excon (~> 0.58) formatador (~> 0.2) mime-types - fog-google (1.9.1) + fog-google (1.10.0) fog-core (<= 2.1.0) fog-json (~> 1.2) fog-xml (~> 0.1.0) - google-api-client (~> 0.23.0) + google-api-client (>= 0.32, < 0.34) fog-json (1.2.0) fog-core multi_json (~> 1.10) @@ -419,23 +419,24 @@ GEM actionpack (>= 3.0) multi_json request_store (>= 1.0) - google-api-client (0.23.4) + google-api-client (0.33.2) addressable (~> 2.5, >= 2.5.1) - googleauth (>= 0.5, < 0.7.0) + googleauth (~> 0.9) httpclient (>= 2.8.1, < 3.0) - mime-types (~> 3.0) + mini_mime (~> 1.0) representable (~> 3.0) retriable (>= 2.0, < 4.0) + signet (~> 0.12) google-protobuf (3.8.0) googleapis-common-protos-types (1.0.4) google-protobuf (~> 3.0) - googleauth (0.6.6) - faraday (~> 0.12) + googleauth (0.12.0) + faraday (>= 0.17.3, < 2.0) jwt (>= 1.4, < 3.0) - memoist (~> 0.12) + memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) - signet (~> 0.7) + signet (~> 0.14) gpgme (2.0.20) mini_portile2 (~> 2.3) grape (1.1.0) @@ -1010,9 +1011,9 @@ GEM sidekiq-cron (1.0.4) fugit (~> 1.1) sidekiq (>= 4.2.1) - signet (0.11.0) + signet (0.14.0) addressable (~> 2.3) - faraday (~> 0.9) + faraday (>= 0.17.3, < 2.0) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) simple_po_parser (1.1.2) @@ -1224,7 +1225,7 @@ DEPENDENCIES fog-aliyun (~> 0.3) fog-aws (~> 3.5) fog-core (= 2.1.0) - fog-google (~> 1.9) + fog-google (~> 1.10) fog-local (~> 0.6) fog-openstack (~> 1.0) fog-rackspace (~> 0.1.1) @@ -1250,7 +1251,7 @@ DEPENDENCIES gitlab_chronic_duration (~> 0.10.6.2) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) - google-api-client (~> 0.23) + google-api-client (~> 0.33) google-protobuf (~> 3.8.0) gpgme (~> 2.0.19) grape (~> 1.1.0) diff --git a/app/assets/javascripts/diffs/utils/uuids.js b/app/assets/javascripts/diffs/utils/uuids.js new file mode 100644 index 00000000000..1a529c07ccc --- /dev/null +++ b/app/assets/javascripts/diffs/utils/uuids.js @@ -0,0 +1,79 @@ +/** + * @module uuids + */ + +/** + * A string or number representing a start state for a random generator + * @typedef {(Number|String)} Seed + */ +/** + * A UUIDv4 string in the format Hex{8}-Hex{4}-4Hex{3}-[89ab]Hex{3}-Hex{12} + * @typedef {String} UUIDv4 + */ + +// https://gitlab.com/gitlab-org/frontend/rfcs/-/issues/20 +/* eslint-disable import/prefer-default-export */ + +import MersenneTwister from 'mersenne-twister'; +import stringHash from 'string-hash'; +import { isString } from 'lodash'; +import { v4 } from 'uuid'; + +function getSeed(seeds) { + return seeds.reduce((seedling, seed, i) => { + let thisSeed = 0; + + if (Number.isInteger(seed)) { + thisSeed = seed; + } else if (isString(seed)) { + thisSeed = stringHash(seed); + } + + return seedling + (seeds.length - i) * thisSeed; + }, 0); +} + +function getPseudoRandomNumberGenerator(...seeds) { + let seedNumber; + + if (seeds.length) { + seedNumber = getSeed(seeds); + } else { + seedNumber = Math.floor(Math.random() * 10 ** 15); + } + + return new MersenneTwister(seedNumber); +} + +function randomValuesForUuid(prng) { + const randomValues = []; + + for (let i = 0; i <= 3; i += 1) { + const buffer = new ArrayBuffer(4); + const view = new DataView(buffer); + + view.setUint32(0, prng.random_int()); + + randomValues.push(view.getUint8(0), view.getUint8(1), view.getUint8(2), view.getUint8(3)); + } + + return randomValues; +} + +/** + * Get an array of UUIDv4s + * @param {Object} [options={}] + * @param {Seed[]} [options.seeds=[]] - A list of mixed strings or numbers to seed the UUIDv4 generator + * @param {Number} [options.count=1] - A total number of UUIDv4s to generate + * @returns {UUIDv4[]} An array of UUIDv4s + */ +export function uuids({ seeds = [], count = 1 } = {}) { + const rng = getPseudoRandomNumberGenerator(...seeds); + return ( + // Create an array the same size as the number of UUIDs requested + Array(count) + .fill(0) + // Replace each slot in the array with a UUID which needs 16 (pseudo)random values to generate + .map(() => v4({ random: randomValuesForUuid(rng) })) + ); +} diff --git a/app/assets/javascripts/monitoring/components/links_section.vue b/app/assets/javascripts/monitoring/components/links_section.vue index 6ea650071a0..2de3a40e157 100644 --- a/app/assets/javascripts/monitoring/components/links_section.vue +++ b/app/assets/javascripts/monitoring/components/links_section.vue @@ -1,10 +1,4 @@