heat.engine.stack module

class heat.engine.stack.ConvergenceNode(rsrc_id, is_update)

基类: tuple

is_update

字段编号 1 的别名

rsrc_id

字段编号 0 的别名

exception heat.engine.stack.ForcedCancel(with_rollback=True)[source]

基础: Exception

引发以取消任务执行的异常。

class heat.engine.stack.Stack(context, stack_name, tmpl, stack_id=None, action=None, status=None, status_reason='', timeout_mins=None, disable_rollback=True, parent_resource=None, owner_id=None, adopt_stack_data=None, stack_user_project_id=None, created_time=None, updated_time=None, user_creds_id=None, tenant_id=None, use_stored_context=False, username=None, nested_depth=0, strict_validate=True, convergence=False, current_traversal=None, tags=None, prev_raw_template_id=None, current_deps=None, cache_data=None, deleted_time=None, converge=False, refresh_cred=False)[source]

基类: Mapping

ACTIONS = ('CREATE', 'DELETE', 'UPDATE', 'ROLLBACK', 'SUSPEND', 'RESUME', 'ADOPT', 'SNAPSHOT', 'CHECK', 'RESTORE')
ADOPT = 'ADOPT'
CHECK = 'CHECK'
COMPLETE = 'COMPLETE'
CREATE = 'CREATE'
DELETE = 'DELETE'
FAILED = 'FAILED'
IN_PROGRESS = 'IN_PROGRESS'
RESTORE = 'RESTORE'
RESUME = 'RESUME'
ROLLBACK = 'ROLLBACK'
SNAPSHOT = 'SNAPSHOT'
STATUSES = ('IN_PROGRESS', 'FAILED', 'COMPLETE')
SUSPEND = 'SUSPEND'
UPDATE = 'UPDATE'
access_allowed(credential_id, resource_name)[source]

是否允许 credential_id 通过 resource_name 访问资源。

add_resource(resource)[source]

将给定的资源插入到堆栈中。

adopt()[source]

采用现有资源到新的堆栈中。

check(notify=None)[source]
converge_stack(template, action='UPDATE', new_stack=None, pre_converge=None)[source]

更新堆栈模板并触发资源的收敛。

property convergence_dependencies
create(msg_queue=None)[source]

创建堆栈和所有资源。

create_stack_user_project_id()[source]
db_active_resources_get()[source]
db_resource_get(name)[source]
defer_state_persist()[source]

返回是否延迟持久化状态。

如果持久化被延迟,则新的状态不会写入数据库,直到堆栈锁被释放(通过调用 persist_state_and_release_lock())。这可以防止旧路径中的竞争条件,在该路径中观察者看到堆栈 COMPLETE,但引擎仍然持有锁。

delete(action='DELETE', backup=False, abandon=False, notify=None)[source]

删除所有资源,然后删除堆栈本身。

action 参数用于区分用户发起的删除和在创建失败后自动堆栈回滚,这两者在本质上是相同的,但状态记录的方式不同。

注意,abandon 是一种删除,其中所有资源都设置为 RETAIN 删除策略,但我们也不希望删除任何为这些资源所需的资源,例如 stack_user_project。

delete_all_snapshots()[source]

删除此堆栈的所有快照。

delete_snapshot(snapshot)[source]

从后端删除快照。

property dependencies
dependent_resource_ids(resource_id)[source]

返回依赖于其他资源的资源 ID 集合。

给定一个资源 ID,返回所有依赖于该资源的资源 ID 集合 - 也就是说,在清理给定资源之前必须清理哪些资源。

dispatch_event(ev)[source]
property env

堆栈环境

get_availability_zones()[source]
get_kwargs_for_cloning(keep_status=False, only_db=False, keep_tags=False)[source]

获取用于克隆的常见 kwargs。

此方法的作用是减少在修改 Stack.__init__() 的 kwarg 时需要更新的地方数量。 否则,如果丢失了某个选项,很容易忘记并导致一些意外错误。

注意

  • 这不会返回 args(name, template),而只返回 kwargs。

  • 我们通常希望从“头”开始,因此不想保留旧的状态、操作和状态原因。

  • 我们有时只想保留数据库属性。

get_nested_parameters(filter_func)[source]

返回嵌套参数模式(如果有)。

此方法内省资源以返回嵌套堆栈的参数。 它使用 get_nested_parameters_stack API 构建堆栈。

has_timed_out()[source]

如果此堆栈已超时,则返回 True。

identifier()[source]

返回此堆栈的标识符。

iter_resources(nested_depth=0, filters=None)[source]

迭代堆栈中的所有资源。

迭代包括嵌套堆栈,深度最多为 nested_depth 层。

classmethod load(context, stack_id=None, stack=None, show_deleted=True, use_stored_context=False, force_reload=False, cache_data=None, load_template=True, check_refresh_cred=False)[source]

从数据库检索堆栈。

classmethod load_all(context, limit=None, marker=None, sort_keys=None, sort_dir=None, filters=None, show_deleted=False, show_nested=False, show_hidden=False, tags=None, tags_any=None, not_tags=None, not_tags_any=None)[source]
mark_complete()[source]

将收敛更新标记为完成。

mark_failed(failure_reason)[source]

将收敛更新标记为失败。

migrate_to_convergence()[source]
object_path_in_stack()[source]

返回根堆栈中的堆栈资源和堆栈路径。

如果这不是嵌套堆栈,则返回 (None, self),否则返回从根堆栈开始的堆栈资源和堆栈路径,包括此堆栈。

请注意,这效率很低,因为它需要我们同时将链中的每个堆栈加载到内存中,直到根堆栈。

返回值:

一个 (stack_resource, stack) 元组列表。

property outputs
property parameters
property parent_resource

动态加载 parent_resource。

注意:这仅应由“Fn::ResourceFacade”使用

property parent_resource_name
path_in_stack()[source]

返回从根堆栈开始的堆栈路径中的名称元组。

如果这不是嵌套堆栈,则返回 (None, self.name),否则返回从根堆栈开始的堆栈资源和堆栈路径中的名称元组(stack_resource.name,stack.name),包括此堆栈。

返回值:

一个 (string, string) 元组列表。

persist_state_and_release_lock(engine_id)[source]

将堆栈状态持久化到数据库并释放堆栈锁

prepare_abandon()[source]
preview_resources()[source]

预览包含所有资源的堆栈。

purge_db()[source]

在堆栈完成/失败后清理数据库。

  1. 从数据库中删除资源。

  2. 如果堆栈失败,则将 current_traversal 更新为空字符串,以便资源工作线程退出。

  3. 如果堆栈成功完成,则删除以前的原始模板。

  4. 删除所有同步点。 在堆栈完成/失败后不再需要它们。

  5. 如果操作是 DELETE,则删除堆栈。

register_access_allowed_handler(credential_id, handler)[source]

注册授权处理程序函数。

注册一个函数,用于确定具有给定 ID 的凭据是否可以访问命名资源。

remove_resource(resource_name)[source]

删除具有指定名称的资源。

requires_deferred_auth()[source]

确定是否使用延迟授权执行 API 请求。

返回此堆栈是否可能在其生命周期内使用配置的延迟身份验证方法执行 API 请求。

reset_dependencies()[source]
reset_stack_and_resources_in_progress(reason)[source]
resource_by_refid(refid)[source]

返回具有指定 refid 的堆栈中的资源。

返回值:

堆栈中具有指定 refid 的资源,如果未找到则返回 None。

resource_get(name)[source]

返回堆栈资源,即使它不在当前模板中。

property resources
restore(snapshot, notify=None)[source]

恢复给定的快照。

对所有资源调用 handle_restore。

restore_data(snapshot)[source]
resume(notify=None)[source]

恢复堆栈。

对所有堆栈资源调用 handle_resume。

等待所有资源变为 RESUME_COMPLETE,然后声明堆栈 RESUME_COMPLETE。请注意,所有资源的默认实现只是移动到 RESUME_COMPLETE,因此要使此操作有效,资源必须实现 handle_resume。

rollback()[source]
root_stack_id()[source]
set_parent_stack(parent_stack)[source]
set_stack_user_project_id(project_id)[source]
snapshot(save_snapshot_func)[source]

对堆栈进行快照,对所有资源调用 handle_snapshot。

stack_task(action, reverse=False, post_func=None, aggregate_exceptions=False, pre_completion_func=None, notify=None)[source]

执行堆栈操作的任务。

以正向或反向依赖顺序遍历所有资源。

参数:
  • action – 应与堆栈资源一起执行的操作

  • reverse – 定义是否需要以反向依赖顺序执行资源上的操作

  • post_func – 在堆栈上完成操作后需要执行的函数

  • aggregate_exceptions – 定义是否应聚合异常

  • pre_completion_func – 在操作完成之前需要执行的函数;使用堆栈、操作、状态和原因作为输入参数

property state

返回状态,操作、状态的元组。

state_set(action, status, reason)[source]

更新堆栈状态。

store(backup=False, exp_trvsl=None, ignore_traversal_check=False, use_stored_context=False)[source]

将堆栈存储在数据库中并返回其 ID。

如果设置了 self.id,则更新现有的堆栈。

stored_context()[source]
supports_check_action()[source]
suspend(notify=None)[source]

暂停堆栈。

对所有堆栈资源调用 handle_suspend。

等待所有资源变为 SUSPEND_COMPLETE,然后声明堆栈 SUSPEND_COMPLETE。请注意,所有资源的默认实现只是移动到 SUSPEND_COMPLETE,因此要使此操作有效,资源必须实现 handle_suspend。

property t

堆栈模板。

property tags
time_elapsed()[source]

自堆栈操作开始以来经过的秒数。

time_remaining()[source]

堆栈超时前剩余的时间。

timeout_secs()[source]

返回堆栈操作超时时间(秒)。

total_resources(stack_id=None)[source]

返回堆栈中的资源总数。

包括下面的嵌套堆栈。

update(newstack, msg_queue=None, notify=None)[source]

更新堆栈。

比较当前堆栈与 newstack,并在必要时创建/更新/删除资源,直到此堆栈与 newstack 对齐。

请注意,现有堆栈资源的更新取决于底层资源类型是否实现了更新。

如果更新超过指定的超时时间,则更新将失败。默认值为 60 分钟,在构造函数中设置

update_task(newstack, action='UPDATE', msg_queue=None, notify=None)[source]
validate(ignorable_errors=None, validate_res_tmpl_only=False)[source]

验证堆栈。

property worker_client

返回用于进行引擎 RPC 调用客户端。

heat.engine.stack.reset_state_on_error(func)[source]