From: Jan Provaznik <[email protected]>

This patch removes saving group in XML for packages - this info is not used by
builder and is no longer needed in UI with new selection model. Removing group
also fixes error in adding software - when a group was selected and a
package from the group was selected too, package was added twice into XML.
---
 src/app/controllers/templates_controller.rb     |   14 +---
 src/app/models/template.rb                      |    2 -
 src/app/util/image_descriptor_xml.rb            |  108 +++--------------------
 src/app/views/templates/_selected_packages.haml |   12 ---
 4 files changed, 13 insertions(+), 123 deletions(-)
 delete mode 100644 src/app/views/templates/_selected_packages.haml

diff --git a/src/app/controllers/templates_controller.rb 
b/src/app/controllers/templates_controller.rb
index 97a8cec..0e69647 100644
--- a/src/app/controllers/templates_controller.rb
+++ b/src/app/controllers/templates_controller.rb
@@ -45,16 +45,6 @@ class TemplatesController < ApplicationController
     @groups = @repository_manager.all_groups(params[:repository])
   end
 
-  #def select_package
-  #  update_group_or_package(:add_package, params[:package], params[:group])
-  #  render :action => 'new'
-  #end
-
-  #def remove_package
-  #  update_group_or_package(:remove_package, params[:package], params[:group])
-  #  render :action => 'new'
-  #end
-
   def create
     if params[:cancel]
       redirect_to :action => 'index'
@@ -73,7 +63,7 @@ class TemplatesController < ApplicationController
     # again
     params.keys.each do |param|
       if param =~ /^remove_package_(.*)$/
-        update_group_or_package(:remove_package, $1, nil)
+        update_group_or_package(:remove_package, $1)
         render :action => 'new'
         return
       end
@@ -103,7 +93,7 @@ class TemplatesController < ApplicationController
     @groups = @repository_manager.all_groups(params[:repository])
     if params[:add_selected]
       params[:groups].to_a.each { |group| @tpl.xml.add_group(group) }
-      params[:packages].to_a.each { |pkg| @tpl.xml.add_package(pkg, nil) }
+      params[:packages].to_a.each { |pkg| @tpl.xml.add_package(pkg) }
       @tpl.save_xml!
     end
     if params[:ajax]
diff --git a/src/app/models/template.rb b/src/app/models/template.rb
index dec7b4b..e592fff 100644
--- a/src/app/models/template.rb
+++ b/src/app/models/template.rb
@@ -24,8 +24,6 @@ class Template < ActiveRecord::Base
     doc.description = opts[:summary] if opts[:summary]
     doc.platform_version = opts[:platform_version] if opts[:platform_version]
     doc.architecture = opts[:architecture] if opts[:architecture]
-    doc.services = (opts[:services] || []) if opts[:services] or 
opts[:set_services]
-    doc.packages = (opts[:packages] || []) if opts[:packages] or 
opts[:set_packages]
     save_xml!
   end
 
diff --git a/src/app/util/image_descriptor_xml.rb 
b/src/app/util/image_descriptor_xml.rb
index 00f8bb2..e8fe552 100644
--- a/src/app/util/image_descriptor_xml.rb
+++ b/src/app/util/image_descriptor_xml.rb
@@ -24,14 +24,6 @@ class ImageDescriptorXML
 
   UNKNOWN_GROUP = 'Individual packages'
 
-  # FIXME: temporary way to only add jboss until other
-  # services are supported
-  SERVICE_PACKAGE_GROUPS = {
-    # FIXME: jboss service is disabled because we don't have public repo
-    # which contains groups for jboss
-    #'jboss' => 'JBoss Core Packages'
-  }
-
   def initialize(xmlstr = "")
     @doc = Nokogiri::XML(xmlstr)
     # create at least root node if it doesn't exist
@@ -98,9 +90,6 @@ class ImageDescriptorXML
       snode = Nokogiri::XML::Node.new('service', @doc)
       service_node << snode
       snode.content = s[0]
-      if group = SERVICE_PACKAGE_GROUPS[s[0]]
-        add_group(group)
-      end
     end
     @services = nil
   end
@@ -119,67 +108,18 @@ class ImageDescriptorXML
     return @doc.to_xml
   end
 
