CVS User Account cvsuser
Fri Oct 27 10:52:10 PDT 2006
Log Message:
-----------
Per Bernd Helmle, changing altperl scripts to not use (possibly insecure)
/tmp files, but rather submit output via a string

Modified Files:
--------------
    slony1-engine/tools/altperl:
        slonik_create_set.pl (r1.3 -> r1.4)
        slonik_drop_node.pl (r1.1 -> r1.2)
        slonik_drop_set.pl (r1.1 -> r1.2)
        slonik_drop_table.pl (r1.2 -> r1.3)
        slonik_execute_script.pl (r1.1 -> r1.2)
        slonik_failover.pl (r1.1 -> r1.2)
        slonik_init_cluster.pl (r1.2 -> r1.3)
        slonik_merge_sets.pl (r1.1 -> r1.2)
        slonik_move_set.pl (r1.1 -> r1.2)
        slonik_print_preamble.pl (r1.2 -> r1.3)
        slonik_restart_node.pl (r1.1 -> r1.2)
        slonik_store_node.pl (r1.2 -> r1.3)
        slonik_uninstall_nodes.pl (r1.1 -> r1.2)
        slonik_unsubscribe_set.pl (r1.1 -> r1.2)
        slonik_update_nodes.pl (r1.1 -> r1.2)

-------------- next part --------------
Index: slonik_update_nodes.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_update_nodes.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_update_nodes.pl -Ltools/altperl/slonik_update_nodes.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_update_nodes.pl
+++ tools/altperl/slonik_update_nodes.pl
@@ -28,10 +28,10 @@
 require '@@PGLIBDIR@@/slon-tools.pm';
 require $CONFIG_FILE;
 
-open(SLONIK, ">", "/tmp/update_nodes.$$");
-print SLONIK genheader();
+my $slonik = '';
+$slonik .= genheader();
 foreach my $node (@NODES) {
-  print SLONIK "  update functions (id = $node);\n";
+  $slonik .= "  update functions (id = $node);\n";
 };
-close SLONIK;
-run_slonik_script("/tmp/update_nodes.$$");
+
+run_slonik_script($slonik, 'UPDATE FUNCTIONS');
Index: slonik_print_preamble.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_print_preamble.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -Ltools/altperl/slonik_print_preamble.pl -Ltools/altperl/slonik_print_preamble.pl -u -w -r1.2 -r1.3
--- tools/altperl/slonik_print_preamble.pl
+++ tools/altperl/slonik_print_preamble.pl
@@ -32,8 +32,7 @@
 require '@@PGLIBDIR@@/slon-tools.pm';
 require $CONFIG_FILE;
 
-$FILE="/tmp/print_preamble.$$";
-open (SLONIK, ">", $FILE);
-print SLONIK genheader();
-close SLONIK;
-run_slonik_script($FILE);
+my $slonik = '';
+$slonik .= genheader();
+
+run_slonik_script($slonik, 'PRINT PREAMBLE');
Index: slonik_merge_sets.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_merge_sets.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_merge_sets.pl -Ltools/altperl/slonik_merge_sets.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_merge_sets.pl
+++ tools/altperl/slonik_merge_sets.pl
@@ -53,14 +53,15 @@
 
 my ($dbname, $dbhost) = ($DBNAME[$MASTERNODE], $HOST[$MASTERNODE]);
 
-open(SLONIK, ">", "/tmp/slonik.$$");
-print SLONIK genheader();
-print SLONIK "  try {\n";
-print SLONIK "    merge set (id = $set1, add id = $set2, origin = $node);\n";
-print SLONIK "  } on error {\n";
-print SLONIK "    echo 'Failure to merge sets $set1 and $set2 with origin $node';\n";
-print SLONIK "    exit 1;\n";
-print SLONIK "  }\n";
-print SLONIK "  echo 'Replication set $set2 merged in with $set1 on origin $node';\n";
-close SLONIK;
-run_slonik_script("/tmp/slonik.$$");
+my $slonik = '';
+
+$slonik .= genheader();
+$slonik .= "  try {\n";
+$slonik .= "    merge set (id = $set1, add id = $set2, origin = $node);\n";
+$slonik .= "  } on error {\n";
+$slonik .= "    echo 'Failure to merge sets $set1 and $set2 with origin $node';\n";
+$slonik .= "    exit 1;\n";
+$slonik .= "  }\n";
+$slonik .= "  echo 'Replication set $set2 merged in with $set1 on origin $node';\n";
+
+run_slonik_script($slonik, 'MERGE SET');
Index: slonik_drop_set.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_drop_set.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_drop_set.pl -Ltools/altperl/slonik_drop_set.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_drop_set.pl
+++ tools/altperl/slonik_drop_set.pl
@@ -38,14 +38,14 @@
 
 get_set($set) or die "Non-existent set specified.\n";
 
