Commit 6979b3af authored by Douwe Maan's avatar Douwe Maan

Delete deploy key from Bitbucket after importing.

parent f2b37de5
...@@ -6,11 +6,13 @@ class RepositoryImportWorker ...@@ -6,11 +6,13 @@ class RepositoryImportWorker
def perform(project_id) def perform(project_id)
project = Project.find(project_id) project = Project.find(project_id)
result = gitlab_shell.send(:import_repository,
import_result = gitlab_shell.send(:import_repository,
project.path_with_namespace, project.path_with_namespace,
project.import_url) project.import_url)
return project.import_fail unless import_result
result_of_data_import = if project.import_type == 'github' data_import_result = if project.import_type == 'github'
Gitlab::GithubImport::Importer.new(project).execute Gitlab::GithubImport::Importer.new(project).execute
elsif project.import_type == 'gitlab' elsif project.import_type == 'gitlab'
Gitlab::GitlabImport::Importer.new(project).execute Gitlab::GitlabImport::Importer.new(project).execute
...@@ -19,14 +21,12 @@ class RepositoryImportWorker ...@@ -19,14 +21,12 @@ class RepositoryImportWorker
else else
true true
end end
return project.import_fail unless data_import_result
if result && result_of_data_import
project.import_finish project.import_finish
project.save project.save
project.satellite.create unless project.satellite.exists? project.satellite.create unless project.satellite.exists?
project.update_repository_size project.update_repository_size
else Gitlab::BitbucketImport::KeyDeleter.new(project).execute if project.import_type == 'bitbucket'
project.import_fail
end
end end
end end
...@@ -61,17 +61,28 @@ module Gitlab ...@@ -61,17 +61,28 @@ module Gitlab
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}").body) JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}").body)
end end
def deploy_key(project_identifier) def find_deploy_key(project_identifier, key)
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find { |key| key["label"] =~ /GitLab/ } JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find { |deploy_key|
deploy_key["key"].chomp == key.chomp
}
end end
def add_deploy_key(project_identifier, key) def add_deploy_key(project_identifier, key)
deploy_key = find_deploy_key(project_identifier, key)
return if deploy_key
JSON.parse(api.post("/api/1.0/repositories/#{project_identifier}/deploy-keys", key: key, label: "GitLab import key").body) JSON.parse(api.post("/api/1.0/repositories/#{project_identifier}/deploy-keys", key: key, label: "GitLab import key").body)
end end
def delete_deploy_key(project_identifier, key)
deploy_key = find_deploy_key(project_identifier, key)
return unless deploy_key
api.delete("/api/1.0/repositories/#{project_identifier}/deploy-keys/#{deploy_key["pk"]}").code == "204"
end
def projects def projects
JSON.parse(api.get("/api/1.0/user/repositories").body). JSON.parse(api.get("/api/1.0/user/repositories").body).select { |repo| repo["scm"] == "git" }
select { |repo| repo["scm"] == "git" }
end end
private private
......
...@@ -12,8 +12,6 @@ module Gitlab ...@@ -12,8 +12,6 @@ module Gitlab
return false unless BitbucketImport.public_key.present? return false unless BitbucketImport.public_key.present?
project_identifier = "#{repo["owner"]}/#{repo["slug"]}" project_identifier = "#{repo["owner"]}/#{repo["slug"]}"
return true if client.deploy_key(project_identifier)
client.add_deploy_key(project_identifier, BitbucketImport.public_key) client.add_deploy_key(project_identifier, BitbucketImport.public_key)
true true
......
module Gitlab
module BitbucketImport
class KeyDeleter
attr_reader :project, :current_user, :client
def initialize(project)
@project = project
@current_user = project.creator
@client = Client.new(current_user.bitbucket_access_token, current_user.bitbucket_access_token_secret)
end
def execute
return false unless BitbucketImport.public_key.present?
client.delete_deploy_key(project.import_source, BitbucketImport.public_key)
true
rescue
false
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