From 0db0d1d50a419fb04cbd3c665b9e6f49e4747917 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Sat, 16 Jul 2016 19:39:42 -0400 Subject: [PATCH] Add strict behavior to the pdc interface to make debugging easier. --- rida/pdc.py | 40 ++++++++++++++++-------------- rida/scheduler/handlers/modules.py | 8 +++--- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/rida/pdc.py b/rida/pdc.py index 4df62101..58c6dff3 100644 --- a/rida/pdc.py +++ b/rida/pdc.py @@ -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 diff --git a/rida/scheduler/handlers/modules.py b/rida/scheduler/handlers/modules.py index fa77bccf..7089f535 100644 --- a/rida/scheduler/handlers/modules.py +++ b/rida/scheduler/handlers/modules.py @@ -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