-$FILE = "/tmp/dropset.$$";
-open(SLONIK, ">", $FILE);
-print SLONIK genheader();
-print SLONIK "  try {\n";
-print SLONIK "        drop set (id = $set, origin = $SET_ORIGIN);\n";
-print SLONIK "  } on error {\n";
-print SLONIK "        exit 1;\n";
-print SLONIK "  }\n";
-print SLONIK "  echo 'Dropped set $set';\n";
-close SLONIK;
-run_slonik_script($FILE);
+my $slonik = '';
+
+$slonik .= genheader();
+$slonik .= "  try {\n";
+$slonik .= "        drop set (id = $set, origin = $SET_ORIGIN);\n";
+$slonik .= "  } on error {\n";
+$slonik .= "        exit 1;\n";
+$slonik .= "  }\n";
+$slonik .= "  echo 'Dropped set $set';\n";
+
+run_slonik_script($slonik, 'DROP SET');
Index: slonik_restart_node.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_restart_node.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_restart_node.pl -Ltools/altperl/slonik_restart_node.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_restart_node.pl
+++ tools/altperl/slonik_restart_node.pl
@@ -47,11 +47,10 @@
 
 die $USAGE unless scalar @nodes;
 
-my $FILE="/tmp/restart.$$";
-open(SLONIK, ">", $FILE);
-print SLONIK genheader();
+my $slonik = '';
+$slonik .= genheader();
 foreach my $node (@nodes) {
-    print SLONIK "  restart node $node;\n";
+    $slonik .= "  restart node $node;\n";
 }
-close SLONIK;
-run_slonik_script($FILE);
+
+run_slonik_script($slonik, 'RESTART NODE');
Index: slonik_create_set.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_create_set.pl,v
retrieving revision 1.3
retrieving revision 1.4
diff -Ltools/altperl/slonik_create_set.pl -Ltools/altperl/slonik_create_set.pl -u -w -r1.3 -r1.4
--- tools/altperl/slonik_create_set.pl
+++ tools/altperl/slonik_create_set.pl
@@ -20,6 +20,8 @@
 
 ";
 
+my $slonik = ''; 
+
 if ($SHOW_USAGE) {
     print $USAGE;
     exit 0;
@@ -34,58 +36,56 @@
     die $USAGE;
 }
 
-$FILE="/tmp/add_tables.$$";
-open (SLONIK, ">", $FILE);
-print SLONIK genheader();
+$slonik .= genheader();
 
 # Tables without primary keys
-print SLONIK "\n";
-print SLONIK "# TABLE ADD KEY\n";
+$slonik .= "\n";
+$slonik .= "# TABLE ADD KEY\n";
 foreach my $table (@SERIALTABLES) {
     $table = ensure_namespace($table);
     $table = lc($table) if $FOLD_CASE;
-    print SLONIK "  echo '  Adding unique key to table $table...';\n";
-    print SLONIK "  table add key (\n";
-    print SLONIK "    node id = $SET_ORIGIN,\n";
-    print SLONIK "    full qualified name='$table'\n";
-    print SLONIK "  );\n";
+    $slonik .= "  echo '  Adding unique key to table $table...';\n";
+    $slonik .= "  table add key (\n";
+    $slonik .= "    node id = $SET_ORIGIN,\n";
+    $slonik .= "    full qualified name='$table'\n";
+    $slonik .= "  );\n";
 }
 
 # CREATE SET
