summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2016-05-03 12:41:23 +0200
committerJames Lopez <james@jameslopez.es>2016-05-03 12:41:23 +0200
commit9d306eb132bf153a0c93dd870d3a098028f12384 (patch)
treea0e06d8538c26e95b725f808bfafa2334db8a0d5 /app
parent548c91e3c58d03d1e99c7945d14afe4abd605217 (diff)
downloadgitlab-ce-9d306eb132bf153a0c93dd870d3a098028f12384.tar.gz
picking stuff from ui related to import
Diffstat (limited to 'app')
-rw-r--r--app/models/project.rb10
-rw-r--r--app/workers/project_impor_worker.rb25
2 files changed, 35 insertions, 0 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index af62e8ecd90..3e782be637e 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -359,6 +359,16 @@ class Project < ActiveRecord::Base
def visible_to_user(user)
where(id: user.authorized_projects.select(:id).reorder(nil))
end
+
+ def create_from_import_job(current_user_id:, tmp_file:, namespace_id:, project_path:)
+ job_id = ProjectImportWorker.perform_async(current_user_id, tmp_file, namespace_id, project_path)
+
+ if job_id
+ Rails.logger.info "Import job started for export #{tmp_file} with job ID #{job_id}"
+ else
+ Rails.logger.error "Import job failed to start for #{tmp_file}"
+ end
+ end
end
def team
diff --git a/app/workers/project_impor_worker.rb b/app/workers/project_impor_worker.rb
new file mode 100644
index 00000000000..0ef353fa441
--- /dev/null
+++ b/app/workers/project_impor_worker.rb
@@ -0,0 +1,25 @@
+class ProjectImportWorker
+ include Sidekiq::Worker
+ include Gitlab::ShellAdapter
+
+ sidekiq_options queue: :gitlab_shell, retry: false
+
+ def perform(current_user_id, tmp_file, namespace_id, path)
+ current_user = User.find(current_user_id)
+
+ project = Gitlab::ImportExport::ImportService.execute(archive_file: tmp_file,
+ owner: current_user,
+ namespace_id: namespace_id,
+ project_path: path)
+
+ # TODO: Move this to import service
+ # if result[:status] == :error
+ # project.update(import_error: result[:message])
+ # project.import_fail
+ # return
+ # end
+
+ project.repository.after_import
+ project.import_finish
+ end
+end \ No newline at end of file