runway.config.models.cfngin package

CFNgin config models.

pydantic model runway.config.models.cfngin.CfnginConfigDefinitionModel[source]

Bases: ConfigProperty

Model for a CFNgin config definition.

Show JSON schema
{
   "title": "CFNgin Config File",
   "description": "Configuration file for Runway's CFNgin.",
   "type": "object",
   "properties": {
      "cfngin_bucket": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Name of an AWS S3 bucket to use for caching CloudFormation templates. Set as an empty string to disable caching.",
         "title": "CFNgin Bucket"
      },
      "cfngin_bucket_region": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "AWS Region where the CFNgin Bucket is located. If not provided, the current region is used.",
         "title": "CFNgin Bucket Region"
      },
      "cfngin_cache_dir": {
         "anyOf": [
            {
               "format": "path",
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Path to a local directory that CFNgin will use for local caching.",
         "title": "CFNgin Cache Directory"
      },
      "log_formats": {
         "additionalProperties": {
            "type": "string"
         },
         "default": {},
         "description": "Customize log message formatting by log level.",
         "title": "Log Formats",
         "type": "object"
      },
      "lookups": {
         "additionalProperties": {
            "type": "string"
         },
         "default": {},
         "description": "Mapping of custom lookup names to a python importable path for the class that will be used to resolve the lookups.",
         "title": "Lookups",
         "type": "object"
      },
      "mappings": {
         "additionalProperties": {
            "additionalProperties": {
               "additionalProperties": true,
               "type": "object"
            },
            "type": "object"
         },
         "default": {},
         "description": "Mappings that will be appended to all stack templates.",
         "title": "Mappings",
         "type": "object"
      },
      "namespace": {
         "description": "The namespace used to prefix stack names to create separation within an AWS account.",
         "title": "Namespace",
         "type": "string"
      },
      "namespace_delimiter": {
         "default": "-",
         "description": "Character used to separate the namespace and stack name when the namespace is prepended.",
         "title": "Namespace Delimiter",
         "type": "string"
      },
      "package_sources": {
         "$ref": "#/$defs/CfnginPackageSourcesDefinitionModel",
         "default": {
            "git": [],
            "local": [],
            "s3": []
         }
      },
      "persistent_graph_key": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Key for an AWS S3 object used to track a graph of stacks between executions.",
         "title": "Persistent Graph Key"
      },
      "post_deploy": {
         "anyOf": [
            {
               "items": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "array"
            },
            {
               "additionalProperties": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "object"
            }
         ],
         "default": [],
         "title": "Post Deploy Hooks"
      },
      "post_destroy": {
         "anyOf": [
            {
               "items": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "array"
            },
            {
               "additionalProperties": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "object"
            }
         ],
         "default": [],
         "title": "Pre Destroy Hooks"
      },
      "pre_deploy": {
         "anyOf": [
            {
               "items": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "array"
            },
            {
               "additionalProperties": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "object"
            }
         ],
         "default": [],
         "title": "Pre Deploy Hooks"
      },
      "pre_destroy": {
         "anyOf": [
            {
               "items": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "array"
            },
            {
               "additionalProperties": {
                  "$ref": "#/$defs/CfnginHookDefinitionModel"
               },
               "type": "object"
            }
         ],
         "default": [],
         "title": "Pre Destroy Hooks"
      },
      "service_role": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Specify an IAM Role for CloudFormation to use.",
         "title": "Service Role ARN"
      },
      "stacks": {
         "anyOf": [
            {
               "items": {
                  "$ref": "#/$defs/CfnginStackDefinitionModel"
               },
               "type": "array"
            },
            {
               "additionalProperties": {
                  "$ref": "#/$defs/CfnginStackDefinitionModel"
               },
               "type": "object"
            }
         ],
         "default": [],
         "description": "Define CloudFormation stacks using a Blueprint or Template.",
         "title": "Stacks"
      },
      "sys_path": {
         "anyOf": [
            {
               "format": "path",
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Path to append to $PATH. This is also the root of relative paths.",
         "title": "sys.path"
      },
      "tags": {
         "anyOf": [
            {
               "additionalProperties": {
                  "type": "string"
               },
               "type": "object"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Tags to try to apply to all resources created from this configuration file.",
         "title": "Tags"
      },
      "template_indent": {
         "default": 4,
         "description": "Number of spaces per indentation level to use when rendering/outputting CloudFormation templates.",
         "title": "Template Indent",
         "type": "integer"
      }
   },
   "$defs": {
      "CfnginHookDefinitionModel": {
         "additionalProperties": false,
         "description": "Python classes or functions run before or after deploy/destroy actions.",
         "properties": {
            "args": {
               "additionalProperties": true,
               "default": {},
               "description": "Arguments that will be passed to the hook. (supports lookups)",
               "title": "Arguments",
               "type": "object"
            },
            "data_key": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Key to use when storing the returned result of the hook.",
               "title": "Data Key"
            },
            "enabled": {
               "default": true,
               "description": "Whether the hook will be run.",
               "title": "Enabled",
               "type": "boolean"
            },
            "path": {
               "description": "Python importable path to the hook.",
               "title": "Path",
               "type": "string"
            },
            "required": {
               "default": true,
               "description": "Whether to continue execution if the hook results in an error.",
               "title": "Required",
               "type": "boolean"
            }
         },
         "required": [
            "path"
         ],
         "title": "CFNgin Hook Definition",
         "type": "object"
      },
      "CfnginPackageSourcesDefinitionModel": {
         "additionalProperties": false,
         "description": "Map of additional package sources to include when processing this configuration file.",
         "properties": {
            "git": {
               "default": [],
               "description": "Information about git repositories that should be included in the processing of this configuration file.",
               "items": {
                  "$ref": "#/$defs/GitCfnginPackageSourceDefinitionModel"
               },
               "title": "CFNgin Git Repository Package Source Definitions",
               "type": "array"
            },
            "local": {
               "default": [],
               "description": "Information about local directories that should be included in the processing of this configuration file.",
               "items": {
                  "$ref": "#/$defs/LocalCfnginPackageSourceDefinitionModel"
               },
               "title": "CFNgin Local Package Source Definitions",
               "type": "array"
            },
            "s3": {
               "default": [],
               "description": "Information about a AWS S3 objects that should be downloaded, unzipped, and included in the processing of this configuration file.",
               "items": {
                  "$ref": "#/$defs/S3CfnginPackageSourceDefinitionModel"
               },
               "title": "CFNgin S3 Package Source Definitions",
               "type": "array"
            }
         },
         "title": "CFNgin Package Sources Definition",
         "type": "object"
      },
      "CfnginStackDefinitionModel": {
         "additionalProperties": false,
         "description": "Define CloudFormation stacks using a Blueprint or Template.",
         "properties": {
            "class_path": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Python importable path to a blueprint class.",
               "title": "Blueprint Class Path"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A description that will be applied to the stack in CloudFormation.",
               "title": "Stack Description"
            },
            "enabled": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "pattern": "^\\$\\{.+\\}$",
                     "type": "string"
                  }
               ],
               "default": true,
               "description": "Whether the stack will be deployed.",
               "title": "Enabled"
            },
            "in_progress_behavior": {
               "anyOf": [
                  {
                     "const": "wait",
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The action to take when a stack's status is CREATE_IN_PROGRESS or UPDATE_IN_PROGRESS when trying to update it.",
               "title": "Stack In Progress Behavior"
            },
            "locked": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "pattern": "^\\$\\{.+\\}$",
                     "type": "string"
                  }
               ],
               "default": false,
               "description": "Whether to limit updating of the stack.",
               "title": "Locked"
            },
            "name": {
               "description": "Name of the stack.",
               "title": "Stack Name",
               "type": "string"
            },
            "protected": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "pattern": "^\\$\\{.+\\}$",
                     "type": "string"
                  }
               ],
               "default": false,
               "description": "Whether to force all updates to the stack to be performed interactively.",
               "title": "Protected"
            },
            "required_by": {
               "default": [],
               "description": "Array of stacks (by name) that require this stack.",
               "items": {
                  "type": "string"
               },
               "title": "Required By",
               "type": "array"
            },
            "requires": {
               "default": [],
               "description": "Array of stacks (by name) that this stack requires.",
               "items": {
                  "type": "string"
               },
               "title": "Requires",
               "type": "array"
            },
            "stack_name": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Explicit name of the stack (namespace will still be prepended).",
               "title": "Explicit Stack Name"
            },
            "stack_policy_path": {
               "anyOf": [
                  {
                     "format": "path",
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Path to a stack policy document that will be applied to the CloudFormation stack.",
               "title": "Stack Policy Path"
            },
            "tags": {
               "additionalProperties": true,
               "default": {},
               "description": "Tags that will be applied to the CloudFormation stack.",
               "title": "Tags",
               "type": "object"
            },
            "template_path": {
               "anyOf": [
                  {
                     "format": "path",
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Path to a JSON or YAML formatted CloudFormation Template.",
               "title": "Template Path"
            },
            "termination_protection": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "pattern": "^\\$\\{.+\\}$",
                     "type": "string"
                  }
               ],
               "default": false,
               "description": "Set the value of termination protection on the CloudFormation stack.",
               "title": "Termination Protection"
            },
            "timeout": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The amount of time (in minutes) that can pass before the Stack status becomes CREATE_FAILED.",
               "title": "Timeout"
            },
            "variables": {
               "additionalProperties": true,
               "default": {},
               "description": "Parameter values that will be passed to the Blueprint/CloudFormation stack. (supports lookups)",
               "title": "Variables",
               "type": "object"
            }
         },
         "required": [],
         "title": "CFNgin Stack Definition",
         "type": "object"
      },
      "GitCfnginPackageSourceDefinitionModel": {
         "additionalProperties": false,
         "description": "Information about git repositories that should be included in the processing of this configuration file.",
         "properties": {
            "branch": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "examples": [
                  "ENV-dev",
                  "ENV-prod",
                  "master"
               ],
               "title": "Git Branch"
            },
            "commit": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Git Commit Hash"
            },
            "configs": {
               "default": [],
               "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
               "items": {
                  "type": "string"
               },
               "title": "Configs",
               "type": "array"
            },
            "paths": {
               "default": [],
               "description": "Array of paths relative to the root of the package source to add to $PATH.",
               "items": {
                  "type": "string"
               },
               "title": "Paths",
               "type": "array"
            },
            "tag": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "examples": [
                  "1.0.0",
                  "v1.0.0"
               ],
               "title": "Git Tag"
            },
            "uri": {
               "examples": [
                  "git@github.com:rackspace/runway.git"
               ],
               "title": "Git Repository URI",
               "type": "string"
            }
         },
         "required": [
            "uri"
         ],
         "title": "CFNgin Git Repository Package Source Definition",
         "type": "object"
      },
      "LocalCfnginPackageSourceDefinitionModel": {
         "additionalProperties": false,
         "description": "Information about local directories that should be included in the processing of this configuration file.",
         "properties": {
            "configs": {
               "default": [],
               "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
               "items": {
                  "type": "string"
               },
               "title": "Configs",
               "type": "array"
            },
            "paths": {
               "default": [],
               "description": "Array of paths relative to the root of the package source to add to $PATH.",
               "items": {
                  "type": "string"
               },
               "title": "Paths",
               "type": "array"
            },
            "source": {
               "description": "Path relative to the current configuration file that is the root of the local package source.",
               "title": "Source",
               "type": "string"
            }
         },
         "required": [
            "source"
         ],
         "title": "CFNgin Local Package Source Definition",
         "type": "object"
      },
      "S3CfnginPackageSourceDefinitionModel": {
         "additionalProperties": false,
         "description": "Information about a AWS S3 objects that should be downloaded, unzipped, and included in the processing of this configuration file.",
         "properties": {
            "bucket": {
               "title": "AWS S3 Bucket Name",
               "type": "string"
            },
            "configs": {
               "default": [],
               "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
               "items": {
                  "type": "string"
               },
               "title": "Configs",
               "type": "array"
            },
            "key": {
               "title": "AWS S3 Object Key",
               "type": "string"
            },
            "paths": {
               "default": [],
               "description": "Array of paths relative to the root of the package source to add to $PATH.",
               "items": {
                  "type": "string"
               },
               "title": "Paths",
               "type": "array"
            },
            "requester_pays": {
               "default": false,
               "description": "Confirms that the requester knows that they will be charged for the request.",
               "title": "Requester Pays",
               "type": "boolean"
            },
            "use_latest": {
               "default": true,
               "description": "Update the local copy if the last modified date in AWS S3 changes.",
               "title": "Use Latest",
               "type": "boolean"
            }
         },
         "required": [
            "bucket",
            "key"
         ],
         "title": "CFNgin S3 Package Source Definition",
         "type": "object"
      }
   },
   "required": [
      "namespace"
   ]
}