-print SLONIK "\n";
-print SLONIK "# CREATE SET\n";
-print SLONIK "  try {\n";
-print SLONIK "    create set (id = $SET_ID, origin = $SET_ORIGIN, comment = 'Set $SET_ID for $CLUSTER_NAME');\n";
-print SLONIK "  } on error {\n";
-print SLONIK "    echo 'Could not create subscription set $SET_ID for $CLUSTER_NAME!';\n";
-print SLONIK "    exit -1;\n";
-print SLONIK "  }\n";
+$slonik .= "\n";
+$slonik .= "# CREATE SET\n";
+$slonik .= "  try {\n";
+$slonik .= "    create set (id = $SET_ID, origin = $SET_ORIGIN, comment = 'Set $SET_ID for $CLUSTER_NAME');\n";
+$slonik .= "  } on error {\n";
+$slonik .= "    echo 'Could not create subscription set $SET_ID for $CLUSTER_NAME!';\n";
+$slonik .= "    exit -1;\n";
+$slonik .= "  }\n";
 
 # SET ADD TABLE
-print SLONIK "\n";
-print SLONIK "# SET ADD TABLE\n";
-print SLONIK "  echo 'Subscription set $SET_ID created';\n";
-print SLONIK "  echo 'Adding tables to the subscription set';\n";
+$slonik .= "\n";
+$slonik .= "# SET ADD TABLE\n";
+$slonik .= "  echo 'Subscription set $SET_ID created';\n";
+$slonik .= "  echo 'Adding tables to the subscription set';\n";
 
 $TABLE_ID = 1 if $TABLE_ID < 1;
 
 foreach my $table (@SERIALTABLES) {
     $table = ensure_namespace($table);
 	$table = lc($table) if $FOLD_CASE;
-    print SLONIK "  set add table (set id = $SET_ID, origin = $SET_ORIGIN, id = $TABLE_ID,\n";
-    print SLONIK "                 full qualified name = '$table', key=serial,\n";
-    print SLONIK "                 comment = 'Table $table without primary key');\n";
-    print SLONIK "  echo 'Add unkeyed table $table';\n";
+    $slonik .= "  set add table (set id = $SET_ID, origin = $SET_ORIGIN, id = $TABLE_ID,\n";
+    $slonik .= "                 full qualified name = '$table', key=serial,\n";
+    $slonik .= "                 comment = 'Table $table without primary key');\n";
+    $slonik .= "  echo 'Add unkeyed table $table';\n";
     $TABLE_ID++;
 }
 
 foreach my $table (@PKEYEDTABLES) {
     $table = ensure_namespace($table);
 	$table = lc($table) if $FOLD_CASE;
-    print SLONIK "  set add table (set id = $SET_ID, origin = $SET_ORIGIN, id = $TABLE_ID,\n";
-    print SLONIK "                 full qualified name = '$table',\n";
-    print SLONIK "                 comment = 'Table $table with primary key');\n";
-    print SLONIK "  echo 'Add primary keyed table $table';\n";
+    $slonik .= "  set add table (set id = $SET_ID, origin = $SET_ORIGIN, id = $TABLE_ID,\n";
+    $slonik .= "                 full qualified name = '$table',\n";
+    $slonik .= "                 comment = 'Table $table with primary key');\n";
+    $slonik .= "  echo 'Add primary keyed table $table';\n";
     $TABLE_ID++;
 }
 
@@ -93,32 +93,31 @@
     my $key = $KEYEDTABLES{$table};
     $table = ensure_namespace($table);
 	$table = lc($table) if $FOLD_CASE;
-    print SLONIK "  set add table (set id = $SET_ID, origin = $SET_ORIGIN, id = $TABLE_ID,\n";
-    print SLONIK "                 full qualified name = '$table', key='$key',\n";
-    print SLONIK "                 comment = 'Table $table with candidate primary key $key');\n";
-    print SLONIK "  echo 'Add candidate primary keyed table $table';\n";
+    $slonik .= "  set add table (set id = $SET_ID, origin = $SET_ORIGIN, id = $TABLE_ID,\n";
+    $slonik .= "                 full qualified name = '$table', key='$key',\n";
+    $slonik .= "                 comment = 'Table $table with candidate primary key $key');\n";
+    $slonik .= "  echo 'Add candidate primary keyed table $table';\n";
     $TABLE_ID++;
 }
 
 # SET ADD SEQUENCE
