osclib/core: provide package_binary_list() to efficiently obtain binary to package map.

This commit is contained in:
Jimmy Berry 2017-08-02 21:05:21 -05:00
parent 5c364b7967
commit 0f4abf058b

View File

@ -108,3 +108,28 @@ def binary_list(apiurl, project, repository, arch, package=None):
parsed.append(BinaryParsed(package, result.group('filename'), name, result.group('arch'))) parsed.append(BinaryParsed(package, result.group('filename'), name, result.group('arch')))
return parsed return parsed
def package_binary_list(apiurl, project, repository, arch, package=None):
path = ['build', project, repository, arch]
if package:
path.append(package)
url = makeurl(apiurl, path, {'view': 'binaryversions'})
root = ET.parse(http_GET(url)).getroot()
package_binaries = []
binary_map = {} # last duplicate wins
for binary_list in root:
# Strip off multibuild extra to provide actual package name. The full
# value may be useful for duplicate check.
package = binary_list.get('package').split(':', 1)[0]
for binary in binary_list:
filename = binary.get('name')
result = re.match(RPM_REGEX, filename)
if not result:
continue
package_binaries.append(BinaryParsed(package, result.group('filename'),
result.group('name'), result.group('arch')))
binary_map[result.group('filename')] = package
return package_binaries, binary_map