field cfngin_bucket: Annotated[str | None, Field(title='CFNgin Bucket', description='Name of an AWS S3 bucket to use for caching CloudFormation templates. Set as an empty string to disable caching.')] = None
field cfngin_bucket_region: Annotated[str | None, Field(title='CFNgin Bucket Region', description='AWS Region where the CFNgin Bucket is located. If not provided, the current region is used.')] = None
field cfngin_cache_dir: Annotated[Path | None, Field(title='CFNgin Cache Directory', description='Path to a local directory that CFNgin will use for local caching.')] = None
field log_formats: Annotated[dict[str, str], Field(description='Customize log message formatting by log level.')] = {}
field lookups: Annotated[dict[str, str], Field(description='Mapping of custom lookup names to a python importable path for the class that will be used to resolve the lookups.')] = {}
field mappings: Annotated[dict[str, dict[str, dict[str, Any]]], Field(description='Mappings that will be appended to all stack templates.')] = {}
field namespace: Annotated[str, Field(description='The namespace used to prefix stack names to create separation within an AWS account.')] = PydanticUndefined
field namespace_delimiter: Annotated[str, Field(description='Character used to separate the namespace and stack name when the namespace is prepended.')] = '-'
field package_sources: Annotated[CfnginPackageSourcesDefinitionModel, Field(description='Map of additional package sources to include when processing this configuration file.')] = CfnginPackageSourcesDefinitionModel(git=[], local=[], s3=[])
classmethod parse_file(path: str | Path) Self[source]

