runway.cfngin.hooks.base module

Base class for CFNgin hooks.

class runway.cfngin.hooks.base.HookArgsBaseModel(*, tags: Dict[str, str] = {})[source]

Bases: runway.utils.BaseModel

Base model for hook args.

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.

__contains__(name: object)bool

Implement evaluation of ‘in’ conditional.

Parameters

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

__getitem__(name: str)typing.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.

__iter__()TupleGenerator

so dict(model) works

__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__.

__setitem__(name: str, value: typing.Any)None

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

Parameters
  • name – Attribute name to set.

  • value – Value to assign to the attribute.

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: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, update: 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: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, by_alias: bool = False, skip_defaults: 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[typing.Any] = None)typing.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: Union[AbstractSetIntStr, MappingIntStrAny] = None, exclude: Union[AbstractSetIntStr, MappingIntStrAny] = None, by_alias: bool = False, skip_defaults: bool = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Optional[Callable[[Any], Any]] = None, **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(context: CfnginContext, provider: Provider, **kwargs: Any)[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

Instantiate class.

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

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

ARGS_PARSER

alias of runway.cfngin.hooks.base.HookArgsBaseModel

property tags

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

generate_stack(**kwargs: typing.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()typing.Any[source]

Run during the post_deploy stage.

post_destroy()typing.Any[source]

Run during the post_destroy stage.

pre_deploy()typing.Any[source]

Run during the pre_deploy stage.

pre_destroy()typing.Any[source]

Run during the pre_destroy stage.

class runway.cfngin.hooks.base.HookDeployAction(context: CfnginContext, provider: Provider)[source]

Bases: runway.cfngin.actions.deploy.Action

Deploy action that can be used from hooks.

Instantiate class.

Parameters
  • context – The context for the current run.

  • provider – The provider instance.

property provider

Override the inherited property to return the local provider.

build_provider()Provider[source]

Override the inherited method to always return local provider.

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

ensure_cfn_bucket()None

CloudFormation bucket where templates will be stored.

execute(**kwargs: typing.Any)None

Run the action with pre and post steps.

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

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

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

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

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

Run the action for one stack.

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

Whether the CloudFormation template should be uploaded to S3.

class runway.cfngin.hooks.base.HookDestroyAction(context: CfnginContext, provider: Provider)[source]

Bases: runway.cfngin.hooks.base.HookDeployAction

Destroy action that can be used from hooks.

Instantiate class.

Parameters
  • context – The context for the current run.

  • provider – The provider instance.

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: typing.Any)None

Run the action with pre and post steps.

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

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

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

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

property 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

Whether the CloudFormation template should be uploaded to S3.

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

Run the action for one stack.