-print SLONIK "\n";
-print SLONIK "# SET ADD SEQUENCE\n";
-print SLONIK "  echo 'Adding sequences to the subscription set';\n";
+$slonik .= "\n";
+$slonik .= "# SET ADD SEQUENCE\n";
+$slonik .= "  echo 'Adding sequences to the subscription set';\n";
 
 $SEQUENCE_ID = 1 if $SEQUENCE_ID < 1;
 foreach my $seq (@SEQUENCES) {
     $seq = ensure_namespace($seq);
 	$seq = lc($seq) if $FOLD_CASE;
-    print SLONIK "  set add sequence (set id = $SET_ID, origin = $SET_ORIGIN, id = $SEQUENCE_ID,\n";
-    print SLONIK "                    full qualified name = '$seq',\n";
-    print SLONIK "                    comment = 'Sequence $seq');\n";
-    print SLONIK "  echo 'Add sequence $seq';\n";
+    $slonik .= "  set add sequence (set id = $SET_ID, origin = $SET_ORIGIN, id = $SEQUENCE_ID,\n";
+    $slonik .= "                    full qualified name = '$seq',\n";
+    $slonik .= "                    comment = 'Sequence $seq');\n";
+    $slonik .= "  echo 'Add sequence $seq';\n";
     $SEQUENCE_ID++;
 }
-print SLONIK "  echo 'All tables added';\n";
+$slonik .= "  echo 'All tables added';\n";
 
-close SLONIK;
-run_slonik_script($FILE);
+run_slonik_script($slonik, 'CREATE SET');
 
 ### If object hasn't a namespace specified, assume it's in "public", and make it so...
 sub ensure_namespace {
Index: slonik_uninstall_nodes.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_uninstall_nodes.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_uninstall_nodes.pl -Ltools/altperl/slonik_uninstall_nodes.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_uninstall_nodes.pl
+++ tools/altperl/slonik_uninstall_nodes.pl
@@ -28,13 +28,12 @@
 require '@@PGLIBDIR@@/slon-tools.pm';
 require $CONFIG_FILE;
 
-$FILE="/tmp/slonik.$$";
-open(SLONIK, ">$FILE");
-print SLONIK genheader();
+my $slonik = '';
+$slonik .= genheader();
 foreach my $node (@NODES) {
     next if $node == $MASTERNODE; # Do this one last
-    print SLONIK "  uninstall node (id=$node);\n";
+    $slonik .= "  uninstall node (id=$node);\n";
 }
-print SLONIK "  uninstall node (id=$MASTERNODE);\n";
-close SLONIK;
-run_slonik_script($FILE);
+$slonik .= "  uninstall node (id=$MASTERNODE);\n";
+
+run_slonik_script($slonik, 'UNINSTALL NODE');
Index: slonik_drop_table.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_drop_table.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -Ltools/altperl/slonik_drop_table.pl -Ltools/altperl/slonik_drop_table.pl -u -w -r1.2 -r1.3
--- tools/altperl/slonik_drop_table.pl
+++ tools/altperl/slonik_drop_table.pl
@@ -40,20 +40,18 @@
     die $USAGE;
 }
 
-$FILE="/tmp/drop_table.$$";
-open (SLONIK, ">", $FILE);
-print SLONIK genheader();
+my $slonik = '';
 
-# DROP TABLE
-print SLONIK "\n";
-print SLONIK "# DROP TABLE \n";
-print SLONIK "  try {\n";
-print SLONIK "    SET DROP TABLE (id = $TABLE_ID, origin = $SET_ORIGIN);\n";
-print SLONIK "  } on error {\n";
-print SLONIK "    echo 'Could not drop table $TABLE_ID for $CLUSTER_NAME!';\n";
-print SLONIK "    exit -1;\n";
-print SLONIK "  }\n";
+$slonik .= genheader();
 
+# DROP TABLE
+$slonik .= "\n";
+$slonik .= "# DROP TABLE \n";
+$slonik .= "  try {\n";
+$slonik .= "    SET DROP TABLE (id = $TABLE_ID, origin = $SET_ORIGIN);\n";
+$slonik .= "  } on error {\n";
+$slonik .= "    echo 'Could not drop table $TABLE_ID for $CLUSTER_NAME!';\n";
+$slonik .= "    exit -1;\n";
+$slonik .= "  }\n";
 
