예제 #1
0
def save_uploaded_package(stream,
                          nevra,
                          org_id,
                          packaging,
                          checksum_type=None,
                          checksum=None):
    a_pkg = rhn_pkg.package_from_stream(stream, packaging=packaging)
    a_pkg.read_header()

    temp_dir = os.path.join(CFG.MOUNT_POINT, CFG.PREPENDED_DIR, org_id,
                            'stage')
    if not os.path.isdir(temp_dir):
        os.makedirs(temp_dir)
    temp_stream = tempfile.NamedTemporaryFile(dir=temp_dir,
                                              prefix='-'.join(
                                                  (nevra[0], nevra[2],
                                                   nevra[3], nevra[4])))
    a_pkg.save_payload(temp_stream)

    if checksum_type and checksum:
        # verify checksum
        if not (checksum_type == a_pkg.checksum_type
                and checksum == a_pkg.checksum):
            log_debug(
                1, "Mismatching checksums: expected %s:%s got %s:%s" %
                (checksum_type, checksum, a_pkg.checksum_type, a_pkg.checksum))
            raise rhnFault(104, "Mismatching information")

    temp_stream.file.close()
    temp_stream.close_called = True
    return a_pkg
예제 #2
0
 def load_checksum_from_header(self):
     if self.path is None:
         raise rhnFault(50, "Unable to load package", explain=0)
     self.file = open(self.path, 'rb')
     self.a_pkg = rhn_pkg.package_from_stream(self.file, packaging='rpm')
     self.a_pkg.read_header()
     self.a_pkg.payload_checksum()
     self.file.close()
예제 #3
0
 def load_checksum_from_header(self):
     if self.path is None:
         raise rhnFault(50, "Unable to load package", explain=0)
     self.file = open(self.path, 'rb')
     self.a_pkg = rhn_pkg.package_from_stream(self.file, packaging='rpm')
     self.a_pkg.read_header()
     self.a_pkg.payload_checksum()
     self.file.close()
예제 #4
0
def save_uploaded_package(stream, nevra, org_id, packaging, checksum_type=None, checksum=None):
    a_pkg = rhn_pkg.package_from_stream(stream, packaging=packaging)
    a_pkg.read_header()

    temp_dir = os.path.join(CFG.MOUNT_POINT, CFG.PREPENDED_DIR, org_id, "stage")
    if not os.path.isdir(temp_dir):
        os.makedirs(temp_dir)
    temp_stream = tempfile.NamedTemporaryFile(dir=temp_dir, prefix="-".join((nevra[0], nevra[2], nevra[3], nevra[4])))
    a_pkg.save_payload(temp_stream)

    if checksum_type and checksum:
        # verify checksum
        if not (checksum_type == a_pkg.checksum_type and checksum == a_pkg.checksum):
            log_debug(
                1,
                "Mismatching checksums: expected %s:%s got %s:%s"
                % (checksum_type, checksum, a_pkg.checksum_type, a_pkg.checksum),
            )
            raise rhnFault(104, "Mismatching information")

    temp_stream.file.close()
    temp_stream.close_called = True
    return a_pkg