Beispiel #1
0
    def _download_callback(self, blocknum, blocksize, filesize, filename, 
        TYPE=1):
        #if size == -1: don't use size in calculation.

        #We don't provide status for .asc,.md5 files
        if filename[-3:] in ['asc','md5']: return 

        if blocknum == 0:
            self._bytes_read = 0
            self._time_used = 0
            self._time = time.time()

        self._bytes_read = self._bytes_read + blocksize

        if filesize not in [-1,0]:
            if self._bytes_read > filesize:
                percent = 100
                self._bytes_read = filesize
            else:
                tmptime = time.time()
                self._time_used = self._time_used + (tmptime - self._time)
                self._time = tmptime
                percent = self._bytes_read / float(filesize) * 100
            if not self._time_used <= 0:
                (speed, speed_prefix) = utils._byte_convert( self._bytes_read/
                                                      float(self._time_used))
            else:
                speed, speed_prefix = 0, 'k'
            
            (size, size_prefix) = utils._byte_convert( filesize )
            (read, read_prefix) = utils._byte_convert( self._bytes_read )
            message = "\rDownloading "\
                      "%-24s (%-7s%-1sB of %-7s%-1sB, %-3d%%, %-7s%-1sB/s)"%\
                      (self._now_downloading[:21]+"...", read, read_prefix,
                       size, size_prefix, percent, speed, speed_prefix)
            progress = "Downloading %s %s %s %s" \
                %(self._now_downloading, self.config['prog_total'], \
                self._bytes_read, filesize)
        else:
            (read, read_prefix) = utils._byte_convert( self._bytes_read )
            message = "\rDownloading %-56s (%-7s%-1sB)" %\
                      (self._now_downloading[:27], read, read_prefix)
            progress = "Downloading %s %s %s" \
                %(self._now_downloading, self.config['prog_total'], \
                self._bytes_read)
        
        if self.log:
            self.log.write_tty(message)
            if TYPE == 1 and self._now_downloading[-3:] == 'rpm':
                self.log.write_progress(progress)
Beispiel #2
0
    def _install_callback(self, what, bytes, total, h, user):
        if what == rpm.RPMCALLBACK_INST_OPEN_FILE:
            name = h[rpm.RPMTAG_NAME]
            filename = self.filenames[name]
            mode = self.modes[name]
            shortname = os.path.basename(filename)
            progress = "Installing %s %s %s %s" %(shortname, 
                self.config['prog_total'], bytes, total)
            self.log.write_progress(progress)

            tty_mode = TTY_MODETEXT[mode]
            self.log.write_tty( "\r"+ " "*80 )
            message = "\r%s %s - " % (tty_mode, name)
            self.log.write_tty( message )
            self.fd = os.open(filename, os.O_RDONLY)
            return self.fd

        elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE:
            name = h[rpm.RPMTAG_NAME]
            mode = self.modes[name]
            self.log.write_tty( "\r"+ " "*80 )
            tty_mode = TTY_MODETEXT[mode]
            message = "\r%s %s - done\n" % \
                      (tty_mode, name)
            self.log.write_tty( message )

            log_mode =  LOG_MODETEXT[mode]
            message = "%s %s." % (log_mode, name)
            self.log.write_syslog_info( message )

            if not self.log.isatty_stdout:
                self.log.write_stdout( message )
                
            os.close(self.fd)
            self.fd = 0
        elif self.cb_count >= self.cb_limit:
            self.cb_count = 0
            try:
                name = h[rpm.RPMTAG_NAME]
                filename = self.filenames[name]
                mode = self.modes[name]
                tty_mode = TTY_MODETEXT[mode]
                self.log.write_tty( "\r"+ " "*80 )
                shortname = os.path.basename(filename)
                progress = "Installing %s %s %s %s" %(shortname, 
                        self.config['prog_total'], bytes, total)
                self.log.write_progress(progress)
                percent = bytes/float(total) * 100 
                intro = "%s %s" %(tty_mode, name)
                if percent < 100:
                    (read, read_prefix) = utils._byte_convert(bytes)
                    (total_read, total_read_prefix) = utils._byte_convert(total)
                    message="\r%-49s (%-7s%-1sB of %-7s%-1sB, %-3d%%)"  \
                        %(intro[:49], read, read_prefix, total_read, 
                            total_read_prefix, percent)
                else:
                    message = "\r%s Running scripts:" %intro 
                self.log.write_tty( message )
            except:
                pass
        else:
            self.cb_count += 1