Skip to content

Commit

Permalink
[api] store target package information for maintenance_incident actio…
Browse files Browse the repository at this point in the history
…ns on accept

Otherwise it is hard to use the acceptinfo data
  • Loading branch information
adrianschroeter committed Jun 11, 2015
1 parent 27b3f17 commit 92f1c72
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 13 deletions.
5 changes: 2 additions & 3 deletions src/api/app/mixins/submit_request_source_diff.rb
Expand Up @@ -91,11 +91,10 @@ def diff_for_source(spkg, target_project=nil, target_package=nil)

def find_target_pkg
tpkg = nil
if Package.exists_by_project_and_name(@target_project, @target_package, follow_project_links: false)
tpkg = Package.get_by_project_and_name(@target_project, @target_package)
elsif Package.exists_by_project_and_name(@target_project, @target_package, follow_project_links: true)
if Package.exists_by_project_and_name(@target_project, @target_package, follow_project_links: true)
tpkg = Package.get_by_project_and_name(@target_project, @target_package)
else
# for permission check
Project.get_by_name(@target_project)
end
tpkg
Expand Down
16 changes: 6 additions & 10 deletions src/api/app/models/bs_request_action_maintenance_incident.rb
Expand Up @@ -110,7 +110,7 @@ def _merge_pkg_into_maintenance_incident(incidentProject, source_project, source
end
else
# no link and not a patchinfo
return # error out instead ?
return nil # error out instead ?
end
end

Expand All @@ -133,31 +133,26 @@ def _merge_pkg_into_maintenance_incident(incidentProject, source_project, source
self.set_acceptinfo(result["acceptinfo"])

new_pkg.sources_changed
new_pkg
end

def merge_into_maintenance_incident(incidentProject, source_project, source_package, releaseproject=nil, request=nil)

# copy all or selected packages and project source files from base project
# we don't branch from it to keep the link target.
if source_package
_merge_pkg_into_maintenance_incident(incidentProject, source_project, source_package, releaseproject, request)
else
packages = Project.get_by_name(source_project).packages
packages.each do |pkg|
_merge_pkg_into_maintenance_incident(incidentProject, source_project, source_package, releaseproject, request)
end
end
pkg = _merge_pkg_into_maintenance_incident(incidentProject, source_project, source_package, releaseproject, request)

incidentProject.save!
incidentProject.store(comment: "maintenance_incident request #{self.bs_request.id}", requestid: self.bs_request.id)
pkg
end

def execute_accept(opts)
# create or merge into incident project
incident_project = Project.get_by_name(self.target_project)

# the incident got created before
merge_into_maintenance_incident(incident_project, self.source_project, self.source_package, self.target_releaseproject, self.bs_request)
self.target_package = merge_into_maintenance_incident(incident_project, self.source_project, self.source_package, self.target_releaseproject, self.bs_request)

# update action with real target project
self.target_project = incident_project.name
Expand Down Expand Up @@ -185,6 +180,7 @@ def expand_targets(ignore_build_state)
unless maintenanceProject.is_maintenance_incident? or maintenanceProject.is_maintenance?
raise NoMaintenanceProject.new 'Maintenance incident requests have to go to projects of type maintenance or maintenance_incident'
end
raise IllegalRequest.new 'Target package must not be specified in maintenance_incident actions' if self.target_package
super(ignore_build_state)
end

Expand Down

0 comments on commit 92f1c72

Please sign in to comment.