1
2
3
4
5
6
7
8
9
10
11
12
13
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
26
28
29 self.checksum_type = None
30 self.checksum = None
31
32
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
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
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
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
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