Commit cbbc42e0 authored by James Lopez's avatar James Lopez

adding more UI changes, updated controller, worker and refactored import service

parent 1d4c3fa1
...@@ -7,7 +7,8 @@ class Import::GitlabProjectsController < Import::BaseController ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
......
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