# attr_changed 
#
# Copyright(C) 2003 Sybase Inc.  ALL RIGHTS RESERVED.
# UNPUBLISHED -- RIGHTS RESERVED UNDER THE COPYRIGHT
# LAWS OF THE UNITED STATES.  USE OF A COPYRIGHT NOTICE
# IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
# OR DISCLOSURE.
#
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND
# TRADE SECRETS OF SYBASE INC.  USE, DISCLOSURE,
# OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR
# EXPRESS WRITTEN PERMISSION OF SYBASE INC.
#
#

#
# make the script work under any of csh, sh or perl
#
eval '(exit $?0)' && eval 'exec /opt/VRTSvcs/bin/perl5 -S $0 ${1+"$@"}'
& eval 'exec /opt/VRTSvcs/bin/perl5 -S $0 $argv:q'
	if 0;
#
# This script is called when any of the following  attributes of a HAase 
# resource is changed:
#	Sybase_home, Dataserver_name, Dataserver_login_file, RUN_server_file 
#	Log_max_size 
#
use sybhautil; 
($res_name, $changed_res_name, $changed_attr_name, $new_attr_value) = @ARGV;

$VCS_BIN="/opt/VRTSvcs/bin";
$HALOG="$VCS_BIN/halog";
$RES_TYPE="HAase";

my($log_message);

#log purpose
$log_message = sprintf "VCS:2000600:HAase:$res_name:attr_changed:call attr_changed.";
system("$HALOG -add C \"$log_message\" -msgid 2000600 -parameters $res_name");

#
# Check if the dataserver and its service group is on primary node
#
($ase_status, $group) = IsASEonPrimary($res_name);
if($ase_status == 1) 
{
	$log_message = sprintf "VCS:2000101:HAase:$res_name:attr_changed:HAase service $Dataserver_name is on primary node.";
	system("$HALOG -add C \"$log_message\" -msgid 2000101 -parameters $res_name");

	check_primary();
}
elsif ($ase_status == 0)
{
	$log_message = sprintf "VCS:2000102:HAase:$res_name:attr_changed:ASE is on secondary node.";
	system("$HALOG -add C \"$log_message\" -msgid 2000102 -parameters $res_name");

}
else
{
	$log_message = sprintf "VCS:2000203:HAase:$res_name:attr_changed:ASE is in transition or it is an error.";
	system("$HALOG -add C \"$log_message\" -msgid 2000203 -parameters $res_name");
        exit 0;
}

#
# Check the attribute on primary node. 
#
sub check_primary
{
	if ($changed_attr_name == "Sybase_home")
	{
		if (!(-d $new_attr_value))
		{
			$log_message = sprintf "VCS:156771:HAase:$res_name:attr_changed:Sybase_home $new_attr_value doesn't exist.";
			system("$HALOG -add C \"$log_message\" -msgid 156771 -parameters $res_name");
		}
	}
	elsif ($changed_attr_name == "Dataserver_name")
	{

	}
	elsif (($changed_attr_name == "Dataserver_login_file") || ($changed_attr_name == "RUN_server_file"))
	{
		if (!(-e $new_attr_value))
		{
			$log_message = sprintf "VCS:156781:HAase:$res_name:attr_changed:$new_attr_value doesn't exist.";
			system("$HALOG -add C \"$log_message\" -msgid 156781 -parameters $res_name");
		}

		if (!(-r $new_attr_value))
		{
			$log_message = sprintf "VCS:156791:HAase:$res_name:attr_changed:$new_attr_value is not readable.";
			system("$HALOG -add C \"$log_message\" -msgid 156791 -parameters $res_name");
		}
	}
	elsif ($changed_attr_name == "Log_max_size")
	{
		if ($new_attr_value <= 0)
		{
			$log_message = sprintf "VCS:156801:HAase:$res_name:attr_changed:Log_max_size can not be less than or equal to 0.";
			system("$HALOG -add C \"$log_message\" -msgid 156801 -parameters $res_name");
		}
	}
}

