Revision f9435bdc
b/.gitignore | ||
---|---|---|
47 | 47 |
|
48 | 48 |
# devel |
49 | 49 |
/devel/clean-cluster |
50 |
/devel/upload |
|
51 | 50 |
|
52 | 51 |
# doc |
53 | 52 |
/doc/api/ |
b/Makefile.am | ||
---|---|---|
157 | 157 |
$(SHELL_ENV_INIT) \ |
158 | 158 |
daemons/daemon-util \ |
159 | 159 |
daemons/ganeti-cleaner \ |
160 |
devel/upload \ |
|
161 | 160 |
$(BUILT_EXAMPLES) \ |
162 | 161 |
doc/examples/bash_completion \ |
163 | 162 |
doc/examples/bash_completion-debug \ |
... | ... | |
559 | 558 |
# Things to build but not to install (add it to EXTRA_DIST if it should be |
560 | 559 |
# distributed) |
561 | 560 |
noinst_DATA = \ |
562 |
devel/upload \ |
|
563 | 561 |
doc/html \ |
564 | 562 |
$(BUILT_EXAMPLES) \ |
565 | 563 |
doc/examples/bash_completion \ |
... | ... | |
732 | 730 |
daemons/daemon-util.in \ |
733 | 731 |
daemons/ganeti-cleaner.in \ |
734 | 732 |
$(pkglib_python_scripts) \ |
735 |
devel/upload.in \
|
|
733 |
devel/upload \ |
|
736 | 734 |
tools/kvm-ifup.in \ |
737 | 735 |
tools/vcluster-setup.in \ |
738 | 736 |
$(docdot) \ |
... | ... | |
1070 | 1068 |
sed -f $(REPLACE_VARS_SED) < $< > $@ |
1071 | 1069 |
chmod +x $@ |
1072 | 1070 |
|
1073 |
devel/upload: devel/upload.in $(REPLACE_VARS_SED) |
|
1074 |
sed -f $(REPLACE_VARS_SED) < $< > $@ |
|
1075 |
chmod u+x $@ |
|
1076 |
|
|
1077 | 1071 |
tools/vcluster-setup: tools/vcluster-setup.in $(REPLACE_VARS_SED) |
1078 | 1072 |
sed -f $(REPLACE_VARS_SED) < $< > $@ |
1079 | 1073 |
chmod +x $@ |
b/devel/upload | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2012 Google Inc. |
|
4 |
# |
|
5 |
# This program is free software; you can redistribute it and/or modify |
|
6 |
# it under the terms of the GNU General Public License as published by |
|
7 |
# the Free Software Foundation; either version 2 of the License, or |
|
8 |
# (at your option) any later version. |
|
9 |
# |
|
10 |
# This program is distributed in the hope that it will be useful, but |
|
11 |
# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
13 |
# General Public License for more details. |
|
14 |
# |
|
15 |
# You should have received a copy of the GNU General Public License |
|
16 |
# along with this program; if not, write to the Free Software |
|
17 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
|
18 |
# 02110-1301, USA. |
|
19 |
|
|
20 |
# This is a test script to ease development and testing on test clusters. |
|
21 |
# It should not be used to update production environments. |
|
22 |
|
|
23 |
# Usage: upload node-{1,2,3} |
|
24 |
# it will upload the python libraries to |
|
25 |
# $prefix/lib/python2.4/site-packages/ganeti and the command line utils to |
|
26 |
# $prefix/sbin. It needs passwordless root login to the nodes. |
|
27 |
|
|
28 |
set -e |
|
29 |
|
|
30 |
usage() { |
|
31 |
echo "Usage: $0 [--no-restart] [--no-cron] [--no-debug] hosts..." >&2 |
|
32 |
exit $1 |
|
33 |
} |
|
34 |
|
|
35 |
declare -r SED="sed -f autotools/replace_vars.sed" |
|
36 |
|
|
37 |
NO_RESTART= |
|
38 |
NO_CRON= |
|
39 |
NO_DEBUG= |
|
40 |
hosts= |
|
41 |
while [ "$#" -gt 0 ]; do |
|
42 |
opt="$1" |
|
43 |
case "$opt" in |
|
44 |
--no-restart) |
|
45 |
NO_RESTART=1 |
|
46 |
;; |
|
47 |
--no-cron) |
|
48 |
NO_CRON=1 |
|
49 |
;; |
|
50 |
--no-debug) |
|
51 |
NO_DEBUG=1 |
|
52 |
;; |
|
53 |
-h|--help) |
|
54 |
usage 0 |
|
55 |
;; |
|
56 |
-*) |
|
57 |
echo "Unknown option: $opt" >&2 |
|
58 |
usage 1 |
|
59 |
;; |
|
60 |
*) |
|
61 |
hosts="$hosts $opt" |
|
62 |
;; |
|
63 |
esac |
|
64 |
shift |
|
65 |
done |
|
66 |
|
|
67 |
if [ -z "$hosts" ]; then |
|
68 |
usage 1 |
|
69 |
fi |
|
70 |
|
|
71 |
set ${hosts} |
|
72 |
|
|
73 |
make regen-vcs-version |
|
74 |
|
|
75 |
TXD=`mktemp -d` |
|
76 |
trap 'rm -rf $TXD' EXIT |
|
77 |
|
|
78 |
if [[ -f /proc/cpuinfo ]]; then |
|
79 |
cpu_count=$(grep -E -c '^processor[[:space:]]*:' /proc/cpuinfo) |
|
80 |
make_args=-j$(( cpu_count + 1 )) |
|
81 |
else |
|
82 |
make_args= |
|
83 |
fi |
|
84 |
|
|
85 |
# Make sure that directories will get correct permissions |
|
86 |
umask 0022 |
|
87 |
|
|
88 |
# install ganeti as a real tree |
|
89 |
make $make_args install DESTDIR="$TXD" |
|
90 |
|
|
91 |
# at this point, make has been finished, so the configuration is |
|
92 |
# fixed; we can read the prefix vars/etc. |
|
93 |
PREFIX="$(echo @PREFIX@ | $SED)" |
|
94 |
SYSCONFDIR="$(echo @SYSCONFDIR@ | $SED)" |
|
95 |
PKGLIBDIR="$(echo @PKGLIBDIR@ | $SED)" |
|
96 |
|
|
97 |
# copy additional needed files |
|
98 |
[ -f doc/examples/ganeti.initd ] && \ |
|
99 |
install -D --mode=0755 doc/examples/ganeti.initd \ |
|
100 |
"$TXD/$SYSCONFDIR/init.d/ganeti" |
|
101 |
|
|
102 |
[ -f doc/examples/ganeti.default-debug -a -z "$NO_DEBUG" ] && \ |
|
103 |
install -D --mode=0644 doc/examples/ganeti.default-debug \ |
|
104 |
"$TXD/$SYSCONFDIR/default/ganeti" |
|
105 |
|
|
106 |
[ -f doc/examples/bash_completion-debug ] && \ |
|
107 |
install -D --mode=0644 doc/examples/bash_completion-debug \ |
|
108 |
"$TXD/$SYSCONFDIR/bash_completion.d/ganeti" |
|
109 |
|
|
110 |
if [ -f doc/examples/ganeti.cron -a -z "$NO_CRON" ]; then |
|
111 |
install -D --mode=0644 doc/examples/ganeti.cron \ |
|
112 |
"$TXD/$SYSCONFDIR/cron.d/ganeti" |
|
113 |
fi |
|
114 |
|
|
115 |
echo --- |
|
116 |
|
|
117 |
( cd "$TXD" && find; ) |
|
118 |
|
|
119 |
echo --- |
|
120 |
|
|
121 |
# and now put it under $prefix on the target node(s) |
|
122 |
for host; do |
|
123 |
echo Uploading code to ${host}... |
|
124 |
rsync -v -rlDc \ |
|
125 |
-e "ssh -oBatchMode=yes" \ |
|
126 |
--exclude="*.py[oc]" --exclude="*.pdf" --exclude="*.html" \ |
|
127 |
"$TXD/" \ |
|
128 |
root@${host}:/ & |
|
129 |
done |
|
130 |
wait |
|
131 |
|
|
132 |
if test -z "${NO_RESTART}"; then |
|
133 |
for host; do |
|
134 |
echo Restarting ganeti-noded on ${host}... |
|
135 |
ssh -oBatchMode=yes root@${host} $SYSCONFDIR/init.d/ganeti restart & |
|
136 |
done |
|
137 |
wait |
|
138 |
fi |
/dev/null | ||
---|---|---|
1 |
#!/bin/bash |
|
2 |
|
|
3 |
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2012 Google Inc. |
|
4 |
# |
|
5 |
# This program is free software; you can redistribute it and/or modify |
|
6 |
# it under the terms of the GNU General Public License as published by |
|
7 |
# the Free Software Foundation; either version 2 of the License, or |
|
8 |
# (at your option) any later version. |
|
9 |
# |
|
10 |
# This program is distributed in the hope that it will be useful, but |
|
11 |
# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
13 |
# General Public License for more details. |
|
14 |
# |
|
15 |
# You should have received a copy of the GNU General Public License |
|
16 |
# along with this program; if not, write to the Free Software |
|
17 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
|
18 |
# 02110-1301, USA. |
|
19 |
|
|
20 |
# This is a test script to ease development and testing on test clusters. |
|
21 |
# It should not be used to update production environments. |
|
22 |
|
|
23 |
# Usage: upload node-{1,2,3} |
|
24 |
# it will upload the python libraries to |
|
25 |
# $prefix/lib/python2.4/site-packages/ganeti and the command line utils to |
|
26 |
# $prefix/sbin. It needs passwordless root login to the nodes. |
|
27 |
|
|
28 |
set -e |
|
29 |
|
|
30 |
usage() { |
|
31 |
echo "Usage: $0 [--no-restart] [--no-cron] [--no-debug] hosts..." >&2 |
|
32 |
exit $1 |
|
33 |
} |
|
34 |
|
|
35 |
PREFIX='@PREFIX@' |
|
36 |
SYSCONFDIR='@SYSCONFDIR@' |
|
37 |
PKGLIBDIR='@PKGLIBDIR@' |
|
38 |
|
|
39 |
NO_RESTART= |
|
40 |
NO_CRON= |
|
41 |
NO_DEBUG= |
|
42 |
hosts= |
|
43 |
while [ "$#" -gt 0 ]; do |
|
44 |
opt="$1" |
|
45 |
case "$opt" in |
|
46 |
--no-restart) |
|
47 |
NO_RESTART=1 |
|
48 |
;; |
|
49 |
--no-cron) |
|
50 |
NO_CRON=1 |
|
51 |
;; |
|
52 |
--no-debug) |
|
53 |
NO_DEBUG=1 |
|
54 |
;; |
|
55 |
-h|--help) |
|
56 |
usage 0 |
|
57 |
;; |
|
58 |
-*) |
|
59 |
echo "Unknown option: $opt" >&2 |
|
60 |
usage 1 |
|
61 |
;; |
|
62 |
*) |
|
63 |
hosts="$hosts $opt" |
|
64 |
;; |
|
65 |
esac |
|
66 |
shift |
|
67 |
done |
|
68 |
|
|
69 |
if [ -z "$hosts" ]; then |
|
70 |
usage 1 |
|
71 |
fi |
|
72 |
|
|
73 |
set ${hosts} |
|
74 |
|
|
75 |
make regen-vcs-version |
|
76 |
|
|
77 |
TXD=`mktemp -d` |
|
78 |
trap 'rm -rf $TXD' EXIT |
|
79 |
|
|
80 |
if [[ -f /proc/cpuinfo ]]; then |
|
81 |
cpu_count=$(grep -E -c '^processor[[:space:]]*:' /proc/cpuinfo) |
|
82 |
make_args=-j$(( cpu_count + 1 )) |
|
83 |
else |
|
84 |
make_args= |
|
85 |
fi |
|
86 |
|
|
87 |
# Make sure that directories will get correct permissions |
|
88 |
umask 0022 |
|
89 |
|
|
90 |
# install ganeti as a real tree |
|
91 |
make $make_args install DESTDIR="$TXD" |
|
92 |
|
|
93 |
# copy additional needed files |
|
94 |
[ -f doc/examples/ganeti.initd ] && \ |
|
95 |
install -D --mode=0755 doc/examples/ganeti.initd \ |
|
96 |
"$TXD/$SYSCONFDIR/init.d/ganeti" |
|
97 |
|
|
98 |
[ -f doc/examples/ganeti.default-debug -a -z "$NO_DEBUG" ] && \ |
|
99 |
install -D --mode=0644 doc/examples/ganeti.default-debug \ |
|
100 |
"$TXD/$SYSCONFDIR/default/ganeti" |
|
101 |
|
|
102 |
[ -f doc/examples/bash_completion-debug ] && \ |
|
103 |
install -D --mode=0644 doc/examples/bash_completion-debug \ |
|
104 |
"$TXD/$SYSCONFDIR/bash_completion.d/ganeti" |
|
105 |
|
|
106 |
if [ -f doc/examples/ganeti.cron -a -z "$NO_CRON" ]; then |
|
107 |
install -D --mode=0644 doc/examples/ganeti.cron \ |
|
108 |
"$TXD/$SYSCONFDIR/cron.d/ganeti" |
|
109 |
fi |
|
110 |
|
|
111 |
echo --- |
|
112 |
|
|
113 |
( cd "$TXD" && find; ) |
|
114 |
|
|
115 |
echo --- |
|
116 |
|
|
117 |
# and now put it under $prefix on the target node(s) |
|
118 |
for host; do |
|
119 |
echo Uploading code to ${host}... |
|
120 |
rsync -v -rlDc \ |
|
121 |
-e "ssh -oBatchMode=yes" \ |
|
122 |
--exclude="*.py[oc]" --exclude="*.pdf" --exclude="*.html" \ |
|
123 |
"$TXD/" \ |
|
124 |
root@${host}:/ & |
|
125 |
done |
|
126 |
wait |
|
127 |
|
|
128 |
if test -z "${NO_RESTART}"; then |
|
129 |
for host; do |
|
130 |
echo Restarting ganeti-noded on ${host}... |
|
131 |
ssh -oBatchMode=yes root@${host} $SYSCONFDIR/init.d/ganeti restart & |
|
132 |
done |
|
133 |
wait |
|
134 |
fi |
Also available in: Unified diff