Revision 69d90d87
Added by Justin Sherrill over 10 years ago
updating post_sync action
- moving to v2 controller
- adding support for a secret token
- removing http header guessing
app/controllers/katello/api/v2/repositories_controller.rb | ||
---|---|---|
before_filter :find_repository, :only => [:show, :update, :destroy, :sync]
|
||
before_filter :authorize
|
||
|
||
skip_before_filter :authorize, :only => [:sync_complete]
|
||
skip_before_filter :require_org, :only => [:sync_complete]
|
||
skip_before_filter :require_user, :only => [:sync_complete]
|
||
|
||
def_param_group :repo do
|
||
param :name, String, :required => true
|
||
param :label, String, :required => false
|
||
... | ... | |
respond_for_destroy
|
||
end
|
||
|
||
api :POST, "/repositories/sync_complete"
|
||
desc "URL for post sync notification from pulp"
|
||
param 'token', String, :desc => "shared secret token", :required => true
|
||
param 'payload', Hash, :required => true do
|
||
param 'repo_id', String, :required => true
|
||
end
|
||
param 'call_report', Hash, :required => true do
|
||
param 'task_id', String, :required => true
|
||
end
|
||
def sync_complete
|
||
if params[:token] != Rack::Utils.parse_query(URI(Katello.config.post_sync_url).query)['token']
|
||
fail Errors::SecurityViolation.new(_("Token invalid during sync_complete."))
|
||
end
|
||
|
||
repo_id = params['payload']['repo_id']
|
||
task_id = params['call_report']['task_id']
|
||
task = TaskStatus.find_by_uuid(task_id)
|
||
User.current = (task && task.user) ? task.user : User.hidden.first
|
||
|
||
repo = Repository.where(:pulp_id => repo_id).first
|
||
fail _("Couldn't find repository '%s'") % repo_id if repo.nil?
|
||
Rails.logger.info("Sync_complete called for #{repo.name}, running after_sync.")
|
||
|
||
repo.async(:organization => repo.environment.organization).after_sync(task_id)
|
||
render :nothing => true
|
||
end
|
||
|
||
protected
|
||
|
||
def find_product
|
Also available in: Unified diff