属性-默认源构造
properties-default-sources 构造类似于 parameters-default-sources 构造。parameters-default-sources 构造允许在样本中重用(来自其他样本的)现有参数,properties-default-sources 构造允许用户根据现有来源指定组件的属性。
组件的属性可以分布在样本的多个部分中。例如,属性可能来自对象参数、返回对象的替换、其他组件的属性或其他组件的输出。在此类情况下,您需要在组件的定义中重新定义在样本的其他部分中出现的属性。显然,这是多余的,且可能会导致出错。为了解决此问题,可以使用 properties-default-sources 构造。properties-default-sources 构造是一个列表,其中每项均标识组件的一些属性的一个来源。
例如,假定一个创建 lbvserver 配置的组件。此组件应按以下所示定义 lbvserver 的属性。
parameters:
-
name: lb
type: ns::lbvserver
components:
-
name: lb-comp
type: ns::lbvserver
properties:
name: $parameters.lb.name
ipv46: $parameters.lb.ipv46
port: $parameters.lb.port
servicetype: $parameters.lb.servicetype
lbmethod: $parameters.lb.lbmethod
在上述示例中,看到 components 部分中定义的所有属性的值均取自 $parameters.lb 对象。尽管它们取自一个来源,但在样书中再次定义了属性。此外,如果向 $parameters.lb 对象添加与 lbvserver 的配置相关的新子参数,您需要更新 lb-comp 组件以添加与新子参数对应的新属性。
为了避免重新定义属性以及为了提取某个组件的所有相关属性而无需明确在 properties 部分中列出它们,可以使用 properties-default-sources 构造。上述示例可以编写如下。
parameters:
-
name: lb
type: ns::lbvserver
components:
-
name: lb-comp
type: ns::lbvserver
properties-default-sources:
- $parameters.lb
在上述示例中,通过使用 properties-default-sources 构造,减小了组件定义的规模,这样,您可以简明地定义组件。此外,每当组件的属性的来源更改时,更改会自动反映出来。例如,在 $parameters.lb 对象中添加新属性“persistencetype”时,由于 persistencetype 是 lbvserver 的属性,因此,默认情况下,此属性添加到 lb-comp 的配置。因此,properties-default-sources 构造提供了定义组件的动态接口,而无需担心组件的属性的来源发生的更改。
计算组件的属性
本节讨论如果在组件中使用 properties-default-sources 构造,如何提取属性。首先,样本编译器根据组件的类型(在上述示例中为 lbvserver)标识组件的属性列表。然后,编译器按这些属性的定义顺序(在组件的 properties-default-sources 部分中)从多个来源中提取它们。如果某个属性存在于多个来源中,则出现在最后一个来源中的该属性的优先级高于其他来源中的该属性。最后,可以在组件的 properties 部分中覆盖使用 properties-default-sources 构造提取的属性。请务必注意,components 部分的定义至少应有一个 properties-default-sources 部分或一个 properties 部分。可以有两者。
本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
DIESER DIENST KANN ÜBERSETZUNGEN ENTHALTEN, DIE VON GOOGLE BEREITGESTELLT WERDEN. GOOGLE LEHNT JEDE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG IN BEZUG AUF DIE ÜBERSETZUNGEN AB, EINSCHLIESSLICH JEGLICHER GEWÄHRLEISTUNG DER GENAUIGKEIT, ZUVERLÄSSIGKEIT UND JEGLICHER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER.
CE SERVICE PEUT CONTENIR DES TRADUCTIONS FOURNIES PAR GOOGLE. GOOGLE EXCLUT TOUTE GARANTIE RELATIVE AUX TRADUCTIONS, EXPRESSE OU IMPLICITE, Y COMPRIS TOUTE GARANTIE D'EXACTITUDE, DE FIABILITÉ ET TOUTE GARANTIE IMPLICITE DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON.
ESTE SERVICIO PUEDE CONTENER TRADUCCIONES CON TECNOLOGÍA DE GOOGLE. GOOGLE RENUNCIA A TODAS LAS GARANTÍAS RELACIONADAS CON LAS TRADUCCIONES, TANTO IMPLÍCITAS COMO EXPLÍCITAS, INCLUIDAS LAS GARANTÍAS DE EXACTITUD, FIABILIDAD Y OTRAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN EN PARTICULAR Y AUSENCIA DE INFRACCIÓN DE DERECHOS.
本服务可能包含由 Google 提供技术支持的翻译。Google 对这些翻译内容不做任何明示或暗示的保证,包括对准确性、可靠性的任何保证以及对适销性、特定用途的适用性和非侵权性的任何暗示保证。
このサービスには、Google が提供する翻訳が含まれている可能性があります。Google は翻訳について、明示的か黙示的かを問わず、精度と信頼性に関するあらゆる保証、および商品性、特定目的への適合性、第三者の権利を侵害しないことに関するあらゆる黙示的保証を含め、一切保証しません。
ESTE SERVIÇO PODE CONTER TRADUÇÕES FORNECIDAS PELO GOOGLE. O GOOGLE SE EXIME DE TODAS AS GARANTIAS RELACIONADAS COM AS TRADUÇÕES, EXPRESSAS OU IMPLÍCITAS, INCLUINDO QUALQUER GARANTIA DE PRECISÃO, CONFIABILIDADE E QUALQUER GARANTIA IMPLÍCITA DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO E NÃO INFRAÇÃO.