-close SLONIK;
-run_slonik_script($FILE);
+run_slonik_script($slonik, 'DROP TABLE');
Index: slonik_failover.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_failover.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_failover.pl -Ltools/altperl/slonik_failover.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_failover.pl
+++ tools/altperl/slonik_failover.pl
@@ -45,14 +45,14 @@
   die $USAGE;
 }
 
-open(SLONIK, ">", "/tmp/slonik.$$");
-print SLONIK genheader();
-print SLONIK "  try {\n";
-print SLONIK "      failover (id = $node1, backup node = $node2);\n";
-print SLONIK "  } on error {\n";
-print SLONIK "      echo 'Failure to fail node $node1 over to $node2';\n";
-print SLONIK "      exit 1;\n";
-print SLONIK "  }\n";
-print SLONIK "  echo 'Replication sets originating on $node1 failed over to $node2';\n";
-close SLONIK;
-run_slonik_script("/tmp/slonik.$$");
+my $slonik = '';
+$slonik .= genheader();
+$slonik .= "  try {\n";
+$slonik .= "      failover (id = $node1, backup node = $node2);\n";
+$slonik .= "  } on error {\n";
+$slonik .= "      echo 'Failure to fail node $node1 over to $node2';\n";
+$slonik .= "      exit 1;\n";
+$slonik .= "  }\n";
+$slonik .= "  echo 'Replication sets originating on $node1 failed over to $node2';\n";
+
+run_slonik_script($slonik, 'FAILOVER');
Index: slonik_unsubscribe_set.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_unsubscribe_set.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_unsubscribe_set.pl -Ltools/altperl/slonik_unsubscribe_set.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_unsubscribe_set.pl
+++ tools/altperl/slonik_unsubscribe_set.pl
@@ -43,15 +43,15 @@
   die $USAGE;
 }
 
-open(SLONIK, ">", "/tmp/slonik-unsubscribe.$$");
-print SLONIK genheader();
-print SLONIK "  try {\n";
-print SLONIK "      unsubscribe set (id = $set, receiver = $node);\n";
-print SLONIK "  }\n";
-print SLONIK "  on error {\n";
-print SLONIK "      echo 'Failed to unsubscribe node $node from set $set';\n";
-print SLONIK "      exit 1;\n";
-print SLONIK "  }\n";
-print SLONIK "  echo 'unsubscribed node $node from set $set';\n";
-close SLONIK;
-run_slonik_script("/tmp/slonik-unsubscribe.$$");
+my $slonik = '';
+$slonik .= genheader();
+$slonik .= "  try {\n";
+$slonik .= "      unsubscribe set (id = $set, receiver = $node);\n";
+$slonik .= "  }\n";
+$slonik .= "  on error {\n";
+$slonik .= "      echo 'Failed to unsubscribe node $node from set $set';\n";
+$slonik .= "      exit 1;\n";
+$slonik .= "  }\n";
+$slonik .= "  echo 'unsubscribed node $node from set $set';\n";
+
+run_slonik_script($slonik, 'UNSUBSCRIBE SET');
Index: slonik_store_node.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_store_node.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -Ltools/altperl/slonik_store_node.pl -Ltools/altperl/slonik_store_node.pl -u -w -r1.2 -r1.3
--- tools/altperl/slonik_store_node.pl
+++ tools/altperl/slonik_store_node.pl
@@ -39,26 +39,25 @@
   die $USAGE;
 }
 
-my $FILE="/tmp/store_node.$$";
+my $slonik = '';
 
-open(SLONIK, ">", $FILE);
-print SLONIK genheader();
+$slonik .= genheader();
 
 # STORE NODE
-print SLONIK "\n# STORE NODE\n";
+$slonik .= "\n# STORE NODE\n";
 my ($dbname, $dbhost) = ($DBNAME[$node], $HOST[$node]);
-print SLONIK "  store node (id = $node, event node = $MASTERNODE, comment = 'Node $node - $dbname\@$dbhost');\n";
-print SLONIK "  echo 'Set up replication nodes';\n";
+$slonik .= "  store node (id = $node, event node = $MASTERNODE, comment = 'Node $node - $dbname\@$dbhost');\n";
+$slonik .= "  echo 'Set up replication nodes';\n";
 
 # STORE PATH
