Product Documentation

선택적 속성

Oct 20, 2016

구성 요소의 속성이 식에서 값을 가져오는 경우가 있습니다. 이러한 식은 매개 변수 참조와 같은 단순한 식이거나 훨씬 복잡한 식일 수 있습니다. 구성 요소에서 이 속성 값을 설정하는 것은 선택 사항입니다. 식이 실제 값을 반환하는 경우에만 속성 값을 설정하고, 그렇지 않은 경우 이 속성을 설정하지 않도록 선택할 수 있습니다.

예를 들어 설정하려는 속성 중 하나가 유형이 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

이제 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

 

"?"를 사용하면 오른쪽에 있는 식이 아무것도 없는 것으로 평가되는 경우 속성이 생략됩니다. 즉, 다음과 같이 정의된 구성 요소와 같습니다.

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가 선택 사항이기 때문에 생략해도 유효한 구성 요소가 됩니다. lbmethod는 "ns::lbvserver" 유형으로 정의된 경우 기본값을 가질 수 있습니다.