def resolve_parameter_values(self, parameters_dict, stack_name): parameters = {} for key, value in parameters_dict.items(): if isinstance(value, list): self.logger.debug("List parameter found for {0}".format(key)) value_string = self.convert_list_to_string(value) parameters[key] = value_string elif isinstance(value, str): if DependencyResolver.is_parameter_reference(value): referenced_stack, output_name = DependencyResolver.parse_stack_reference_value(value) parameters[key] = str(self.get_output_value(referenced_stack + '.' + output_name)) elif self.is_keep_value(value): parameters[key] = str(self.get_actual_value(key, value, stack_name)) elif self.is_taupage_ami_reference(value): parameters[key] = str(self.ec2.get_latest_taupage_image_id()) else: parameters[key] = value elif isinstance(value, bool): parameters[key] = str(value).lower() elif isinstance(value, int): parameters[key] = str(value) elif isinstance(value, float): parameters[key] = str(value) else: raise NotImplementedError("Cannot handle {0} value for key: {1}".format(type(value), key)) return parameters
def test_is_parameter_reference_returns_true_for_uppercase_ref(self): self.assertTrue(DependencyResolver.is_parameter_reference("|Ref|vpc.id"))
def test_is_parameter_reference_returns_true_on_empty_reference(self): self.assertTrue(DependencyResolver.is_parameter_reference('|ref|'))
def test_is_parameter_reference_returns_false_for_boolean_values(self): self.assertFalse(DependencyResolver.is_parameter_reference(True))
def test_is_parameter_reference_returns_false_for_simple_string(self): self.assertFalse(DependencyResolver.is_parameter_reference("vpc.id"))
def test_is_parameter_reference_returns_false_for_single_separator(self): self.assertFalse(DependencyResolver.is_parameter_reference("Ref|vpc.id"))