keys to gitolite via sidekiq now
This commit is contained in:
parent
944b2450b1
commit
299a9a1040
|
@ -2,11 +2,21 @@ class KeyObserver < ActiveRecord::Observer
|
||||||
include Gitolited
|
include Gitolited
|
||||||
|
|
||||||
def after_save(key)
|
def after_save(key)
|
||||||
gitolite.set_key(key.identifier, key.key, key.projects)
|
GitoliteWorker.perform_async(
|
||||||
|
:set_key,
|
||||||
|
key.identifier,
|
||||||
|
key.key,
|
||||||
|
key.projects.map(&:id)
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def after_destroy(key)
|
def after_destroy(key)
|
||||||
return if key.is_deploy_key && !key.last_deploy?
|
return if key.is_deploy_key && !key.last_deploy?
|
||||||
gitolite.remove_key(key.identifier, key.projects)
|
|
||||||
|
GitoliteWorker.perform_async(
|
||||||
|
:remove_key,
|
||||||
|
key.identifier,
|
||||||
|
key.projects.map(&:id)
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,7 +4,7 @@ class GitoliteWorker
|
||||||
|
|
||||||
sidekiq_options queue: :gitolite
|
sidekiq_options queue: :gitolite
|
||||||
|
|
||||||
def perform(action, arg)
|
def perform(action, *arg)
|
||||||
gitolite.send(action, arg)
|
gitolite.send(action, *arg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,14 +8,28 @@ module Gitlab
|
||||||
Gitlab::GitoliteConfig.new
|
Gitlab::GitoliteConfig.new
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_key key_id, key_content, projects
|
# Update gitolite config with new key
|
||||||
|
#
|
||||||
|
# Ex.
|
||||||
|
# set_key("m_gitlab_com_12343", "sha-rsa ...", [2, 3, 6])
|
||||||
|
#
|
||||||
|
def set_key(key_id, key_content, project_ids)
|
||||||
|
projects = Project.where(id: project_ids)
|
||||||
|
|
||||||
config.apply do |config|
|
config.apply do |config|
|
||||||
config.write_key(key_id, key_content)
|
config.write_key(key_id, key_content)
|
||||||
config.update_projects(projects)
|
config.update_projects(projects)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_key key_id, projects
|
# Remove ssh key from gitolite config
|
||||||
|
#
|
||||||
|
# Ex.
|
||||||
|
# remove_key("m_gitlab_com_12343", [2, 3, 6])
|
||||||
|
#
|
||||||
|
def remove_key(key_id, project_ids)
|
||||||
|
projects = Project.where(id: project_ids)
|
||||||
|
|
||||||
config.apply do |config|
|
config.apply do |config|
|
||||||
config.rm_key(key_id)
|
config.rm_key(key_id)
|
||||||
config.update_projects(projects)
|
config.update_projects(projects)
|
||||||
|
|
Loading…
Reference in a new issue