runway.cfngin.actions.diff module

CFNgin diff action.

class runway.cfngin.actions.diff.Action[source]

Bases: 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.

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

Do nothing.

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

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

Handle CFNgin bucket access denied & not existing.

run(*, concurrency: int = 0, dump: bool | str = False, force: bool = False, outline: bool = False, tail: bool = False, upload_disabled: bool = False, **_kwargs: Any) None[source]

Kicks off the diffing of the stacks in the stack_definitions.

class runway.cfngin.actions.diff.DictValue[source]

Bases: Generic[_OV, _NV]

Used to create a diff of two dictionaries.

__eq__(other: object) bool[source]

Compare if self is equal to another object.

__init__(key: str, old_value: _OV, new_value: _NV) None[source]

Instantiate class.

changes() list[str][source]

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

Returns:

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

status() str[source]

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[DictValue[_OV, _NV]]][source]

Calculate the diff two single dimension dictionaries.

Parameters:
  • old_dict – Old dictionary.

  • new_dict – New dictionary.

Returns:

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

runway.cfngin.actions.diff.diff_parameters(old_params: dict[str, _OV], new_params: dict[str, _NV]) list[DictValue[_OV, _NV]][source]

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

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

Parameters:
  • old_params – old parameters

  • new_params – new parameters

Returns:

A list of differences.

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

Handle the formatting of differences in parameters.

Parameters:

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

Returns:

A formatted string that represents a parameter diff