
#!/bin/sh

# Copyright (c) Members of the EGEE Collaboration. 2004 
# See http://eu-egee.org/partners/ for details on the copyright holders
# For license conditions see the license file or http://eu-egee.org/license.html

# glite-service-discovery_installer v. 1.0.0
#
# The glite-service-discovery_installer installs the gLite Service Discovery APIs
#
# Usage: glite-service-discovery_installer [-u|-v|--help]
#        -u          uninstall
#        -v          print version
#        --help      print script usage info
# Return codes: 0 - Ok
#               1 - if a file could not be downloaded

###############################################################################

#Parse the RPMLIST to strip out the RPMS that are already installed
function parseRPMList()
{
        newRPMLIST=""
        localRPMLIST=`rpm -qa`
        for i in $RPMLIST
        do
                g=`echo $i | sed -e 's/\.i386\.rpm//g'`
                g=`echo $g | sed -e 's/\.noarch\.rpm//g'`
                if [ -z "`echo $localRPMLIST | grep $g`" ]; then
                        newRPMLIST="${newRPMLIST} $i"
                else
                        echo "$i is already installed. It will be skipped."
                fi
        done
                                                                                                                                                             
        RPMLIST=$newRPMLIST
}


#Downloads and install the module RPMS
function install()
{
	version
	echo
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo x Please wait, downloading the gLite Service Discovery APIs... x
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo

        mkdir -p glite-service-discovery
        cd glite-service-discovery

	# Download global dependencies	
	
 	

	# Download glite-service-discovery-service dependencies RPMS from repository
		

				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/glite-essentials-java-1.2.0-2_EGEE.noarch.rpm
if [ ! -f "glite-essentials-java-1.2.0-2_EGEE.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-essentials-java-1.2.0-2_EGEE.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-essentials-java-1.2.0-2_EGEE.noarch.rpm"
			 
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm
if [ ! -f "glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm" ]
then
	echo 
	echo ERROR: glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-essentials-cpp-1.1.1-1_EGEE.i386.rpm"
			
				
			

	# Download glite-service-discovery-service RPMS from repository
		
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-config-1.1.1-3.noarch.rpm
if [ ! -f "glite-config-1.1.1-3.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-config-1.1.1-3.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-config-1.1.1-3.noarch.rpm"
			
					
				
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-service-discovery-config-1.0.0-1.noarch.rpm
if [ ! -f "glite-service-discovery-config-1.0.0-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-service-discovery-config-1.0.0-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-service-discovery-config-1.0.0-1.noarch.rpm"
			
					
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-rgma-api-c-4.1.7-1.i386.rpm
if [ ! -f "glite-rgma-api-c-4.1.7-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-rgma-api-c-4.1.7-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-rgma-api-c-4.1.7-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-rgma-api-java-4.1.3-1.noarch.rpm
if [ ! -f "glite-rgma-api-java-4.1.3-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-rgma-api-java-4.1.3-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-rgma-api-java-4.1.3-1.noarch.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-rgma-base-4.1.14-1.noarch.rpm
if [ ! -f "glite-rgma-base-4.1.14-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-rgma-base-4.1.14-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-rgma-base-4.1.14-1.noarch.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-rgma-stubs-servlet-java-4.1.6-1.noarch.rpm
if [ ! -f "glite-rgma-stubs-servlet-java-4.1.6-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-rgma-stubs-servlet-java-4.1.6-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-rgma-stubs-servlet-java-4.1.6-1.noarch.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-service-discovery-api-c-1.0.1-0.i386.rpm
if [ ! -f "glite-service-discovery-api-c-1.0.1-0.i386.rpm" ]
then
	echo 
	echo ERROR: glite-service-discovery-api-c-1.0.1-0.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-service-discovery-api-c-1.0.1-0.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-service-discovery-api-java-1.0.1-1.i386.rpm
if [ ! -f "glite-service-discovery-api-java-1.0.1-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-service-discovery-api-java-1.0.1-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-service-discovery-api-java-1.0.1-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-service-discovery-rgma-java-1.0.1-1.i386.rpm
if [ ! -f "glite-service-discovery-rgma-java-1.0.1-1.i386.rpm" ]
then
	echo 
	echo ERROR: glite-service-discovery-rgma-java-1.0.1-1.i386.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-service-discovery-rgma-java-1.0.1-1.i386.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-security-trustmanager-1.6.4-1.noarch.rpm
if [ ! -f "glite-security-trustmanager-1.6.4-1.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-security-trustmanager-1.6.4-1.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-security-trustmanager-1.6.4-1.noarch.rpm"
			
				
wget -N --non-verbose http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-security-util-java-1.0.1-2.noarch.rpm
if [ ! -f "glite-security-util-java-1.0.1-2.noarch.rpm" ]
then
	echo 
	echo ERROR: glite-security-util-java-1.0.1-2.noarch.rpm could not be downloaded!
	exit 1
fi
RPMLIST="$RPMLIST glite-security-util-java-1.0.1-2.noarch.rpm"
			
			
		
	# Install all RPMS
	echo
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo x Please wait, installing the gLite Service Discovery APIs... x
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo
	parseRPMList
	if [ ! -z "$RPMLIST" ]; then
		rpm -Uvh $RPMLIST
		rpm_return=$?
	else
		echo All required RPMS are already installed
		rpm_return=0
	fi
	if [ "$rpm_return" == "0" ]; then
		echo
		echo Done!
		echo
		echo Before using the Service discovery APIs, please create or update the configuration
		echo file /opt/glite/etc/config/glite-service-discovery.cfg.xml and run the configuration
		echo script /opt/glite/etc/config/scripts/glite-service-discovery-config.py. A template
		echo is provided in /opt/glite/etc/config/templates/glite-service-discovery.cfg.xml
	else
		echo
		echo
		echo An error occurred while installing the Service Discovery RPMS.
		echo Most likely one or more of the RPMS to be installed require
		echo additional dependencies or are older than already installed packages.
		echo Please refer to the rpm error message above for more details.
	fi
	echo
	echo For more information refer to the gLite Installation and User Guides
	echo or to the gLite web site \(http:\/\/www.glite.org\)
	echo Please report problems and comments to the gLite Team at
	echo project-eu-egee-glite-bugs@cern.ch

	cd ..
}

###############################################################################
function uninstall()
{
	version

	# Global dependencies	
	
 	

	# glite-service-discovery-service dependencies RPMS from repository
		

				
RPMLIST="$RPMLIST glite-essentials-java-1.2.0-2_EGEE"
					 
				
RPMLIST="$RPMLIST glite-essentials-cpp-1.1.1-1_EGEE"
					
				
			

	# glite-service-discovery-service RPMS from repository
		
				
RPMLIST="$RPMLIST glite-config-1.1.1-3"
                                        
					
				
				
RPMLIST="$RPMLIST glite-service-discovery-config-1.0.0-1"
                                        
					
				
RPMLIST="$RPMLIST glite-rgma-api-c-4.1.7-1"
                                        
				
RPMLIST="$RPMLIST glite-rgma-api-java-4.1.3-1"
                                        
				
RPMLIST="$RPMLIST glite-rgma-base-4.1.14-1"
                                        
				
RPMLIST="$RPMLIST glite-rgma-stubs-servlet-java-4.1.6-1"
                                        
				
RPMLIST="$RPMLIST glite-service-discovery-api-c-1.0.1-0"
                                        
				
RPMLIST="$RPMLIST glite-service-discovery-api-java-1.0.1-1"
                                        
				
RPMLIST="$RPMLIST glite-service-discovery-rgma-java-1.0.1-1"
                                        
				
RPMLIST="$RPMLIST glite-security-trustmanager-1.6.4-1"
                                        
				
RPMLIST="$RPMLIST glite-security-util-java-1.0.1-2"
                                        
			
		
	# Uninstall all RPMS
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo x  Please wait, uninstalling the gLite Service Discovery APIs...   x
	echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	echo
	rpm -ev $RPMLIST
	if [ "$?" == "0" ]; then
		echo
		echo Done!
	else
		echo
		echo An error occurred while removing the Service Discovery RPMS.
		echo Most likely one or more of the RPMS to be removed have
		echo dependent packages.
		echo Please refer to the rpm error message above for more details.
	fi
}

###############################################################################
function usage()
{
	echo 
	echo Copyright \(c\) Members of the EGEE Collaboration. 2004 
	echo See http://eu-egee.org/partners/ for details on the copyright holders
	echo For license conditions see the license file or http://eu-egee.org/license.html
	echo 
	echo glite-service-discovery_installer v. 1.0.0
	echo 
	echo The glite-service-discovery_installer installs the gLite Service Discovery APIs
	echo 
	echo Usage: glite-service-discovery_installer \[-u\|-v\|--help\]
	echo -u          uninstall
	echo -v          print version
	echo --help      print script usage info
	echo 
	echo Return codes:
	echo 0 - Ok
	echo 1 - if a file could not be downloaded
	echo 
}

###############################################################################
function version
{
	echo 
	echo Copyright \(c\) Members of the EGEE Collaboration. 2004 
	echo See http://eu-egee.org/partners/ for details on the copyright holders
	echo For license conditions see the license file or http://eu-egee.org/license.html
	echo 
	echo glite-service-discovery_installer v. 1.0.0
	echo 
}


RPMLIST=

###############################################################################
# Main

while getopts uvh opt
do
	case $opt in
		'u') uninstall
		     exit 0	
		     ;;
		'v') version
		     exit 0	
		     ;;
		'h') usage
		     exit 0	
		     ;;
	esac
done

install

exit 0
	