Parse a file.

field persistent_graph_key: Annotated[str | None, Field(description='Key for an AWS S3 object used to track a graph of stacks between executions.')] = None
field post_deploy: Annotated[list[CfnginHookDefinitionModel] | dict[str, CfnginHookDefinitionModel], Field(title='Post Deploy Hooks')] = []
field post_destroy: Annotated[list[CfnginHookDefinitionModel] | dict[str, CfnginHookDefinitionModel], Field(title='Pre Destroy Hooks')] = []
field pre_deploy: Annotated[list[CfnginHookDefinitionModel] | dict[str, CfnginHookDefinitionModel], Field(title='Pre Deploy Hooks')] = []
field pre_destroy: Annotated[list[CfnginHookDefinitionModel] | dict[str, CfnginHookDefinitionModel], Field(title='Pre Destroy Hooks')] = []
field service_role: Annotated[str | None, Field(title='Service Role ARN', description='Specify an IAM Role for CloudFormation to use.')] = None
field stacks: Annotated[list[CfnginStackDefinitionModel] | dict[str, CfnginStackDefinitionModel], Field(description='Define CloudFormation stacks using a Blueprint or Template.')] = []
field sys_path: Annotated[Path | None, Field(title='sys.path', description='Path to append to $PATH. This is also the root of relative paths.')] = None
field tags: Annotated[dict[str, str] | None, Field(description='Tags to try to apply to all resources created from this configuration file.')] = None
field template_indent: Annotated[int, Field(description='Number of spaces per indentation level to use when rendering/outputting CloudFormation templates.')] = 4
pydantic model runway.config.models.cfngin.CfnginHookDefinitionModel[source]

