Solaris OS용 Sun Cluster 데이터 서비스 개발 안내서

함수 인자 구문 분석

RGM은 Validate를 제외한 모든 콜백 메소드를 다음과 같이 실행합니다.

method-name -R resource-name -T resource-type-name -G resource-group-name

메소드 이름은 콜백 메소드를 구현하는 프로그램의 경로 이름입니다. 데이터 서비스는 RTR 파일의 각 메소드에 대한 경로 이름을 지정합니다. 이러한 경로 이름은 마찬가지로 RTR 파일에 있는 RT_basedir 등록 정보에 지정된 디렉토리에 상대적입니다. 예를 들어, 샘플 데이터 서비스의 RTR 파일에서 기본 디렉토리 및 메소드 이름은 다음과 같이 지정됩니다.

RT_basedir=/opt/SUNWsample/bin;
Start = dns_svc_start;
Stop =  dns_svc_stop;
...

모든 콜백 메소드 인자는 다음과 같이 플래그가 지정된 값으로 전달됩니다. -R 인자는 자원 인스턴스의 이름을 나타냅니다. -T 인자는 자원 유형을 나타냅니다. -G 인자는 자원이 구성되는 그룹을 나타냅니다. 콜백 메소드에 대한 자세한 내용은 rt_callbacks(1HA) 설명서 페이지를 참조하십시오.


주 –

Validate 메소드는 추가 인자, 즉 메소드가 호출되는 자원 및 자원 그룹의 등록 정보 값과 함께 호출됩니다. 자세한 내용은 등록 정보 업데이트 처리를 참조하십시오.


각 콜백 메소드에는 전달되는 인자를 구분 분석하기 위한 함수가 필요합니다. 모든 콜백에 동일한 인자가 전달되므로 데이터 서비스는 응용 프로그램의 모든 콜백에서 사용되는 단일 구분 분석 함수를 제공합니다.

다음은 샘플 응용 프로그램의 콜백 메소드에 사용되는 parse_args() 함수를 보여줍니다.

#########################################################################
# Parse program arguments.
#
function parse_args # [args ...]
{
      typeset opt

      while getopts 'R:G:T:' opt
      do
             case "$opt" in
             R)
                  # Name of the DNS resource.
                  RESOURCE_NAME=$OPTARG
                  ;;
             G)
                  # Name of the resource group in which the resource is
                  # configured.
                  RESOURCEGROUP_NAME=$OPTARG
                  ;;
             T)
                  # Name of the resource type.
                  RESOURCETYPE_NAME=$OPTARG
                  ;;
             *)
                  logger -p ${SYSLOG_FACILITY}.err \
                  -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \
                  "ERROR: Option $OPTARG unknown"
                  exit 1
                      ;;
             esac
    done
}

주 –

샘플 응용 프로그램의 PROBE 메소드는 Sun Cluster 콜백 메소드가 아니라 사용자 정의 메소드이지만 콜백 메소드와 동일한 인자와 함께 호출됩니다. 따라서 이 메소드는 다른 콜백 메소드에 사용되는 것과 동일한 구문 분석 함수를 포함합니다.


구문 분석 함수는 다음과 같이 MAIN에서 호출됩니다.

parse_args “$@”