[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.1 - (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 :     #
35 :     # Step 1.
36 :     #
37 :    
38 :     if (-d $FIG_Config::db_datadir)
39 :     {
40 :     #
41 :     # See if the size is right
42 :     #
43 :     my $szout = `du -ks $FIG_Config::db_datadir`;
44 :     my($sz) = $szout =~ /(\d+)/;
45 :     print "Computed size as $sz want $FIG_Config::db_datadir_size\n";
46 :    
47 :     if ($sz != $FIG_Config::db_datadir_size)
48 :     {
49 :     print "Removing invalid datadir \n";
50 :     system("rm -rf $FIG_Config::db_datadir");
51 :     }
52 :     }
53 :    
54 :     if (! -d $FIG_Config::db_datadir)
55 :     {
56 :     #
57 :     # Step 2.
58 :     #
59 :    
60 :     my $dir = dirname($FIG_Config::db_datadir);
61 :     &FIG::verify_dir($dir);
62 :    
63 :     print "Extract db snapshot from $FIG_Config::db_snapshot_file to $dir\n";
64 :     &FIG::run("cd $dir; tar xzfp $FIG_Config::db_snapshot_file");
65 :     }
66 :    
67 :     if (! -d $FIG_Config::db_datadir)
68 :     {
69 :     die "After extract, data directory $FIG_Config::db_datadir does not exist\n";
70 :     }
71 :    
72 :     #
73 :     # Step 3.
74 :     #
75 :    
76 :     &FIG::run("$FIG_Config::bin/start_dbserver");
77 :    
78 :     #
79 :     # Wait a bit for the db to come up.
80 :     #
81 :    
82 :     sleep 5;
83 :    
84 :     my $fig;
85 :     eval {
86 :     $fig = new FIG;
87 :     };
88 :    
89 :     if ($@)
90 :     {
91 :     die "Could not connect to database: $@\n";
92 :     }
93 :    
94 :     #
95 :     # Step 4/5.
96 :     #
97 :    
98 :     my $celldir = "$FIG_Config::fig_disk/gendb/SGE/default";
99 :     &FIG::run("source $FIG_Config::fig_disk/config/fig-user-env.sh; $celldir/common/sgeexecd start");
100 :    
101 :     #
102 :     # Step 6.
103 :     #
104 :     # Due to GPFS weirdness, we can't actually do this. Substitute a URL get.
105 :     #
106 :    
107 :     if(0)
108 :     {
109 :     while (! -f "$FIG_Config::fig_disk/config/cluster_shutdown")
110 :     {
111 :     sleep(1);
112 :     }
113 :     }
114 :    
115 :     my $ua = new LWP::UserAgent;
116 :     my $url = "http://tp-login1.uchicago.edu/~olson/cluster_shutdown";
117 :    
118 :     while (1)
119 :     {
120 :     my $resp = $ua->get($url);
121 :     if ($resp->is_success())
122 :     {
123 :     last;
124 :     }
125 :     sleep 10;
126 :     }
127 :    
128 :     print "Shutting down cluster node\n";
129 :    
130 :     #
131 :     # Step 7.
132 :     #
133 :    
134 :     &FIG::run("source $FIG_Config::fig_disk/config/fig-user-env.sh; $celldir/common/sgeexecd stop");
135 :    
136 :     #
137 :     # Step 8.
138 :     #
139 :    
140 :     &FIG::run("$FIG_Config::ext_bin/mysqladmin -u root shutdown");
141 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3