Skip to content

Commit

Permalink
Merge pull request #1339 from ChrisBr/trigger_rebuild
Browse files Browse the repository at this point in the history
Refactor trigger_rebuild action
  • Loading branch information
hennevogel committed Nov 4, 2015
2 parents 00818f3 + 42ea228 commit fcde38a
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 47 deletions.
2 changes: 1 addition & 1 deletion src/api/app/controllers/source_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1386,7 +1386,7 @@ def package_command_rebuild

path = "/build/#{@project.name}?cmd=rebuild&package=#{@package.name}"
if repo_name
if p.repositories.find_by_name(repo_name).nil?
if @package && @package.repositories.find_by_name(repo_name).nil?
render_error :status => 400, :errorcode => 'unknown_repository',
:message=> "Unknown repository '#{repo_name}'"
return
Expand Down
70 changes: 28 additions & 42 deletions src/api/app/controllers/webui/package_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ class Webui::PackageController < Webui::WebuiController
:update_build_log, :devel_project, :buildresult, :rpmlint_result,
:rpmlint_log, :meta, :attributes, :repositories, :files]

before_filter :do_backend_login, only: [:save_meta, :abort_build, :trigger_rebuild, :wipe_binaries, :remove]

prepend_before_filter :lockout_spiders, :only => [:revisions, :dependency, :rdiff, :binary, :binaries, :requests]

def show
Expand Down Expand Up @@ -846,17 +844,40 @@ def update_build_log
end

def abort_build
params[:redirect] = 'live_build_log'
api_cmd('abortbuild', params)
end
authorize @package, :update?

if @package.abort_build(params)
flash[:notice] = "Triggered abort build for #{@project.name}/#{@package.name} successfully."
redirect_to controller: :package, action: :show, project: @project, package: @package
else
flash[:error] = "Error while triggering abort build for #{@project.name}/#{@package.name}: #{@package.errors.full_messages.to_sentence}."
redirect_to controller: :package, action: :live_build_log, project: @project, package: @package, repository: params[:repository]
end

end

def trigger_rebuild
api_cmd('rebuild', params)
authorize @package, :update?

if @package.rebuild(params)
flash[:notice] = "Triggered rebuild for #{@project.name}/#{@package.name} successfully."
redirect_to controller: :package, action: :show, project: @project, package: @package
else
flash[:error] = "Error while triggering rebuild for #{@project.name}/#{@package.name}: #{@package.errors.full_messages.to_sentence}."
redirect_to controller: :package, action: :binaries, project: @project, package: @package, repository: params[:repository]
end
end

def wipe_binaries
api_cmd('wipe', params)
authorize @package, :update?

if @package.wipe_binaries(params)
flash[:notice] = "Triggered wipe binaries for #{@project.name}/#{@package.name} successfully."
redirect_to controller: :package, action: :show, project: @project, package: @package
else
flash[:error] = "Error while triggering wipe binaries for #{@project.name}/#{@package.name}: #{@package.errors.full_messages.to_sentence}."
redirect_to controller: :package, action: :binaries, project: @project, package: @package, repository: params[:repository]
end
end

def devel_project
Expand All @@ -870,41 +891,6 @@ def devel_project
end
end

def api_cmd(cmd, params)
options = {}
options[:arch] = params[:arch] if params[:arch]
options[:repository] = params[:repo] if params[:repo]
options[:project] = @project.to_s
options[:package] = @package.to_s

begin
frontend.cmd cmd, options
rescue ActiveXML::Transport::Error => e
flash[:error] = e.summary
redirect_to action: :show, project: @project, package: @package
return
end

logger.debug( "Triggered #{cmd} for #{@project}/#{@package}, options=#{options.inspect}" )
@message = "Triggered #{cmd} for #{@project}/#{@package}."
controller = 'package'
action = 'show'
if params[:redirect] == 'monitor'
controller = 'project'
action = 'monitor'
end

if request.xhr?
# ajax request - render default view: in this case 'trigger_rebuild.rjs'
return
else
# non ajax request:
flash[:notice] = @message
redirect_to controller: controller, action: action, project: @project, package: @package
end
end
private :api_cmd

def import_spec
all_files = package_files
all_files.each do |file|
Expand Down
22 changes: 22 additions & 0 deletions src/api/app/models/package.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1285,4 +1285,26 @@ def fixtures_name
def api_obj
self
end

def rebuild(params)
backend_build_command(:rebuild, params.slice!(:package, :arch, :repository))
end

def wipe_binaries(params)
backend_build_command(:wipe, params.slice!(:package, :arch, :repository))
end

def abort_build(params)
backend_build_command(:abortbuild, params.slice!(:package, :arch, :repository))
end

def backend_build_command(command, params)
begin
Suse::Backend.post("/build/#{URI.escape(project.name)}?cmd=#{command}&#{params.to_query}", '')
rescue ActiveXML::Transport::Error, Timeout::Error => e
errors.add(:base, e.message)
return false
end
true
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
<%= link_to sprited_text('rebuild', 'Trigger Rebuild'), {action: 'trigger_rebuild', project: @project, package: @package, arch: @arch, repo: @repo}, method: :delete %>
</span>
<span class="link_abort_build hidden">
<%= link_to "[Abort build]", action: 'abort_build', project: @project, package: @package, arch: @arch, repo: @repo %>
<%= link_to "[Abort build]", action: 'abort_build', project: @project, package: @package, arch: @arch, repository: @repo %>
</span></p>
<% end %>
6 changes: 3 additions & 3 deletions src/api/app/views/webui/package/binaries.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@
<% end %>
<p>
<% if User.current.can_modify_package? @package %>
<%= link_to sprited_text('rebuild', 'Trigger'),{ :controller => :package, :action => :trigger_rebuild, :arch => result['arch'], :project => @project, :package => @package, :repo => @repository }, { :method => :delete} %> rebuild
<%= link_to sprited_text('rebuild', 'Trigger'),{ :controller => :package, :action => :trigger_rebuild, :arch => result['arch'], :project => @project, :package => @package, :repository => @repository }, { :method => :delete} %> rebuild

<% if result.get( 'binarylist')['binary'] %>
<%= link_to sprited_text('drive_burn', 'Delete'), { :controller => :package, :action => :wipe_binaries, :arch => result['arch'], :project => @project, :package => @package, :repo => @repository }, { :method => :delete} %> built binaries
<% if result.get('binarylist')['binary'] %>
<%= link_to sprited_text('drive_burn', 'Delete'), { :controller => :package, :action => :wipe_binaries, :arch => result['arch'], :project => @project, :package => @package, :repository => @repository }, { :method => :delete} %> built binaries
<% end %>
<% end %>
<% if found_statistics %>
Expand Down

0 comments on commit fcde38a

Please sign in to comment.