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)
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