Commit 1d4c3fa1 authored by James Lopez's avatar James Lopez

more refactoring, now using custom job for processing project imports

parent 28b0208e
...@@ -26,7 +26,7 @@ class Import::GitlabProjectsController < Import::BaseController ...@@ -26,7 +26,7 @@ class Import::GitlabProjectsController < Import::BaseController
end end
def create def create
@file = params[:file] file = params[:file]
# @project_name = # @project_name =
repo_owner = current_user.username repo_owner = current_user.username
...@@ -34,7 +34,7 @@ class Import::GitlabProjectsController < Import::BaseController ...@@ -34,7 +34,7 @@ class Import::GitlabProjectsController < Import::BaseController
namespace = get_or_create_namespace || (render and return) namespace = get_or_create_namespace || (render and return)
@project = Gitlab::ImportExport::ImportService.execute(archive_file: file, owner: repo_owner) @project = Project.create_from_import_job(current_user.id, File.expand_path(file.path))
end end
private private
......
...@@ -359,6 +359,16 @@ class Project < ActiveRecord::Base ...@@ -359,6 +359,16 @@ class Project < ActiveRecord::Base
def visible_to_user(user) def visible_to_user(user)
where(id: user.authorized_projects.select(:id).reorder(nil)) where(id: user.authorized_projects.select(:id).reorder(nil))
end end
def create_from_import_job(current_user_id:, tmp_file:)
job_id = ProjectImportWorker.perform_async(current_user_id, tmp_file)
if job_id
Rails.logger.info "Import job started for #{path_with_namespace} with job ID #{job_id}"
else
Rails.logger.error "Import job failed to start for #{path_with_namespace}"
end
end
end end
def team def team
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
Import projects from FogBugz Import projects from FogBugz
%hr %hr
= form_tag status_import_gitlab_project_url, class: 'form-horizontal' do = form_tag import_gitlab_project_path, class: 'form-horizontal' do
%p %p
To get started you add your project export file below. To get started you add your project export file below.
.form-group .form-group
......
class ProjectImportWorker
include Sidekiq::Worker
include Gitlab::ShellAdapter
sidekiq_options queue: :gitlab_shell
def perform(current_user_id, tmp_file)
current_user = User.find(current_user_id)
project = Gitlab::ImportExport::ImportService.execute(archive_file: tmp_file, owner: current_user)
# 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
...@@ -159,6 +159,7 @@ Rails.application.routes.draw do ...@@ -159,6 +159,7 @@ Rails.application.routes.draw do
resource :gitlab_project, only: [:create, :new], controller: :gitlab_projects do resource :gitlab_project, only: [:create, :new], controller: :gitlab_projects do
get :status get :status
post :create
get :jobs get :jobs
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment