8198 installadm delete-service doesn't remove service's data directory Build111a
authorAlok Aggarwal <Alok.Aggarwal@Sun.COM>
Thu, 16 Apr 2009 22:49:10 -0400
changeset 543 b159355029e1
parent 542 29b0b3cf5291
child 544 6a31c2e3c004
8198 installadm delete-service doesn't remove service's data directory
usr/src/cmd/installadm/installadm.c
usr/src/cmd/installadm/installadm.h
usr/src/cmd/installadm/setup-service.sh
--- a/usr/src/cmd/installadm/installadm.c	Thu Apr 16 20:45:08 2009 -0400
+++ b/usr/src/cmd/installadm/installadm.c	Thu Apr 16 22:49:10 2009 -0400
@@ -960,7 +960,7 @@
 	}
 
 	snprintf(cmd, sizeof (cmd), "%s %s %s %s %s",
-	    SETUP_SERVICE_SCRIPT, SERVICE_REMOVE,
+	    SETUP_SERVICE_SCRIPT, SERVICE_DELETE,
 	    service, INSTALL_TYPE, LOCAL_DOMAIN);
 	if (installadm_system(cmd) != 0) {
 		/*
@@ -1208,7 +1208,7 @@
 	 * Stop the service
 	 */
 	snprintf(cmd, sizeof (cmd), "%s %s %s %s %s",
-	    SETUP_SERVICE_SCRIPT, SERVICE_REMOVE,
+	    SETUP_SERVICE_SCRIPT, SERVICE_DISABLE,
 	    service_name, INSTALL_TYPE, LOCAL_DOMAIN);
 	if (installadm_system(cmd) != 0) {
 		/*
--- a/usr/src/cmd/installadm/installadm.h	Thu Apr 16 20:45:08 2009 -0400
+++ b/usr/src/cmd/installadm/installadm.h	Thu Apr 16 22:49:10 2009 -0400
@@ -45,7 +45,8 @@
 #define	SETUP_SERVICE_SCRIPT	"/usr/lib/installadm/setup-service"
 #define	SERVICE_LOOKUP		"lookup"
 #define	SERVICE_REGISTER	"register"
-#define	SERVICE_REMOVE		"remove"
+#define	SERVICE_DELETE		"delete"
+#define	SERVICE_DISABLE		"disable"
 #define	SERVICE_LIST		"list"
 
 #define	MANIFEST_REMOVE_SCRIPT	"/usr/lib/installadm/delete-manifest"
--- a/usr/src/cmd/installadm/setup-service.sh	Thu Apr 16 20:45:08 2009 -0400
+++ b/usr/src/cmd/installadm/setup-service.sh	Thu Apr 16 22:49:10 2009 -0400
@@ -192,22 +192,24 @@
 }
 
 #
-# Remove a running service by name
+# Disable a running service by name and optionally delete it
 #
 # Arguments:
 #	$1 - Service Name (for example my_install)
 #	$2 - Service Type (_OSInstall._tcp)
 #	$3 - domain (local)
+#	$4 - Service Action (for example "delete")
 #
 # Returns:
 #	0 - If the service is successfully removed
 #	1 - If the service cannot be removed
 #
-remove_service()
+disable_and_delete_service()
 {
 	name=$1
 	type=$2
 	domain=$3
+	action=$4
 
 	# Check whether the service is running now
 	/usr/bin/dns-sd -L ${name} ${type} ${domain} > $TMP_FILE &
@@ -250,6 +252,9 @@
 	fi
 	kill $pid > /dev/null 2>&1
 	rm -f $TMP_FILE
+	if [ "$action" = "delete" ]; then
+		rm -rf $VARAI/$port
+	fi	    
 	return $ret
 }
 
@@ -429,17 +434,33 @@
 	else
 		echo "The service ${name}.${type}.${domain} is running."
 	fi
-elif [ "$1" = "remove" ]; then
+elif [ "$1" = "delete" ]; then
 	if [ $# -lt 4 ]; then
-		echo "Install Service Removal requires four arguments"
+		echo "Install Service Deletion requires four arguments"
 		exit 1
 	fi
 
+	service_action=$1
 	service_name=$2
 	service_type=$3
 	service_domain=$4
 
-	remove_service $service_name $service_type $service_domain
+	disable_and_delete_service $service_name $service_type $service_domain \
+	    $service_action
+	status=$?
+elif [ "$1" = "disable" ]; then
+	if [ $# -lt 4 ]; then
+		echo "Install Service Disabling requires four arguments"
+		exit 1
+	fi
+
+	service_action=$1
+	service_name=$2
+	service_type=$3
+	service_domain=$4
+
+	disable_and_delete_service $service_name $service_type $service_domain \
+	    $service_action
 	status=$?
 elif [ "$1" = "list" ]; then
 	service_type=$2