-print SLONIK "\n# STORE PATH\n";
+$slonik .= "\n# STORE PATH\n";
 
 my @COST;
 my @VIA;
 my @PATH;
 generate_listen_paths();
 
-print SLONIK "  echo 'Next: configure paths for each node/origin';\n";
+$slonik .= "  echo 'Next: configure paths for each node/origin';\n";
 foreach my $nodea (@NODES) {
     my $dsna = $DSN[$nodea];
     foreach my $nodeb (@NODES) {
@@ -68,21 +67,21 @@
 	    my $providerba = $VIA[$nodea][$nodeb];
 	    my $providerab = $VIA[$nodeb][$nodea];
 	    if (!$printed[$nodea][$nodeb] and $providerab == $nodea) {
-		print SLONIK "  store path (server = $nodea, client = $nodeb, conninfo = '$dsna');\n";
+		$slonik .= "  store path (server = $nodea, client = $nodeb, conninfo = '$dsna');\n";
 		$printed[$nodea][$nodeb] = "done";
 	    }
 	    if (!$printed[$nodeb][$nodea] and $providerba == $nodea) {
-		print SLONIK "  store path (server = $nodeb, client = $nodea, conninfo = '$dsnb');\n";
+		$slonik .= "  store path (server = $nodeb, client = $nodea, conninfo = '$dsnb');\n";
 		$printed[$nodeb][$nodea] = "done";
 	    }
 	}
     }
 }
 
-print SLONIK "  echo 'Replication nodes prepared';\n";
-print SLONIK "  echo 'Please start a slon replication daemon for each node';\n";
-close SLONIK;
-run_slonik_script($FILE);
+$slonik .= "  echo 'Replication nodes prepared';\n";
+$slonik .= "  echo 'Please start a slon replication daemon for each node';\n";
+
+run_slonik_script($slonik, 'STORE NODE');
 report_on_paths();
 
 sub generate_listen_paths {
Index: slonik_drop_node.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_drop_node.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_drop_node.pl -Ltools/altperl/slonik_drop_node.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_drop_node.pl
+++ tools/altperl/slonik_drop_node.pl
@@ -35,15 +35,15 @@
   die $USAGE;
 }
 
-my $FILE="/tmp/slonik-drop.$$";
-open(SLONIK, ">", $FILE);
-print SLONIK genheader();
-print SLONIK "  try {\n";
-print SLONIK "      drop node (id = $node, event node = $MASTERNODE);\n";
-print SLONIK "  } on error {\n";
-print SLONIK "      echo 'Failed to drop node $node from cluster';\n";
-print SLONIK "      exit 1;\n";
-print SLONIK "  }\n";
-print SLONIK "  echo 'dropped node $node cluster';\n";
-close SLONIK;
-run_slonik_script($FILE);
+my $slonik = '';
+
+$slonik .= genheader();
+$slonik .= "  try {\n";
+$slonik .= "      drop node (id = $node, event node = $MASTERNODE);\n";
+$slonik .= "  } on error {\n";
+$slonik .= "      echo 'Failed to drop node $node from cluster';\n";
+$slonik .= "      exit 1;\n";
+$slonik .= "  }\n";
+$slonik .= "  echo 'dropped node $node cluster';\n";
+
+run_slonik_script($slonik, 'DROP NODE');
Index: slonik_init_cluster.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_init_cluster.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -Ltools/altperl/slonik_init_cluster.pl -Ltools/altperl/slonik_init_cluster.pl -u -w -r1.2 -r1.3
--- tools/altperl/slonik_init_cluster.pl
+++ tools/altperl/slonik_init_cluster.pl
@@ -61,11 +61,11 @@
       my $providerba = $VIA[$nodea][$nodeb];
       my $providerab = $VIA[$nodeb][$nodea];
       if (!$printed[$nodea][$nodeb] and $providerab == $nodea) {
-	print SLONIK "  store path (server = $nodea, client = $nodeb, conninfo = '$dsna');\n";
+	$slonik .= "  store path (server = $nodea, client = $nodeb, conninfo = '$dsna');\n";
 	$printed[$nodea][$nodeb] = "done";
       }
       if (!$printed[$nodeb][$nodea] and $providerba == $nodea) {
-	print SLONIK "  store path (server = $nodeb, client = $nodea, conninfo = '$dsnb');\n";
+	$slonik .= "  store path (server = $nodeb, client = $nodea, conninfo = '$dsnb');\n";
 	$printed[$nodeb][$nodea] = "done";
       }
     }
