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
def perform(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.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
elsif project.import_type == 'gitlab'
Gitlab::GitlabImport::Importer.new(project).execute
......@@ -19,14 +21,12 @@ class RepositoryImportWorker
else
true
end
return project.import_fail unless data_import_result
if result && result_of_data_import
project.import_finish
project.save
project.satellite.create unless project.satellite.exists?
project.update_repository_size
else
project.import_fail
end
Gitlab::BitbucketImport::KeyDeleter.new(project).execute if project.import_type == 'bitbucket'
end
end
......@@ -61,17 +61,28 @@ module Gitlab
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}").body)
end
def deploy_key(project_identifier)
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find { |key| key["label"] =~ /GitLab/ }
def find_deploy_key(project_identifier, key)
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find { |deploy_key|
deploy_key["key"].chomp == key.chomp
}
end
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)
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
JSON.parse(api.get("/api/1.0/user/repositories").body).
select { |repo| repo["scm"] == "git" }
JSON.parse(api.get("/api/1.0/user/repositories").body).select { |repo| repo["scm"] == "git" }
end
private
......
......@@ -12,8 +12,6 @@ module Gitlab
return false unless BitbucketImport.public_key.present?
project_identifier = "#{repo["owner"]}/#{repo["slug"]}"
return true if client.deploy_key(project_identifier)
client.add_deploy_key(project_identifier, BitbucketImport.public_key)
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