Bases: ConfigProperty

Model for a CFNgin hook definition.

Show JSON schema
{
   "title": "CFNgin Hook Definition",
   "description": "Python classes or functions run before or after deploy/destroy actions.",
   "type": "object",
   "properties": {
      "args": {
         "additionalProperties": true,
         "default": {},
         "description": "Arguments that will be passed to the hook. (supports lookups)",
         "title": "Arguments",
         "type": "object"
      },
      "data_key": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Key to use when storing the returned result of the hook.",
         "title": "Data Key"
      },
      "enabled": {
         "default": true,
         "description": "Whether the hook will be run.",
         "title": "Enabled",
         "type": "boolean"
      },
      "path": {
         "description": "Python importable path to the hook.",
         "title": "Path",
         "type": "string"
      },
      "required": {
         "default": true,
         "description": "Whether to continue execution if the hook results in an error.",
         "title": "Required",
         "type": "boolean"
      }
   },
   "additionalProperties": false,
   "required": [
      "path"
   ]
}

field args: Annotated[dict[str, Any], Field(title='Arguments', description='Arguments that will be passed to the hook. (supports lookups)')] = {}
field data_key: Annotated[str | None, Field(description='Key to use when storing the returned result of the hook.')] = None
field enabled: Annotated[bool, Field(description='Whether the hook will be run.')] = True
field path: Annotated[str, Field(description='Python importable path to the hook.')] = PydanticUndefined
field required: Annotated[bool, Field(description='Whether to continue execution if the hook results in an error.')] = True
pydantic model runway.config.models.cfngin.CfnginPackageSourcesDefinitionModel[source]

Bases: ConfigProperty

Model for a CFNgin package sources definition.

Show JSON schema
{
   "title": "CFNgin Package Sources Definition",
   "description": "Map of additional package sources to include when processing this configuration file.",
   "type": "object",
   "properties": {
      "git": {
         "default": [],
         "description": "Information about git repositories that should be included in the processing of this configuration file.",
         "items": {
            "$ref": "#/$defs/GitCfnginPackageSourceDefinitionModel"
         },
         "title": "CFNgin Git Repository Package Source Definitions",
         "type": "array"
      },
      "local": {
         "default": [],
         "description": "Information about local directories that should be included in the processing of this configuration file.",
         "items": {
            "$ref": "#/$defs/LocalCfnginPackageSourceDefinitionModel"
         },
         "title": "CFNgin Local Package Source Definitions",
         "type": "array"
      },
      "s3": {
         "default": [],
         "description": "Information about a AWS S3 objects that should be downloaded, unzipped, and included in the processing of this configuration file.",
         "items": {
            "$ref": "#/$defs/S3CfnginPackageSourceDefinitionModel"
         },
         "title": "CFNgin S3 Package Source Definitions",
         "type": "array"
      }
   },
   "$defs": {
      "GitCfnginPackageSourceDefinitionModel": {
         "additionalProperties": false,
         "description": "Information about git repositories that should be included in the processing of this configuration file.",
         "properties": {
            "branch": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "examples": [
                  "ENV-dev",
                  "ENV-prod",
                  "master"
               ],
               "title": "Git Branch"
            },
            "commit": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Git Commit Hash"
            },
            "configs": {
               "default": [],
               "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
               "items": {
                  "type": "string"
               },
               "title": "Configs",
               "type": "array"
            },
            "paths": {
               "default": [],
               "description": "Array of paths relative to the root of the package source to add to $PATH.",
               "items": {
                  "type": "string"
               },
               "title": "Paths",
               "type": "array"
            },
            "tag": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "examples": [
                  "1.0.0",
                  "v1.0.0"
               ],
               "title": "Git Tag"
            },
            "uri": {
               "examples": [
                  "git@github.com:rackspace/runway.git"
               ],
               "title": "Git Repository URI",
               "type": "string"
            }
         },
         "required": [
            "uri"
         ],
         "title": "CFNgin Git Repository Package Source Definition",
         "type": "object"
      },
      "LocalCfnginPackageSourceDefinitionModel": {
         "additionalProperties": false,
         "description": "Information about local directories that should be included in the processing of this configuration file.",
         "properties": {
            "configs": {
               "default": [],
               "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
               "items": {
                  "type": "string"
               },
               "title": "Configs",
               "type": "array"
            },
            "paths": {
               "default": [],
               "description": "Array of paths relative to the root of the package source to add to $PATH.",
               "items": {
                  "type": "string"
               },
               "title": "Paths",
               "type": "array"
            },
            "source": {
               "description": "Path relative to the current configuration file that is the root of the local package source.",
               "title": "Source",
               "type": "string"
            }
         },
         "required": [
            "source"
         ],
         "title": "CFNgin Local Package Source Definition",
         "type": "object"
      },
      "S3CfnginPackageSourceDefinitionModel": {
         "additionalProperties": false,
         "description": "Information about a AWS S3 objects that should be downloaded, unzipped, and included in the processing of this configuration file.",
         "properties": {
            "bucket": {
               "title": "AWS S3 Bucket Name",
               "type": "string"
            },
            "configs": {
               "default": [],
               "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
               "items": {
                  "type": "string"
               },
               "title": "Configs",
               "type": "array"
            },
            "key": {
               "title": "AWS S3 Object Key",
               "type": "string"
            },
            "paths": {
               "default": [],
               "description": "Array of paths relative to the root of the package source to add to $PATH.",
               "items": {
                  "type": "string"
               },
               "title": "Paths",
               "type": "array"
            },
            "requester_pays": {
               "default": false,
               "description": "Confirms that the requester knows that they will be charged for the request.",
               "title": "Requester Pays",
               "type": "boolean"
            },
            "use_latest": {
               "default": true,
               "description": "Update the local copy if the last modified date in AWS S3 changes.",
               "title": "Use Latest",
               "type": "boolean"
            }
         },
         "required": [
            "bucket",
            "key"
         ],
         "title": "CFNgin S3 Package Source Definition",
         "type": "object"
      }
   },
   "additionalProperties": false
}

field git: list[GitCfnginPackageSourceDefinitionModel] = []

Package source located in a git repo.

field local: list[LocalCfnginPackageSourceDefinitionModel] = []

Package source located on a local disk.

field s3: list[S3CfnginPackageSourceDefinitionModel] = []

Package source located in AWS S3.

pydantic model runway.config.models.cfngin.CfnginStackDefinitionModel[source]

Bases: ConfigProperty

Model for a CFNgin stack definition.

Show JSON schema
{
   "title": "CFNgin Stack Definition",
   "description": "Define CloudFormation stacks using a Blueprint or Template.",
   "type": "object",
   "properties": {
      "class_path": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Python importable path to a blueprint class.",
         "title": "Blueprint Class Path"
      },
      "description": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "A description that will be applied to the stack in CloudFormation.",
         "title": "Stack Description"
      },
      "enabled": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "pattern": "^\\$\\{.+\\}$",
               "type": "string"
            }
         ],
         "default": true,
         "description": "Whether the stack will be deployed.",
         "title": "Enabled"
      },
      "in_progress_behavior": {
         "anyOf": [
            {
               "const": "wait",
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The action to take when a stack's status is CREATE_IN_PROGRESS or UPDATE_IN_PROGRESS when trying to update it.",
         "title": "Stack In Progress Behavior"
      },
      "locked": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "pattern": "^\\$\\{.+\\}$",
               "type": "string"
            }
         ],
         "default": false,
         "description": "Whether to limit updating of the stack.",
         "title": "Locked"
      },
      "name": {
         "description": "Name of the stack.",
         "title": "Stack Name",
         "type": "string"
      },
      "protected": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "pattern": "^\\$\\{.+\\}$",
               "type": "string"
            }
         ],
         "default": false,
         "description": "Whether to force all updates to the stack to be performed interactively.",
         "title": "Protected"
      },
      "required_by": {
         "default": [],
         "description": "Array of stacks (by name) that require this stack.",
         "items": {
            "type": "string"
         },
         "title": "Required By",
         "type": "array"
      },
      "requires": {
         "default": [],
         "description": "Array of stacks (by name) that this stack requires.",
         "items": {
            "type": "string"
         },
         "title": "Requires",
         "type": "array"
      },
      "stack_name": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Explicit name of the stack (namespace will still be prepended).",
         "title": "Explicit Stack Name"
      },
      "stack_policy_path": {
         "anyOf": [
            {
               "format": "path",
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Path to a stack policy document that will be applied to the CloudFormation stack.",
         "title": "Stack Policy Path"
      },
      "tags": {
         "additionalProperties": true,
         "default": {},
         "description": "Tags that will be applied to the CloudFormation stack.",
         "title": "Tags",
         "type": "object"
      },
      "template_path": {
         "anyOf": [
            {
               "format": "path",
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Path to a JSON or YAML formatted CloudFormation Template.",
         "title": "Template Path"
      },
      "termination_protection": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "pattern": "^\\$\\{.+\\}$",
               "type": "string"
            }
         ],
         "default": false,
         "description": "Set the value of termination protection on the CloudFormation stack.",
         "title": "Termination Protection"
      },
      "timeout": {
         "anyOf": [
            {
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The amount of time (in minutes) that can pass before the Stack status becomes CREATE_FAILED.",
         "title": "Timeout"
      },
      "variables": {
         "additionalProperties": true,
         "default": {},
         "description": "Parameter values that will be passed to the Blueprint/CloudFormation stack. (supports lookups)",
         "title": "Variables",
         "type": "object"
      }
   },
   "additionalProperties": false,
   "required": []
}

field class_path: Annotated[str | None, Field(title='Blueprint Class Path', description='Python importable path to a blueprint class.')] = None

Python importable path to a blueprint class.

field description: Annotated[str | None, Field(title='Stack Description', description='A description that will be applied to the stack in CloudFormation.')] = None

A description that will be applied to the stack in CloudFormation.

field enabled: Annotated[bool, Field(description='Whether the stack will be deployed.')] = True

Whether the stack will be deployed.

field in_progress_behavior: Annotated[Literal['wait'] | None, Field(title='Stack In Progress Behavior', description="The action to take when a stack's status is CREATE_IN_PROGRESS or UPDATE_IN_PROGRESS when trying to update it.")] = None

The action to take when a Stack’s status is CREATE_IN_PROGRESS or UPDATE_IN_PROGRESS when trying to update it.

field locked: Annotated[bool, Field(description='Whether to limit updating of the stack.')] = False

Whether to limit updating of the stack.

field name: Annotated[str, Field(title='Stack Name', description='Name of the stack.')] = PydanticUndefined

Name of the stack.

field protected: Annotated[bool, Field(description='Whether to force all updates to the stack to be performed interactively.')] = False

Whether to force all updates to the stack to be performed interactively.

field required_by: Annotated[list[str], Field(description='Array of stacks (by name) that require this stack.')] = []

Array of stacks (by name) that require this stack.

field requires: Annotated[list[str], Field(description='Array of stacks (by name) that this stack requires.')] = []

Array of stacks (by name) that this stack requires.

field stack_name: Annotated[str | None, Field(title='Explicit Stack Name', description='Explicit name of the stack (namespace will still be prepended).')] = None

Explicit name of the stack (namespace will still be prepended).

field stack_policy_path: Annotated[Path | None, Field(description='Path to a stack policy document that will be applied to the CloudFormation stack.')] = None

Path to a stack policy document that will be applied to the CloudFormation stack.

field tags: Annotated[dict[str, Any], Field(description='Tags that will be applied to the CloudFormation stack.')] = {}

Tags that will be applied to the CloudFormation stack.

field template_path: Annotated[Path | None, Field(description='Path to a JSON or YAML formatted CloudFormation Template.')] = None

Path to a JSON or YAML formatted CloudFormation Template.

field termination_protection: Annotated[bool, Field(description='Set the value of termination protection on the CloudFormation stack.')] = False

Set the value of termination protection on the CloudFormation stack.

field timeout: Annotated[int | None, Field(description='The amount of time (in minutes) that can pass before the Stack status becomes CREATE_FAILED.')] = None

The amount of time (in minutes) that can pass before the Stack status becomes CREATE_FAILED.

field variables: Annotated[dict[str, Any], Field(description='Parameter values that will be passed to the Blueprint/CloudFormation stack. (supports lookups)')] = {}

Parameter values that will be passed to the Blueprint/CloudFormation stack. (supports lookups)

pydantic model runway.config.models.cfngin.GitCfnginPackageSourceDefinitionModel[source]

Bases: ConfigProperty

Model for a git package source definition.

Package source located in a git repository.

Show JSON schema
{
   "title": "CFNgin Git Repository Package Source Definition",
   "description": "Information about git repositories that should be included in the processing of this configuration file.",
   "type": "object",
   "properties": {
      "branch": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "examples": [
            "ENV-dev",
            "ENV-prod",
            "master"
         ],
         "title": "Git Branch"
      },
      "commit": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Git Commit Hash"
      },
      "configs": {
         "default": [],
         "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
         "items": {
            "type": "string"
         },
         "title": "Configs",
         "type": "array"
      },
      "paths": {
         "default": [],
         "description": "Array of paths relative to the root of the package source to add to $PATH.",
         "items": {
            "type": "string"
         },
         "title": "Paths",
         "type": "array"
      },
      "tag": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "examples": [
            "1.0.0",
            "v1.0.0"
         ],
         "title": "Git Tag"
      },
      "uri": {
         "examples": [
            "git@github.com:rackspace/runway.git"
         ],
         "title": "Git Repository URI",
         "type": "string"
      }
   },
   "additionalProperties": false,
   "required": [
      "uri"
   ]
}

field branch: Annotated[str | None, Field(title='Git Branch', examples=['ENV-dev', 'ENV-prod', 'master'])] = None

Branch name.

field commit: Annotated[str | None, Field(title='Git Commit Hash')] = None

Commit hash.

field configs: Annotated[list[str], Field(description='Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.')] = []

List of CFNgin config paths to execute.

field paths: Annotated[list[str], Field(description='Array of paths relative to the root of the package source to add to $PATH.')] = []

List of paths to append to sys.path.

field tag: Annotated[str | None, Field(title='Git Tag', examples=['1.0.0', 'v1.0.0'])] = None

Git tag.

field uri: Annotated[str, Field(title='Git Repository URI', examples=['git@github.com:rackspace/runway.git'])] = PydanticUndefined

Remote git repo URI.

pydantic model runway.config.models.cfngin.LocalCfnginPackageSourceDefinitionModel[source]

Bases: ConfigProperty

Model for a CFNgin local package source definition.

Package source located on a local disk.

Show JSON schema
{
   "title": "CFNgin Local Package Source Definition",
   "description": "Information about local directories that should be included in the processing of this configuration file.",
   "type": "object",
   "properties": {
      "configs": {
         "default": [],
         "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
         "items": {
            "type": "string"
         },
         "title": "Configs",
         "type": "array"
      },
      "paths": {
         "default": [],
         "description": "Array of paths relative to the root of the package source to add to $PATH.",
         "items": {
            "type": "string"
         },
         "title": "Paths",
         "type": "array"
      },
      "source": {
         "description": "Path relative to the current configuration file that is the root of the local package source.",
         "title": "Source",
         "type": "string"
      }
   },
   "additionalProperties": false,
   "required": [
      "source"
   ]
}

field configs: Annotated[list[str], Field(description='Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.')] = []

List of CFNgin config paths to execute.

field paths: Annotated[list[str], Field(description='Array of paths relative to the root of the package source to add to $PATH.')] = []

List of paths to append to sys.path.

field source: Annotated[str, Field(description='Path relative to the current configuration file that is the root of the local package source.')] = PydanticUndefined

Source.

pydantic model runway.config.models.cfngin.S3CfnginPackageSourceDefinitionModel[source]

Bases: ConfigProperty

Model for a CFNgin S3 package source definition.

Package source located in AWS S3.

Show JSON schema
{
   "title": "CFNgin S3 Package Source Definition",
   "description": "Information about a AWS S3 objects that should be downloaded, unzipped, and included in the processing of this configuration file.",
   "type": "object",
   "properties": {
      "bucket": {
         "title": "AWS S3 Bucket Name",
         "type": "string"
      },
      "configs": {
         "default": [],
         "description": "Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.",
         "items": {
            "type": "string"
         },
         "title": "Configs",
         "type": "array"
      },
      "key": {
         "title": "AWS S3 Object Key",
         "type": "string"
      },
      "paths": {
         "default": [],
         "description": "Array of paths relative to the root of the package source to add to $PATH.",
         "items": {
            "type": "string"
         },
         "title": "Paths",
         "type": "array"
      },
      "requester_pays": {
         "default": false,
         "description": "Confirms that the requester knows that they will be charged for the request.",
         "title": "Requester Pays",
         "type": "boolean"
      },
      "use_latest": {
         "default": true,
         "description": "Update the local copy if the last modified date in AWS S3 changes.",
         "title": "Use Latest",
         "type": "boolean"
      }
   },
   "additionalProperties": false,
   "required": [
      "bucket",
      "key"
   ]
}

field bucket: Annotated[str, Field(title='AWS S3 Bucket Name')] = PydanticUndefined

AWS S3 bucket name.

field configs: Annotated[list[str], Field(description='Array of paths relative to the root of the package source for configuration that should be merged into the current configuration file.')] = []

List of CFNgin config paths to execute.

field key: Annotated[str, Field(title='AWS S3 Object Key')] = PydanticUndefined

Object key. The object should be a zip file.

field paths: Annotated[list[str], Field(description='Array of paths relative to the root of the package source to add to $PATH.')] = []

List of paths to append to sys.path.

field requester_pays: Annotated[bool, Field(description='Confirms that the requester knows that they will be charged for the request.')] = False

AWS S3 requester pays option.

field use_latest: Annotated[bool, Field(description='Update the local copy if the last modified date in AWS S3 changes.')] = True

Use the latest version of the object.