依赖性检测
样书中的组件可以引用同一样书中的其他组件的属性或部分。组件本身是完整的块,它们的编写顺序可能与必须执行的顺序不同。样本编译器会检查组件的编写顺序,然后按逻辑顺序执行这些组件。
示例:
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: mylb
ipv46: 10.102.190.15
port: 80
servicetype: HTTP
-
name: lb-sg-binding-comp
type: ns::lbvserver_servicegroup_binding
condition: $parameters.create-binding
properties:
name: $components.lbvserver-comp.properties.name
servicegroupname: $components.sg-comp.properties.servicegroupname
-
name: sg-comp
type: ns::servicegroup
properties:
servicegroupname: mysg
servicetype: HTTP
在上面的例子中,定义了三个组件- lbvser-comp, lb-sg-绑定-复合和 sg-comp。执行此样本时,先创建 lbvserver-comp。lb-sg-binding-comp 引用 lbvserver-comp 属性,但尽管它是样本中定义的第二个组件,但不能接下来创建它。这是因为 lb-sg-binding-comp 还依赖也要创建的 sg-comp。因此,编译器对组件重新排序以使组件的依赖项按组件的创建时间进行解析,然后执行此重新排序的组件列表。上述样本的执行顺序为:lbvserver-comp、sg-comp 和 lb-sg-binding-comp。
这样,样书的作者不必担心组件的正确顺序。组件可以按任何顺序显示。编译器根据组件相互引用的情况计算组件的正确执行顺序。请注意,此依赖项检测和重新排序也适用于 substitutions 和 outputs 部分。
循环依赖项
由于组件可能会引用其他组件,因此可能会在样本的定义中引入依赖项循环。例如,如果组件 A 引用组件 B 中定义的一个属性,而后者也引用组件 A 中定义的一个属性。这种依赖项称为循环依赖项。循环依赖项无法自动解析。样本的作者应该手动更新更正样本定义以消除此类循环依赖项。编译器能够识别循环依赖项(如果存在)并报告。
以下示例显示了组件的循环依赖项:
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: $components.lb-sg-binding-comp.properties.name
ipv46: 10.102.190.15
port: 80
servicetype: HTTP
-
name: lb-sg-binding-comp
type: ns::lbvserver_servicegroup_binding
condition: $parameters.create-binding
properties:
name: mylb
servicegroupname: $components.sg-comp.properties.servicegroupname
-
name: sg-comp
type: ns::servicegroup
properties:
servicegroupname: mysg
servicetype: $components.lbvserver-comp.properties.servicetype
在上面的示例中,有三个组件:lbvserver-comp、lb-sg-binding-comp 和 sg-comp。lbvserver-comp 依赖于 lb-sg-binding-comp,lb-sg-binding comp 依赖于 sg-comp,sg-comp depends 依赖于 lbvserver-comp。此处,在这些组件之间形成了依赖项循环,这无法自动解析。因此,无法执行此样书。样本编译器检测到此问题并阻止样本导入 NetScaler ADM。
本内容的正式版本为英文版。部分 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.