Skip to content

Commit

Permalink
templates - adding packages by nvre
Browse files Browse the repository at this point in the history
  • Loading branch information
Tomas Strachota committed Sep 27, 2011
1 parent c42e305 commit 22d0a67
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 8 deletions.
10 changes: 8 additions & 2 deletions src/app/models/system_template.rb
Expand Up @@ -10,6 +10,8 @@
# have received a copy of GPLv2 along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.

require 'util/package_util'

class ParentTemplateValidator < ActiveModel::Validator
def validate(record)
#check if the parent is from
Expand Down Expand Up @@ -113,8 +115,12 @@ def string_export


def add_package package_name
package = SystemTemplatePackage.new(:package_name => package_name)
self.packages << package
if Katello::PackageUtils.is_nvr package_name
pack_attrs = Katello::PackageUtils.parse_nvre package_name
self.packages.create!(:package_name => pack_attrs[:name], :version => pack_attrs[:version], :release => pack_attrs[:release], :epoch => pack_attrs[:epoch])
else
self.packages.create!(:package_name => package_name)
end
end


Expand Down
13 changes: 13 additions & 0 deletions src/app/models/system_template_package.rb
Expand Up @@ -38,5 +38,18 @@ def to_package
nil
end

def is_nvr?
(not self.package_name.nil? and self.version.nil? and self.release.nil?)
end

def nvrea
if self.is_nvr?
attrs = self.attributes
attrs[:name] = attrs[:package_name]
Katello::PackageUtils.build_nvrea self.attributes
else
nil
end
end

end
Expand Up @@ -3,6 +3,10 @@ def self.up
create_table :system_template_packages do |t|
t.integer :system_template_id, :null => false
t.string :package_name, :null => false
t.string :version, :null => true
t.string :release, :null => true
t.string :epoch, :null => true
t.string :arch, :null => true
end
end

Expand Down
30 changes: 24 additions & 6 deletions src/lib/util/package_util.rb
Expand Up @@ -13,24 +13,29 @@
module Katello
module PackageUtils

SUFFIX_RE = /[.](rpm)$/
EPOCH_RE = /([0-9]+):/
NVRA_RE = /^([^-]+)-([^-]+)-(.+)[.]([^.]+)$/
NVR_RE = /^([^-]+)-([^-]+)-(.+)$/

def PackageUtils.parse_nvrea name
#parses package nvrea and stores it in a hash
#epoch:name-ve.rs.ion-rel.e.ase.arch.rpm
package = {}

suffix_re = /[.](rpm)$/
suffix_re = SUFFIX_RE
if name =~ suffix_re
package[:suffix] = suffix_re.match(name).captures[0]
name = name.sub(suffix_re, '')
end

epoch_re = /([0-9]+):/
epoch_re = EPOCH_RE
if name =~ epoch_re
package[:epoch] = epoch_re.match(name).captures[0]
name = name.sub(epoch_re, '')
end

nvra_re = /^([^-]+)-([^-]+)-(.+)[.]([^.]+)$/
nvra_re = NVRA_RE
if name =~ nvra_re
parts = nvra_re.match(name).captures
package[:name] = parts[0]
Expand All @@ -47,19 +52,19 @@ def PackageUtils.parse_nvre name
#epoch:name-ve.rs.ion-rel.e.ase.arch.rpm
package = {}

suffix_re = /[.](rpm)$/
suffix_re = SUFFIX_RE
if name =~ suffix_re
package[:suffix] = suffix_re.match(name).captures[0]
name = name.sub(suffix_re, '')
end

epoch_re = /([0-9]+):/
epoch_re = EPOCH_RE
if name =~ epoch_re
package[:epoch] = epoch_re.match(name).captures[0]
name = name.sub(epoch_re, '')
end

nvra_re = /^([^-]+)-([^-]+)-(.+)$/
nvra_re = NVR_RE
if name =~ nvra_re
parts = nvra_re.match(name).captures
package[:name] = parts[0]
Expand All @@ -77,5 +82,18 @@ def PackageUtils.build_nvrea package
nvrea = package[:epoch] +':'+ nvrea if not package[:epoch].nil?
nvrea
end


def PackageUtils.is_nvr name
name = name.sub(SUFFIX_RE, "")
name =~ NVR_RE
end


def PackageUtils.is_nvre name
name = name.sub(SUFFIX_RE, "")
name =~ NVR_RE and name =~ EPOCH_RE
end

end
end

0 comments on commit 22d0a67

Please sign in to comment.