From c9fbb5ace8ff1dc7d0b2933c82cf280f39a6ce3a Mon Sep 17 00:00:00 2001 From: Jordan Guymon Date: Mon, 22 Aug 2016 10:00:22 -0700 Subject: [PATCH] Drop key from environment params if None Log dropped keys --- awsshell/wizard.py | 11 ++++++++++- tests/unit/test_wizard.py | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/awsshell/wizard.py b/awsshell/wizard.py index c5534bf..2cfa053 100644 --- a/awsshell/wizard.py +++ b/awsshell/wizard.py @@ -1,6 +1,7 @@ import sys import copy import json +import logging import jmespath import botocore.session @@ -15,6 +16,9 @@ from prompt_toolkit.shortcuts import confirm +LOG = logging.getLogger(__name__) + + def stage_error_handler(error, stages, confirm=confirm, prompt=select_prompt): managed_errors = ( ClientError, @@ -372,5 +376,10 @@ def resolve_parameters(self, keys): """ resolved_dict = {} for key in keys: - resolved_dict[key] = self.retrieve(keys[key]) + retrieved = self.retrieve(keys[key]) + if retrieved is not None: + resolved_dict[key] = retrieved + else: + LOG.debug("Query failed (%s), dropped key: %s", keys[key], key) + return resolved_dict diff --git a/tests/unit/test_wizard.py b/tests/unit/test_wizard.py index 98331d3..f16ac49 100644 --- a/tests/unit/test_wizard.py +++ b/tests/unit/test_wizard.py @@ -37,6 +37,12 @@ def test_resolve_parameters(): assert resolved == {'a': 'Nice', 'b': 'v'} +def test_resolve_parameters_drops_none(env): + keys = {'a': 'bad.query', 'b': 'env_var.epic'} + resolved = env.resolve_parameters(keys) + assert resolved == {'b': 'nice'} + + @pytest.fixture def loader(wizard_spec): session = mock.Mock()