[Bio] / FigKernelScripts / boot_cluster_seed.pl Repository:
ViewVC logotype

Annotation of /FigKernelScripts/boot_cluster_seed.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download) (as text)

1 : olson 1.1 #
2 :     # Boot up a cluster-node SEED server. We assume we are using
3 :     # mysql with a snapshotted database directory.
4 :     #
5 :     # 1. See if $FIG_Config::db_datadir exists. If it does,
6 :     # go to step 3.
7 :     #
8 :     # 2. Extract $FIG_Config::db_snapshot_file into $FIG_Config::db_datadir.
9 :     #
10 :     # 3. Start the database server using start_dbserver.
11 :     #
12 :     # 4. Source the SEED environment setup file.
13 :     #
14 :     # 5. Start an SGE execution daemon.
15 :     #
16 :     # 6. Spin sleeping until the file FIGdisk/config/cluster_shutdown is created.
17 :     #
18 :     # 7. Shut down the SGE exec daemon.
19 :     #
20 :     # 8. Shut down the database server.
21 :     #
22 :     # 9. Exit.
23 :     #
24 :    
25 :     use strict;
26 :    
27 :     use FIG;
28 :     use FIG_Config;
29 :    
30 :     use File::Basename;
31 :    
32 :     use LWP::UserAgent;
33 :    
34 : olson 1.2 use Getopt::Long;
35 :    
36 :     my $sge_only = 0;
37 :    
38 :     if (!GetOptions("sge-only" => \$sge_only))
39 :     {
40 :     die "Usage: $0 [--sge-only]\n";
41 :     }
42 :    
43 : olson 1.1 #
44 :     # Step 1.
45 :     #
46 :    
47 : olson 1.2
48 :     if (not $sge_only)
49 : olson 1.1 {
50 : olson 1.2 if (-d $FIG_Config::db_datadir)
51 :     {
52 :     #
53 :     # See if the size is right
54 :     #
55 :     my $szout = `du -ks $FIG_Config::db_datadir`;
56 :     my($sz) = $szout =~ /(\d+)/;
57 :     print "Computed size as $sz want $FIG_Config::db_datadir_size\n";
58 :    
59 :     if ($sz != $FIG_Config::db_datadir_size)
60 :     {
61 :     print "Removing invalid datadir \n";
62 :     system("rm -rf $FIG_Config::db_datadir");
63 :     }
64 :     }
65 :    
66 :     if (! -d $FIG_Config::db_datadir)
67 :     {
68 :     #
69 :     # Step 2.
70 :     #
71 :    
72 :     my $dir = dirname($FIG_Config::db_datadir);
73 :     &FIG::verify_dir($dir);
74 :    
75 :     print "Extract db snapshot from $FIG_Config::db_snapshot_file to $dir\n";
76 :     &FIG::run("cd $dir; tar xzfp $FIG_Config::db_snapshot_file");
77 :     }
78 :    
79 :     if (! -d $FIG_Config::db_datadir)
80 :     {
81 :     die "After extract, data directory $FIG_Config::db_datadir does not exist\n";
82 :     }
83 :    
84 :     #
85 :     # Step 3.
86 : olson 1.1 #
87 : olson 1.2
88 :     &FIG::run("$FIG_Config::bin/start_dbserver");
89 :    
90 : olson 1.1 #
91 : olson 1.2 # Wait a bit for the db to come up.
92 :     #
93 :    
94 :     sleep 5;
95 :    
96 :     my $fig;
97 :     eval {
98 :     $fig = new FIG;
99 :     };
100 : olson 1.1
101 : olson 1.2 if ($@)
102 : olson 1.1 {
103 : olson 1.2 die "Could not connect to database: $@\n";
104 : olson 1.1 }
105 :     }
106 :    
107 :     #
108 :     # Step 4/5.
109 :     #
110 :    
111 :     my $celldir = "$FIG_Config::fig_disk/gendb/SGE/default";
112 :     &FIG::run("source $FIG_Config::fig_disk/config/fig-user-env.sh; $celldir/common/sgeexecd start");
113 :    
114 :     #
115 :     # Step 6.
116 :     #
117 :     # Due to GPFS weirdness, we can't actually do this. Substitute a URL get.
118 :     #
119 :    
120 :     if(0)
121 :     {
122 :     while (! -f "$FIG_Config::fig_disk/config/cluster_shutdown")
123 :     {
124 :     sleep(1);
125 :     }
126 :     }
127 :    
128 :     my $ua = new LWP::UserAgent;
129 :     my $url = "http://tp-login1.uchicago.edu/~olson/cluster_shutdown";
130 :    
131 :     while (1)
132 :     {
133 :     my $resp = $ua->get($url);
134 :     if ($resp->is_success())
135 :     {
136 :     last;
137 :     }
138 :     sleep 10;
139 :     }
140 :    
141 :     print "Shutting down cluster node\n";
142 :    
143 :     #
144 :     # Step 7.
145 :     #
146 :    
147 :     &FIG::run("source $FIG_Config::fig_disk/config/fig-user-env.sh; $celldir/common/sgeexecd stop");
148 :    
149 :     #
150 :     # Step 8.
151 :     #
152 :    
153 : olson 1.2 if (not $sge_only)
154 :     {
155 :     &FIG::run("$FIG_Config::ext_bin/mysqladmin -u root shutdown");
156 :     }
157 : olson 1.1

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3