runway.cfngin.hooks.base module

Base class for CFNgin hooks.

class runway.cfngin.hooks.base.HookArgsBaseModel[source]

Bases: runway.utils.BaseModel

Base model for hook args.

__contains__(name: object) bool

Implement evaluation of ‘in’ conditional.

Parameters

name – The name to check for existence in the model.

__getitem__(name: str) Any

Implement evaluation of self[name].

Parameters

name – Attribute name to return the value for.

Returns

The value associated with the provided name/attribute name.

Raises

AttributeError – If attribute does not exist on this object.

__init__(**data: Any) None

Create a new model by parsing and validating input data from keyword arguments.

Raises ValidationError if the input data cannot be parsed to form a valid model.

__iter__() TupleGenerator

so dict(model) works

__new__(**kwargs)
__pretty__(fmt: Callable[[Any], Any], **kwargs: Any) Generator[Any, None, None]

Used by devtools (https://python-devtools.helpmanual.io/) to provide a human readable representations of objects

__repr_name__() unicode

Name of the instance’s class, used in __repr__.

__rich_repr__() RichReprResult

Get fields for Rich library

__setitem__(name: str, value: Any) None

Implement item assignment (e.g. self[name] = value).

Parameters
  • name – Attribute name to set.

  • value – Value to assign to the attribute.

classmethod __try_update_forward_refs__(**localns: Any) None

Same as update_forward_refs but will not raise exception when forward references are not defined.

classmethod construct(_fields_set: Optional[SetStr] = None, **values: Any) Model

Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = ‘allow’ was set since it adds all passed values

copy(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, update: Optional[DictStrAny] = None, deep: bool = False) Model

Duplicate a model, optionally choose which fields to include, exclude and change.

Parameters
  • include – fields to include in new model

  • exclude – fields to exclude from new model, as with values this takes precedence over include

  • update – values to change/add in the new model. Note: the data is not validated before creating the new model: you should trust this data

  • deep – set to True to make a deep copy of the model

Returns

new model instance

dict(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) DictStrAny

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

get(name: str, default: Optional[Any] = None) Any

Safely get the value of an attribute.

Parameters
  • name – Attribute name to return the value for.

  • default – Value to return if attribute is not found.

json(*, include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None, by_alias: bool = False, skip_defaults: Optional[bool] = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Optional[Callable[[Any], Any]] = None, models_as_dict: bool = True, **dumps_kwargs: Any) unicode

Generate a JSON representation of the model, include and exclude arguments as per dict().

encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().

classmethod update_forward_refs(**localns: Any) None

Try to update ForwardRefs on fields based on this Model, globalns and localns.

class runway.cfngin.hooks.base.Hook[source]

Bases: runway.cfngin.hooks.protocols.CfnginHookProtocol

Base class for hooks.

Not all hooks need to be classes and not all classes need to be hooks.

args

Keyword arguments passed to the hook, loaded into a MutableMap object.

Type

HookArgsBaseModel

blueprint

Blueprint generated by the hook if it will be deploying a stack.

Type

Optional[Blueprint]

context

Context instance. (passed in by CFNgin)

Type

CfnginContext

provider Provider instance.
Type

passed in by CFNgin

stack

Stack object if the hook deploys a stack.

Type

Optional[Stack]

stack_name

Name of the stack created by the hook if a stack is to be created.

Type

str

ARGS_PARSER

Class used to parse arguments passed to the hook.

alias of runway.cfngin.hooks.base.HookArgsBaseModel

__init__(context: CfnginContext, provider: Provider, **kwargs: Any) None[source]

Instantiate class.

Parameters
  • context – Context instance. (passed in by CFNgin)

  • provider – Provider instance. (passed in by CFNgin)

property tags: troposphere.Tags

Return tags that should be applied to any resource being created.

generate_stack(**kwargs: Any) runway.cfngin.stack.Stack[source]

Create a CFNgin Stack object.

get_template_description(suffix: Optional[str] = None) str[source]

Generate a template description.

Parameters

suffix – Suffix to append to the end of a CloudFormation template description.

deploy_stack(stack: Optional[Stack] = None, wait: bool = False) Status[source]

Deploy a stack.

Parameters
  • stack – A stack to act on.

  • wait – Wither to wait for the stack to complete before returning.

Returns

Ending status of the stack.

destroy_stack(stack: Optional[Stack] = None, wait: bool = False) Status[source]

Destroy a stack.

Parameters
  • stack – A stack to act on.

  • wait – Wither to wait for the stack to complete before returning.

Returns

Ending status of the stack.

post_deploy() Any[source]

Run during the post_deploy stage.

post_destroy() Any[source]

Run during the post_destroy stage.

pre_deploy() Any[source]

Run during the pre_deploy stage.

pre_destroy() Any[source]

Run during the pre_destroy stage.

__new__(**kwargs)
class runway.cfngin.hooks.base.HookDeployAction[source]

Bases: runway.cfngin.actions.deploy.Action

Deploy action that can be used from hooks.

__init__(context: CfnginContext, provider: Provider)[source]

Instantiate class.

Parameters
  • context – The context for the current run.

  • provider – The provider instance.

property provider: Provider

Override the inherited property to return the local provider.

__new__(**kwargs)
static build_parameters(stack: Stack, provider_stack: Optional[StackTypeDef] = None) List[ParameterTypeDef]

Build the CloudFormation Parameters for our stack.

Parameters
  • stack – A CFNgin stack.

  • provider_stack – An optional CFNgin provider object.

Returns

The parameters for the given stack

build_provider() Provider[source]

Override the inherited method to always return local provider.

ensure_cfn_bucket() None

CloudFormation bucket where templates will be stored.

execute(**kwargs: Any) None

Run the action with pre and post steps.

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

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

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

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

s3_stack_push(blueprint: Blueprint, force: bool = False) str

Push the rendered blueprint’s template to S3.

Verifies that the template doesn’t already exist in S3 before pushing.

Returns

URL to the template in S3.

stack_template_url(blueprint: Blueprint) str

S3 URL for CloudFormation template object.

property upload_disabled: bool

Whether the CloudFormation template should be uploaded to S3.

run(**kwargs: Any) Status[source]

Run the action for one stack.

class runway.cfngin.hooks.base.HookDestroyAction[source]

Bases: runway.cfngin.hooks.base.HookDeployAction

Destroy action that can be used from hooks.

__init__(context: CfnginContext, provider: Provider)

Instantiate class.

Parameters
  • context – The context for the current run.

  • provider – The provider instance.

__new__(**kwargs)
static build_parameters(stack: Stack, provider_stack: Optional[StackTypeDef] = None) List[ParameterTypeDef]

Build the CloudFormation Parameters for our stack.

Parameters
  • stack – A CFNgin stack.

  • provider_stack – An optional CFNgin provider object.

Returns

The parameters for the given stack

build_provider() Provider

Override the inherited method to always return local provider.

ensure_cfn_bucket() None

CloudFormation bucket where templates will be stored.

execute(**kwargs: Any) None

Run the action with pre and post steps.

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

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

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

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

property provider: Provider

Override the inherited property to return the local provider.

s3_stack_push(blueprint: Blueprint, force: bool = False) str

Push the rendered blueprint’s template to S3.

Verifies that the template doesn’t already exist in S3 before pushing.

Returns

URL to the template in S3.

stack_template_url(blueprint: Blueprint) str

S3 URL for CloudFormation template object.

property upload_disabled: bool

Whether the CloudFormation template should be uploaded to S3.

run(**kwargs: Any) Status[source]

Run the action for one stack.