-from . import utils
+from .utils import xml2obj
from .render import output_html
import gzip
def _get_primary_md(url, workspace, name):
"""Get primary.xml.gz file from remote repodata directory"""
- tree = ET.ElementTree(file=_download(url + '/repodata/repomd.xml', \
- workspace, name))
- for elem in tree.iter(tag='{http://linux.duke.edu/metadata/repo}data'):
- if elem.attrib['type'] == 'primary':
- for c in elem:
- if c.tag == '{http://linux.duke.edu/metadata/repo}location':
- href = c.attrib['href']
- if href:
- return _download(url + href, workspace, \
- href.split('/')[-1])
- else:
- raise RepoError('Repo primary metadata can\'t be found !')
+ repomd_xml = _download(url + '/repodata/repomd.xml', workspace, name)
+ with open(repomd_xml, 'rb') as repomd:
+ data = xml2obj(repomd.read())
+ for item in data['data']:
+ if item.type == 'primary':
+ href = item.location.href
+ if href:
+ return _download(url + href, workspace,
+ href.split('/')[-1])
+ else:
+ raise RepoError('Repo primary metadata can\'t be found !')
def _download(url, workspace, name):
"""Download needed xml file to local by given url"""
def __init__(self, url):
workspace = tempfile.mkdtemp(dir='/var/tmp')
primary_md = _get_primary_md(url, workspace, 'repomd.xml')
- self._et = utils.xml2obj(gzip.open(primary_md))
+ self._et = xml2obj(gzip.open(primary_md))
@property
def packages(self):