Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-06-25 15:07:44 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-25 15:07:44 +0300
commit5005c6e61f4d04cb6ad155b3910461cc77927dc3 (patch)
tree5e37c632ca5886d9071521303720066719351c7e /app
parent6121eccf2bb21ac30a5c6c5b386e1bd3ddb17c91 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/stylesheets/framework/diffs.scss2
-rw-r--r--app/controllers/import/bulk_imports_controller.rb2
-rw-r--r--app/finders/packages/helm/package_files_finder.rb11
-rw-r--r--app/models/bulk_import.rb2
-rw-r--r--app/models/packages/package_file.rb1
-rw-r--r--app/presenters/packages/helm/index_presenter.rb53
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