samtranslator/model/update_policy.py (16 lines of code) (raw):
from collections import namedtuple
from typing import Any, Dict
from samtranslator.model.intrinsics import ref
CodeDeployLambdaAliasUpdate = namedtuple(
"CodeDeployLambdaAliasUpdate",
["ApplicationName", "DeploymentGroupName", "BeforeAllowTrafficHook", "AfterAllowTrafficHook"],
)
"""
This class is a model for the update policy which becomes present on any function alias for which there is an enabled
deployment preference. Another words, if the customer specifies a deployment preference for how they want their
function aliases updated this update policy shows up to connect their lambda function alias with the correct
CodeDeploy resources.
:param ApplicationName: A reference to the name of the CodeDeploy Application (one per stack)
:param DeploymentGroupName: A reference to the name of the deployment group (in this version one per function)
:param BeforeAllowTrafficHook: A reference to the lambda function which is used to test their new version before we
shift traffic
:param AfterAllowTrafficHook: A reference to the lambda function used for testing after we're done shifting traffic
"""
class UpdatePolicy(CodeDeployLambdaAliasUpdate):
def to_dict(self) -> Dict[str, Dict[str, Any]]:
"""
:return: a dict that can be used as part of a cloudformation template
"""
dict_with_nones = self._asdict()
codedeploy_lambda_alias_update_dict = {
# Type ignore next line. `ref(None)` is not a typical usage of `ref()`.
k: v
for k, v in dict_with_nones.items()
if v != ref(None) and v is not None # type: ignore
}
return {"CodeDeployLambdaAliasUpdate": codedeploy_lambda_alias_update_dict}