Trees | Indices | Help |
---|
|
1 # 2 # Abstraction for an XML importer with a disk base 3 # 4 # Copyright (c) 2008--2018 Red Hat, Inc. 5 # 6 # This software is licensed to you under the GNU General Public License, 7 # version 2 (GPLv2). There is NO WARRANTY for this software, express or 8 # implied, including the implied warranties of MERCHANTABILITY or FITNESS 9 # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 10 # along with this software; if not, see 11 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 12 # 13 # Red Hat trademarks are not licensed under GPLv2. No permission is 14 # granted to use or replicate Red Hat trademarks that are incorporated 15 # in this software or its documentation. 16 # 17 18 import os 19 import gzip 20 from spacewalk.common.fileutils import createPath 21 from spacewalk.common.rhnLib import hash_object_id 26 3033 subdir = None 34 # Allow for compressed files by default 35 allow_compressed_files = 1 36 39 40 # Returns a data stream 45 507452 # Look for a gzip file first 53 if self.allow_compressed_files: 54 if filename[-3:] == '.gz' and os.path.exists(filename): 55 return gzip.open(filename, "rb") 56 57 if os.path.exists(filename + '.gz'): 58 return gzip.open(filename + ".gz", "rb") 59 60 if os.path.exists(filename): 61 return open(filename, "r") 62 63 raise MissingXmlDiskSourceFileError("unable to process file %s" % filename)6466 dirname = "%s/%s" % (self.mountPoint, self.subdir) 67 if not create: 68 return dirname 69 if not os.path.exists(dirname): 70 createPath(dirname) 71 if not os.path.isdir(dirname): 72 raise MissingXmlDiskSourceDirError("%s is not a directory" % dirname) 73 return dirname77 subdir = 'arches' 78 filename = 'arches.xml' 798581 dirname = self._getDir(create) 82 if create and not os.path.isdir(dirname): 83 createPath(dirname) 84 return os.path.join(dirname, self.filename)88 filename = "arches-extra.xml"8992 subdir = 'product_names' 939995 dirname = self._getDir(create) 96 if create and not os.path.isdir(dirname): 97 createPath(dirname) 98 return "%s/product_names.xml" % dirname102 subdir = 'channel_families' 103109105 dirname = self._getDir(create) 106 if create and not os.path.isdir(dirname): 107 createPath(dirname) 108 return "%s/channel_families.xml" % dirname112 subdir = 'orgs' 113119115 dirname = self._getDir(create) 116 if create and not os.path.isdir(dirname): 117 createPath(dirname) 118 return "%s/orgs.xml" % dirname122 subdir = 'channels' 123 127 130148 155 162132 # Lists the available channels 133 dirname = self._getDir(create=0) 134 if not os.path.isdir(dirname): 135 # No channels available 136 return [] 137 return os.listdir(dirname)138140 dirname = "%s/%s" % (self._getDir(create), self.channel) 141 if create and not os.path.isdir(dirname): 142 createPath(dirname) 143 return os.path.join(dirname, self._file_name())144 145 @staticmethod165 subdir = "packages_short" 166198168 DiskSource.__init__(self, mountPoint) 169 # Package ID 170 self.id = None 171 self._file_suffix = ".xml"172 175 176 # limited dict behaviour178 # Save the old id 179 old_id = self.id 180 self.id = pid 181 f = self._getFile() 182 # Restore the old id 183 self.id = old_id 184 if os.path.exists(f + '.gz') or os.path.exists(f): 185 return 1 186 return 0187189 dirname = "%s/%s" % (self._getDir(create), self._hashID()) 190 # Create the directoru if we have to 191 if create and not os.path.exists(dirname): 192 createPath(dirname) 193 return "%s/%s%s" % (dirname, self.id, self._file_suffix)194201 subdir = "packages"202205 subdir = "source_packages"206 214217 subdir = "blacklists" 218224 232220 dirname = self._getDir(create) 221 if create and not os.path.isdir(dirname): 222 createPath(dirname) 223 return "%s/blacklists.xml" % dirname235 subdir = "srpms"236239 subdir = "kickstart_trees" 240 244 247253249 dirname = self._getDir(create) 250 if create and not os.path.isdir(dirname): 251 createPath(dirname) 252 return os.path.join(dirname, self.id) + '.xml'256 subdir = "kickstart_files" 257 allow_compressed_files = 0 258274260 KickstartDataDiskSource.__init__(self, mountPoint) 261 # the file's relative path 262 self.relative_path = None263 266268 path = os.path.join(self._getDir(create), self.id, 269 self.relative_path) 270 dirname = os.path.dirname(path) 271 if create and not os.path.isdir(dirname): 272 createPath(dirname) 273 return path277 280 281 @staticmethod 284 287 290 293 296 299333 334 if __name__ == '__main__': 335 # TEST CODE 336 s = ChannelDiskSource("/tmp") 337 print(s.list()) 338 s.setChannel("redhat-linux-i386-7.2") 339 print(s.load()) 340301 sourcer = ChannelCompsDiskSource(self.mountpoint) 302 sourcer.setChannel(label) 303 return sourcer.load()304306 sourcer = ChannelModulesDiskSource(self.mountpoint) 307 sourcer.setChannel(label) 308 return sourcer.load()309311 sourcer = ChannelDiskSource(self.mountpoint) 312 channels = sourcer.list() 313 stream_list = [] 314 for c in channels: 315 sourcer.setChannel(c) 316 stream_list.append(sourcer.load()) 317 return stream_list318320 return ShortPackageDiskSource(self.mountpoint)321323 return PackageDiskSource(self.mountpoint)324326 return SourcePackageDiskSource(self.mountpoint)327329 return KickstartDataDiskSource(self.mountpoint)330332 return ErrataDiskSource(self.mountpoint)
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Wed Mar 4 07:37:49 2020 | http://epydoc.sourceforge.net |