from mic import kickstart
from mic import msger
from mic.utils.errors import CreatorError, Abort
-from mic.utils import misc, rpmmisc, runner, fs_related as fs
+from mic.utils import misc, grabber, runner, fs_related as fs
class BaseImageCreator(object):
"""Installs a system to a chroot directory.
if not os.path.exists(fpath):
# download pkgs
try:
- fpath = rpmmisc.myurlgrab(url, fpath, proxies, None)
+ fpath = grabber.myurlgrab(url, fpath, proxies, None)
except CreatorError:
raise
--- /dev/null
+#!/usr/bin/python
+
+import os
+import sys
+import rpm
+import fcntl
+import struct
+import termios
+
+from mic import msger
+from mic.utils import runner
+from mic.utils.errors import CreatorError
+
+from urlgrabber import grabber
+from urlgrabber import __version__ as grabber_version
+
+if rpm.labelCompare(grabber_version.split('.'), '3.9.0'.split('.')) == -1:
+ msger.warning("Version of python-urlgrabber is %s, lower than '3.9.0', "
+ "you may encounter some network issues" % grabber_version)
+
+def myurlgrab(url, filename, proxies, progress_obj = None):
+ g = grabber.URLGrabber()
+ if progress_obj is None:
+ progress_obj = TextProgress()
+
+ if url.startswith("file:/"):
+ filepath = "/%s" % url.replace("file:", "").lstrip('/')
+ if not os.path.exists(filepath):
+ raise CreatorError("URLGrabber error: can't find file %s" % url)
+ if url.endswith('.rpm'):
+ return filepath
+ else:
+ # untouch repometadata in source path
+ runner.show(['cp', '-f', filepath, filename])
+
+ else:
+ try:
+ filename = g.urlgrab(url = url, filename = filename,
+ ssl_verify_host = False, ssl_verify_peer = False,
+ proxies = proxies, http_headers = (('Pragma', 'no-cache'),),
+ quote = 0, progress_obj = progress_obj)
+ except grabber.URLGrabError, e:
+ raise CreatorError("URLGrabber error: %s" % url)
+
+ return filename
+
+def terminal_width(fd=1):
+ """ Get the real terminal width """
+ try:
+ buf = 'abcdefgh'
+ buf = fcntl.ioctl(fd, termios.TIOCGWINSZ, buf)
+ return struct.unpack('hhhh', buf)[1]
+ except: # IOError
+ return 80
+
+def truncate_url(url, width):
+ return os.path.basename(url)[0:width]
+
+class TextProgress(object):
+ # make the class as singleton
+ _instance = None
+ def __new__(cls, *args, **kwargs):
+ if not cls._instance:
+ cls._instance = super(TextProgress, cls).__new__(cls, *args, **kwargs)
+
+ return cls._instance
+
+ def __init__(self, totalnum = None):
+ self.total = totalnum
+ self.counter = 1
+
+ def start(self, filename, url, *args, **kwargs):
+ self.url = url
+ self.termwidth = terminal_width()
+ msger.info("\r%-*s" % (self.termwidth, " "))
+ if self.total is None:
+ msger.info("\rRetrieving %s ..." % truncate_url(self.url, self.termwidth - 15))
+ else:
+ msger.info("\rRetrieving %s [%d/%d] ..." % (truncate_url(self.url, self.termwidth - 25), self.counter, self.total))
+
+ def update(self, *args):
+ pass
+
+ def end(self, *args):
+ if self.counter == self.total:
+ msger.raw("\n")
+
+ if self.total is not None:
+ self.counter += 1
+
from errors import *
from fs_related import *
-from rpmmisc import myurlgrab
+from grabber import myurlgrab
from proxy import get_proxy_for
import runner
# with this program; if not, write to the Free Software Foundation, Inc., 59
# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-import os, sys, re
-import fcntl
-import struct
-import termios
+import os
+import sys
+import re
import rpm
from mic import msger
from .errors import CreatorError
from .proxy import get_proxy_for
import runner
-from urlgrabber import grabber, __version__ as grabber_version
-if rpm.labelCompare(grabber_version.split('.'), '3.9.0'.split('.')) == -1:
- msger.warning("Version of python-urlgrabber is %s, lower than '3.9.0', "
- "you may encounter some network issues" % grabber_version)
-
-def myurlgrab(url, filename, proxies, progress_obj = None):
- g = grabber.URLGrabber()
- if progress_obj is None:
- progress_obj = TextProgress()
-
- if url.startswith("file:/"):
- filepath = "/%s" % url.replace("file:", "").lstrip('/')
- if not os.path.exists(filepath):
- raise CreatorError("URLGrabber error: can't find file %s" % url)
- if url.endswith('.rpm'):
- return filepath
- else:
- # untouch repometadata in source path
- runner.show(['cp', '-f', filepath, filename])
-
- else:
- try:
- filename = g.urlgrab(url = url, filename = filename,
- ssl_verify_host = False, ssl_verify_peer = False,
- proxies = proxies, http_headers = (('Pragma', 'no-cache'),),
- quote = 0, progress_obj = progress_obj)
- except grabber.URLGrabError, e:
- raise CreatorError("URLGrabber error: %s" % url)
-
- return filename
-
-def terminal_width(fd=1):
- """ Get the real terminal width """
- try:
- buf = 'abcdefgh'
- buf = fcntl.ioctl(fd, termios.TIOCGWINSZ, buf)
- return struct.unpack('hhhh', buf)[1]
- except: # IOError
- return 80
-
-def truncate_url(url, width):
- return os.path.basename(url)[0:width]
-
-class TextProgress(object):
- # make the class as singleton
- _instance = None
- def __new__(cls, *args, **kwargs):
- if not cls._instance:
- cls._instance = super(TextProgress, cls).__new__(cls, *args, **kwargs)
-
- return cls._instance
-
- def __init__(self, totalnum = None):
- self.total = totalnum
- self.counter = 1
-
- def start(self, filename, url, *args, **kwargs):
- self.url = url
- self.termwidth = terminal_width()
- msger.info("\r%-*s" % (self.termwidth, " "))
- if self.total is None:
- msger.info("\rRetrieving %s ..." % truncate_url(self.url, self.termwidth - 15))
- else:
- msger.info("\rRetrieving %s [%d/%d] ..." % (truncate_url(self.url, self.termwidth - 25), self.counter, self.total))
-
- def update(self, *args):
- pass
-
- def end(self, *args):
- if self.counter == self.total:
- msger.raw("\n")
-
- if self.total is not None:
- self.counter += 1
class RPMInstallCallback:
""" Command line callback class for callbacks from the RPM library.
from mic import msger
from mic.kickstart import ksparser
from mic.utils import misc, rpmmisc
+from mic.utils.grabber import TextProgress
from mic.utils.proxy import get_proxy_for
from mic.utils.errors import CreatorError
from mic.imager.baseimager import BaseImageCreator
try:
repos = self.repos.listEnabled()
for repo in repos:
- repo.setCallback(
- rpmmisc.TextProgress(total_count - cached_count))
+ repo.setCallback(TextProgress(total_count - cached_count))
self.downloadPkgs(dlpkgs)
# FIXME: sigcheck?
from mic import msger
from mic.kickstart import ksparser
from mic.utils import misc, rpmmisc, runner, fs_related
+from mic.utils.grabber import myurlgrab, TextProgress
from mic.utils.proxy import get_proxy_for
from mic.utils.errors import CreatorError, RepoError, RpmError
from mic.imager.baseimager import BaseImageCreator
def downloadPkgs(self, package_objects, count):
localpkgs = self.localpkgs.keys()
- progress_obj = rpmmisc.TextProgress(count)
+ progress_obj = TextProgress(count)
for po in package_objects:
if po.name() in localpkgs:
proxies = self.get_proxies(po)
try:
- filename = rpmmisc.myurlgrab(url,
- filename,
- proxies,
- progress_obj)
+ filename = myurlgrab(url, filename, proxies, progress_obj)
except CreatorError:
self.close()
raise