diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-25 15:07:44 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-25 15:07:44 +0300 |
commit | 5005c6e61f4d04cb6ad155b3910461cc77927dc3 (patch) | |
tree | 5e37c632ca5886d9071521303720066719351c7e /app | |
parent | 6121eccf2bb21ac30a5c6c5b386e1bd3ddb17c91 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/stylesheets/framework/diffs.scss | 2 | ||||
-rw-r--r-- | app/controllers/import/bulk_imports_controller.rb | 2 | ||||
-rw-r--r-- | app/finders/packages/helm/package_files_finder.rb | 11 | ||||
-rw-r--r-- | app/models/bulk_import.rb | 2 | ||||
-rw-r--r-- | app/models/packages/package_file.rb | 1 | ||||
-rw-r--r-- | app/presenters/packages/helm/index_presenter.rb | 53 |
6 files changed, 67 insertions, 4 deletions
diff --git a/app/assets/stylesheets/framework/diffs.scss b/app/assets/stylesheets/framework/diffs.scss index c0e9289309a..dc9b1fd86c2 100644 --- a/app/assets/stylesheets/framework/diffs.scss +++ b/app/assets/stylesheets/framework/diffs.scss @@ -847,8 +847,6 @@ table.code { .commit-stat-summary { @include media-breakpoint-up(sm) { - margin-left: -$gl-padding; - padding-left: $gl-padding; background-color: $white; } } diff --git a/app/controllers/import/bulk_imports_controller.rb b/app/controllers/import/bulk_imports_controller.rb index 9d6c0a003c4..8e9321b04e8 100644 --- a/app/controllers/import/bulk_imports_controller.rb +++ b/app/controllers/import/bulk_imports_controller.rb @@ -10,7 +10,7 @@ class Import::BulkImportsController < ApplicationController POLLING_INTERVAL = 3_000 - rescue_from BulkImports::Clients::HTTP::ConnectionError, with: :bulk_import_connection_error + rescue_from BulkImports::Error, with: :bulk_import_connection_error def configure session[access_token_key] = configure_params[access_token_key]&.strip diff --git a/app/finders/packages/helm/package_files_finder.rb b/app/finders/packages/helm/package_files_finder.rb index 74f9eaaca82..ba400b27554 100644 --- a/app/finders/packages/helm/package_files_finder.rb +++ b/app/finders/packages/helm/package_files_finder.rb @@ -3,6 +3,9 @@ module Packages module Helm class PackageFilesFinder + DEFAULT_PACKAGE_FILES_COUNT = 20 + MAX_PACKAGE_FILES_COUNT = 1000 + def initialize(project, channel, params = {}) @project = project @channel = channel @@ -10,12 +13,18 @@ module Packages end def execute - package_files = Packages::PackageFile.for_helm_with_channel(@project, @channel).preload_helm_file_metadata + package_files = Packages::PackageFile.for_helm_with_channel(@project, @channel) + .limit_recent(limit) by_file_name(package_files) end private + def limit + limit_param = @params[:limit] || DEFAULT_PACKAGE_FILES_COUNT + [limit_param, MAX_PACKAGE_FILES_COUNT].min + end + def by_file_name(files) return files unless @params[:file_name] diff --git a/app/models/bulk_import.rb b/app/models/bulk_import.rb index 5d646313423..04e660b418e 100644 --- a/app/models/bulk_import.rb +++ b/app/models/bulk_import.rb @@ -4,6 +4,8 @@ # projects to a GitLab instance. It associates the import with the responsible # user. class BulkImport < ApplicationRecord + MINIMUM_GITLAB_MAJOR_VERSION = 14 + belongs_to :user, optional: false has_one :configuration, class_name: 'BulkImports::Configuration' diff --git a/app/models/packages/package_file.rb b/app/models/packages/package_file.rb index 3ef30c035e8..a1e95f6940c 100644 --- a/app/models/packages/package_file.rb +++ b/app/models/packages/package_file.rb @@ -27,6 +27,7 @@ class Packages::PackageFile < ApplicationRecord validates :file_name, uniqueness: { scope: :package }, if: -> { package&.pypi? } scope :recent, -> { order(id: :desc) } + scope :limit_recent, ->(limit) { recent.limit(limit) } scope :for_package_ids, ->(ids) { where(package_id: ids) } scope :with_file_name, ->(file_name) { where(file_name: file_name) } scope :with_file_name_like, ->(file_name) { where(arel_table[:file_name].matches(file_name)) } diff --git a/app/presenters/packages/helm/index_presenter.rb b/app/presenters/packages/helm/index_presenter.rb new file mode 100644 index 00000000000..b64f7198ea8 --- /dev/null +++ b/app/presenters/packages/helm/index_presenter.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +module Packages + module Helm + class IndexPresenter + include API::Helpers::RelatedResourcesHelpers + + API_VERSION = 'v1' + CHANNEL = 'channel' + INDEX_YAML_SUFFIX = "/#{CHANNEL}/index.yaml" + + def initialize(project, project_id_param, package_files) + @project = project + @project_id_param = project_id_param + @package_files = package_files + end + + def api_version + API_VERSION + end + + def entries + files = @package_files.preload_helm_file_metadata + result = Hash.new { |h, k| h[k] = [] } + + files.find_each do |package_file| + name = package_file.helm_metadata['name'] + result[name] << package_file.helm_metadata.merge({ + 'created' => package_file.created_at.utc.strftime('%Y-%m-%dT%H:%M:%S.%NZ'), + 'digest' => package_file.file_sha256, + 'urls' => ["charts/#{package_file.file_name}"] + }) + end + + result + end + + def generated + Time.zone.now.utc.strftime('%Y-%m-%dT%H:%M:%S.%NZ') + end + + def server_info + path = api_v4_projects_packages_helm_index_yaml_path( + id: ERB::Util.url_encode(@project_id_param), + channel: CHANNEL + ) + { + 'contextPath' => expose_url(path.delete_suffix(INDEX_YAML_SUFFIX)) + } + end + end + end +end |