adding more UI changes, updated controller, worker and refactored import service
This commit is contained in:
parent
1d4c3fa150
commit
cbbc42e0c4
6 changed files with 37 additions and 20 deletions
|
@ -7,7 +7,8 @@ class Import::GitlabProjectsController < Import::BaseController
|
||||||
#TODO permissions stuff
|
#TODO permissions stuff
|
||||||
|
|
||||||
def new
|
def new
|
||||||
|
@namespace_id = project_params[:namespace_id]
|
||||||
|
@path = project_params[:path]
|
||||||
end
|
end
|
||||||
|
|
||||||
def status
|
def status
|
||||||
|
@ -27,14 +28,14 @@ class Import::GitlabProjectsController < Import::BaseController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
file = params[:file]
|
file = params[:file]
|
||||||
# @project_name =
|
|
||||||
|
|
||||||
repo_owner = current_user.username
|
repo_owner = current_user.username
|
||||||
@target_namespace = params[:new_namespace].presence || repo_owner
|
@target_namespace = params[:new_namespace].presence || repo_owner
|
||||||
|
|
||||||
namespace = get_or_create_namespace || (render and return)
|
@project = Project.create_from_import_job(current_user_id: current_user.id,
|
||||||
|
tmp_file: File.expand_path(file.path),
|
||||||
@project = Project.create_from_import_job(current_user.id, File.expand_path(file.path))
|
namespace_id: @namespace_id,
|
||||||
|
project_path: @path)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -42,4 +43,10 @@ class Import::GitlabProjectsController < Import::BaseController
|
||||||
def verify_gitlab_project_import_enabled
|
def verify_gitlab_project_import_enabled
|
||||||
render_404 unless gitlab_project_import_enabled?
|
render_404 unless gitlab_project_import_enabled?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def project_params
|
||||||
|
params.require(:project).permit(
|
||||||
|
:path, :namespace_id,
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -360,13 +360,13 @@ class Project < ActiveRecord::Base
|
||||||
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:)
|
def create_from_import_job(current_user_id:, tmp_file:, namespace_id:, project_path:)
|
||||||
job_id = ProjectImportWorker.perform_async(current_user_id, tmp_file)
|
job_id = ProjectImportWorker.perform_async(current_user_id, tmp_file, namespace_id, project_path)
|
||||||
|
|
||||||
if job_id
|
if job_id
|
||||||
Rails.logger.info "Import job started for #{path_with_namespace} with job ID #{job_id}"
|
Rails.logger.info "Import job started for export #{tmp_file} with job ID #{job_id}"
|
||||||
else
|
else
|
||||||
Rails.logger.error "Import job failed to start for #{path_with_namespace}"
|
Rails.logger.error "Import job failed to start for #{tmp_file}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
Import projects from FogBugz
|
Import projects from FogBugz
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
= form_tag import_gitlab_project_path, class: 'form-horizontal' do
|
= form_tag import_gitlab_project_path, class: 'form-horizontal', multipart: true 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
|
||||||
|
|
|
@ -2,12 +2,15 @@ class ProjectImportWorker
|
||||||
include Sidekiq::Worker
|
include Sidekiq::Worker
|
||||||
include Gitlab::ShellAdapter
|
include Gitlab::ShellAdapter
|
||||||
|
|
||||||
sidekiq_options queue: :gitlab_shell
|
sidekiq_options queue: :gitlab_shell, retry: false
|
||||||
|
|
||||||
def perform(current_user_id, tmp_file)
|
def perform(current_user_id, tmp_file, namespace_id, path)
|
||||||
current_user = User.find(current_user_id)
|
current_user = User.find(current_user_id)
|
||||||
|
|
||||||
project = Gitlab::ImportExport::ImportService.execute(archive_file: tmp_file, owner: current_user)
|
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
|
# TODO: Move this to import service
|
||||||
# if result[:status] == :error
|
# if result[:status] == :error
|
||||||
|
|
|
@ -6,15 +6,17 @@ module Gitlab
|
||||||
new(args).execute
|
new(args).execute
|
||||||
end
|
end
|
||||||
|
|
||||||
def initialize(options = {})
|
def initialize(archive_file:, owner:, namespace_id:, project_path:)
|
||||||
@archive_file = options[:archive_file]
|
@archive_file = archive_file
|
||||||
@current_user = options[:owner]
|
@current_user = owner
|
||||||
|
@namespace_path = Namespace.find(namespace_id).path
|
||||||
|
@project_path = project_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def execute
|
def execute
|
||||||
Gitlab::ImportExport::Importer.import(archive_file: @archive_file, storage_path: storage_path)
|
Gitlab::ImportExport::Importer.import(archive_file: @archive_file, storage_path: storage_path)
|
||||||
restore_project_tree
|
restore_project_tree
|
||||||
restore_repo(project_tree.project)
|
restore_repo
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -27,12 +29,16 @@ module Gitlab
|
||||||
@project_tree ||= Gitlab::ImportExport::ProjectTreeRestorer.new(path: storage_path, user: @current_user)
|
@project_tree ||= Gitlab::ImportExport::ProjectTreeRestorer.new(path: storage_path, user: @current_user)
|
||||||
end
|
end
|
||||||
|
|
||||||
def restore_repo(project)
|
def restore_repo
|
||||||
Gitlab::ImportExport::RepoRestorer.new(path: storage_path, project: project).restore
|
Gitlab::ImportExport::RepoRestorer.new(path: storage_path, project: project_tree.project).restore
|
||||||
end
|
end
|
||||||
|
|
||||||
def storage_path
|
def storage_path
|
||||||
@storage_path ||= Gitlab::ImportExport.export_path(relative_path: project.path_with_namespace)
|
@storage_path ||= Gitlab::ImportExport.export_path(relative_path: path_with_namespace)
|
||||||
|
end
|
||||||
|
|
||||||
|
def path_with_namespace
|
||||||
|
File.join(@namespace_path, @project_path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -49,6 +49,7 @@ module Gitlab
|
||||||
project = Gitlab::ImportExport::ProjectFactory.create(
|
project = Gitlab::ImportExport::ProjectFactory.create(
|
||||||
project_params: project_params, user: @user)
|
project_params: project_params, user: @user)
|
||||||
project.save
|
project.save
|
||||||
|
project.import_start
|
||||||
project
|
project
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue