Commit 8126303e authored by Gabriel Mazetto's avatar Gabriel Mazetto

Notify key changes to secondary Geo

parent eb84a5b0
......@@ -57,6 +57,7 @@ class Key < ActiveRecord::Base
end
def add_to_shell
Gitlab::Geo.notify_ssh_key_change(id, :create) if Gitlab::Geo.primary?
GitlabShellWorker.perform_async(
:add_key,
shell_id,
......@@ -73,6 +74,7 @@ class Key < ActiveRecord::Base
end
def remove_from_shell
Gitlab::Geo.notify_ssh_key_change(id, :delete) if Gitlab::Geo.primary?
GitlabShellWorker.perform_async(
:remove_key,
shell_id,
......
......@@ -2,9 +2,9 @@ module Geo
class ScheduleKeyChangeService
attr_reader :id, :action
def initialize(key_change)
@id = key_change['id']
@action = key_change['action']
def initialize(key_id, change)
@id = key_id
@action = change
end
def execute
......
......@@ -42,6 +42,10 @@ module Gitlab
::Geo::EnqueueWikiUpdateService.new(project).execute
end
def self.notify_ssh_key_change(key_id, change)
::Geo::ScheduleKeyChangeService(key_id, change.to_sym)
end
def self.bulk_notify_job
Sidekiq::Cron::Job.find('geo_bulk_notify_worker')
end
......
require 'spec_helper'
describe Geo::ScheduleKeyChangeService, service: true do
subject(:key_create) { Geo::ScheduleKeyChangeService.new({ 'id' => 1, 'action' => 'create' }) }
subject(:key_delete) { Geo::ScheduleKeyChangeService.new({ 'id' => 1, 'action' => 'delete' }) }
subject(:key_create) { Geo::ScheduleKeyChangeService.new(1, :create) }
subject(:key_delete) { Geo::ScheduleKeyChangeService.new(1, :delete) }
before(:each) { allow_any_instance_of(GeoKeyRefreshWorker).to receive(:perform) }
......
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