Skip to content

Commit

Permalink
Merge pull request #4924 from Ana06/multibuild-binary
Browse files Browse the repository at this point in the history
Fix Multibuild binary view
  • Loading branch information
bgeuken committed May 3, 2018
2 parents 9aae8b4 + 62e0d9d commit 910317e
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 22 deletions.
9 changes: 5 additions & 4 deletions src/api/app/controllers/webui/package_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def statistics
@repository = params[:repository]
@statistics = nil
begin
@statistics = Statistic.find_hashed(project: @project, package: @package, repository: @repository, arch: @arch)
@statistics = Statistic.find_hashed(project: @project, package: params[:package], repository: @repository, arch: @arch)
rescue ActiveXML::Transport::ForbiddenError
end

Expand All @@ -147,7 +147,7 @@ def binary
@filename = File.basename(params[:filename])

begin
@fileinfo = Fileinfo.find(project: @project, package: @package, repository: @repository, arch: @arch,
@fileinfo = Fileinfo.find(project: @project, package: params[:package], repository: @repository, arch: @arch,
filename: @filename, view: 'fileinfo_ext')
rescue ActiveXML::Transport::ForbiddenError, ActiveXML::Transport::Error => e
flash[:error] = "File #{@filename} can not be downloaded from #{@project}: #{e.summary}"
Expand All @@ -169,10 +169,11 @@ def binary

def binaries
@repository = params[:repository]
@package_name = params[:package]

results_from_backend = Buildresult.find_hashed(project: @project, package: @package, repository: @repository, view: ['binarylist', 'status'])
results_from_backend = Buildresult.find_hashed(project: @project, package: @package_name, repository: @repository, view: ['binarylist', 'status'])
unless results_from_backend
flash[:error] = "Package \"#{@package}\" has no build result for repository #{@repository}"
flash[:error] = "Package \"#{@package_name}\" has no build result for repository #{@repository}"
redirect_to(controller: :package, action: :show, project: @project, package: @package, nextstatus: 404)
return
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ class BuildReasonController < WebuiController
before_action :set_architecture

def index
@details = @package.last_build_reason(@repository, @architecture.name)

@details = @package.last_build_reason(@repository, @architecture.name, @package_name)
return if @details.explain

redirect_back(fallback_location: package_binaries_path(package: @package, project: @project, repository: @repository.name),
Expand All @@ -18,6 +17,8 @@ def index
private

def set_package
# Store the package name in case of multibuilds
@package_name = params[:package_name]
@package = ::Package.get_by_project_and_name(@project.to_param, params[:package_name],
use_source: false, follow_project_links: true, follow_multibuild: true)
@is_link = @package.is_link? || @package.is_local_link?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ def index
private

def set_package
# Store the package name in case of multibuilds
@package_name = params[:package_name]
@package = ::Package.get_by_project_and_name(@project.to_param, params[:package_name],
use_source: false, follow_project_links: true, follow_multibuild: true)
@is_link = @package.is_link? || @package.is_local_link?
Expand Down
4 changes: 2 additions & 2 deletions src/api/app/models/package.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1439,12 +1439,12 @@ def self.what_depends_on(project, package, repository, architecture)
[]
end

def last_build_reason(repo, arch)
def last_build_reason(repo, arch, package_name = nil)
repo = repo.name if repo.is_a? Repository

xml_data = Nokogiri::XML(BuildReasonFile.new(
project_name: project.name,
package_name: name,
package_name: package_name || name,
repo: repo,
arch: arch
).to_s).xpath('reason')
Expand Down
16 changes: 8 additions & 8 deletions src/api/app/views/webui/package/binaries.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<% @pagetitle = "State of Repository #{@repository} for #{@project} / #{@package}"
<% @pagetitle = "State of Repository #{@repository} for #{@project} / #{@package_name}"
@metarobots = 'index,nofollow' # do not follow the single binary pages
package_bread_crumb 'Repository State'
-%>
Expand All @@ -10,7 +10,7 @@
<p>
<%= render partial: "shared/download_repository_link", locals: { project: @project, repository: @repository} %>
<% unless @buildresults.empty? %>
<%= link_to sprited_text('drive_burn', 'Delete'), { controller: :package, action: :wipe_binaries, project: @project, package: @package, repository: @repository }, { method: :delete} %> all built binaries
<%= link_to sprited_text('drive_burn', 'Delete'), { controller: :package, action: :wipe_binaries, project: @project, package: @package_name, repository: @repository }, { method: :delete} %> all built binaries
<% end %>
</p>

Expand All @@ -26,23 +26,23 @@
<span class="binaries_links">
<%= link_to(sprited_text('page_white_get', 'Cloud Upload'), new_cloud_upload_path(project: @project, package: @package, repository: @repository, arch: result[:arch], filename: binary[:filename])) if binary[:links][:cloud_upload?] %>
<%= link_to(sprited_text('page_white_put', 'Download'), binary[:links][:download_url]) if binary[:links][:download_url] %>
<%= link_to(sprited_text('information', 'Details'), package_binary_path(project: @project, package: @package, repository: @repository, arch: result[:arch], filename: binary[:filename])) if binary[:links][:details?] %>
<%= link_to(sprited_text('information', 'Details'), package_binary_path(project: @project, package: @package_name, repository: @repository, arch: result[:arch], filename: binary[:filename])) if binary[:links][:details?] %>
</span>
</li>
<% end %>
</ul>
<% 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, repository: @repository }, { method: :post } %> rebuild
<%= link_to sprited_text('rebuild', 'Trigger'), { controller: :package, action: :trigger_rebuild, arch: result[:arch], project: @project, package: @package_name, repository: @repository }, { method: :post } %> rebuild
<% unless result[:binaries].empty? %>
<%= 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
<%= link_to sprited_text('drive_burn', 'Delete'), { controller: :package, action: :wipe_binaries, arch: result[:arch], project: @project, package: @package_name, repository: @repository }, { method: :delete} %> built binaries
<% end %>
<% end %>
<% if result[:statistics] %>
<%= link_to sprited_text('server_chart', 'Show'), package_statistics_path(project: @project, package: @package, repository: @repository, arch: result[:arch]) %> used resources
<%= link_to sprited_text('server_chart', 'Show'), package_statistics_path(project: @project, package: @package_name, repository: @repository, arch: result[:arch]) %> used resources
<% end %>
<%= link_to sprited_text('text_indent', 'Job history'), index_package_job_history_path(project: @project, package_name: @package, repository: @repository, arch: result[:arch]), class: '' %> list
<%= link_to sprited_text('information', 'Build Reason'), index_package_build_reason_path(project: @project, package_name: @package, repository: @repository, arch: result[:arch]), class: '' %>
<%= link_to sprited_text('text_indent', 'Job history'), index_package_job_history_path(project: @project, package_name: @package_name, repository: @repository, arch: result[:arch]), class: '' %> list
<%= link_to sprited_text('information', 'Build Reason'), index_package_build_reason_path(project: @project, package_name: @package_name, repository: @repository, arch: result[:arch]), class: '' %>
</p>
<% end %>
4 changes: 2 additions & 2 deletions src/api/app/views/webui/packages/build_reason/index.html.haml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
:ruby
@pagetitle = "Build Reason for #{@project} / #{@package}"
@pagetitle = "Build Reason for #{@project} / #{@package_name}"
@metarobots = 'index,nofollow'
build_reason_breadcrumb(@project, @package, "Build Reason (#{@repository.name} / #{params[:arch]})")

Expand All @@ -10,7 +10,7 @@
Repository / Architecture: #{params[:repository]} / #{params[:arch]}

%p
= link_to("<= Go back to binaries", package_binaries_path(controller: '/webui/package', project: @project, package: @package, repository: @repository.name ))
= link_to("<= Go back to binaries", package_binaries_path(controller: '/webui/package', project: @project, package: @package_name, repository: @repository.name ))

%p
%strong
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
:ruby
@pagetitle = "Job history of #{@project} / #{@package}"
@pagetitle = "Job history of #{@project} / #{@package_name}"
@metarobots = 'index,nofollow'
job_history_breadcrumb(@project, @package, 'Job history')

Expand Down
4 changes: 2 additions & 2 deletions src/api/spec/controllers/webui/package_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1299,7 +1299,7 @@ def do_request(params)
context 'when backend returns statistics' do
before do
allow(Statistic).to receive(:find_hashed).
with(project: source_project, package: source_package, repository: repository.name, arch: 'i586').
with(project: source_project, package: source_package.name, repository: repository.name, arch: 'i586').
and_return(disk: { usage: 20, size: 30 })

get :statistics, params: { project: source_project, package: source_package, arch: 'i586', repository: repository.name }
Expand All @@ -1324,7 +1324,7 @@ def do_request(params)
context 'when backend raises an exception' do
before do
allow(Statistic).to receive(:find_hashed).
with(project: source_project, package: source_package, repository: repository.name, arch: 'i586').
with(project: source_project, package: source_package.name, repository: repository.name, arch: 'i586').
and_raise(ActiveXML::Transport::ForbiddenError)

get :statistics, params: { project: source_project, package: source_package, arch: 'i586', repository: repository.name }
Expand Down
2 changes: 1 addition & 1 deletion src/api/spec/features/webui/packages_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@

scenario 'via binaries view' do
allow(Buildresult).to receive(:find_hashed).
with(project: user.home_project, package: package, repository: repository.name, view: ['binarylist', 'status']).
with(project: user.home_project, package: package.name, repository: repository.name, view: ['binarylist', 'status']).
and_return(Xmlhash.parse(fake_buildresult))

visit package_binaries_path(project: user.home_project, package: package, repository: repository.name)
Expand Down

0 comments on commit 910317e

Please sign in to comment.