Index: slonik_move_set.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_move_set.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_move_set.pl -Ltools/altperl/slonik_move_set.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_move_set.pl
+++ tools/altperl/slonik_move_set.pl
@@ -51,14 +51,15 @@
   die $USAGE;
 }
 
-open(SLONIK, ">", "/tmp/slonik.$$");
-print SLONIK genheader();
-print SLONIK "  echo 'Locking down set $set on node $node1';\n";
-print SLONIK "  lock set (id = $set, origin = $node1);\n";
-print SLONIK "  echo 'Locked down - moving it';\n";
-print SLONIK "  move set (id = $set, old origin = $node1, new origin = $node2);\n";
-print SLONIK "  echo 'Replication set $set moved from node $node1 to $node2.  Remember to';\n";
-print SLONIK "  echo 'update your configuration file, if necessary, to note the new location';\n";
-print SLONIK "  echo 'for the set.';\n";
-close SLONIK;
-run_slonik_script("/tmp/slonik.$$");
+my $slonik = '';
+
+$slonik .= genheader();
+$slonik .= "  echo 'Locking down set $set on node $node1';\n";
+$slonik .= "  lock set (id = $set, origin = $node1);\n";
+$slonik .= "  echo 'Locked down - moving it';\n";
+$slonik .= "  move set (id = $set, old origin = $node1, new origin = $node2);\n";
+$slonik .= "  echo 'Replication set $set moved from node $node1 to $node2.  Remember to';\n";
+$slonik .= "  echo 'update your configuration file, if necessary, to note the new location';\n";
+$slonik .= "  echo 'for the set.';\n";
+
+run_slonik_script($slonik, 'MOVE SET');
Index: slonik_execute_script.pl
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/tools/altperl/slonik_execute_script.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -Ltools/altperl/slonik_execute_script.pl -Ltools/altperl/slonik_execute_script.pl -u -w -r1.1 -r1.2
--- tools/altperl/slonik_execute_script.pl
+++ tools/altperl/slonik_execute_script.pl
@@ -4,6 +4,7 @@
 # Copyright 2004 Afilias Canada
 
 use Getopt::Long;
+use File::Temp qw(tempfile);
 
 # Defaults
 $CONFIG_FILE = '@@SYSCONFDIR@@/slon_tools.conf';
@@ -14,6 +15,10 @@
 # the get_set function.
 $node = 0;
 
+# temp file variable for script handling
+my $filename = '';
+my $fh       = undef;
+
 # Read command-line options
 GetOptions("config=s" => \$CONFIG_FILE,
 	   "help"     => \$SHOW_USAGE,
@@ -69,9 +74,7 @@
 }
 elsif ($SCRIPT_ARG) {
     # Put the script into a file
-    $file = "/tmp/execute_script.sql.$$";
-    my $fh;
-    open $fh, ">", $file;
+    ($fh, $filename) = tempfile();
     print $fh $SCRIPT_ARG;
     close $fh;
 }
@@ -80,13 +83,13 @@
     die $USAGE;
 }
 
-my $FILE="/tmp/gensql.$$";
-open(SLONIK, ">", $FILE);
-print SLONIK genheader();
-print SLONIK "  execute script (\n";
-print SLONIK "    set id = $set,\n";
-print SLONIK "    filename = '$file',\n";
-print SLONIK "    event node = $node\n";
-print SLONIK "  );\n";
-close SLONIK;
-run_slonik_script($FILE);
+my $slonik = '';
+
+$slonik .= genheader();
+$slonik .= "  execute script (\n";
+$slonik .= "    set id = $set,\n";
+$slonik .= "    filename = '$filename',\n";
+$slonik .= "    event node = $node\n";
+$slonik .= "  );\n";
+
+run_slonik_script($slonik, 'EXECUTE SCRIPT');



More information about the Slony1-commit mailing list