Skip to content

Commit

Permalink
allow for stage-independent lambda function config
Browse files Browse the repository at this point in the history
  • Loading branch information
Nathan Keyes committed Jul 7, 2019
1 parent 4853c6c commit a439c66
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 5 deletions.
15 changes: 11 additions & 4 deletions chalice/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,15 +173,22 @@ def _chain_lookup(self, name, varies_per_chalice_stage=False,
varies_per_function=False):
# type: (str, bool, bool) -> Any
search_dicts = [self._user_provided_params]
if varies_per_function:
if varies_per_chalice_stage:
search_dicts.append(
self._config_from_disk.get('stages', {}).get(
self.chalice_stage, {}))
if varies_per_function:
# search order:
# config['stages']['lambda_functions']
# config['stages']
# config['lambda_functions']
search_dicts.insert(
0, self._config_from_disk.get('stages', {}).get(
self.chalice_stage, {}).get('lambda_functions', {}).get(
self.function_name, {}))
if varies_per_chalice_stage:
search_dicts.append(
self._config_from_disk.get('stages', {}).get(
self.chalice_stage, {}))
self._config_from_disk.get('lambda_functions', {}).get(
self.function_name, {}))
search_dicts.extend([self._config_from_disk, self._default_params])
for cfg_dict in search_dicts:
if isinstance(cfg_dict, dict) and cfg_dict.get(name) is not None:
Expand Down
40 changes: 39 additions & 1 deletion tests/unit/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,22 +139,60 @@ def test_can_chain_chalice_stage_values():
def test_can_chain_function_values():
disk_config = {
'lambda_timeout': 10,
'lambda_functions': {
'api_handler': {
'lambda_timeout': 15,
}
},
'stages': {
'dev': {
'lambda_timeout': 20,
'lambda_functions': {
'api_handler': {
'lambda_timeout': 30,
}
}
}
}
}
}
c = Config(chalice_stage='dev',
config_from_disk=disk_config)
assert c.lambda_timeout == 30


def test_can_set_stage_independent_function_values():
disk_config = {
'lambda_timeout': 10,
'lambda_functions': {
'api_handler': {
'lambda_timeout': 15,
}
}
}
c = Config(chalice_stage='dev',
config_from_disk=disk_config)
assert c.lambda_timeout == 15


def test_stage_overrides_function_values():
disk_config = {
'lambda_timeout': 10,
'lambda_functions': {
'api_handler': {
'lambda_timeout': 15,
}
},
'stages': {
'dev': {
'lambda_timeout': 20,
}
}
}
c = Config(chalice_stage='dev',
config_from_disk=disk_config)
assert c.lambda_timeout == 20


def test_can_create_scope_obj_with_new_function():
disk_config = {
'lambda_timeout': 10,
Expand Down

0 comments on commit a439c66

Please sign in to comment.