Skip to content

Commit

Permalink
Merge branch 'master' of ssh://git.fedorahosted.org/git/katello
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasmckay committed Jan 6, 2012
2 parents 741f0b9 + 018e4ec commit f9175eb
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 17 deletions.
2 changes: 1 addition & 1 deletion rel-eng/packages/katello
@@ -1 +1 @@
0.1.168-1 src/
0.1.169-1 src/
11 changes: 5 additions & 6 deletions src/app/controllers/api/changesets_controller.rb
Expand Up @@ -12,7 +12,7 @@

class Api::ChangesetsController < Api::ApiController

before_filter :find_changeset, :only => [:show, :destroy, :promote]
before_filter :find_changeset, :only => [:show, :destroy, :promote, :dependencies]
before_filter :find_environment
before_filter :authorize

Expand All @@ -23,6 +23,7 @@ def rules
{
:index => read_perm,
:show => read_perm,
:dependencies => read_perm,
:create => manage_perm,
:promote => promote_perm,
:destroy =>manage_perm,
Expand All @@ -35,11 +36,13 @@ def index
render :json => Changeset.select("changesets.*, environments.name AS environment_name").joins(:environment).where(params.slice(:name, :environment_id))
end


def show
render :json => @changeset.to_json(:include => [:products, :packages, :errata, :repos, :system_templates, :distributions])
end

def dependencies
render :json => @changeset.calc_dependencies.to_json
end

def create
@changeset = Changeset.new(params[:changeset])
Expand Down Expand Up @@ -75,10 +78,6 @@ def find_environment
@environment = KTEnvironment.find(params[:environment_id])
raise HttpErrors::NotFound, _("Couldn't find environment '#{params[:environment_id]}'") if @environment.nil?
@environment
else
#didnt' find an environment, just do the first the user has access to
list = KTEnvironment.changesets_readable(current_organization).where(:locker=>false)
@environment ||= list.first || current_organization.locker
end
end

Expand Down
36 changes: 28 additions & 8 deletions src/app/models/changeset.rb
Expand Up @@ -517,23 +517,43 @@ def calc_dependencies_for_product product
package_names = packages_for_dep_calc(product).map{ |p| p.name }.uniq
return {} if package_names.empty?

from_repos = not_included_repos(product, from_env).map{ |r| r.pulp_id }
from_repos = not_included_repos(product, from_env)
to_repos = product.repos(to_env)

dependencies = Pulp::Package.dep_solve(package_names, from_repos)
dependencies = calc_dependencies_for_packages package_names, from_repos, to_repos
dependencies
end

def calc_dependencies_for_packages package_names, from_repos, to_repos
from_repos_names = from_repos.map{ |r| r.pulp_id }

@next_env_pkg_ids ||= package_ids(to_repos)
dependencies = []

resolved_deps = Pulp::Package.dep_solve(package_names, from_repos_names)['resolved']
resolved_deps = resolved_deps.values.flatten(1)

dependencies = resolved_deps.reject {|dep| not @next_env_pkg_ids.index(dep['id']).nil? }
dependencies
end

def package_ids repos
pkg_ids = []
repos.each do |repo|
pkg_ids += repo.packages.collect { |pkg| pkg.id }
end
pkg_ids
end

def build_dependencies product, dependencies
new_dependencies = []

dependencies.each_pair do |package_name, dep_packages|
dep_packages.each do |dep_package|
new_dependencies << ChangesetDependency.new(:package_id => dep_package['id'],
:display_name => dep_package['name'],
dependencies.each do |dep|
new_dependencies << ChangesetDependency.new(:package_id => dep['id'],
:display_name => dep['filename'],
:product_id => product.id,
:dependency_of => package_name,
:dependency_of => '???',
:changeset => self)
end
end
new_dependencies
end
Expand Down
1 change: 1 addition & 0 deletions src/config/routes.rb
Expand Up @@ -408,6 +408,7 @@ def matches?(request)

resources :changesets, :only => [:show, :destroy] do
post :promote, :on => :member, :action => :promote
get :dependencies, :on => :member, :action => :dependencies
resources :products, :controller => :changesets_content do
post :index, :on => :collection, :action => :add_product
delete :destroy, :on => :member, :action => :remove_product
Expand Down
2 changes: 1 addition & 1 deletion src/katello.spec
Expand Up @@ -16,7 +16,7 @@
%global confdir deploy/common

Name: katello
Version: 0.1.168
Version: 0.1.169
Release: 1%{?dist}
Summary: A package for managing application life-cycle for Linux systems
BuildArch: noarch
Expand Down
2 changes: 1 addition & 1 deletion src/lib/resources/pulp.rb
Expand Up @@ -107,7 +107,7 @@ def package_path
def dep_solve pkgnames, repoids
path = "/pulp/api/services/dependencies/"
response = post(path, JSON.generate({:pkgnames=>pkgnames, :repoids=>repoids}), self.default_headers)
JSON.parse(response)["resolved"]
JSON.parse(response)
end


Expand Down

0 comments on commit f9175eb

Please sign in to comment.