runway.cfngin.actions.diff module

CFNgin diff action.

class runway.cfngin.actions.diff.DictValue(*args, **kwds)[source]

Bases: typing.Generic

Used to create a diff of two dictionaries.

Instantiate class.

formatter = '%s%s = %s'
changes() → List[str][source]

Return changes to represent the diff between old and new value.


Representation of the change (if any) between old and new value.


Status of changes between the old value and new value.

runway.cfngin.actions.diff.diff_dictionaries(old_dict: Dict[str, _OV], new_dict: Dict[str, _NV]) → Tuple[int, List[runway.cfngin.actions.diff.DictValue[_OV, _NV]]][source]

Calculate the diff two single dimension dictionaries.

  • old_dict – Old dictionary.

  • new_dict – New dictionary.


Number of changed records and the DictValue object containing the changes.

runway.cfngin.actions.diff.format_params_diff(parameter_diff: List[runway.cfngin.actions.diff.DictValue[Any, Any]])str[source]

Handle the formatting of differences in parameters.


parameter_diff – A list of DictValue detailing the differences between two dicts returned by diff_dictionaries().


A formatted string that represents a parameter diff

runway.cfngin.actions.diff.diff_parameters(old_params: Dict[str, _OV], new_params: Dict[str, _NV]) → List[runway.cfngin.actions.diff.DictValue[_OV, _NV]][source]

Compare the old vs. new parameters and returns a “diff”.

If there are no changes, we return an empty list.

  • old_params – old paramters

  • new_params – new parameters


A list of differences.

class runway.cfngin.actions.diff.Action(context: CfnginContext, provider_builder: Optional[ProviderBuilder] = None, cancel: Optional[threading.Event] = None)[source]

Bases: runway.cfngin.actions.deploy.Action

Responsible for diffing CloudFormation stacks in AWS and locally.

Generates the deploy plan based on stack dependencies (these dependencies are determined automatically based on references to output values from other stacks).

The plan is then used to create a changeset for a stack using a generated template based on the current config.

Instantiate class.

  • context – The context for the current run.

  • provider_builder – An object that will build a provider that will be interacted with in order to perform the necessary actions.

  • cancel – Cancel handler.

DESCRIPTION: str = 'Diff stacks'
NAME: Optional[str] = 'diff'
run(*, concurrency: int = 0, dump: Union[bool, str] = False, force: bool = False, outline: bool = False, tail: bool = False, **_kwargs: Any)None[source]

Kicks off the diffing of the stacks in the stack_definitions.

pre_run(*, dump: Union[bool, str] = False, outline: bool = False, **_Action__kwargs: Any)None[source]

Any steps that need to be taken prior to running the action.

Handle CFNgin bucket access denied & not existing.

post_run(*, dump: Union[bool, str] = False, outline: bool = False, **_Action__kwargs: Any)None[source]

Do nothing.

bucket_name: Optional[str]
bucket_region: Optional[str]
cancel: threading.Event
context: CfnginContext
provider_builder: Optional[ProviderBuilder]
s3_conn: S3Client