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
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/packages/debian/process_changes_service.rb')
-rw-r--r--app/services/packages/debian/process_changes_service.rb113
1 files changed, 0 insertions, 113 deletions
diff --git a/app/services/packages/debian/process_changes_service.rb b/app/services/packages/debian/process_changes_service.rb
deleted file mode 100644
index eb88e7c9b59..00000000000
--- a/app/services/packages/debian/process_changes_service.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-# frozen_string_literal: true
-
-module Packages
- module Debian
- class ProcessChangesService
- include ExclusiveLeaseGuard
- include Gitlab::Utils::StrongMemoize
-
- # used by ExclusiveLeaseGuard
- DEFAULT_LEASE_TIMEOUT = 1.hour.to_i.freeze
-
- def initialize(package_file, creator)
- @package_file = package_file
- @creator = creator
- end
-
- def execute
- # return if changes file has already been processed
- return if package_file.debian_file_metadatum&.changes?
-
- validate!
-
- try_obtain_lease do
- package_file.transaction do
- update_files_metadata
- update_changes_metadata
- end
-
- ::Packages::Debian::GenerateDistributionWorker.perform_async(:project, package.debian_distribution.id)
- end
- end
-
- private
-
- attr_reader :package_file, :creator
-
- def validate!
- raise ArgumentError, 'invalid package file' unless package_file.debian_file_metadatum
- raise ArgumentError, 'invalid package file' unless package_file.debian_file_metadatum.unknown?
- raise ArgumentError, 'invalid package file' unless metadata[:file_type] == :changes
- raise ArgumentError, 'missing Source field' unless metadata.dig(:fields, 'Source').present?
- raise ArgumentError, 'missing Version field' unless metadata.dig(:fields, 'Version').present?
- raise ArgumentError, 'missing Distribution field' unless metadata.dig(:fields, 'Distribution').present?
- end
-
- def update_files_metadata
- files.each do |filename, entry|
- file_metadata = ::Packages::Debian::ExtractMetadataService.new(entry.package_file).execute
-
- ::Packages::UpdatePackageFileService.new(entry.package_file, package_id: package.id)
- .execute
-
- # Force reload from database, as package has changed
- entry.package_file.reload_package
-
- entry.package_file.debian_file_metadatum.update!(
- file_type: file_metadata[:file_type],
- component: files[filename].component,
- architecture: file_metadata[:architecture],
- fields: file_metadata[:fields]
- )
- end
- end
-
- def update_changes_metadata
- ::Packages::UpdatePackageFileService.new(package_file, package_id: package.id)
- .execute
-
- # Force reload from database, as package has changed
- package_file.reload_package
-
- package_file.debian_file_metadatum.update!(
- file_type: metadata[:file_type],
- fields: metadata[:fields]
- )
- end
-
- def metadata
- ::Packages::Debian::ExtractChangesMetadataService.new(package_file).execute
- end
- strong_memoize_attr :metadata
-
- def files
- metadata[:files]
- end
-
- def project
- package_file.package.project
- end
-
- def package
- params = {
- name: metadata[:fields]['Source'],
- version: metadata[:fields]['Version'],
- distribution_name: metadata[:fields]['Distribution']
- }
- response = Packages::Debian::FindOrCreatePackageService.new(project, creator, params).execute
- response.payload[:package]
- end
- strong_memoize_attr :package
-
- # used by ExclusiveLeaseGuard
- def lease_key
- "packages:debian:process_changes_service:package_file:#{package_file.id}"
- end
-
- # used by ExclusiveLeaseGuard
- def lease_timeout
- DEFAULT_LEASE_TIMEOUT
- end
- end
- end
-end