-  def packages_by_group
-    groups = {}
-    @root.xpath('/image/groups/group').each do |g|
-      groups[g.text] = []
-    end
-    @root.xpath('/image/packages/package').each do |s|
-      name = s.at_xpath('.//group').text
-      group = (groups[name] || groups[UNKNOWN_GROUP] ||= [])
-      group << {:name => s.at_xpath('.//name').text}
-    end
-    return groups
-  end
-
-  def all_packages_by_group
-    groups = {}
-    all_groups = repository_manager.all_groups
-    packages_by_group.each do |group, pkgs|
-      if group_all = all_groups[group]
-        groups[group] ||= []
-        group_all[:packages].keys.sort.each do |pkg|
-          groups[group] << {:name => pkg, :checked => pkgs.find {|p| p[:name] 
== pkg} ? true : false}
-        end
-      else
-        groups[UNKNOWN_GROUP] ||= []
-        groups[UNKNOWN_GROUP] += pkgs.map {|pkg| {:name => pkg[:name], 
:checked => true}}
-      end
-    end
-
-    unknown_group = groups.delete(UNKNOWN_GROUP)
-    sorted = groups.keys.sort.map do |group|
-      {:name => group, :pkgs => groups[group]}
-    end
-    if unknown_group
-      sorted << {:name => UNKNOWN_GROUP, :pkgs => unknown_group}
-    end
-
-    return sorted
-  end
-
   def packages
     packages = []
     @root.xpath('/image/packages/package').each do |s|
-      packages << {:name => s.at_xpath('.//name').text, :group => 
s.at_xpath('.//group').text}
+      packages << {:name => s.at_xpath('.//name').text}
     end
     return packages
   end
 
-  def packages=(packages)
+  def add_package(pkg)
     pkgs_node = get_or_create_node('packages')
-    pkgs_node.xpath('.//package').remove
-    packages.uniq.each do |pkg|
-      group, name = pkg.split(/#/, 2)
-      add_package_node(pkgs_node, name, group)
-    end
-  end
-
-  def add_package(pkg, group)
-    group ||= UNKNOWN_GROUP
-    pkgs_node = get_or_create_node('packages')
-    unless older = packages.find {|p| p[:name] == pkg and p[:group] == group}
-      add_package_node(pkgs_node, pkg, group)
+    unless older = packages.find {|p| p[:name] == pkg}
+      add_package_node(pkgs_node, pkg)
     end
   end
 
@@ -187,40 +127,17 @@ class ImageDescriptorXML
     unless group = repository_manager.all_groups[gname]
       raise "group #{gname} not found in repositories"
     end
-    groups = packages_by_group
-    unless groups[gname]
-      groups_node = get_or_create_node('groups')
-      add_group_node(groups_node, gname)
-    end
     group[:packages].each do |p, info|
       next if info[:type] == 'optional'
-      add_package(p, group[:name])
+      add_package(p)
     end
   end
 
-  def remove_group(group)
-    groups = packages_by_group
-    groups.delete(group)
-    pkgs_node = get_or_create_node('packages')
-    pkgs_node.xpath('.//package').remove
-    groups_node = get_or_create_node('groups')
-    groups_node.xpath('.//group').remove
-    groups.each do |group, pkgs|
-      pkgs.each { |pkg| add_package_node(pkgs_node, pkg[:name], group) }
-      add_group_node(groups_node, group)
-    end
-  end
-
-  # FIXME: rewrite cleanly w/o recreating all nodes
-  def remove_package(package, grp = nil)
-    groups = packages_by_group
-    pkgs_node = get_or_create_node('packages')
-    pkgs_node.xpath('.//package').remove
-    groups_node = get_or_create_node('groups')
-    groups_node.xpath('.//group').remove
-    groups.each do |group, pkgs|
-      pkgs.select { |pkg| pkg[:name] != package }.each { |pkg| 
add_package_node(pkgs_node, pkg[:name], group) }
-      add_group_node(groups_node, group)
+  def remove_package(package)
+    @root.xpath('/image/packages/package').each do |s|
+      if name = s.at_xpath('.//name') and name.text.to_s == package
+        s.remove
+      end
     end
   end
 
@@ -254,14 +171,11 @@ class ImageDescriptorXML
     return node ? node.text : nil
   end
 
-  def add_package_node(parent, name, group)
+  def add_package_node(parent, name)
     pnode = get_or_create_node('package', parent)
     n = Nokogiri::XML::Node.new('name', @doc)
     n.content = name
     pnode << n
-    n = Nokogiri::XML::Node.new('group', @doc)
-    n.content = group
-    pnode << n
   end
 
   def repository_manager
diff --git a/src/app/views/templates/_selected_packages.haml 
b/src/app/views/templates/_selected_packages.haml
deleted file mode 100644
index b0f8efe..0000000
--- a/src/app/views/templates/_selected_packages.haml
+++ /dev/null
@@ -1,12 +0,0 @@
-%ul{:id => "selected_packages", :class => "selection_list"}
-  - @image_descriptor.xml.all_packages_by_group.each do |group|
-    %li{:class => 'group'}
-      %span{:class => "groupname"}
-        = group[:name]
-      %a{:class => 'remove_group action_link', :href => url_for(:action => 
'remove_group', :id => @image_descriptor, :group => group[:name])}
-        Remove
-      %ul{:class => 'groupkgs'}
-        - group[:pkgs].each do |pkg|
-          %li{:class => 'pkgname'}
-            %input{:type => 'checkbox', :name => 'xml[packages][]', :value => 
group[:name] + '#' + pkg[:name], :checked => pkg[:checked]}
-            = pkg[:name]
-- 
1.7.2.3

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to