Application Delivery Management

可选属性

在某些情况下,组件的属性值来源于表达式,该表达式可以是简单的参数引用,也可以是更复杂的表达式。在组件中,设置此属性值是可选的。您可以选择仅在表达式返回实际值时设置属性值,否则可以选择不设置此属性。

例如,假设您要设置的属性之一是类型为 ns::lbvserver 的组件的 lbmethod(负载平衡算法)。lbmethod 属性的值取自用户提供的参数值,如下所示:


components
  -
      name: lbvserver_comp
      type: ns::lbvserver
      properties:
        name: $parameters.lb-appname + "-lb"
        servicetype: $parameters.lb-service-type
        ipv46: $parameters.lb-virtual-ip
        port: 80
        lbmethod: $parameters.lb-advanced.algorithm
<!--NeedCopy-->

现在,假设参数 lb-advanced.algorithm 是一个可选参数。如果用户未为此可选参数提供值,则表达式 $parameters.lb-advanced.algorithm 将评估为空值。因此,lbmethod 属性将传递一个无效值。为了避免这种情况,您可以通过在其名称后附加“?”来将属性标记为可选,如下所示:


components
   -
     name: lbvserver_comp
     type: ns::lbvserver
     properties:
       name: $parameters.lb-appname + "-lb"
       servicetype: $parameters.lb-service-type
       ipv46: $parameters.lb-virtual-ip
       port: 80
       lbmethod?: $parameters.lb-advanced.algorithm
<!--NeedCopy-->

如果右侧表达式评估为空,则使用“?”会省略该属性。在本例中,这等同于按如下方式定义的组件:


components
  -
    name: lbvserver_comp
    type: ns::lbvserver
    properties:
      name: $parameters.lb-appname + "-lb"
      servicetype: $parameters.lb-service-type
      ipv46: $parameters.lb-virtual-ip
      port: 80
<!--NeedCopy-->

由于 lbmethod 是可选的,因此省略它仍然会使此组件有效。请注意,如果 lbmethod 的类型“ns::lbvserver”中定义了默认值,则 lbmethod 可能会采用其默认值。

可选属性