Product Documentation

Properties-Default-Sources 구조

Apr 24, 2017

properties-default-sources 구조는 parameters-default-sources 구조와 유사합니다. parameters-default-sources 구조에서는 StyleBook의 기존 매개 변수(다른 StyleBook의 매개 변수)를 재사용할 수 있지만 properties-default-sources 구조에서는 사용자가 기존 출처를 기반으로 구성 요소의 속성을 지정할 수 있습니다.

구성 요소의 속성은 StyleBook의 여러 섹션에 분산될 수 있습니다. 예를 들어 개체 매개 변수, 개체를 반환하는 대체, 다른 구성 요소의 속성 또는 다른 구성 요소의 출력에서 속성을 가져올 수 있습니다. 이러한 경우 구성 요소 정의 중 StyleBook의 다른 섹션에서 발생하는 속성을 다시 정의해야 합니다. 하지만 이렇게 하는 것은 중복이며 오류를 유발할 수 있습니다. 이 문제를 해결하기 위해 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 개체에서 가져오는 것을 알 수 있습니다. 값은 단일 출처에서 가져오지만 속성은 StyleBook에서 다시 정의됩니다. 또한 lbvserver의 구성과 관련된 $parameters.lb 개체에 새 하위 매개 변수가 추가되는 경우 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 구조가 구성 요소에서 사용되는 경우 속성을 가져오는 방법에 대해 설명합니다. 먼저 StyleBook 컴파일러는 구성 요소 유형(위의 예에서 lbvserver)을 기반으로 구성 요소의 속성 목록을 식별합니다. 그런 다음, 컴파일러는 (구성 요소의 properties-default-sources 섹션에) 정의된 순서대로 여러 출처에서 이러한 속성을 가져옵니다. 속성이 여러 출처에 존재하는 경우 마지막 출처에 나타나는 속성이 다른 속성보다 우선합니다. 마지막으로, properties-default-sources 구조를 사용하여 가져온 속성을 구성 요소의 properties 섹션에서 재정의할 수 있습니다. component 섹션의 정의에는 properties-default-sources 섹션이나 properties 섹션이 적어도 하나는 있어야 한다는 점에 유의하십시오. 두 섹션이 모두 있을 수도 있습니다.