Add strict behavior to the pdc interface to make debugging easier.

This commit is contained in:
Ralph Bean
2016-07-16 19:39:42 -04:00
parent cce333bd73
commit 0db0d1d50a
2 changed files with 26 additions and 22 deletions

View File

@@ -113,7 +113,7 @@ def variant_dict_from_str(module_str):
return module_info
def get_module(session, module_info):
def get_module(session, module_info, strict=False):
"""
:param session : PDCClient instance
:param module_info: pdc variant_dict, str, mmd or module dict
@@ -122,23 +122,27 @@ def get_module(session, module_info):
module_info = get_variant_dict(module_info)
module_info = session['unreleasedvariants'](page_size=-1, **module_info)
assert len(module_info) <= 1
retval = session['unreleasedvariants'](page_size=-1, **module_info)
assert len(retval) <= 1
if not module_info:
return None
# Error handling
if not retval:
if strict:
raise ValueError("Failed to find module in PDC %r" % module_info)
else:
return None
return module_info[0]
return retval[0]
def get_module_tag(session, module_info):
def get_module_tag(session, module_info, strict=False):
"""
:param session : PDCClient instance
:param module_info: list of module_info dicts
:return: koji tag string
"""
return get_module(session, module_info)['koji_tag']
return get_module(session, module_info, strict=strict)['koji_tag']
def module_depsolving_wrapper(session, module_list):
def module_depsolving_wrapper(session, module_list, strict=False):
"""
:param session : PDCClient instance
:param module_list: list of module_info dicts
@@ -147,11 +151,11 @@ def module_depsolving_wrapper(session, module_list):
# TODO: implement this
# Make sure that these are dicts from PDC ... ensures all values
module_infos = [get_module(session, module) for module in module_list]
module_infos = [get_module(session, module, strict=strict) for module in module_list]
return module_infos
def get_module_dependencies(session, module_info):
def get_module_dependencies(session, module_info, strict=False):
"""
:param session : PDCClient instance
:param module_infos : a dict containing filters for pdc
@@ -161,14 +165,14 @@ def get_module_dependencies(session, module_info):
# XXX get definitive list of modules
deps = []
module_info = get_module(session, module_info)
if module_info.get('runtime_deps'):
module_info = get_module(session, module_info, strict=strict)
if module_info and module_info.get('runtime_deps'):
deps = [x['dependency'] for x in module_info['runtime_deps']]
deps = module_depsolving_wrapper(session, deps)
deps = module_depsolving_wrapper(session, deps, strict=strict)
return deps
def get_module_build_dependencies(session, module_info):
def get_module_build_dependencies(session, module_info, strict=False):
"""
:param session : PDCClient instance
:param module_info : a dict containing filters for pdc
@@ -179,9 +183,9 @@ def get_module_build_dependencies(session, module_info):
# XXX get definitive list of modules
deps = []
module_info = get_module(session, module_info)
if module_info.get('build_deps'):
module_info = get_module(session, module_info, strict=strict)
if module_info and module_info.get('build_deps'):
deps = [x['dependency'] for x in module_info['build_deps']]
deps = module_depsolving_wrapper(session, deps)
deps = module_depsolving_wrapper(session, deps, strict=strict)
return deps

View File

@@ -42,11 +42,11 @@ def wait(config, session, msg):
in rida.schedulers.handlers.repos.
"""
build = rida.database.ModuleBuild.from_fedmsg(session, msg)
pdc_session = rida.pdc.get_pdc_client_session(config)
module_info = build.json()
log.debug("Received module_info=%s from pdc" % module_info)
tag = rida.pdc.get_module_tag(pdc_session, module_info)
log.info("Found module_info=%s from message" % module_info)
pdc_session = rida.pdc.get_pdc_client_session(config)
tag = rida.pdc.get_module_tag(pdc_session, module_info, strict=True)
log.debug("Found tag=%s for module %r" % (tag, build))
# Hang on to this information for later. We need to know which build is