必须对 vRealize Orchestrator 工作流进行配置,以使其支持 IaaS 服务消息。

置备和生命周期事件主题架构

计算机置备和计算机生命周期事件主题使用相同的生命周期架构。两者的区别在于触发状态不同。计算机置备基于置备状态和事件接收消息,而计算机生命周期基于活动状态和事件接收消息。部分置备状态包括 BuildingMachine 和 Disposing。部分生命周期状态包括 InstallTools 和 Off。

事件消息是事件数据负载。以下是事件数据负载的结构。

{
  machine : {
      id                : STRING,      /* IaaS machine ID */
      name              : STRING,      /* machine name */
      externalReference : STRING,      /* machine ID on the hypervisor */
      owner             : STRING,      /* machine owner */ 
      type              : INTEGER,     /* machine type: 0 - virtual machine; 1 - physical machine; 2 - cloud machine */ 
      properties        : Properties   /* machine properties, see notes below how to expose virtual machine properties */            
  },
  blueprintName   : STRING,      /* blueprint name */
  componentId     : STRING,      /* component id */
  componentTypeId : STRING,      /* component type id */
  endpointId      : STRING,      /* endpoint id */
  requestId       : STRING,      /* request id */
  lifecycleState  : {												/* see Life Cycle State Definitions*/
      state : STRING,
      phase : STRING,
      event : STRING
  },
  virtualMachineEvent                 : STRING,     /* fire an event on that machine - only processed by Manager Service as consumer */
  workflowNextState                   : STRING,     /* force the workflow to a specific state - only processed by Manager Service as consumer */
  virtualMachineAddOrUpdateProperties : Properties, /* properties on the machine to add/update - only processed by Manager Service as consumer */
  virtualMachineDeleteProperties      : Properties  /* properties to remove from the machine - only processed by Manager Service as consumer */
}

vRealize Orchestrator 参数按名称和类型映射到事件的负载。

当您使用 virtualMachineEventworkflowNextState 作为输出参数时,您提供的值必须表示来自触发事件和开始当前 vRealize Orchestrator 工作流的工作流的状态或事件。要查看可能的生命周期状态和事件,请参见VMPS 主工作流生命周期状态置备按计算机类型的生命周期状态

使用可扩展性自定义属性

虚拟机自定义属性不包含在事件负载中,除非将其指定为生命周期状态的可扩展性自定义属性。您可以将这些属性添加到 IaaS 端点、预留、蓝图、请求和支持自定义属性的其他对象。

添加到对象的自定义属性的格式为 Extensibility.Lifecycle.Properties.{workflowName}.{stateName}

例如,如果要在虚拟机状态为 BuildingMachine 时包含隐藏的属性以及所有以“Virtual”开头的属性,请将自定义属性添加到蓝图中的计算机。此示例中的自定义属性名称为 Extensibility.Lifecycle.Properties.VMPSMasterWorkflow32.BuildingMachine,值为 __*Virtual*(用逗号分隔)。

双下划线 (__*) 包括隐藏的属性。Virtual* 值包括所有以“Virtual”开头的属性。星号 (*) 是通配符,可以用作唯一值,但这样使用通配符会导致传输大量数据。

如果您有多个后续触发的工作流订阅包括自定义属性,则必须在工作流中包括相应的条目,以确保负载检查保留自定义属性。

表 1. 保留自定义属性的任务条目

状态

任务条目

已添加或已更新的自定义属性

virtualMachineAddOrUpdateProperties = payload.virtualMachineAddOrUpdateProperties || new Properties();

已删除的自定义属性

virtualMachineDeleteProperties = payload.virtualMachineDeleteProperties || new Properties();

基于生命周期或置备架构创建 vRealize Orchestrator 工作流

所创建的自定义工作流必须具有输入参数 payload,且类型必须为 Properties。当工作流在 vRealize Orchestrator 中运行时,置备或生命周期事件数据负载会放在此参数中。您还可以在事件的负载中包含与字段名称和类型匹配的各个输入参数。