heat.engine.resource module¶
- exception heat.engine.resource.NoActionRequired(res_name='Unknown', reason='')[source]¶
基础:
Exception当信号被忽略时引发的异常。
资源子类应从 handle_signal() 引发此异常,以抑制记录与信号对应的事件。
- exception heat.engine.resource.PollDelay(period)[source]¶
基础:
Exception用于延迟资源轮询的异常。
此异常可以由资源子类的 check_*_complete() 方法引发,以指示无需立即再次轮询。如果引发此异常,则在资源再次有资格进行轮询之前,将不会再次调用 check_*_complete() 方法。PollDelay 周期为 1 等效于返回 False。
- class heat.engine.resource.Resource(name, definition, stack)[source]¶
基类:
ResourceStatus- BASE_ATTRIBUTES = ('show',)¶
- LOCK_ACQUIRE = 1¶
- LOCK_ACTIONS = (None, 1, -1, 0)¶
- LOCK_NONE = None¶
- LOCK_RELEASE = -1¶
- LOCK_RESPECT = 0¶
- SHOW = 'show'¶
- action_handler_task(action, args=None, action_prefix=None)[source]¶
一个任务,用于调用资源子类的处理方法来执行操作。
调用给定操作的 handle_<ACTION>() 方法,然后在循环中调用 check_<ACTION>_complete() 方法,直到它返回 True。如果未提供这些方法,则省略调用。
提供的任何参数都将传递给处理程序。
如果提供了前缀,则调用 handle_<PREFIX>_<ACTION>() 方法而不是 handle_<ACTION>() 方法。
- add_dependencies(deps)[source]¶
添加特定于资源类型的隐式依赖项。
某些资源类型可能对相同堆栈中的其他资源具有隐式依赖项,这些依赖项不由属性值链接(通过使用 get_resource 或 get_attr 设置,从而创建显式依赖项)。此类依赖项对用户不透明,应尽可能避免,但是,在某些情况下,由于底层 API 中的魔术,它们是必需的。
deps 参数是可向其添加依赖项对的 Dependencies 对象。
- always_replace_on_check_failed = True¶
- attributes_schema = {}¶
- base_attributes_schema = {'show': <heat.engine.attributes.Schema object>}¶
- static build_template_dict(res_name, res_type, tmpl_type, params, props, outputs, description)[source]¶
- check()[source]¶
检查物理资源是否处于其预期状态。
获取物理资源的当前状态,并相应地更新数据库。如果资源不支持检查,则默认操作是失败并将资源的状态恢复到其原始状态,并添加消息说明未执行检查。
- create_convergence(template_id, requires, engine_id, timeout, progress_callback=None)[source]¶
通过调用调度器 TaskRunner 创建资源。
- default_client_name = None¶
- delete_convergence(template_id, engine_id, timeout, progress_callback=None)[source]¶
如果资源不属于给定的模板,则销毁该资源。
给定的模板应该是当前正在配置的模板。
此外,由于此资源作为清理阶段的一部分被访问,因此应更新 needed_by。 如果此资源被更新的资源替换,则删除此资源并更新替换资源的 replaces 字段。
- entity = None¶
- property external_id¶
- frozen_definition()[source]¶
返回一个包含存储属性值的冻结的 ResourceDefinition。
返回的定义将包含从数据库读取的属性值,并且所有固有函数都将被解析(请注意,这使其无法用于计算依赖关系)。
- get_live_state(resource_properties)[source]¶
默认实现;应由资源覆盖。
- 参数:
resource_properties – 资源的 Properties 类的对象。
- 返回值:
资源属性的实际状态的字典。
- handle_metadata_reset()[source]¶
默认实现;应由资源覆盖。
现在我们覆盖此方法以重置 scale-policy 和 scale-group 资源的元数据,因为如果引擎在缩放时重新启动,它们的元数据可能会停留在错误的状态(‘scaling_in_progress’ 始终为 True)。
- handle_preempt()[source]¶
当有新的更新可用时,抢占正在进行的更新。
当先前的收敛更新正在进行但资源有新的更新可用时,调用此方法。 默认情况下,它不执行任何操作,但子类可以覆盖它以取消正在进行的更新(如果这样做是安全的)。
请注意,此方法不在正在进行的更新的上下文中运行,并且无法访问有关它的运行时信息; 也不安全对数据库中的资源进行更改。 如果实现,此方法应通过外部方式完成现有的更新。 如果这使资源处于 FAILED 状态,则应在 needs_replace_failed() 中加以考虑。
- has_interface(resource_type)[source]¶
检查资源是否映射到 resource_type 或是“resource_type”。
检查此资源是否映射到 resource_type 或是“resource_type”。
- has_nested()[source]¶
如果资源具有现有的嵌套堆栈,则返回 True。
对于大多数资源类型,这将始终返回 False。 StackResource 子类在适当的时候返回 True。 具有返回 True 的可能性的资源子类还必须提供一个 nested_identifier() 方法来返回嵌套堆栈的标识符,以及一个 nested() 方法来返回嵌套堆栈的 Stack 对象。
- classmethod load(context, resource_id, current_traversal, is_update, data)[source]¶
从数据库加载指定的资源以进行检查。
返回一个元组,其中包含 Resource、与资源的 ResourceDefinition 对应的 StackDefinition(即上次更新的资源更新到的资源,或者尚未创建则将要创建的资源),以及包含最新 StackDefinition 的 Stack(即正在更新到的最新遍历)。
后两者必须保持在范围内,因为 Resource 包含对它们的弱引用。
- make_replacement(new_tmpl_id, requires)[source]¶
在数据库中创建一个替换资源。
返回新资源的 DB ID,如果无法创建新资源(通常是因为模板 ID 不存在),则返回 None。 如果另一个遍历已经锁定当前资源,则引发 UpdateInProgress。
- metadata_set(metadata, merge_metadata=None)[source]¶
将新的元数据写入数据库。
调用者可以选择提供一个 merge_metadata() 函数,该函数接受两个参数 - 传递给 metadata_set() 的元数据和资源的当前元数据 - 并返回要写入的合并后的元数据。 如果未提供 merge_metadata,则传递给 metadata_set() 的元数据将按原样写入,覆盖任何现有的元数据。
如果检测到竞争条件,则将使用 merge_metadata() 的新结果(如果提供)或按原样的数据(如果未提供)重试写入。
- needs_replace_with_prop_diff(changed_properties_set, after_props, before_props)[source]¶
基于 prop_diff 需要替换。
- no_signal_actions = ('SUSPEND', 'DELETE')¶
- node_data(stk_defn=None, for_resources=True, for_outputs=False)[source]¶
返回表示资源的 NodeData 对象。
返回的 NodeData 对象包含有关资源的的基本数据,包括其名称、ID 和状态,以及其引用 ID 和任何使用的属性值。
默认情况下,将包含由其他资源引用的那些属性值。 可以通过将 for_resources 参数设置为 False 来忽略这些属性值。 如果 for_outputs 参数为 True,则将包含由堆栈输出引用的那些属性值。 如果 for_outputs 参数是输出名称的可迭代对象,则仅包含由指定的堆栈输出引用的那些属性值。
引用的属性集是从提供的 StackDefinition 对象计算得出的,或者如果未传递任何对象,则从堆栈的当前定义计算得出。
调用此方法后,资源的属性缓存将填充任何由堆栈输出引用的可缓存属性值,即使它们也未被其他资源引用。
- parse_live_resource_data(resource_properties, resource_data)[source]¶
默认实现;可以被资源覆盖。
解析资源数据,以便将其用于使用实时状态更新属性。 :param resource_properties: 存储的资源插件的属性。 :param resource_data: 来自资源当前实时状态的数据。
- physical_resource_name_limit = 255¶
- preview_update(after, before, after_props, before_props, prev_resource, check_init_complete=False)[source]¶
模拟更新,而无需实际更新资源。
如果需要替换,则引发 UpdateReplace,或者如果需要就地更新,则返回 True。
- static reduce_physical_resource_name(name, limit)[source]¶
将物理资源名称的长度减少到限制。
缩减后的名称将由以下内容组成
名称的前 2 个字符
一个连字符
名称的结尾,从左侧截断以使名称长度在限制范围内
- 参数:
name – 要缩减长度的名称
limit – 最大长度限制
- 返回值:
长度小于或等于限制的名称
- referenced_attrs(stk_defn=None, in_resources=True, in_outputs=True, load_all=False)[source]¶
返回模板中引用的所有属性的集合。
这使资源能够计算其哪些属性将被使用。 默认情况下,将包含由其他资源或输出引用的那些属性。 可以通过将 in_resources 或 in_outputs 参数设置为 False 来排除这些属性。 如果 in_outputs 参数是输出名称的可迭代对象,则仅包含由指定的堆栈输出引用的那些属性。
引用的属性集是从提供的 StackDefinition 对象计算得出的,或者如果未传递任何对象,则从堆栈的当前定义计算得出。
- regenerate_info_schema(definition)[source]¶
默认实现;应由资源覆盖。
应由需要在更新期间刷新模式的资源覆盖,例如 TemplateResource。
- 定义:
资源定义
- reparse(client_resolve=True)[source]¶
重新解析资源属性。
可选的 translate 标志用于属性转换,client_resolve 标志用于通过执行客户端查找来解析属性。
- required_service_extension = None¶
- requires_deferred_auth = False¶
- classmethod resource_to_template(resource_type, template_type='cfn')[source]¶
生成镜像资源的提供程序模板。
- 参数:
resource_type – 要在模板中显示的资源类型
template_type – 要生成的模板类型,cfn 或 hot。
- 返回值:
一个模板,其中资源的 properties_schema 映射为参数,资源的 attributes_schema 映射为输出
- signal(details=None, need_check=True)[source]¶
向资源发送信号。
如果由于信号导致堆栈的所有资源的元数据需要重新生成,则返回 True,否则返回 False。
子类应提供 handle_signal() 方法来实现信号。如果未实现处理程序,则基类会引发异常。
- signal_needs_metadata_updates = True¶
- property stack¶
- property state¶
返回状态,操作和状态的元组。
- strict_dependency = True¶
- support_status = <heat.engine.support.SupportStatus object>¶
- translate_properties(properties, client_resolve=True, ignore_resolve_error=False)[source]¶
设置资源特定的属性转换规则。
properties 参数是一个属性对象,可选的 client_resolve 标志用于指定是否使用客户端查找进行“RESOLVE”转换。
- update(after, before=None, prev_resource=None, new_template_id=None, new_requires=None)[source]¶
返回一个任务以更新资源。
子类应提供 handle_update() 方法来自定义更新,默认情况下,基类 handle_update 将失败。
- update_allowed_properties = ()¶
- update_convergence(template_id, new_requires, engine_id, timeout, new_stack, progress_callback=None)[source]¶
同步更新资源。
将资源的 current_template_id 持续到 template_id,并将资源的 requires 更新为从给定的 resource_data 和现有资源的 requires 中获取的所需资源 ID 列表,然后通过调用 scheduler TaskRunner 更新资源。
- update_policy_schema = {}¶
- update_template_diff(after, before)[source]¶
返回 before 和 after json 片段之间的差异。
如果在 after 中删除了在 before 中存在的某个内容,则将其设置为 None。