]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fixes for delete_status_network.sh:
authorBrion Vibber <brion@pobox.com>
Mon, 22 Nov 2010 19:10:10 +0000 (11:10 -0800)
committerBrion Vibber <brion@pobox.com>
Mon, 22 Nov 2010 19:10:10 +0000 (11:10 -0800)
* add some sanity checking: abort on failures instead of plodding through
* add some progress / error output
* fetch the target database server name from the status_network entry and use that to target the DROP DATABASE

Note that database names and other overrides in status_network entry may still not be seen.

scripts/delete_status_network.sh

index 3a8ebdcfd42d04b4ab832bb9009a3eaf5114f1cf..4e91cd639071af760f2d4df7c88a56034d8cb602 100755 (executable)
@@ -4,22 +4,45 @@
 
 set -e
 
-source /etc/statusnet/setup.cfg
+source /etc/statusnet/setup.cfg || (echo "Failed to read /etc/statusnet/setup.cfg"; exit -1)
 
 export nickname=$1
+if [ "x" == "x$nickname" ]
+then
+    echo "Usage: delete_status_network.sh <site-nickname>"
+    exit 1
+fi
 
 export database=$nickname$DBBASE
 
-# Create the db
+# Pull the status_network record so we know which DB server to drop from...
+TARGET_DBHOST=`mysql -h $DBHOST -u $ADMIN --password=$ADMINPASS $SITEDB --batch --skip-column-names -e \
+  "select dbhost from status_network where nickname='$nickname'"`
 
-mysqladmin -h $DBHOST -u $ADMIN --password=$ADMINPASS -f drop $database
+if [ "x" == "x$TARGET_DBHOST" ]
+then
+    echo "Aborting: Could not find status_network record for site $nickname"
+    exit 1
+fi
 
-mysql -h $DBHOST -u $ADMIN --password=$ADMINPASS $SITEDB << ENDOFCOMMANDS
+# Drop the database
+echo "Dropping $database from $TARGET_DBHOST..."
+mysqladmin -h $TARGET_DBHOST -u $ADMIN --password=$ADMINPASS -f drop $database || exit 1
 
-delete from status_network where nickname = '$nickname';
-
-ENDOFCOMMANDS
+# Remove the status_network entry
+echo "Removing status_network entry for $nickname..."
+mysql -h $DBHOST -u $ADMIN --password=$ADMINPASS $SITEDB -e \
+    "delete from status_network where nickname = '$nickname'" || exit 1
 
+# Remove uploaded file areas
 for top in $AVATARBASE $FILEBASE $BACKGROUNDBASE; do
-    rm -Rf $top/$nickname
+    if [ "x" == "x$top" ]
+    then
+        echo "Skipping deletion due to broken config"
+    else
+        echo "Deleting $top/$nickname"
+        rm -Rf "$top/$nickname"
+    fi
 done
+
+echo "Done."