Package backend :: Package satellite_tools :: Package repo_plugins
[hide private]
[frames] | no frames]

Source Code for Package backend.satellite_tools.repo_plugins

  1  # 
  2  # Copyright (c) 2008--2017 Red Hat, Inc. 
  3  # 
  4  # This software is licensed to you under the GNU General Public License, 
  5  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
  6  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
  7  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
  8  # along with this software; if not, see 
  9  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
 10  # 
 11  # Red Hat trademarks are not licensed under GPLv2. No permission is 
 12  # granted to use or replicate Red Hat trademarks that are incorporated 
 13  # in this software or its documentation. 
 14  # 
 15   
 16  import re 
 17  import rpm 
 18  from spacewalk.common import rhn_pkg 
 19  from spacewalk.common.rhnException import rhnFault 
 20  from spacewalk.server import rhnPackageUpload 
 21   
 22  CACHE_DIR = '/var/cache/rhn/reposync/' 
 23   
 24   
25 -class ContentPackage:
26
27 - def __init__(self):
28 # map of checksums 29 self.checksum_type = None 30 self.checksum = None 31 32 # unique ID that can be used by plugin 33 self.unique_id = None 34 35 self.name = None 36 self.version = None 37 self.release = None 38 self.epoch = None 39 self.arch = None 40 41 self.path = None 42 43 self.a_pkg = None
44
45 - def __cmp__(self, other):
46 ret = cmp(self.name, other.name) 47 if ret == 0: 48 rel_self = str(self.release).split('.')[0] 49 rel_other = str(other.release).split('.')[0] 50 # pylint: disable=E1101 51 ret = rpm.labelCompare((str(self.epoch), str(self.version), rel_self), 52 (str(other.epoch), str(other.version), rel_other)) 53 if ret == 0: 54 ret = cmp(self.arch, other.arch) 55 return ret
56
57 - def getNRA(self):
58 rel = re.match(".*?\\.(.*)",self.release) 59 rel = rel.group(1) 60 nra = str(self.name) + str(rel) + str(self.arch) 61 return nra
62
63 - def setNVREA(self, name, version, release, epoch, arch):
64 self.name = name 65 self.version = version 66 self.release = release 67 self.arch = arch 68 self.epoch = epoch
69
70 - def getNVREA(self):
71 if self.epoch: 72 return self.name + '-' + self.version + '-' + self.release + '-' + self.epoch + '.' + self.arch 73 else: 74 return self.name + '-' + self.version + '-' + self.release + '.' + self.arch
75
76 - def getNEVRA(self):
77 if self.epoch is None: 78 self.epoch = '0' 79 return self.name + '-' + self.epoch + ':' + self.version + '-' + self.release + '.' + self.arch
80
82 if self.path is None: 83 raise rhnFault(50, "Unable to load package", explain=0) 84 self.a_pkg = rhn_pkg.package_from_filename(self.path) 85 self.a_pkg.read_header() 86 self.a_pkg.payload_checksum() 87 self.a_pkg.input_stream.close()
88
89 - def upload_package(self, org_id, metadata_only=False):
90 if not metadata_only: 91 rel_package_path = rhnPackageUpload.relative_path_from_header( 92 self.a_pkg.header, org_id, self.a_pkg.checksum_type, self.a_pkg.checksum) 93 else: 94 rel_package_path = None 95 _unused = rhnPackageUpload.push_package(self.a_pkg, 96 force=False, 97 relative_path=rel_package_path, 98 org_id=org_id) 99 return rel_package_path
100