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
end
def create
@file = params[:file]
file = params[:file]
# @project_name =
repo_owner = current_user.username
......@@ -34,7 +34,7 @@ class Import::GitlabProjectsController < Import::BaseController
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
private
......
......@@ -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:)
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
def team
......
......@@ -5,7 +5,7 @@
Import projects from FogBugz
%hr
= form_tag status_import_gitlab_project_url, class: 'form-horizontal' do
= form_tag import_gitlab_project_path, class: 'form-horizontal' do
%p
To get started you add your project export file below.
.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
resource :gitlab_project, only: [:create, :new], controller: :gitlab_projects do
get :status
post :create
get :jobs
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