属性-默认源构造
properties-default-sources构造类似于parameters-default-sources构造。parameters-default-sources构造允许在样本中重用(来自其他样本的)现有参数,properties-default-sources构造允许用户根据现有来源指定组件的属性。
组件的属性可以分布在样本的多个部分中。例如,属性可能来自对象参数、返回对象的替换、其他组件的属性或其他组件的输出。在此类情况下,您需要在组件的定义中重新定义在样本的其他部分中出现的属性。显然,这是多余的,且可能会导致出错。为了解决此问题,可以使用 属性默认源构造。属性默认源构造是一个列表,其中每项均标识组件的一些属性的一个来源。
例如,考虑创建lbvserver
配置的组件。此组件定义lbvserver
的属性,如下所示。
参数:-名称:lb类型:ns::lbvserver组件:-名称:lb组件类型:ns::lbvserver属性:名称:$parameters.lb.name ipv46:$parameters.lb.ipv46端口:$parameters.lb.port服务类型:$parameters.lb.servicetype lbmethod:$parameters.lb.lbmethod<--需要复制-->
在上述示例中,看到组件部分中定义的所有属性的值均取美元自参数。磅对象。尽管它们取自一个来源,但在样本中再次定义了属性。此外,如果添加了与配置相关的美元参数。磅对象的新子参数,则需要更新lb-comp组件以添加与新子参数对应的新属性。lbvserver
为了避免重新定义属性以及为了提取某个组件的所有相关属性而无需明确在 性质部分中列出它们,可以使用 属性默认源构造。上述示例可以编写如下。
参数:-名称:lb类型:ns::lbvserver组件:-名称:lb组件类型:ns::lbvserver属性默认源:-$parameters.lb<--需要复制-->
在上述示例中,通过使用 属性默认源构造,减小了组件定义的规模,这样,您可以简明地定义组件。此外,每当组件的属性的来源更改时,更改会自动反映出来。例如,当在 $参数1.lb对象中添加新属性persistencetype
时,默认情况下,该属性会添加到lb-comp的配置中,因为persistencetype
是lbvserver
的属性。因此,properties-default-sources构造提供了定义组件的动态接口,而无需担心组件的属性的来源发生的更改。
计算组件的属性
本节讨论如果在组件中使用properties-default-sources构造,如何提取属性。首先,样本编译器根据组件的类型识别组件的属性列表(在上例中为lbvserver
。)接下来,编译器按照定义的顺序从多个源中获取这些属性(在组件的属性-默认源部分)。如果某个属性存在于多个来源中,则出现在最后一个来源中的该属性的优先级高于其他来源中的该属性。最后,可以在组件的属性部分中覆盖使用properties-default-sources构造提取的属性。需要注意的是,组件部分的定义至少有属性-默认源部分或属性部分。可以有两者。